{"version":3,"sources":["entities/AppConfig.ts","services/server/CustomAxios.ts","services/server/WebClient.ts","services/TelemetryService.ts","utilities/useUser.tsx","config.ts","utilities/useAppConfig.tsx","utilities/Tracking/DataLayer.ts","components/AnalyticsPageTracker.tsx","pages/offline/useOfflineAssets.ts","utilities/useLocalStorage.ts","entities/AddAssetType.ts","entities/AssetCategory.ts","entities/AssetType.ts","entities/LibraryItemType.ts","entities/BuilderAsset.ts","services/BuilderAssetService.ts","services/server/OldWebClient.ts","utilities/useOfflineStatus.ts","pages/offline/OfflineManagerNotifications.tsx","pages/offline/BuilderAssetConflictItem.tsx","pages/offline/BuilderAssetConflictDialog.tsx","utilities/Tracking/GoogleAnalytics.ts","entities/AddAssetAction.ts","utilities/Tracking/EventTracking.ts","pages/offline/OfflineManager.tsx","services/AuthenticationService.ts","utilities/Tracking/ProfitWell.ts","components/LoadingPage.tsx","components/UserProvider.tsx","services/AppConfigService.ts","utilities/usePageTitle.ts","components/AppConfigProvider.tsx","components/OfflineStatusProvider.tsx","components/Mui3WidthProvider.tsx","routes.ts","utilities/useAuthenticatedUser.ts","components/PrivateRoute.tsx","services/server/ServerResponses.ts","components/PageTitle.tsx","components/useQueryParams.ts","pages/authentication/AuthLayout.tsx","components/GlooIcon.tsx","components/GlooButton.tsx","entities/MakerSubscription.ts","pages/authentication/signIn.tsx","pages/authentication/forgotPassword.tsx","pages/authentication/forgotPasswordSuccess.tsx","pages/authentication/resetPassword.tsx","pages/errors/serverFailed.tsx","pages/errors/pageNotFound.tsx","services/BuilderPreferenceService.ts","entities/LinkAssetType.ts","entities/LinkAsset.ts","entities/LibraryItem.ts","entities/ShareItem.ts","services/ShareService.ts","entities/WritingLog.ts","entities/AssetWritingLogs.ts","services/AssetWritingLogService.ts","services/SearchService.ts","entities/BibleTranslation.ts","pages/builder/drawer/contentDrawer.tsx","pages/builder/editor/BuilderSnackbar.tsx","pages/builder/editor/ckeditor/slideEditing.ts","pages/builder/editor/ckeditor/slide.ts","pages/builder/editor/ckeditor/CkEditorHelper.ts","utilities/UserAgent.ts","pages/builder/editor/texttospeech/useTextToSpeech.ts","pages/builder/editor/DesktopFormatBubble.tsx","pages/builder/editor/MobileFormatBubble.tsx","pages/builder/editor/FormatBubble.tsx","pages/builder/editor/SlideAction.ts","pages/builder/editor/EditorActionAlert.tsx","pages/builder/editor/useEditor.ts","pages/builder/editor/EditorHelper.ts","pages/builder/useBuilder.ts","utilities/sermonAnalyzer/modules/ConsecutiveSentences.ts","utilities/sermonAnalyzer/modules/GradeLevel.ts","utilities/sermonAnalyzer/modules/SentenceLength.ts","utilities/sermonAnalyzer/modules/LongParagraphs.ts","utilities/sermonAnalyzer/modules/PassiveVoice.ts","utilities/sermonAnalyzer/modules/ReadingScore.ts","utilities/sermonAnalyzer/modules/ScriptureSaturation.ts","utilities/sermonAnalyzer/modules/TransitionalWords.ts","utilities/sermonAnalyzer/modules/WordCount.ts","utilities/sermonAnalyzer/modules/SubheadingDistribution.ts","utilities/sermonAnalyzer/AnalyzerModule.ts","utilities/sermonAnalyzer/SermonAnalyzer.ts","utilities/KeyWordParser.ts","services/TextToSpeechService.ts","pages/builder/editor/texttospeech/TextToSpeechSettings.tsx","pages/builder/editor/texttospeech/TextToSpeechContext.tsx","utilities/WordCountParser.ts","utilities/DateHelper.tsx","pages/builder/editor/EditorContext.tsx","components/ShareDialog/NonPaidUnshareDialog.tsx","resources/facebookIcon.png","resources/twitterIcon.png","components/ShareDialog/SharedContent.tsx","resources/facebookIconDisabled.png","resources/twitterLogoDisabled.png","components/ShareDialog/UnsharedContent.tsx","components/ShareDialog/ShareDialog.tsx","components/SharingDialog/RenderNonPaidUnshareDialog.tsx","components/SharingDialog/SubdomainSetupDialog.tsx","components/SharingDialog/RenderUnsharedContent.tsx","components/SharingDialog/RemoveVideoDialog.tsx","resources/facebook-thumb.png","components/SharingDialog/RenderVimeo.tsx","components/SharingDialog/RenderYoutube.tsx","components/SharingDialog/RenderFacebook.tsx","components/SharingDialog/ShareVideoDialog.tsx","resources/youtube-thumb.png","resources/vimeo-thumb.png","components/SharingDialog/RenderSharedContent.tsx","components/SharingDialog/SharingDialog.tsx","components/SaveAsTemplateDialog.tsx","withRoot.tsx","services/AdminService.ts","components/UserAvatar.tsx","utilities/printStyle.ts","utilities/ExportHtml.ts","entities/DrawerContent.ts","pages/builder/drawer/useBuilderDrawer.ts","components/RocketLaunchIcon.tsx","pages/builder/drawer/apps/BuilderAppIconListItems.tsx","pages/builder/drawer/apps/DesktopBuilderAppSelection.tsx","pages/builder/editor/texttospeech/TextToSpeechPlayer.tsx","pages/builder/editor/ckeditor/CKEditor.tsx","components/DropDownButton.tsx","pages/builder/configuration/PresentationExporter.ts","resources/oneColumn.svg","utilities/ExportSlides.ts","resources/twoColumns.svg","resources/threeColumns.svg","resources/file-ppt.png","pages/builder/views/DesktopBuilderView.tsx","pages/builder/drawer/bibleSearch.tsx","entities/BibleSearchSettings.ts","pages/builder/drawer/components/bibleSettingsDialog.tsx","pages/builder/drawer/detailsContent.tsx","utilities/StringHelper.ts","utilities/RatingHelper.tsx","pages/builder/drawer/components/sermonGeniusResultsList.tsx","pages/builder/drawer/components/unpaidDrawer.tsx","services/GeniusSearchService.ts","utilities/ScriptureReferenceParser.ts","pages/builder/drawer/geniusSearch.tsx","pages/builder/drawer/illustrationSearch.tsx","pages/builder/drawer/sermonSearch.tsx","components/SvgGoogleIcon.tsx","services/GoogleSlides/GoogleSlidesHelperService.ts","services/GoogleAuthService.ts","services/GoogleSlides/GoogleSlidesJsonGenerationService.ts","services/GoogleSlides/GoogleSlidesStyleIndexHelperMethods.ts","utilities/SlideExportsHelper.ts","services/GoogleSlides/GoogleSlidesRequestBuilder.ts","pages/GoogleSlidesOAuthLandingPage.tsx","pages/builder/drawer/components/exportSlidesModal.tsx","components/HorizontalCentered.tsx","components/VerticalCenter.tsx","pages/builder/drawer/components/slideSettingsDialog.tsx","pages/builder/editor/DisplaySlide.tsx","pages/builder/drawer/slidesContent.tsx","pages/builder/drawer/components/writingLogDialog.tsx","pages/builder/drawer/components/analyzerTextSuggestionsPanel.tsx","pages/builder/drawer/components/analyzerSettingsDialog.tsx","pages/builder/drawer/sermonAnalyzer.tsx","services/AssistantService.ts","pages/builder/drawer/components/assistantResponse.tsx","pages/builder/drawer/components/assistantGetStarted.tsx","pages/builder/drawer/components/assistantFeelingStuck.tsx","pages/builder/drawer/components/assistantAnalyze.tsx","pages/builder/drawer/components/assistantSection.tsx","pages/builder/drawer/assistant.tsx","pages/builder/drawer/mainDrawer.tsx","pages/builder/drawer/apps/MobileBuilderAppSelection.tsx","pages/builder/views/IOSBuilderView.tsx","pages/builder/views/AndroidBuilderView.tsx","pages/builder/views/MobileLayout.tsx","pages/builder/views/Builder.tsx","pages/builder/home.tsx","entities/PresenterPreferences.ts","pages/presenter/PresenterClock.tsx","utilities/UsePreviousHook.ts","pages/presenter/PresenterToolBar.tsx","pages/presenter/PresenterAppBar.tsx","services/PresenterPreferencesService.ts","pages/presenter/PresenterHome.tsx","pages/share/ShareHome.tsx","pages/share/downloadSlides.tsx","services/AccountService.ts","pages/account/changeCardDialog.tsx","pages/account/components/accountInfo.tsx","pages/account/components/subscriptionInfo.tsx","pages/account/components/billingStatementsTable.tsx","pages/account/components/cancelSubscriptionDialog.tsx","pages/account/components/refundSubscriptionDialog.tsx","pages/account/components/updateCardDialog.tsx","resources/downgrade-guy.png","pages/account/components/specialOfferDialog.tsx","pages/account/components/confirmationDialog.tsx","pages/account/components/accountSnackBar.tsx","pages/account/settings.tsx","entities/PremiumSermonAsset.ts","entities/PremiumSermon.ts","services/PremiumSermonService.ts","entities/PremiumSermonSeriesAsset.ts","entities/PremiumSermonSeries.ts","services/PremiumSermonSeriesService.ts","services/SubscriptionService.ts","pages/payment/ConfirmationPage.tsx","utilities/PremiumSermonSearch.ts","pages/premiumSalesPages/types/MarketingPageType.ts","utilities/PremiumSeriesSearch.ts","utilities/replaceAllCompat.ts","pages/premiumSalesPages/components/sermonCard.tsx","pages/premiumSalesPages/components/hero.tsx","utilities/orderBy.ts","pages/premiumSalesPages/ProductsList.tsx","utilities/UrlInteraction.ts","pages/premiumSalesPages/components/productPageContent.tsx","pages/premiumSalesPages/Product.tsx","utilities/useBuilderPreview.tsx","pages/builderPreview/components/signInRegisterDialog.tsx","pages/builderPreview/components/signUpOfferDialog.tsx","pages/builderPreview/components/makerCheckoutDialog.tsx","pages/builderPreview/components/bundleCheckoutDialog.tsx","pages/builderPreview/builderPreview.tsx","services/LibraryItemService.ts","entities/Folder.ts","services/FolderService.ts","entities/SermonSeries.ts","services/SermonSeriesService.ts","pages/Library/AddNew/Components/CreateFolderDialog.tsx","resources/vimeo.png","services/LinkAssetService.ts","pages/Library/AddNew/Components/YoutubeLinkDialog.tsx","pages/Library/AddNew/Components/SoundCloudLinkDialog.tsx","pages/Library/AddNew/Components/VimeoLinkDialog.tsx","services/WordFileService.ts","pages/Library/AddNew/Components/AddDocxDialog.tsx","pages/Library/AddNew/Components/CreateAssetDialog.tsx","pages/Library/AddNew/Components/AddNormalLinkDialog.tsx","entities/FileAsset.ts","services/FIleAssetService.ts","pages/Library/AddNew/Components/UploadFileDialog.tsx","services/SermonTemplateService.ts","pages/Library/AddNew/AddFromTemplateDialog/SelectTemplate.tsx","utilities/Upsell.ts","pages/Library/AddNew/AddFromTemplateDialog/PremiumTemplatePreview.tsx","pages/Library/AddNew/AddFromTemplateDialog/CustomTemplatePreview.tsx","pages/Library/AddNew/AddFromTemplateDialog/AddFromTemplateDialog.tsx","pages/Library/AddNew/Components/SecondLayerMenu.tsx","resources/file-word.png","resources/youtube.png","resources/soundcloud.png","pages/Library/AddNew/Components/FirstLayerMenu.tsx","pages/Library/AddNew/AddNewButton.tsx","pages/Library/SideBar/Leaf.tsx","pages/Library/SideBar/TreeBranch.tsx","pages/Library/SideBar/SideNavigation.tsx","components/GridGrow.tsx","pages/Library/Layouts/DesktopLibraryLayout.tsx","pages/Library/AddNew/AddNewFab.tsx","pages/Library/Layouts/MobileLibraryLayout.tsx","pages/Library/Views/Components/SortByDropDown.tsx","pages/Library/LibraryAssetActions/DeleteAssetDialog.tsx","pages/Library/LibraryAssetActions/RenameAssetDialog.tsx","pages/Library/LibraryAssetActions/UseTemplateDialog.tsx","pages/Library/RightDrawer/Components/DetailRow.tsx","pages/Library/RightDrawer/Components/EditForm.tsx","components/LoadingDialog.tsx","pages/Library/Views/Components/LibraryItemIcon.tsx","resources/soundCloudBlue.png","resources/youtubeBlue.png","pages/Library/Views/Components/ShowEmbeddedLinkDialog.tsx","pages/Library/RightDrawer/Components/DrawerHeader.tsx","pages/Library/RightDrawer/AssetView.tsx","pages/Library/RightDrawer/EmptyState.tsx","pages/Library/RightDrawer/FolderView.tsx","pages/Library/RightDrawer/RightDrawer.tsx","pages/Library/LibraryAssetActions/MoveAsset/MobileMoveMenu.tsx","pages/Library/LibraryAssetActions/MoveAsset/MoveMenuFolderList.tsx","pages/Library/LibraryAssetActions/MoveAsset/DesktopMoveMenu.tsx","pages/Library/LibraryAssetActions/MoveAsset/MoveAssetMenu.tsx","pages/Library/LibraryAssetActions/LibraryAssetActions.tsx","pages/Library/LibraryAssetActions/RightSideInteractions.tsx","components/SortableTableHeader.tsx","utilities/displayTextHelper.ts","pages/Library/Views/Components/DesktopLibraryTableRow.tsx","pages/Library/Views/Components/DesktopLibraryAssetTable.tsx","pages/Library/Views/Components/MobileLibraryAssetTable.tsx","utilities/libraryItemSorter.ts","pages/Library/LibraryOffline.tsx","pages/Library/LibraryStarred.tsx","pages/Library/LibrarySearch.tsx","pages/Library/Views/Components/BreadCrumbs.tsx","pages/Library/Views/Components/QuickAccess.tsx","pages/Library/LibraryHome.tsx","pages/Library/Views/Components/DesktopRecentTableRow.tsx","pages/Library/Views/Components/DesktopRecentTable.tsx","pages/Library/LibraryRecent.tsx","pages/Library/Views/Components/PremiumContentListCard.tsx","pages/Library/PremiumSeries.tsx","pages/Library/Views/Components/PremiumSeriesTable.tsx","pages/Library/Views/Components/Dialogs/PreviewPremiumContentDialog.tsx","pages/Library/PremiumSeriesDetails.tsx","utilities/PremiumTemplateSearch.ts","pages/Library/Views/Components/Dialogs/AddFromSermonTemplateDialog.tsx","pages/Library/Views/Components/Dialogs/AddFromCustomTemplateDialog.tsx","pages/Library/SermonTemplates.tsx","pages/Library/PremiumSermons.tsx","pages/Library/Views/Components/PremiumSermonTable.tsx","pages/Library/PremiumSermonDetails.tsx","pages/Library/LibraryCalendar.tsx","pages/Library/LibraryPage.tsx","pages/authentication/Components/RegistrationForm.tsx","entities/SubscriptionPlan.ts","pages/authentication/Components/PricingTable.tsx","resources/yes-free-trial-text.png","pages/authentication/Components/TermsAndConditions.tsx","pages/authentication/NewRegistration.tsx","pages/payment/CheckoutPage.tsx","AppRoutes.tsx","app.tsx","index.tsx","serviceWorker.ts"],"names":["AppConfigEnvironment","createServerError","message","statusCode","error","success","validation","offline","serializeAxiosError","axiosError","code","undefined","response","status","data","valid","errors","CustomAxios","instance","axios","create","interceptors","use","isAxiosError","Promise","resolve","console","log","reject","createAxiosWithInterceptors","runFetch","url","config","deserialize","axiosClient","axiosResponse","result","uploadProgressPercent","progress","Math","round","loaded","total","WebClient","method","withCredentials","Validated","Unvalidated","File","External","file","onUploadProgress","headers","Pragma","p","Internal","formData","FormData","append","name","TelemetryService","field","value","lastActiveStr","localStorage","getItem","lastActive","Date","now","millisecondsSinceLastActive","getTime","setItem","toString","UserContext","React","createContext","useUser","useContext","process","REACT_APP_ENV","defaultAppConfig","environment","Production","googleAnalytics","isEnabled","trackingId","mikesGoogleAnalytics","mainSiteUrl","makerSiteUrl","accountSiteUrl","paymentsSiteUrl","stripeApiKey","assetBaseUrl","googleSlidesApi","clientId","oAuthRedirectUrl","scope","apiUrl","presentationUrl","cdnUrl","defaultBackgroundImageUrls","AppConfigContext","useAppConfig","getDataLayer","window","dataLayer","AnalyticsPageTracker","props","history","useHistory","onlineUser","appConfig","mikesGoogleAnalyticsTrackingId","mikesGoogleAnalyticsEnabled","googleAnalyticsTrackingId","googleAnalyticsEnabled","useEffect","gtag","push","arguments","script","document","createElement","type","async","src","getElementsByTagName","appendChild","send_page_view","page_path","location","pathname","search","listen","children","OfflineAssetsContext","useOfflineAssets","useLocalStorage","key","initialValue","useState","item","JSON","parse","storedValue","setStoredValue","valueToStore","Function","stringify","AddAssetType","AssetCategory","AssetDataType","toAssetCategory","assetCategoryValue","None","replace","Outline","Manuscript","Handout","Devotional","SmallGroupStudy","SermonSlides","Notes","Audio","Video","printAssetCategory","assetCategory","toAssetCategoryFromNumber","LibraryItemType","AssetCategoryTypes","id","displayName","category","supportedTypes","EditableText","Link","printLibraryItemType","Folder","SermonSeries","PremiumSermon","PremiumSermonSeries","deserializeBuilderAsset","builderResponse","dateAccessed","dateCreated","dateModified","datePreached","assetType","convertBuilderAssetToLibraryItem","asset","BuilderAsset","BuilderAssetService","get","getSermonAsBuilderAsset","sermonId","downloadAsPdf","builderAsset","fetch","blob","URL","createObjectURL","link","target","href","download","body","click","removeChild","downloadAsDocx","getOfflineBuilderAssets","map","save","builderAssetToSave","saveFromTemplate","saveTemplate","getTemplates","remove","undeleteBuilderAsset","setName","setStarred","isStarred","move","parentId","accessAsset","removeCustomSlideBackgroundImageUrl","generatePowerPointUploadUrl","fileName","uploadSourceImage","uploadUrl","saveSlideExporterCustomBackgroundImage","request","getCustomBackgroundImageForDownload","saveSlideAspectRatio","aspectRatio","getPublicUrlForCustomSlideImage","setOfflineMode","offlineMode","builderAssetId","getCustomBackgroundImageAsArrayBuffer","then","res","reader","getReader","ReadableStream","start","controller","read","done","enqueue","close","releaseLock","Response","arrayBuffer","ServerResponse","model","OfflineStatusContext","useOfflineStatus","OfflineManagerNotifications","offlineModeChangeMessage","browserIsOffline","goOnlinePrompt","setGoOnlinePrompt","goOfflinePrompt","setGoOfflinePrompt","updateAvailable","setUpdateAvailable","addEventListener","e","browserIsOnline","Snackbar","anchorOrigin","vertical","horizontal","open","action","Button","style","color","size","onClick","reload","onChangeOfflineMode","onClose","onDismissOfflineModeChangeMessage","autoHideDuration","useStyles","makeStyles","theme","container","margin","marginTop","selection","backgroundColor","padding","borderRadius","cursor","disabledSelection","BuilderAssetConflictItem","conflictedAsset","classes","disabled","setDisabled","errorMessage","setErrorMessage","online","sort","a","b","orderedConflicts","setOrderedConflicts","conflicts","onUpdate","saveRequest","onSave","onRestore","rest","isSuccess","onConflictResolved","isModelValidation","clearFromOfflineStorage","className","c","classNames","onSelectOnline","onSelectOffline","Typography","variant","toLocaleString","lastModifiedOnOperatingSystem","lastModifiedFormFactor","BuilderAssetConflictDialog","conflictedAssets","Dialog","length","DialogTitle","current","Grid","justifyContent","alignItems","CircularProgress","AddAssetAction","Location","LibraryLocation","EntityDetails","SearchEntity","GTag","detail","navigator","onLine","price","planName","windowObject","transaction","gaItem","gaTransaction","userId","EventTracking","Offline","enableOffline","actionLocation","offlineAssetCount","event","event_category","event_label","disableOffline","conflictResolved","conflictsResolved","Subscribe","onNewSubscription","upgradeAction","fromRegisteration","purchase","AddDocUpload","AddSoundCloudLink","ImportSermonFromSC","AddVimeoLink","AddYoutubeLink","ShareAsset","CreateFromPremiumTemplate","CreateCustomTemplate","onDiscountPlan","onCancelSubscription","onOpenUpgrade","Template","Navigation","onSignOut","onVisitAccount","Authentication","onNewRegistration","onLogin","Builder","onSaveAsset","onImportSCSermon","onDrawerOpen","drawer","onTabChange","onPreferencesChanges","label","onDownloadSermonAsPdf","onCustomTemplate","onShare","onDownloadSermonAsDocx","onPrint","onExportSlides","onCloseMainDrawerFromX","onPresentSermon","onPresentSlides","contentDrawerOpen","entity","onMainDrawerOpenWithChevron","sendDebouncedSearchEvent","debounce","onSearch","onCopy","onOpenSettings","onOpenWritingLogs","onDeleteWritingLogs","onAddSlide","slideCount","onExtendSlide","onRemoveSlide","onRemoveSlideFromDrawer","onStartedTextToSpeech","seconds","words","onCompletedTextToSpeech","onPausedTextToSpeech","onUnPausedTextToSpeech","onReStartTextToSpeech","onChangeTextToSpeechSpeed","speed","onChangeTextToSpeechVoice","voice","resolveUpdatedOfflineAssets","offlineBuilderAssets","serverBuilderAssets","editedOfflineAssets","filter","editedOffline","editedOfflineAssetsWithoutOnlineCounterParts","offlineAsset","find","serverAsset","checkServerForOfflineBuilderAsset","conflictsToResolve","offlineAssetsThatAreMarkedAsOnlineOnlyNow","some","updatedOfflineAssets","conflict","editedAsset","concat","forEach","deserializeOfflineBuilderAsset","OfflineManager","isOffline","userInfo","useLocation","serailizedOfflineBuilderAssets","setOfflineBuilderAssets","setDeseriealizedOfflineBuilderAssets","setConflictedAssets","conflictStatus","setConflictStatus","setOfflineModeChangeMessage","reconcileOnlineAssetsWithOffline","serverAssets","fetchUpdatedAssetsMarkedAsOffline","setAssetOfflineMode","addAssetToOfflineStorage","removeAssetFromOfflineStorage","Provider","onlineMode","toggleOfflineMode","saveBuilderAssetOffline","updatedAssets","includes","AuthenticationService","decodeResetPasswordEmail","email","getAuthenticatedUser","register","resetPassword","password","confirmPassword","sendResetPasswordEmail","redirect","signIn","rememberMe","signOut","ProfitWell","LoadingPage","height","paddingLeft","paddingRight","alt","width","UserProvider","offlineUser","setOfflineUser","setOnlineUser","loading","setLoading","user","loadUser","setUserId","updateUser","AppConfigService","PageTitleContext","AppConfigProvider","setAppConfig","stripe","setStripe","title","setTitle","onStripeApiKeyLoaded","loadAppConfig","windowAny","Stripe","querySelector","newTitle","OfflineStatusProvider","setIsOffline","ping","onBrowserOnline","onBrowserOffline","removeEventListener","WidthReactContext","IsMobileReactContext","useIsMobile","withWidth","isMobile","useMemo","routes","public","signInPage","reqisterPage","forgotPasswordPage","forgotPasswordSuccessPage","resetPasswordPage","popularSeriesListPage","popularSeriesDetailPage","popularSermonListPage","popularSermonDetailPage","googleAuthPage","sharePage","shareSlidePage","builderPreviewPage","query","app","libraryHomePage","libraryRecentPage","libraryStarredPage","librarySearchPage","libraryCalendarPage","libraryOfflinePage","libraryFolder","sermonTemplateListPage","sermonTemplateDetailPage","premiumSermonListPage","premiumSermonDetailPage","premiumSeriesListPage","premiumSeriesDetailPage","builderPage","presenterPage","settings","subscriptionConfirmationPage","activatePage","checkoutPage","sessionId","AuthenticatedUserContext","useAuthenticatedUser","PrivateRoute","Component","component","indexOf","assign","render","routeProps","redirectBase","redirectWithQuery","encodeURI","to","ValidationHelper","fieldName","retVal","str","PageTitle","setPageTitle","useQueryParams","URLSearchParams","AuthLayout","mobile","direction","Paper","elevation","paddingTop","maxWidth","GlooIcon","SvgIcon","viewBox","fill","xmlns","x","y","rx","stroke","strokeWidth","d","MakerSubscriptionStatus","glooButton","borderColor","borderWidth","fontFamily","fontSize","minHeight","textTransform","glooIcon","transform","marginLeft","marginRight","disabledLink","pointerEvents","GlooButton","fullWidth","isActiveMakerSubscription","subscription","Active","Trial","fontWeight","textButton","submitButton","minWidth","submitButtonMobile","buttonContainer","textDecoration","messageLink","snackbarContent","palette","dark","snackbarContentIcon","opacity","spacing","snackbarMessage","display","termsText","paddingBottom","SignIn","userContext","setEmail","setPassword","setErrors","redirectUrl","glooRedirectUrl","glooUrl","encodeURIComponent","handleFormSubmit","preventDefault","trim","makerSubscription","PageLocation","Library","SnackbarContent","dangerouslySetInnerHTML","__html","onSubmit","TextField","required","autoFocus","onChange","helperText","Hidden","smDown","mdUp","Box","marginBottom","ForgotPassword","ForgotPasswordSuccess","textLink","ResetPassword","params","useParams","setConfirmPassword","refresh","ServerFailed","xs","sm","align","PageNotFound","refreshPage","LinkAssetType","BuilderPreferenceService","preferences","deserializeLinkAsset","linkAsset","convertLinkAssetToLibraryItem","customSlideBackgroundImagePath","LinkAsset","isShared","isTemplate","templateDescription","slideExporterAspectRatio","linkUrl","linkType","getLinkAssetType","YouTube","Vimeo","SoundCloud","General","AssetShareType","deserializeLibraryItem","libraryItem","locationPreached","deserializeShareItem","shareItem","ShareService","shareId","libraryAssetId","subdomain","deserializeWritingLog","logDate","deserializeAssetWritingLogs","writingLogs","AssetWritingLogService","assetId","writingLogId","SearchServiceHelper","verse","translationNoteRegexSurroundingBrackets","translationNoteRegexSurroundingParenths","translationNoteRegex","translationNoteRegexLeadingSemicolonEndingBracket","translationNoteRegexNoComma","translationNoteRegexEndingBracket","translationNoteRegexEmptyNote","match","this","removeFootNotes","verseNumberRegex","verseNumberTagRegex","test","slice","regEx","replacementData","RegExp","SearchService","queryText","skip","take","cancellationToken","cancelToken","token","searchResponse","translationId","scriptureReference","SupportedTranslations","copyrightHtml","root","textAlign","flexShrink","zIndex","breakpoints","down","background","closeIcon","float","copyButton","content","overflow","contentBody","chapterParagraph","verseNumber","verticalAlign","bibleCopyright","ContentDrawerComponent","groupChapterVerses","bibleChapter","versesGroupedByParagraph","verses","startsParagraph","Sermon","copyBibleChapterTextToClipboard","illustrationId","Illustration","Bible","contentType","copiedThing","setBuilderAlert","onClipboardCopy","nameOfThingCopied","state","bookName","chapterNumber","getChapterTextForCopy","illustration","authorFirstName","authorLastName","getIllustrationText","sermon","getSermonText","clipboard","writeText","err","chapter","bibleSearchCopySetting","copiedText","reduce","group","verseForCopy","verseContent","verseNumberStart","verseNumberEnd","bibleTranslationId","getChapterTextForView","groupedVerses","footnoteStartRegex","footnoteEndRegex","bibleSearchViewSetting","chapterCitation","setState","setTimeout","onDrawerClose","contentText","getContent","ClipboardJS","on","getSermon","getIllustration","getBibleChapter","copyChapterContent","copyContent","Divider","copyright","t","translationName","index","showVerseNumbers","removeTranslationNotes","Fragment","Drawer","paper","anchor","ListSubheader","IconButton","Tooltip","renderSermon","renderIllustration","renderBibleChapter","ContentDrawer","BuilderSnackbar","snackbarOpen","ContentProps","Slide","SlideEditing","editor","schema","extend","allowAttributes","conversion","attributeToElement","view","commands","add","AttributeCommand","keystrokes","set","Plugin","AddSlide","CkEditorRegex","noSlides","noMarks","noBlocks","siblingSlides","softBreak","CkEditorHelper","getSlides","slideMap","slideStartIndexes","getIndexesOfAllOccurrences","slideEndIndexes","i","startingIndex","endingIndex","contentStartingIndex","contentEndingIndex","mapping","slideContent","substr","SlideProccessor","combineSiblingSlides","removeSlide","slide","substring","removePreviewSlide","slidesToBeRemovedIds","editorRef","getElementById","slideElementToBeRemoved","firstChild","parentNode","insertBefore","newEditorData","innerHTML","setData","getSelections","getSelectedContent","toJSON","isAttributeActionActive","selections","firstElement","attributes","createEditorInDOM","editorElement","DecoupledEditor","builtinPlugins","toolbarContainer","ui","toolbar","element","injectCopyPasteButtonsIntoToolbar","onCopyButtonClick","onPasteButtonClick","toolbarElement","getElementsByClassName","copyPasteElement","onclick","pasteButton","verticalDivider","childNodes","heading","options","class","highlight","slideMapping","combinedSlideMapping","previousSlide","combinedSlide","combineSlides","slide1","slide2","dataWithoutBlocks","toMatch","re","indexMatches","exec","UserAgent","userAgent","userAgentString","tem","userAgentRef","regexMatch","version","appName","appVersion","splice","parseInt","TextToSpeechContext","useTextToSpeech","slidePrompt","position","desktopBallonEditorButton","transition","slidePromptArrowContainer","slidePromptArrowInverted","top","left","borderBottom","borderLeft","borderRight","slidePromptArrow","borderTop","isActive","textToSpeechButton","DesktopFormatBubble","desktopSlidePrompt","startTextToSpeech","isOnline","onClickSlidePrompt","invertArrowDirection","excecuteEditorAction","isBolded","isItalic","isUnderlined","mobileSlidePrompt","mobileSlidePromptButton","border","mobileTextToSpeechButton","MobileFormatBubble","right","FormatBubble","SlideAction","desktop","EditorActionAlert","toggleSnackbarOpen","execute","EditorContext","useEditor","alignmentOptions","isValidAlignmentString","maybeCorrectString","BuilderAppBarAction","blockTags","styleTags","isElementOfType","elementType","Array","isArray","tagName","toLowerCase","isBlockElement","isStyleElement","isSlideElement","isLineBreakElement","isListElement","nextPotentialSlideSiblingElement","currentElement","nextSiblingNode","nextSibling","nodeType","nextSiblingElement","nextElementSibling","parentElement","isLastSlide","parent","potentialSlideElement","firstChildIsASlide","firstChildNode","firstChildElement","firstElementChild","tempNode","parseStylesFromElement","styles","indexEnd","hasOuterTag","indexStart","getOuterTag","bgColor","colorAsHex","getTextBackgroundHexValue","correctedFontFamily","split","listType","checkListType","elementIsInBlockQuote","elementBlockTag","getBlockTag","alignment","blockTag","getFontSize","html","boldStyles","getInnerStyle","italicStyles","underlineStyles","listParent","tagType","regex","results","contentElement","contentPlainText","innerText","lastIndex","substringElement","substringPlainText","getElementInnerText","textContent","isLastSlideElementForBullet","next","currentElementLiParent","nextElementLiParent","EditorHelper","getEditorDomHtml","getSlideElements","editorHtml","getEditorSlides","slideElements","doc","DOMParser","parseFromString","editorSlides","count","bulletCount","domSlides","slideElement","slideElementArray","isOrderedList","isUnorderedList","isBlockQuote","textAlignment","incBulletCount","generateGuid","setAttribute","slideStyles","domSlide","bulletNumber","countStr","getAttribute","hasAttribute","removeAttribute","getPreviewSlides","previewSlides","editorSlide","domSlideIds","slideLines","getContentSeperatedByLine","previewSlide","lines","getSlideLineChars","getFormatBubblePostitionSettings","iOS","hasSelection","bubbleWidth","Add","hasSlideInSelection","s","addSlide","allSelectedIsSlide","every","firstElementIsSlide","lastElement","lastElementIsSlide","isExtendSlide","isRemoveSlide","rightToLeftExtension","middleExtension","RightToLeftExtend","MiddleExtend","LeftToRightExtend","Remove","selectionLocation","getSelection","getRangeAt","getBoundingClientRect","checkIfClipBoardContainsText","readText","executeSlideAction","slideAction","onMiddleSlideExtend","onRightToLeftSlideExtend","onToggleSlide","getTextFromSelections","visit","join","maxLen","MAX_LINE_LENGTH","lineNum","domSlideArray","contentLength","word","contentLines","indexCorrectedLinesSplitIntoChars","getIndexCorrectedLineChars","getIndexCorrectedStyles","styleIndexStart","styleIndexEnd","line","lineChars","lastChar","firstChar","lineIndexEnd","indexInContent","lineIndexStart","char","isBold","isItalics","trueIndex","indexCorrectedChar","indentLeft","indentRight","slides","bulletStartIndex","bulletContentAccumulator","bulletContent","accumulator","currentSlide","slideArray","prev","listStyle","correctedIndexStyles","editorData","getData","editing","focus","BuilderContext","useBuilder","ConsecutiveSentences","totalSentanceCount","repeatFirstWordCount","previousFirstword","tree","sentence","firstword","SKIP","consecutiveFirstWord","percentage","TextAnalysisCategory","consecutive_sentences","displayText","TextAnalysisResult","improvement","goodResult","getConsecutiveSentenceText","improvements","goodResults","GradeLevel","ariScore","counts","wordCount","letters","node","character","letter","characterWeight","sentenceWeight","base","NaN","ari","gradeLevel","floor","age","getGradeText","SentenceLength","hardSentences","sentenceWordCount","countWords","sentenceLength","sentence_length","getHardSentenceText","ParagraphLength","totalParagraphCount","longParagraphCount","paragraph","longParagraphs","paragraph_length","getLongParagraphText","PassiveVoice","verbs","passiveVoiceCount","phrase","nodeAfter","findAfter","partOfSpeech","passivePercentage","passive_voice","getPassiveText","ReadingScore","fleschScore","totalSyllables","syllables","syllable","wordWeight","flesch","readingEase","score","flesch_reading_ease","getReadingScoreText","ScriptureSaturation","scriptureReferenceRegex","scriputreReferences","scriptureReferenceCount","totalWordCount","refs","ref","scriptureSaturation","scripture_saturation","getScriptureSaturation","scriptureReferences","TransitionalWords","transitionalWordRegex","transistionalWords","transitionalPhraseCount","transitionalWords","transitional_words","getTransitionalWordText","WordCount","SubheadingDistribution","subheadings","analyze","subheading_distribution","getSubheadingText","Analyzer","subheadingCount","hideConsecutiveSentences","hideFleschReadingEase","hideParagraphLength","hidePassiveVoice","hideScriptureSaturation","hideSentenceLength","hideSubheadingDistribution","hideTransitionalWords","KeyWordParser","parseKeywords","text","stopWords","max","removeText","removeContractionsRegex","stopStr","foundKeywords","retext","english","pos","keywords","maximum","keyword","matches","SermonAnalyzer","characterCount","TextToSpeechService","mobileSpacing","slider","labelStyle","transformOrigin","textVoice","TextToSpeechSettings","toggleSettingsOpen","showSettings","handlePreferenceChange","textToSpeechVoice","setVoice","textToSpeechSpeed","setSpeed","DialogContent","overflowX","FormControl","placement","InputLabel","htmlFor","Select","inputProps","MenuItem","Slider","min","rounded","parseFloat","toFixed","handleSpeedChange","DialogActions","builder","setAlert","savePreferences","audioPlayerRef","useRef","bubbleWordCount","setBubbleWordCount","showAudioPlayer","setShowAudioPlayer","audioFileUrl","setAudioFileURL","isLoading","setIsLoading","isDisabled","setIsDisabled","isAudioPaused","setIsAudioPaused","synthesizerVoice","setSynthesizerVoice","synthesizerSpeed","setSynthesizerSpeed","openSettings","setOpenSettings","audioPlayer","paused","pause","getBubbleWordCount","hideFormatBubble","getBubbleText","speechConfig","SpeechConfig","fromAuthorizationToken","speechSynthesisOutputFormat","SpeechSynthesisOutputFormat","Audio24Khz160KBitRateMonoMp3","stream","AudioOutputStream","createPullStream","audioConfig","AudioConfig","fromStreamOutput","speechSynthesizer","SpeechSynthesizer","speakSsmlAsync","audioFile","Blob","audioData","autoplay","onended","stopTextToSpeech","load","currentTime","revokeObjectURL","pauseTextToSpeech","resumeTextToSpeech","play","restartTextToSpeech","updatedPreferences","WordCountParser","stringToParse","DateHelper","timeSinceDate","dateSearched","diffInS","diffInM","diffInH","diffInD","timeFromSeconds","buildDateFormat","dt","toLocaleDateString","month","day","year","renewalDate","isTrial","today","nextMonth","getMonth","getFullYear","getDate","addDays","date","days","setDate","getDatesBetween","startDate","endDate","dates","currentDate","sameCalendarDate","date1","date2","refreshWritingLog","setEditor","setEditorSlides","setPreviewSlides","offlineEnabled","analyzerResults","setAnalyzerResults","lastEdit","setLastEdit","writingLogTimer","setWritingLogTimer","writingLogCreated","setWritingLogCreated","setWritingLogId","saveInProgress","setSaveInProgress","formatBubbleSettings","setFormatBubbleSettings","setSnackbarOpen","setSnackbarMessage","editorCallbackRef","onWindowResize","setInterval","visibilityState","onEditorContentChanged","delayedSaveEditorContentToBuilderAsset","debouncedProcessingOfEditorContent","onSaveEditorContentToBuilderAsset","useCallback","assetToSave","customSlideBackgroundImageUrl","updatedOfflineAsset","setBuilderAsset","logToSave","writingTimeInSeconds","all","responses","saveAssetResult","writingLogResult","processEditorChanges","processDomChanges","throttledProcessingOfEditorDOMContent","onNotifySnackBar","updateFormatBubbleSettings","copyFromBuilder","execCommand","classList","notifyClipboardCopy","pasteIntoBuilder","myEditor","change","writer","createText","insertContent","updateAnalyzerResults","onRemovePreviewSlide","getHtml","onEditorDomChange","NonPaidUnshareDialog","onConfirmUnshareNonPaid","shareResponse","onShareChangeSuccess","DialogContentText","urlInput","maxHeight","listHorizontal","flexDirection","listItem","socialIcons","listItemSubContainer","SharedContent","fromSlides","encodedEmailUrl","emailUrl","encodedFacebookUrl","facebookUrl","firstName","lastName","encodedTwitterUrl","twitterUrl","InputProps","readOnly","handleCopy","List","ListItem","FacebookLogo","rel","TwitterLogo","disabledButton","disabledText","disabledAnchor","UnsharedContent","FacebookLogoDisabled","TwitterLogoDisabled","closeMobileIcon","titleRight","mobileFormLabel","switchLabel","loadingContainer","ShareDialog","setUrl","openUnshareNonPaidDialog","setOpenUnshareNonPaidDialog","Boolean","shareFromSlides","activeMakerSubscription","responseItem","onError","sharedId","sharedResponse","sharedItem","determineUrl","loadAsset","handleShareDetermination","share","unshare","el","editable","contentEditable","range","createRange","selectNodeContents","removeAllRanges","addRange","setSelectionRange","select","onGiveMessage","isOpen","fullScreen","FormControlLabel","control","Switch","checked","labelPlacement","RenderNonPaidUnshareDialog","handleUnshare","commentsEnabled","enabled","assetShareId","assetShareVideoTypeId","assetShareType","videoPath","parseUrl","unsafeUrl","startsWith","SubdomainSetupDialog","noChurchSite","setNoChurchSite","confirmDomainSet","setConfirmDomainSet","churchWebsiteForDomain","setChurchWebsiteForDomain","parsedChurchWebsiteForDomain","setParsedChurchWebsiteForDomain","churchNameForDomain","setChurchNameForDomain","parsedChurchNameForDomain","setParsedChurchNameForDomain","onSubmitDomain","stopPropagation","prefResponse","itemId","handleShareSuccess","disableBackdropClick","currentTarget","psl","isValid","sld","encoded","validateAndSetDomainFromChurchWebsite","Checkbox","validateAndSetDomainFromChurchName","RenderUnsharedContent","useSharingDialog","sharedUrl","RemoveVideoDialog","sharingContext","removeVideo","updateSharedItem","showMessage","vimeoRegex","RenderVimeo","setVideoPath","goodParse","setGoodParse","saveVemio","tryParseUrlVimeo","parsedUrl","endAdornment","InputAdornment","youtubeRegex","RenderYoutube","saveYouTube","tryParseUrlYouTube","parsed","facebookRegex","RenderFacebook","saveFacebook","tryParseUrlFacebook","Facebook","thumbnailListItem","socialThumnails","fakeAnchor","clickable","ShareVideoDialog","addVideoType","setAddVideoType","RenderSharedContent","showLinkVideo","setShowLinkVideo","showRemoveVideo","setShowRemoveVideo","slug","handleCommentsToggle","ReactSharingDialogContext","SharingDialog","firstTimeUser","setFirstTimeUser","setSharedItem","sharePreferences","setSharePreferences","shareUrl","sharePreferencesResponse","existingShareResponse","newShareResponse","fetchData","handleShareToggle","views","SaveAsTemplateDialog","templateTitle","setTemplateTitle","setTemplateDescription","handleSaveConfirm","disableEscapeKeyDown","FormHelperText","multiline","rows","rowsMax","createTheme","typography","primary","blue","secondary","main","default","overrides","MuiCssBaseline","MuiListItemIcon","useThemeContext","withRoot","propsAny","CssBaseline","AdminService","UserAvatar","adminMode","userMenu","setUserMenu","handleSignOutClick","inAdminImpersonationMode","windowLocation","Avatar","light","profileImageUrl","charAt","Menu","anchorEl","ExportHtml","columns","mutateHtml","columnStyle","outputHtml","win","write","print","DrawerContent","BuilderDrawerContext","useBuilderDrawer","RocketLaunchIcon","slidesIcon","borderStyle","slidesIconActive","assistantIcon","assistantIconActive","bibleIcon","bibleIconActive","detailIcon","detailIconActive","illustrationIcon","illustrationIconActive","sermonIcon","sermonIconActive","geniusIcon","geniusIconActive","geniusBadge","up","analyzerIcon","analyzerIconActive","badge","BuilderAppIconListItems","slideLength","builderDrawer","drawerContent","showGeniusBadge","onMainDrawerChange","dense","Details","Slides","Badge","badgeContent","Assistant","Genius","contentDrawer","mixins","chevron","bottom","DesktopBuilderAppSelection","disableGutters","drawerOpen","backdrop","mobileMessageWraper","desktopMessageWraper","whiteSpace","animation","TextToSpeechPlayer","textToSpeech","CKEditor","editorContext","observer","MutationObserver","observe","childList","subtree","disconnect","divProps","setupEditor","DropDownButton","displayBody","buttonText","icon","setAnchorEl","mdDown","toLocaleUpperCase","lgUp","Popper","ClickAwayListener","onClickAway","outline","PresentationExporter","fontColor","imagePath","slideBackground","path","exportFile","imageAsBase64","symbol","lineContent","blockQuoteFlag","orderedListCount","blockTagType","lineChar","bulletChar","String","fromCharCode","tabChar","textOptions","cleanedText","m","mapEncodingToSpecialCharacter","fontFace","bold","italic","underline","bullet","num","presentation","masterName","sectionTitle","lineOptions","w","h","generateLineContent","addText","PptxGenJS","layout","defineSlideMaster","addTextToSlide","writeFile","fontSizes","small","medium","large","_clipPath","_g","images","BackgroundImages","exportSlides","handleExport","presentationTitle","preferredAspectRatio","getFontColor","exportWithImageData","exportWithImagePath","getImageFullRes","backgroundImage","getStockBackgroundImage","standardImagePath","widescreenImagePath","slideExporterSelectedGalleryImageId","selectedImage","image","_extends","Object","bind","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","keys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgOneColumn","_ref","svgRef","titleId","strokeLinecap","strokeMiterlimit","xmlnsXlink","clipRule","clipPath","fillOpacity","fillRule","strokeLinejoin","ForwardRef","SvgTwoColumns","SvgThreeColumns","flexGrow","grow","flex","appBar","boxShadow","transitions","easing","sharp","duration","leavingScreen","appBarShift","easeOut","enteringScreen","userIcon","drawerButtonSlidesTitle","drawerButtonExploreTitle","editorContainer","mainPaper","editorWrapper","mainToolbar","textOverflow","description","printGrid","menuIcon","webkitBoxShadow","MozBoxShadow","currentLocation","DesktopView","hasSlides","assetTitle","setAssetTitle","editingTitleInToolbar","setEditingTitleInToolbar","onPrintAsset","onSaveAssetTitle","toggleOfflineAsset","toggleStar","updatedAsset","AppBar","Toolbar","handleAppBarAction","GoBack","Input","onKeyDown","placeholder","innerWidth","wrap","SaveAsTemplate","ListItemAvatar","ListItemText","Present","toggleSlideExportDialog","PPTIcon","square","subtitle","searchBar","inputSearchText","placeHolderIcon","placeHolderText","emptyState","searchWrapper","searchResults","overflowY","searchResultsAmp","lineHeight","copyIcon","fontVariantNumeric","noVerseNumbers","formControl","copyInProgress","starIcon","verticalText","settingsIcon","relatedButtons","scriptureActionButtons","actionButtons","noSup","BibleSearchComponent","cancellationTokenFactory","onDrawerToggle","showHideVerseTextToggled","onPreferenceChange","bibleSearchShowVerseNumbers","delaySearch","searchTimeOut","clearTimeout","startSearch","CancelToken","totalBibleVerseSearchResultCount","onCopyInProgress","isValidScriptureSearch","isChapterSearch","queriedBibleTranslationId","prevsProps","bibleVerseSearchResult","bibleVerseSearchServerError","searchBible","cancel","findBibleVerses","totalCount","isChapter","selectedVerse","formattedVerse","correctVerseRefInText","removeVerseNumbers","onCopyVerse","bibleVerseObj","regexp","bibleResult","bibleTranslation","onSettingsDialogToggle","startAdornment","onRelatedSearch","loadMore","hasMore","useWindow","loader","bibleVerse","displayContent","displayedVerseText","highlightText","onBibleVerseSelected","BibleSearch","BibleSearchSettingsOptions","BibleSettingsDialog","selectedTranslationId","setSelectedTranslationId","selectedCopySetting","setSelectedCopySetting","selectedViewSetting","setSelectedViewSetting","onSaveSettings","translation","selected","shrink","option","chevronLeft","infoContainer","inlineHolder","inlineIcon","infoRow","infoProp","infoValue","boxSizing","drawerInfoContent","infoClickable","editInput","editActionsContainer","dateInput","drawerTitle","DetailsContent","inEditMode","setInEditMode","isSaving","setIsSaving","editingTitleInDrawer","setEditingTitleInDrawer","showCalendar","editState","setEditState","editStateUnsaved","setEditStateUnsaved","calendarRef","preachDate","scriptures","scripture","updatedEditState","showCalendarCard","calendarShow","handleEditClose","handleSaveAsset","starChangedTo","isError","keyCode","utils","DateFnsUtils","DatePicker","clearable","setHours","weekday","StringHelper","toTitleCase","j","lowers","uppers","txt","toUpperCase","toShortenSentence","maxStringLength","shorterSentence","removeHTML","RatingHelper","convertToStars","rating","stars","ratingStr","SermonGeniusResultsList","copy","r","disableRipple","contributor","showFull","circleText","UnpaidDrawer","listText","upgradePath","displayNumber","upSellUrl","geniusTextBlock","analyzerTextBlock","alignContent","li","ListItemIcon","GeniusSearchService","sermonIllustrationId","Id","ScriptureReferenceParser","matchedScriptureReferences","panel","panelSummary","textSize","illustrationTitle","sermonTitle","bibleTitle","GeniusSearch","drawerContext","sermons","illustrations","illustrationServerFailed","setIllustrationServerFailed","sermonServerFailed","setSermonServerFailed","bibleVerseServerFailed","setBibleVerseServerFailed","canRefresh","setCanRefresh","loadingText","setLoadingText","setOpen","dismissGeniusBadge","searchGenius","geniusSearchCounter","updateLoadingText","time","displayLoadingState","getKeywords","getScriptureRefs","scriptureRefs","searchVerseResult","searchSermonIllustrationResult","searchSermonResult","verseResults","sermonIllustrationResults","sermonResults","geniusSearchResults","removeSermonResult","removeSermonIllustrationResult","removeIllustrationResult","onCopySermon","selectedSermon","bodyNoHtml","onCopyIllustration","selectedIllustration","illustrationText","LoadingState","lastSearched","Accordion","defaultExpanded","AccordionSummary","expandIcon","onSermonSelected","onIllustrationSelected","IllustrationSearchClassComponent","presetSearchText","totalIllustrationSearchResultCount","illustrationSearchResult","illustrationSearchServerError","searchIllustrations","findIllustrations","pageStart","IllustrationSearch","SermonSearchClassComponent","totalSermonSearchResultCount","sermonSearchResult","sermonSearchServerError","searchSermons","findSermons","SermonSearch","SvgGoogleIcon","GoogleSlidesHelperService","exception","standardImageS3Path","widescreenImageS3Path","GoogleAuthService","api","urlConfig","authUri","generateGoogleAuthRedirectUri","client_id","redirect_uri","GoogleSlidesJsonGenerationService","slideId","createSlide","objectId","shapeId","pageId","createShape","elementProperties","pageObjectId","magnitude","unit","scaleX","scaleY","shearX","shearY","translateX","translateY","shapeType","imgId","imageUrl","createImage","textBoxId","endIndex","startIndex","convertToOnesScale","updateTextStyle","opaqueColor","rgbColor","red","green","g","textRange","fields","createParagraphBullets","bulletPreset","updateShapeProperties","shapeProperties","contentAlignment","updateParagraphStyle","foregroundColor","indentStart","indentFirstLine","objectIds","updatePageElementsZOrder","pageElementObjectIds","operation","updatePageProperties","pageProperties","pageBackgroundFill","stretchedPictureFill","contentUrl","containerId","insertText","deleteObject","GoogleSlidesStyleIndexHelperMethods","indexes","endIndexes","startIndexes","currentIndexIsNotNextSequentially","nextIndexIsNotNextSequentially","nextFontFamilyIsDiff","prevIndexNumberIsNotNextSequentially","prevFontFamilyIsDiffFromCurrent","nextFontSizeIsDiff","prevFontSizeIsDiffFromCurrent","nextBackgroundColorIsDiff","prevBgColorIsDiffFromCurrent","SlideExportsHelper","hex","random","GoogleSlidesRequestBuilder","updateTextBackgroundReqs","numIndexPairs","currentEndIndex","currentStartIndex","updateTextBackgroundReq","createUpdateTextBackgroundRequest","fontFamilyReqs","fontFamilyReq","createUpdateFontFamilyRequest","updateFontStyleReqs","updateFontStyleReq","makeFontBold","makeFontItalics","makeFontUnderlined","indentAmount","reqs","makeQuoteTextItalics","makeQuoteTextIndented","makeTextIndented","makeFirstQuoteTextLineIndented","makeTextFirstLineIndented","fontSizeReqs","fontSizeReq","changeFontSize","boldIndexes","boldEndIndexes","getStyleEndIndexes","boldStartIndexes","getStyleStartIndexes","createUpdateFontStyleRequests","italicsIndexes","italicsEndIndexes","italicsStartIndexes","underlinedIndexes","underlinedEndIndexes","underlinedStartIndexes","fontFamilyIndexes","fontFamilyStartIndexes","getFontFamilyStartIndexes","fontFamilyEndIndexes","getFontFamilyEndIndexes","createUpdateFontFamilyRequests","fontSizeIndexes","fontSizeStartIndexes","getFontSizeStartIndexes","fontSizeEndIndexes","getFontSizeEndIndexes","createUpdateFontSizeRequests","backgroundColorIndexes","textBackgroundColorEndIndexes","getTextBackgroundColorEndIndexes","textBackgroundColorStartIndexes","getTextBackgroundColorStartIndexes","createUpdateTextBackgroundRequests","makeOrderedListRequest","createListMarkerRequest","makeUnorderedListRequest","indentBulletsRequest","makeBlockQuoteRequest","createBlockQuoteRequest","indentParagraphText","indentFirstLineText","insertTextReqs","lineText","insertTextReq","unshift","charCount","persistentApplicationState","backgroundImagePath","requests","deleteTitlePage","createTextRequestsWithNewLines","numLines","insertNewLineAndCorrectIndexes","currentCharIndex","getSlideContentLength","currentLine","currentChar","centerTextVerticle","makeParagraphIndented","insertImageAsStretchedBackground","changeFontColor","makeFontFamilyReqs","getTextUpdateFontFamilyRequests","makeFontBoldReqs","getTextUpdateBoldRequests","makeFontItalicsReqs","getTextUpdateItalicsRequests","makeFontUnderlinedReqs","getTextUpdateUnderlinedRequests","makeFontSizeReqs","getTextUpdateFontSizeRequests","makeUpdateTextBackgroundColorReqs","getTextUpdateBackgroundColorRequests","createListReqs","getCreateListRequests","createBlockQuoteReqs","getCreateBlockQuoteRequests","alignmentStyle","createAlignmentReq","makeTextAligned","GoogleSlidesOAuthLandingPage","hash","redirectToGoogleSlides","urlHashRegex","hashParams","decodeURIComponent","getHashParams","splitParams","stateObj","getDefaultBackgroundImageUrlById","property","appState","getEditorData","getPreviewSlidesFromEditorHtml","createPresentation","presentationId","addSlidesToPresentation","header","Authorization","getAccessToken","PostToGoogleApi","generateUpdateRequestBody","getPersistentStateObject","createGoogleSlides","exportedPresentationId","authServiceRedirect","formSelect","formControlOverride","modalCancelButton","modalTitle","selectFontLabel","googleSignInButton","googleSignInIcon","ExportSlidesModal","setFontColor","signedCustomImageUrl","setSignedCustomImageUrl","getBackgroundImageUrl","signedUrl","hasCustomImage","handleCustomImage","exportToGoogleSlides","defaultImageId","imageAspectRatio","handleClose","HorizontalCentered","VerticalCenter","fillParent","gridList","flexWrap","imageSelection","gridTileImage","MozTransition","WebkitTransition","uploadImageContainer","uploadInput","uploadButton","uploadIcon","customImage","removeImageButton","slideAspectRatios","SlideSettingsDialog","selectedAspectRatioId","setSelectedAspectRatioId","preferredImageId","selectedImageId","setSelectedImageId","hasPreferredCustomImage","setHasPreferredCustomImage","imageFullPath","onFileChange","files","handleFileUpload","FileReader","readAsDataURL","onload","selectedCustomImage","uploadedFileNameSplit","extension","uploadUrlResponse","uploadProgressPercentage","uploadResponse","fileContents","onCustomBackgroundSave","onRemoveImage","onDeleteCustomSave","GridList","cellHeight","cols","UploadImageTile","GridListTile","onDoubleClick","widescreenImageThumbnailPath","standardImageThumbnailPath","customImageBase64Content","accept","backgroundCard","backgroundSize","wordWrap","iconButton","deleteSlideButton","gridItem","userSelect","imageTitle","slidePreviewText4x3Small","slidePreviewText16x9Small","slidePreviewText4x3Medium","slidePreviewText16x9Medium","slidePreviewText4x3Large","slidePreviewText16x9Large","DisplaySlide","getImageThumbnail","addSurroundingTag","blockType","containsList","slideLinesHtml","slideLine","lineHtml","characterHtml","generateLineCharacterHtml","listLineIndexes","slideLineHtml","blockStyles","generateSlideLineHtml","list","placeHolderTextContainer","bottomBtnList","bottomBtnListItem","noPadding","SlidesContent","exportModalOpen","setExportModalOpen","settingsDialogOpen","setSettingsDialogOpen","exportToPresentation","saveSlidesSettings","uploadedCustomImage","hasUploadedSlideImage","button","showShareDialog","backgroundImageAspectRatio","setCustomImageBase64Content","customImageAddedClient64Base","customImageAddedClientMimeType","WritingLogDialog","totalTime","setWritingLogs","showDialog","closeDialog","handleRemoveWritingLog","logTimeInSeconds","ListItemSecondaryAction","categoryTitle","AnalyzerTextSuggestionsPanel","suggestions","bulletColor","ExpansionPanel","ExpansionPanelSummary","suggestion","AnalyzerSettingsDialog","currentWordsPerMinute","closeSettingsDialog","setWordsPerMinute","consecutiveSentences","setConsecutiveSentences","fleschReadingEase","setFleschReadingEase","paragraphLength","setParagraphLength","passiveVoice","setPassiveVoice","setScriptureSaturation","setSentenceLength","subheadingDistribution","setSubheadingDistribution","setTransitionalWords","entries","WordsPerMinute","FormLabel","FormGroup","row","dividerLine","settingsTitle","textAnalysis","textAnalysisResults","cardHeader","cardContent","Slow","Average","Fast","wordsPerMinute","openAnalyzerSettings","setOpenAnalyzerSettings","openWritingLogs","setOpenWritingLogs","onToggleWritingLogDialog","onToggleSettingsDialog","AssistantMode","AssistantResponse","responseComplete","feedback","setFeedback","thumbsUp","setThumbsUp","feedbackSubmitted","setFeedbackSubmitted","feedbackAccepted","setFeedbackAccepted","setFeedbackError","feedbackDisabled","updateThumbsUp","submit","gutterBottom","Collapse","in","timeout","minRows","AssistantService","AssistantGetStarted","topics","setTopics","topicError","setTopicError","setScriptureReferences","scriptureError","setScriptureError","AssistantFeelingStuck","AssistantAnalyze","DrawerAccordion","withStyles","expanded","DrawerSummary","promptDetails","responseDetails","AssistantSection","sectionMode","expand","onExpand","hubConnection","resetConnection","responseEndRef","mode","setMode","setResponse","responseStream","setResponseStream","setResponseComplete","cancelled","setCancelled","finishedGenerating","alertOpen","setAlertOpen","alertMessage","setAlertMessage","feedbackArgs","setFeedbackArgs","sectionColor","GetStarted","FeelingStuck","Analyze","scrollToBottom","scrollIntoView","behavior","block","triggerGeneration","methodName","methodArgs","subscribe","complete","parts","submitFeedback","assistantResponse","feedbackResponse","dispose","AccordionDetails","Alert","severity","expandedSection","setExpandedSection","setHubConnection","hubConnectionReady","connection","HubConnectionBuilder","withUrl","withAutomaticReconnect","build","catch","stop","handleSectionClick","section","Backdrop","drawerClose","MainDrawer","propsOpen","lastSearch","setLastSearch","setPresetSearchText","setGeniusSearchCounter","setTranslationId","setBibleVerseSearchResult","setIllustrationSearchResult","setSermonSearchResult","updatedSearchDate","updatedSermons","updatedIllustrations","copyToClipboard","selectedScriptureReference","handleContentDetailSelection","selectedIllustrationId","illustrationContent","selectedSermonId","sermonContent","fab","androidIconsDrawer","iosIconsDrawer","closeDrawerFab","MobileBuilderAppSelection","drawerType","isIos","setIsDrawerOpen","isDrawerOpen","PaperProps","editorToolBar","contentShift","IOSBuilderView","keyboardActive","setKeyboardActive","show","setShow","onResize","scrollTo","onFocus","onBlur","isMobileIconsDrawerOpen","appBarBottom","AndroidBuilderView","toolBar","drawerIcons","MobileLayout","moreOptionsDrawerIsOpen","setMoreOptionsDrawerIsOpen","setIsMobileIconsDrawerOpen","expandFile","setExpandFile","expandDownload","setExpandDownLoad","expandPresent","setExpandPresent","expandPrint","setExpandPrint","showMainMenu","setShowMainMenu","toggleFileDrawer","togglePrintDrawer","toggleDownloadDrawer","togglePresentDrawer","inset","moveableContent","moveableContentShift","getStoredDrawerContent","preview","drawerContentValue","toDrawerContent","isPreview","drawerStatus","getStoredDrawerOpenState","setMainDrawerOpen","setMainDrawerContent","hideBadgeKey","geniusBadgeDismisalCheck","geniusBadgeDismissed","setGeniusBadgeDismissed","setShowGeniusBadge","onCloseContentDrawer","BuilderView","defaultPreferences","builderExploreDrawerOpen","builderSlidesDrawerOpen","BuilderHome","sermonAsset","selectedAsset","setSelectedAsset","serverFailed","setServerFailed","pageNotFound","setPageNotFound","showExportSlides","setShowExportSlides","setSelectedSermonId","setSelectedIllustrationId","setSelectedScriptureReference","setPreferences","setContentDrawerOpen","openShareDialog","setOpenShareDialog","openSaveAsTemplateDialog","setOpenSaveAsTemplateDialog","shareDialogFromSlides","setShareDialogFromSlides","openNewSharingDialog","setOpenNewSharingDialog","fieldErrors","setFieldErrors","setCustomImageAddedClient64Base","mountComponent","mountOfflineComponent","builderAssetResponse","preferencesRequest","logs","foundLocalAsset","closeContentDrawer","onRefreshWritingLog","oldItem","handleShare","isSlides","onSaveAsTemplateConfirm","desciption","goBack","onPresent","handleCustomTemplate","Share","selectedContent","updateAsset","ToolbarLocation","TimeMode","PresenterClock","setCurrentTime","clockInterval","clearInterval","toLocaleTimeString","hour","minute","usePrevious","presenterToolBarWrapper","presenterToolBarBottom","presenterToolBarTop","presenterToolBar","presenterToolBarDetails","timeDisplay","timerProgressBar","PresenterToolBar","timeMode","setTimeMode","timeLimit","setTimeLimit","timerStartSecond","setTimerStartSecond","timerDisplaySecond","setTimerDisplaySecond","timerProgressPercent","setTimerProgressPercent","isTimerOn","setIsTimerOn","prevTimeMode","prevTimeLimit","timerIntervalRef","timerStartTimeRef","barStyling","barLocation","Top","CountDown","updateSettings","onPauseTimer","calculateTimerElapsedDurationInSeconds","trunc","abs","getTimerProgressPercent","ceil","intervalId","timeElapsedInSeconds","displaySeconds","progressPercent","onStartTimer","Clock","isNegative","sec","minutes","remainderSeconds","displayMinutes","displayTimer","toggleDrawer","LinearProgress","fontSizingWrapper","fontPrecentage","buttonIcon","timerIcon","popOverContainer","mr15","hiddenTitleContainerMdUp","hiddenTitleContainerMdDown","PresenterAppBar","anchorElFont","setAnchorElFont","decreaseFontSize","increaseFontSize","onGoBack","Popover","getFontSizeAsPercent","PresenterPreferencesService","progressBar","overflowWrap","settingsListing","nested","noMargin","textField","resetButton","timerIconWrapper","borderTopLeftRadius","borderBottomLeftRadius","blockquote","fontStyle","h1","h2","HomeComponent","updateScrollProgress","documentElement","innerHeight","rectHtmlHeight","scrollRange","scrollY","scrollTop","scrollProgress","settingsOpen","savePresenterPreferences","countdownTime","timerEnabled","toolbarLocation","toggleBarLocationOptions","settingsBarPlacementListOpen","handleBarLocationChange","toolbarLocationValue","Bottom","onTimeModeChange","onTimeLimitChange","val","isNaN","resetTimer","reset","isFullScreen","getBuilderAsset","getPresenterPreferences","presenterPreferencesResponse","onscroll","contentContainer","template","onSignIn","tabIndex","role","RadioGroup","Radio","CountUp","PresenterHome","compatProps","offlineAssets","offlinePresenterPreferences","setOfflinePresentorPreferences","loadPresenterPreferences","offlineSuccess","prefs","footerText","footerLink","ShareHome","setBody","removeHtmlTags","existingMeta","meta","getSharedAsset","removeHtmlTagsRegex","DownloadSlides","builderPreferences","AccountService","paymentMethodToken","updateRequest","ChangeCardDialogWithStripe","injectStripe","validationError","setValidationError","onSubmitPayment","createToken","paymentMethodResponse","onSuccess","autoComplete","ChangeCardDialog","AccountInfo","cancelButton","SubscriptionInfo","paymentMethod","openCancelAndRefundDialog","openCancelDialog","openChangeCardDialog","openUpdateCardDialog","cancellationDate","getSubscriptionStatus","serviceStopDate","cardBrand","lastFourOfCardNumber","expirationMonth","expirationYear","currentPlanName","chip","paidChip","mobileDetails","BillingStatementsTable","TableRow","TableCell","amount","Chip","paid","invoiceNumber","createdDate","paymentUrl","Card","CardContent","CardActions","CancelSubscriptionDialog","toggleCancelDialog","onSubscriptionChanged","toggleSpecialOfferDialog","toggleShowErrorMessage","setdisabled","applicationUserResponse","RefundSubscriptionDialog","openRefundDialog","toggleRefundDialog","onRefundSubscription","UpdateCardDialog","toggleUpdateCardDialog","updateCardInfo","setExpirationYear","setExpirationMonth","onUpdatePayment","paymentMethodId","newExpirationMonth","newExpirationYear","headerWrapper","banner","imageWrapper","downGradeImage","iconWrapper","downGradeButton","cardTitle","textCard","SpecialOfferDialog","openSpecialOfferDialog","toggleConfirmationDialog","onDiscountSubscription","onContinueCancel","disableTypography","md","DownGradeImage","ConfirmationDialog","openConfirmationDialog","serviceStartDate","htmlRegex","AccountSnackBar","messageNodes","avatar","contentSection","Settings","setOpenCancelDialog","setOpenRefundDialog","setOpenUpdateCardDialog","setOpenChangeCardDialog","setOpenConfirmationDialog","setOpenSpecialOfferDialog","billingStatements","setBillingStatements","setPaymentMethod","showErrorMessage","setShowErrorMessage","getBillingStatements","getPaymentMethod","billingStatementResponse","updatedPaymentMethod","toggleChangeCardDialog","Table","TableHead","TableBody","newPaymentMethod","deserializePremiumSermonAsset","deserializePremiumSermon","premiumSermon","assets","PremiumSermonService","PremiumSermonId","deserializePremiumSermonSeriesAsset","deserializePremiumSermonSeries","premiumSermonSeries","PremiumSermonSeriesService","series","PremiumSermonSeriesId","endpoint","SubscriptionService","ConfirmationPage","routeQueryString","premiumSeriesId","premiumSermonId","builderPreviewId","userResponse","sermonAssetResponse","saveAssetRequest","Number","handleConfirmation","MarketingPageType","Search","searchTerm","shortDescription","sermonSeries","replaceAllCompat","textToFind","textToInsert","escapeRegExp","media","objectFit","maximumWidth","maximumWidthMobile","noUnderline","SermonCard","cardImage","assetName","urlSafeAssetName","safeToEncodeAssetName","encodedAssetName","getUrlSafeAssetName","cardLink","Series","lg","CardActionArea","CardMedia","actionButton","buttonSubText","centeredLightWhiteText","centeredText","hero","heroHeaderText","heroHeaderTextWithSubText","heroHeaderSubText","Hero","headerPreText","headerSubText","assetShortDescription","callToActionUrl","orderBy","selector","order","dateA","dateB","number","numberA","numberB","string","s1FieldValue","s2FieldValue","localeCompare","hideOverflow","tileContainer","noResults","ProductsList","pageType","setPremiumSermonSeries","premiumSermons","setPremiumSermons","queryString","setQueryString","serverError","setServerError","heroProps","getPremiumSeriesData","getPremiumSermonsData","Sermons","getParameterByName","PremiumSermonSeriesSearch","thumbnailUrl","renderPremiumSermonSeriesTiles","PremiumSermonSearch","renderPremiumSermonsTiles","autoMargin","mediaContainer","longDescriptionContainer","longDescriptionText","tableContainer","ProductPageContent","TableSortLabel","renderSeriesAssets","Product","assetNameFromUri","setSeries","setSermon","documentMetaInfo","setDocumentMetaInfo","getPremiumSermonData","renderPageContent","BuilderPreviewContext","useBuilderPreview","signInContainer","paperGridItem","signInPaper","logoImage","cssLabel","cssFocused","cssUnderline","borderBottomColor","cssOutlinedInput","notchedOutline","divider","SignInRegisterDialog","showForgotPassword","setShowForgotPassword","toggleForgotPassword","ForgotPasswordForm","SignInForm","disable","RegisterForm","previewContext","BuilderPreview","InputLabelProps","focused","fullName","setFullName","registerUser","splitName","loaction","showSnackBar","bulletPoints","SignUpOfferDialog","proSubscription","onSelectMakerCheckout","userCanHaveTrial","onSelectedBundleCheckOut","MakerCheckOutDialog","cancelPath","createHref","createBundleCheckout","BundleCheckoutDialog","iframeHeight","setIframeHeight","handleIframeMessage","payload","dialogPaper","touchAction","backButton","dialogContentPaper","appUser","setUser","setSermonAsset","serverLoading","setServerLoading","showOffer","setShowOffer","showMakerCheckout","setShowMakerCheckout","showBundleCheckout","setBundleCheckout","saveAssetToLibrary","knownUser","updatedUser","LibraryItemService","libraryItems","deserializeFolder","folder","convertFolderToLibraryItem","templateText","FolderService","deserializeSermonSeries","convertSeriesToLibraryItem","SermonSeriesService","CreateFolderDialog","context","useLibrary","libraryAlert","useLibraryAlert","activeFolderId","setDisable","onCreateFolder","addLibraryItem","removeLibraryItem","prevUrl","onCreateSermonSeries","selectedFolderType","LinkAssetService","fileAssetToSave","YoutubeLinkDialog","embeddedLinkId","setEmbeddedLinkId","videoHeight","videoWidth","frameBorder","allowFullScreen","allow","soundcloudRegex","SoundCloudLinkDialog","scrolling","VimeoLinkDialog","WordFileService","fileNameSplit","uploadFileButton","uploadFilePlaceholderText","uploadFilePlaceholderIcon","AddDocxDialog","selectedAssetType","setFileName","uploading","setUploading","fileData","setFileData","uploadError","onFileUploadSubmit","onFileSelected","onFileUploadChange","onDragOver","onDrop","dataTransfer","handleFileUploadDrop","CreateAssetDialog","handleAdd","AddNormalLinkDialog","setAssetName","addLinkUrl","setAddLinkUrl","disableActions","setDisableActions","onAddLinkUrl","deserializeFileAsset","fileAsset","convertFileAssetToLibraryItem","FileAsset","FileAssetService","generateUploadPath","uploadFile","updateFileAsset","undeleteFileAsset","downloadFile","UploadFileDialog","fileToUpload","setFileToUpload","uploadProgress","setUploadProgress","categoryName","uploadPath","filePath","fileSize","SermonTemplateService","sermonTemplateId","card","SelectTemplate","templates","setTemplates","sermonTemplateResponse","customTemplateResponse","sermonTemplates","customTemplates","loadTemplates","TemplateList","onCustomTemplateSelected","onSermonTemplateSelected","customTemplate","sermonTemplate","upsellToPaid","assetAction","determineUpgradePath","Duplicate","userTemplateButton","previewText","WebkitUserSelect","MozUserSelect","msUserSelect","previewTextPremiumBlurred","previewTextPremiumHalfBlurred","PremiumTemplatePreview","isFree","onUseTemplate","CustomTemplatePreview","AddFromTemplateDialog","currentView","setCurrentView","selectedTemplate","setSelectedTemplate","selectedBuilderAsset","setSelectedBuilderAsset","onAddFromPremiumTemplate","onAddFromCustomeTemplate","SetAssetName","onAdd","menuItem","youtubeIcon","vimeoIcon","soundCloudIcon","upgradeButton","onUpsellOpen","SecondLayerMenu","selectedMenuCategoryType","showYouTubeDialog","setShowYouTubeDialog","showSoundCloudDialog","setShowSoundCloudDialog","showVimeoDialog","setShowVimeoDialog","showLinkDialog","setShowLinkDialog","showDocxDialog","setShowDocxDialog","showUploadFileDialog","setShowUploadFileDialog","showCreateDialog","setShowCreateDialog","showUseTemplateDialog","setShowUseTemplateDialog","VimeoLogo","onCloseAll","iconFolder","iconSeries","seeMoreChevron","moreListChevron","moreMenuItem","listDivider","FirstLayerMenu","anchorElement","addFolder","setaddFolder","selectedMenuCategory","setSelectedMenuCategory","showActionMenu","setShowActionMenu","showCategoryMenu","setShowCategoryMenu","handleOpenSecondLayer","selectedCategory","categoryType","TransitionComponent","Fade","newButton","addIcon","AddNewButton","setAnchor","listItemText","listIcon","extraDense","Leaf","focusedId","level","onSelect","unmountOnExit","TreeBranch","folderLibraryItems","existingFolders","folders","recurse","navListScrollable","listIconActions","regulartListItem","SideNavigation","activeView","folderTreeOpen","setFolderTreeOpen","onNavDoubleClick","viewType","LibraryView","Home","Recent","Starred","Calendar","OfflineAccess","SermonTemplateList","PremiumSermonList","PremiumSermonSeriesList","getRoute","toggleTree","GridGrow","DesktopLibraryLayout","searchContext","useLibrarySearch","PremiumSermonDetail","PremiumSermonSeriesDetail","getSearchPlaceHolder","searchValue","setSearchValue","AddNewFab","setDrawerOpen","createFolder","setCreateFolder","setSelectedAssetType","closeDrawer","onAddAsset","Fab","getMobileTitle","MobileLibraryLayout","showNavDrawer","setShowNavDrawer","showSearchField","setShowSearchField","showBackButton","ModalProps","keepMounted","crumbs","crumbButton","SortByDropDown","sortBy","sortPremiumContent","handleSortChange","handleSortByChange","DeleteAssetDialog","focusedItem","handleFolderDelete","handleSeriesDelete","handleAssetDelete","handleFileDelete","handleLinkDelete","handleDelete","RenameAssetDialog","setNewTitle","validationErrors","setValidationErrors","handleRename","trimmedTitle","trimEnd","handleFolderRename","handleSeriesRename","handleAssetRename","handleFileRename","handleLinkRename","updateLibraryItem","UseTemplateDialog","DetailRow","EditForm","setFromData","onFormUpdate","LoadingDialog","iconAsset","iconLinkAsset","iconVimeo","LibraryItemIcon","itemType","ShowEmbeddedLinkDialog","autoPlay","iframeWidth","DrawerHeader","showEmbeddedLinkDialog","setShowEmbeddedLinkDialog","downloading","setDownloading","handleTitleClick","buildTypeKind","displayKind","AssetView","editMode","setEditMode","setFormData","onOfflineEnabledToggle","handleStar","handleStarBuilderAsset","handleStarFile","handleStarLink","handleAssetDetailsSave","saveLinkAsset","saveBuilderAsset","saveFileAsset","inputs","EmptyState","getFolderTypeString","FolderView","handleSave","updatedItem","RightDrawer","moveContent","moveContentTitle","movePopperTitle","MobileMoveMenu","parentFolder","handleBackClick","moveContentFolders","moveListItemMoveArrow","moveListItem","moveListItemIcon","moveHereActionContainer","moveHereActionButton","moveListItemText","MoveMenuFolderList","itemToMove","currentFolderId","focusedItemId","setFocusedItemId","currentFolders","handleClickIntoFolder","handleMove","moveContainer","DesktopMoveMenu","MoveAssetMenu","selectedFolderId","setSelectedFolderId","newParentId","newParent","handleFolderMove","handleSeriesMove","handleAssetMove","handleFileMove","handleLinkMove","LibraryAssetActions","showMoveMenu","setShowMoveMenu","setMoveMenuAchor","showDeleteDialog","setShowDeleteDialog","showRenameDialog","setShowRenameDialog","showDetailDrawer","setShowDetailDrawer","handleStarFolder","handleStarSeries","handleDuplicateTemplate","handleDownload","MenuList","RightSideInteractions","SortableTableHeaderReactContext","SortableTableHeader","setOrder","setOrderBy","TableHeader","orderByProperty","sortDirection","onSort","active","dir","defaultSortOrder","DisplayTextHelper","cat","tableRow","focusedBlue","tableText","iconText","DesktopLibraryTableRow","fromAssetCategory","fromLibraryItemType","showPopover","setShowPopover","popoverLeft","setPopoverLeft","popoverTop","setPopoverTop","hasFocus","changeColumnData","isFolderType","handleDoubleClick","setFocusedItem","onContextMenu","clientX","clientY","anchorPosition","anchorReference","mouseEvent","DesktopLibraryAssetTable","setSortDirection","sortProperty","setSortProperty","changeColumnName","orderedItems","items","sortOrder","sortItems","sortTable","cardContainer","cardHeaderTitle","letterSpacing","cardHeaderSubtitle","MobileLibraryAssetTable","displayItems","setDisplayItems","setSortBy","sortedItems","dateDirection","itemsNoPreachdate","itemsNoLocation","LibraryItemSort","handleClick","CardHeader","subheader","openActionMenu","LibraryOffline","LibraryStarred","LibrarySearch","replaceAll","searchRegex","searchForText","BreadCrumbs","foldersInPath","folderId","reverse","getFolderPath","paperCards","quickCards","QuickAccess","LibraryHome","DesktopRecentTableRow","dateLastModified","shareViews","listRow","DesktopRecentTable","showTimeString","startOfWeekFind","getDay","diff","startOfMonthFind","midNightToday","firstDayOfWeekMidnight","firstDayOfMonth","firstDayOfYear","LibraryRecent","itemsAccessedToday","itemsAccessedThisWeek","itemsAccessedThisMonth","itemsAccessedThisYear","hasItems","PremiumContentListCard","detailPageUrl","PremiumSeries","enabledSermonSeries","setEnabledSermonSeries","getPremiumSeries","displayPremiumSeries","sortedSeries","seriesToSort","activations","sortSeries","grayedOut","tableHover","crumbIcon","mobileMantleViewTitle","PremiumSeriesTable","folderArray","setFolderArray","seriesArray","setSeriesArray","assetArray","setAssetArray","activefolderId","setActiveFolderId","assetHistory","setAssetHistory","sortedAssets","currentSeries","changeContainer","DesktopTable","openAssetContainer","openPreview","seriesName","breadCrumbClick","clearActiveFolderId","MobileTable","newId","mobileGoBackBreadCrumb","renderRow","hasOnClick","onClickFunction","renderCard","previewCloseIcon","PreviewPremiumContentDialog","currentPremiumAsset","freeAsset","activatePremiumContent","upSellSeries","builderAssetText","PremiumSermonSeriesDetails","selectedSeries","setSelectedSeries","showPreview","setShowPreview","previewAssetId","setPreviewAssetId","previewAsset","loadSeries","activateSeries","seriesResponse","seriesAssets","xl","AddFromSermonTemplateDialog","onAddDocumentFromTemplate","AddFromCustomTemplateDialog","onAddDocumentFromCustomTemplate","focusedCard","SermonTemplates","setCustomTemplates","premiumTemplates","setPremiumTemplates","selectedPremiumTemplateId","setSelectedPremiumTemplateId","selectedCustomTemplateId","setSelectedCustomTemplateId","showCustomTemplateDialog","setShowCustomTemplateDialog","showPremiumTemplateDialog","setShowPremiumTemplateDialog","displayPremiumTemplates","displayCustomTemplates","searchCustomTemplates","SelectedCustomTempalate","SelectedPremiumTemplate","sermonTemplatesResponse","templateId","premiumTemplate","PremiumSermons","enabledPremiumSermons","setEnabledPremiumSermons","displayPremiumSermons","sortedSermons","sermonsToSort","totalActivations","sortSermons","loadPremiumSermons","PremiumSermonTable","currentSermon","getBreadCrumbPath","sermonName","PremiumSermonDetails","setSelectedSermon","activateSermon","addedSermonContainer","addedAssets","currentMonthText","tableCellWeekdays","table","borderCollapse","tableLayout","tableHeaderRow","tableCellDay","tableCellDayCount","outOfMonthCell","todayCell","tableTextRow","mobileTableTextRow","tableTextBulletHolder","tableTextBullet","mobileTableText","tableCellContent","seeMoreText","popOverHeader","popOverClose","popOverDateHolder","popOverDayOfWeek","popOverDayOfMonth","popOverContent","ReactCalendarContext","useCalendar","monthNames","shortHandDays","Transition","getMonthName","monthIndex","LibraryCalendar","lastChoice","sessionStorage","activeMonthDate","setActiveMonthDate","embeddedDialogItem","setembeddedDialogItem","libraryItemsWithDate","datesInCalendarMonth","monthDate","lastDayOfMonth","daysToAddInFront","daysToAddBehind","frontDays","endDays","lastDayOfTheMonth","getCalendarDatesInMonth","weeksInMonth","previousMonthName","nextMonthName","handleClickInto","activeMonth","setMonth","week","CalendarDate","MobileCalendarDate","DesktopCalendarDate","calendarContext","itemsOnDate","isInActiveMonth","isToday","popOverTop","setPopOverTop","popOverLeft","setPopOverLeft","popOverWidth","setPopOverWidth","seeMorePopover","setSeeMorePopover","seeMoreAnchorEl","setSeeMoreAnchorEl","showActionPopover","setShowActionPopover","actionPopoverLeft","setActionPopoverLeft","actionPopoverTop","setActionPopoverTop","innerItem","handleRightClick","targetDetails","onSeeMoreClick","mobileCalendarDayOpen","setMobileCalendarDayOpen","LibraryReactContext","LibraryAlertReactContext","LibrarySearchReactContext","LibraryPage","queryParams","setLibraryItems","paramsId","exact","strict","matchPath","SermonTemplateDetail","getActiveLibraryViewFromPath","LibraryLayout","snackbarUndoAction","setSnackbarUndoAction","disableSnackbarActions","setDisableSnackbarActions","onLibraryAlert","undoAction","handleUndo","RegistrationForm","formRequest","setForm","normalInput","Subscriptionterm","PricingTable","selectedPlan","costOfPlan","trialAllowed","couponValue","isMonthly","subscriptionTerm","Monthly","onChangePlan","Annual","visibility","crossedOutPriceText","crossedOutPriceValue","showedDiscountText","showedDiscountValue","displayedTotalText","displayedTotalValue","TermsAndConditions","MoneyFormater","Intl","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","NewRegister","formValues","setFormValues","activePlans","setActivePlans","selectedPlanTerm","setSelectedPlanTerm","couponCode","setCouponCode","hasUserHadTrial","setHasUserHadTrial","promoCode","promoCodeResponse","canHaveTrialResponse","planResponse","loadData","isPercentage","percentOff","format","amountOff","currentPrice","handleCreateUser","currentUser","sessionRequest","priceId","couponId","isAnnualPlan","sessionResponse","form","term","CheckoutPage","loadStripe","redirectToCheckout","getSession","userMustSignUp","ActivationRoute","OnlineRoutes","OfflineRoutes","App","basename","baseUrl","ReactDOM","appId","wait","renderApp","hostname","serviceWorker","ready","registration","unregister","swUrl","onupdatefound","installingWorker","installing","onstatechange","dispatchEvent","Event"],"mappings":"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","file":"static/js/main.daa73e5c.chunk.js","sourcesContent":["export enum AppConfigEnvironment {\r\n Development = \"Development\",\r\n Staging = \"Staging\",\r\n Production = \"Production\"\r\n}\r\n\r\nexport interface GoogleSlidesApiConfig {\r\n clientId: string;\r\n oAuthRedirectUrl: string;\r\n scope: string;\r\n apiUrl: string;\r\n presentationUrl: string;\r\n}\r\n\r\nexport default interface AppConfig {\r\n environment: AppConfigEnvironment;\r\n googleAnalytics: { isEnabled: boolean, trackingId: string };\r\n mikesGoogleAnalytics: { isEnabled: boolean, trackingId: string };\r\n mainSiteUrl: string;\r\n makerSiteUrl: string;\r\n accountSiteUrl: string;\r\n paymentsSiteUrl: string;\r\n stripeApiKey: string;\r\n assetBaseUrl: string;\r\n googleSlidesApi: GoogleSlidesApiConfig;\r\n}\r\n","import axios, { AxiosError } from \"axios\";\r\nimport { CoolServerError, CoolSuccessResult, CoolValidationError } from \"./WebClient\";\r\n\r\nconst createOfflineServerError = (message: string): CoolServerError => ({ message, statusCode: 0, error: true, success: false, validation: false, offline: true });\r\n\r\nconst createServerError = (message: string, statusCode: number): CoolServerError => ({\r\n\tmessage,\r\n\tstatusCode,\r\n\terror: true,\r\n\tsuccess: false,\r\n\tvalidation: false,\r\n\toffline: false,\r\n});\r\n\r\nconst serializeAxiosError = (axiosError: AxiosError): CoolServerError | CoolValidationError => {\r\n\tif (axiosError.code === \"ERR_NETWORK\" || axiosError.response === undefined) {\r\n\t\treturn createOfflineServerError(\"Cannot reach Sermon Maker. Please try again.\");\r\n\t}\r\n\tconst response = axiosError.response;\r\n\tif (response.status === 404) {\r\n\t\treturn createServerError(\"Request was submitted to the incorrect location.\", 404);\r\n\t}\r\n\tif (response.status === 401) {\r\n\t\treturn createServerError(\"Sign in required\", 401);\r\n\t}\r\n\tif (response.data === undefined) {\r\n\t\treturn createServerError(\"Unknown error\", 500);\r\n\t}\r\n\r\n\tconst data = response.data as CoolServerError | CoolValidationError;\r\n\tif (\"errors\" in data) {\r\n\t\tconst validationResult: CoolValidationError = {\r\n\t\t\tvalid: false,\r\n\t\t\terrors: data.errors,\r\n\t\t\terror: false,\r\n\t\t\tsuccess: false,\r\n\t\t\tvalidation: true,\r\n\t\t};\r\n\t\treturn validationResult;\r\n\t}\r\n\treturn createServerError(data.message, response.status);\r\n};\r\n\r\nconst createAxiosWithInterceptors = () => {\r\n\tconst instance = axios.create();\r\n\tinstance.interceptors.response.use(\r\n\t\t(response) => {\r\n\t\t\tconst success: CoolSuccessResult = {\r\n\t\t\t\tdata: response.data?.data,\r\n\t\t\t\tmessage: response.data?.message,\r\n\t\t\t\terror: false,\r\n\t\t\t\tsuccess: true,\r\n\t\t\t\tvalidation: false,\r\n\t\t\t};\r\n\t\t\treturn { ...response, data: success };\r\n\t\t},\r\n\t\t(error: Error | AxiosError) => {\r\n\t\t\tif (!axios.isAxiosError(error)) {\r\n\t\t\t\tconsole.log(\"axios.interceptors.response.use: Failed [Error]\", error);\r\n\t\t\t\treturn Promise.reject(error);\r\n\t\t\t}\r\n\t\t\treturn Promise.resolve({ ...error, data: serializeAxiosError(error) });\r\n\t\t}\r\n\t);\r\n\treturn instance;\r\n}\r\n\r\n\r\n\r\n\r\nexport const CustomAxios = {\r\n create: () => createAxiosWithInterceptors(),\r\n}","import { AxiosRequestConfig } from \"axios\";\r\nimport { Modify } from \"../../utilities/modifyType\";\r\nimport { CustomAxios } from \"./CustomAxios\";\r\nimport { ServerError, SuccessResult, ValidationError } from \"./ServerResponses\";\r\n\r\ntype BaseServerResponse = {\r\n\tsuccess: false;\r\n\tvalidation: false;\r\n\terror: false;\r\n};\r\nexport type CoolServerError = Modify<\r\n\tBaseServerResponse & ServerError,\r\n\t{\r\n\t\terror: true;\r\n\t\toffline: boolean;\r\n\t}\r\n>;\r\n\r\nexport type CoolValidationError = Modify<\r\n\tBaseServerResponse & ValidationError,\r\n\t{\r\n\t\tvalidation: true;\r\n\t}\r\n>;\r\n\r\nexport type CoolSuccessResult = Modify<\r\n\tBaseServerResponse & SuccessResult,\r\n\t{\r\n\t\tsuccess: true;\r\n\t}\r\n>;\r\n\r\ntype DefaultServerResult = CoolServerError | CoolSuccessResult;\r\ntype ValidatedServerResult = CoolServerError | CoolSuccessResult | CoolValidationError;\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntype DeserializeModel = (serverModel: any) => T;\r\n\r\nconst runFetch = async (url: string, config: AxiosRequestConfig, deserialize?: DeserializeModel) => {\r\n\tconst axiosClient = CustomAxios.create();\r\n\tconst axiosResponse = await axiosClient(url, config);\r\n\tconst result = axiosResponse.data as ValidatedServerResult;\r\n\tif (result.success && deserialize) {\r\n\t\tresult.data = deserialize(result.data);\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nconst uploadProgressPercent = (progress: ProgressEvent) => {\r\n\treturn Math.round((progress.loaded * 100) / progress.total);\r\n};\r\n\r\nexport const WebClient = {\r\n\tGet: (url: string, deserialize?: DeserializeModel, data?: unknown) =>\r\n\t\trunFetch(url, { method: \"get\", data, withCredentials: true }, deserialize) as Promise>,\r\n\tPut: {\r\n\t\tValidated: (\r\n\t\t\turl: string,\r\n\t\t\tdata: unknown,\r\n\t\t\tdeserialize?: DeserializeModel\r\n\t\t): Promise> =>\r\n\t\t\trunFetch(url, { method: \"put\", data, withCredentials: true }, deserialize) as Promise>,\r\n\t\tUnvalidated: (url: string, data: unknown, deserialize?: DeserializeModel) =>\r\n\t\t\trunFetch(url, { method: \"put\", data, withCredentials: true }, deserialize) as Promise>,\r\n\t\tFile: {\r\n\t\t\tExternal: (url: string, file: File, onUploadProgress?: (percent: number) => void, deserialize?: DeserializeModel) => {\r\n\t\t\t\t// S3 upload expects binary not formdata\r\n\t\t\t\treturn runFetch(\r\n\t\t\t\t\turl,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmethod: \"put\",\r\n\t\t\t\t\t\tdata: file,\r\n\t\t\t\t\t\twithCredentials: false,\r\n\t\t\t\t\t\theaders: { Pragma: \"no-cache\" },\r\n\t\t\t\t\t\tonUploadProgress: (p) => (onUploadProgress ? onUploadProgress(uploadProgressPercent(p)) : undefined),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdeserialize\r\n\t\t\t\t) as Promise>\r\n\t\t\t},\r\n\t\t\tInternal: (url: string, file: File, onUploadProgress?: (percent: number) => void, deserialize?: DeserializeModel) => {\r\n\t\t\t\t// Internal api uses formdata to handle file upload\r\n\t\t\t\tconst formData = new FormData();\r\n\t\t\t\tformData.append(\"file\", file, file.name);\r\n\t\t\t\treturn runFetch(\r\n\t\t\t\t\turl,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmethod: \"put\",\r\n\t\t\t\t\t\tdata: formData,\r\n\t\t\t\t\t\twithCredentials: true,\r\n\t\t\t\t\t\theaders: { Pragma: \"no-cache\" },\r\n\t\t\t\t\t\tonUploadProgress: (p) => (onUploadProgress ? onUploadProgress(uploadProgressPercent(p)) : undefined),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdeserialize\r\n\t\t\t\t) as Promise>\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tPost: {\r\n\t\tValidated: (url: string, data: unknown, deserialize?: DeserializeModel) =>\r\n\t\t\trunFetch(url, { method: \"post\", data, withCredentials: true }, deserialize) as Promise>,\r\n\t\tUnvalidated: (url: string, data: unknown, deserialize?: DeserializeModel) =>\r\n\t\t\trunFetch(url, { method: \"post\", data, withCredentials: true }, deserialize) as Promise>,\r\n\t\tFile: {\r\n\t\t\tExternal: (url: string, file: File, onUploadProgress?: (percent: number) => void, deserialize?: DeserializeModel) => {\r\n\t\t\t\t// S3 upload expects binary not formdata\r\n\t\t\t\treturn runFetch(\r\n\t\t\t\t\turl,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmethod: \"post\",\r\n\t\t\t\t\t\tdata: file,\r\n\t\t\t\t\t\twithCredentials: true,\r\n\t\t\t\t\t\theaders: { Pragma: \"no-cache\" },\r\n\t\t\t\t\t\tonUploadProgress: (p) => (onUploadProgress ? onUploadProgress(uploadProgressPercent(p)) : undefined),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdeserialize\r\n\t\t\t\t\t) as Promise>\r\n\t\t\t},\r\n\t\t\tInternal: (url: string, file: File, onUploadProgress?: (percent: number) => void, deserialize?: DeserializeModel) => {\r\n\t\t\t\t// Internal api uses formdata to handle file upload\r\n\t\t\t\tconst formData = new FormData();\r\n\t\t\t\tformData.append(\"file\", file, file.name);\r\n\t\t\t\treturn runFetch(\r\n\t\t\t\t\turl,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmethod: \"post\",\r\n\t\t\t\t\t\tdata: formData,\r\n\t\t\t\t\t\twithCredentials: true,\r\n\t\t\t\t\t\theaders: { Pragma: \"no-cache\" },\r\n\t\t\t\t\t\tonUploadProgress: (p) => (onUploadProgress ? onUploadProgress(uploadProgressPercent(p)) : undefined),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdeserialize\r\n\t\t\t\t\t) as Promise>\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tDelete: (url: string) => runFetch(url, { method: \"delete\", withCredentials: true }, undefined) as Promise>,\r\n};\r\n","import { WebClient } from \"./server/WebClient\";\r\n\r\nexport const TelemetryService = {\r\n updateContactField: (field: string, value: string) => WebClient.Put.Unvalidated(`api/Telemetry/UpdateContact?field=${field}&value=${value}`, {}),\r\n recordSermonCountChange: () => WebClient.Put.Unvalidated(`api/Telemetry/CountSermons`, {}),\r\n recordSermonSeriesCountChange: () => WebClient.Put.Unvalidated(`api/Telemetry/CountSermonSeries`, {}),\r\n recordFolderCountChange: () => WebClient.Put.Unvalidated(`api/Telemetry/CountFolders`, {}),\r\n recordSlideChange: () => WebClient.Put.Unvalidated(`api/Telemetry/AddSlide`, {}),\r\n recordUserActivity: () => {\r\n try {\r\n let lastActiveStr = localStorage.getItem(\"lastActive\");\r\n let lastActive = lastActiveStr ? new Date(lastActiveStr) : new Date(2000, 1, 1);\r\n let now = new Date();\r\n \r\n let millisecondsSinceLastActive = now.getTime() - lastActive.getTime();\r\n const FIVE_MINUTES = 5 * 60 * 1000;\r\n \r\n if (millisecondsSinceLastActive > FIVE_MINUTES) {\r\n localStorage.setItem(\"lastActive\", now.toString());\r\n WebClient.Put.Unvalidated(`api/Telemetry/UpdateContact?field=sc_cloud_interactiondate&value=${now.toString()}`, {});\r\n }\r\n } catch (error) {\r\n // If any errors are encountered with using local storage, do nothing\r\n }\r\n },\r\n checkForUserFirstAccess: () => WebClient.Put.Unvalidated(`api/Telemetry/UserAccess`, {})\r\n}","import React from \"react\";\r\nimport { ApplicationUser } from \"../entities/ApplicationUser\";\r\n\r\nexport interface UserInfo {\r\n onlineUser: ApplicationUser | null | undefined;\r\n offlineUser: ApplicationUser | null;\r\n updateUser: (user: ApplicationUser | null) => void;\r\n}\r\n\r\nexport const UserContext = React.createContext({} as any);\r\n\r\nexport function useUser() {\r\n\treturn React.useContext(UserContext);\r\n}","export const GoogleProdApiDefaults = {\r\n googleSlidesApi: {\r\n clientId: \"6191919743-sufgg6qjqns4vckucr5hh3kivkdn6sla.apps.googleusercontent.com\",\r\n oAuthRedirectUrl: \"https://maker.sermoncentral.com/googleauth/\",\r\n scope: \"https://www.googleapis.com/auth/presentations\",\r\n apiUrl: \"https://slides.googleapis.com/v1/presentations\",\r\n presentationUrl: \"https://docs.google.com/presentation/d/{id}/edit\",\r\n cdnUrl: \"https://i.cdn-sc.com\",\r\n defaultBackgroundImageUrls: {\r\n \"wide\": \"https://i.cdn-sc.com/defaultSlideImages/Image1-16x9.png\",\r\n \"standard\": \"https://i.cdn-sc.com/defaultSlideImages/Image1-16x9.png\"\r\n }\r\n },\r\n}\r\n\r\nconst dev = {\r\n mainSiteUrl: 'https://dev.sermoncentral.com',\r\n paymentsUrl: 'https://dev-payments.sermoncentral.com',\r\n solr: {\r\n url: 'https://stage-solr.sermoncentral.com/solr',\r\n auth: {\r\n type: 'none',\r\n user: '',\r\n password: ''\r\n }\r\n }\r\n};\r\n\r\nconst prod = {\r\n mainSiteUrl: 'https://www.sermoncentral.com',\r\n paymentsUrl: 'https://payments.sermoncentral.com',\r\n solr: {\r\n url: 'https://solr.sermoncentral.com/solr',\r\n auth: {\r\n type: 'basic',\r\n user: 'builder',\r\n password: 'Reach0ut'\r\n }\r\n }\r\n};\r\n\r\nconst config = process.env.REACT_APP_ENV === 'development' ? dev : prod;\r\n\r\nexport default config","import React from \"react\";\r\nimport AppConfig, { AppConfigEnvironment } from \"../entities/AppConfig\";\r\nimport { GoogleProdApiDefaults } from \"../config\";\r\n\r\nexport const defaultAppConfig: AppConfig = {\r\n environment: AppConfigEnvironment.Production,\r\n googleAnalytics: {\r\n isEnabled: false,\r\n trackingId: \"\",\r\n },\r\n mikesGoogleAnalytics: {\r\n isEnabled: false,\r\n trackingId: \"\",\r\n },\r\n mainSiteUrl: \"https://www.sermoncentral.com\",\r\n makerSiteUrl: \"https://maker.sermoncentral.com\",\r\n accountSiteUrl: \"https://account.sermoncentral.com\",\r\n paymentsSiteUrl: \"https://payments.sermoncentral.com\",\r\n stripeApiKey: \"pk_test_0AMNW7y4XfzPoofBDiYEUxNt\",\r\n assetBaseUrl: \"https://i.cdn-sc.com\",\r\n googleSlidesApi: GoogleProdApiDefaults.googleSlidesApi,\r\n}\r\n\r\ntype SetAppConfig = (config: AppConfig) => void;\r\n\r\nexport const AppConfigContext = React.createContext<[AppConfig, SetAppConfig]>([defaultAppConfig, () => {}]);\r\n\r\nexport function useAppConfig() {\r\n\treturn React.useContext(AppConfigContext);\r\n}","\r\nexport const getDataLayer = (): any[] => {\r\n if(!(window as any).dataLayer){\r\n (window as any).dataLayer = [];\r\n return (window as any).dataLayer;\r\n }\r\n return (window as any).dataLayer;\r\n}","import React from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport { TelemetryService } from \"../services/TelemetryService\";\r\nimport { useEffect } from \"react\";\r\nimport { useUser } from \"../utilities/useUser\";\r\nimport { useAppConfig } from \"../utilities/useAppConfig\";\r\nimport { getDataLayer } from \"../utilities/Tracking/DataLayer\"\r\n\r\ndeclare const gtag: (command: string, commandParameters?: any, additionalConfigInfo?: any) => any;\r\n\r\nexport default function AnalyticsPageTracker(props: React.PropsWithChildren<{}>) {\r\n\tconst history = useHistory();\r\n\r\n\tconst userInfo = useUser();\r\n\tconst { onlineUser } = userInfo;\r\n\r\n\tconst [appConfig] = useAppConfig();\r\n\tconst { trackingId: mikesGoogleAnalyticsTrackingId, isEnabled: mikesGoogleAnalyticsEnabled } = appConfig.mikesGoogleAnalytics;\r\n\tconst { trackingId: googleAnalyticsTrackingId, isEnabled: googleAnalyticsEnabled } = appConfig.googleAnalytics;\r\n\r\n\tuseEffect(() => {\r\n\t\tconst dataLayer = getDataLayer();\r\n\t\t(window as any).gtag = function () {\r\n\t\t\tdataLayer.push(arguments);\r\n\t\t};\r\n\r\n\t\tif (googleAnalyticsEnabled) {\r\n\t\t\tlet script = document.createElement(\"script\");\r\n\t\t\tscript.type = \"text/javascript\";\r\n\t\t\tscript.async = true;\r\n\t\t\tscript.src = `https://www.googletagmanager.com/gtag/js?id=${googleAnalyticsTrackingId}`;\r\n\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(script);\r\n\t\t}\r\n\r\n\t\tif (mikesGoogleAnalyticsEnabled) {\r\n\t\t\tlet script = document.createElement(\"script\");\r\n\t\t\tscript.type = \"text/javascript\";\r\n\t\t\tscript.async = true;\r\n\t\t\tscript.src = `https://www.googletagmanager.com/gtag/js?id=${mikesGoogleAnalyticsTrackingId}`;\r\n\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(script);\r\n\t\t}\r\n\r\n\t\tgtag(\"js\", new Date());\r\n\r\n\t\tgtag(\"config\", googleAnalyticsTrackingId, { send_page_view: false });\r\n\t\tgtag(\"config\", googleAnalyticsTrackingId, { page_path: window.location.pathname + window.location.search });\r\n\r\n\t\tgtag(\"config\", mikesGoogleAnalyticsTrackingId, { send_page_view: false });\r\n\t\tgtag(\"config\", mikesGoogleAnalyticsTrackingId, { page_path: window.location.pathname + window.location.search });\r\n\t}, [mikesGoogleAnalyticsEnabled, mikesGoogleAnalyticsTrackingId, googleAnalyticsEnabled, googleAnalyticsTrackingId]);\r\n\r\n\tuseEffect(() => {\r\n\t\tfunction recordPageChange(pathname: string, search: string) {\r\n\t\t\tgtag(\"config\", googleAnalyticsTrackingId, { page_path: pathname + search });\r\n\r\n\t\t\tif (mikesGoogleAnalyticsEnabled) {\r\n\t\t\t\tgtag(\"config\", mikesGoogleAnalyticsTrackingId, { page_path: pathname + search });\r\n\t\t\t}\r\n\r\n\t\t\tif (onlineUser) {\r\n\t\t\t\tTelemetryService.recordUserActivity();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn history.listen((location) => recordPageChange(location.pathname, location.search));\r\n\t}, [history, mikesGoogleAnalyticsEnabled, mikesGoogleAnalyticsTrackingId, googleAnalyticsTrackingId, onlineUser]);\r\n\r\n\treturn <>{props.children};\r\n}\r\n","import React from \"react\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { OfflineBuilderAsset } from \"../../entities/OfflineBuilderAsset\";\r\nimport { OfflineActionLocation } from \"../../utilities/Tracking/EventTracking\";\r\n\r\nexport interface OfflineAssets {\r\n onlineMode: boolean\r\n offlineBuilderAssets: OfflineBuilderAsset[];\r\n toggleOfflineMode: (offlineMode: boolean) => void;\r\n setAssetOfflineMode: (builderAssetId: string, offlineMode: boolean, actionLocation?: OfflineActionLocation) => Promise;\r\n saveBuilderAssetOffline: (builderAsset: BuilderAsset) => BuilderAsset;\r\n}\r\n\r\nexport const OfflineAssetsContext = React.createContext({} as any);\r\n\r\nexport function useOfflineAssets() {\r\n\treturn React.useContext(OfflineAssetsContext);\r\n}","import { useState } from \"react\";\r\n\r\nexport function useLocalStorage(key: string, initialValue: T): [T, (value: T) => void] {\r\n\t// State to store our value\r\n\t// Pass initial state function to useState so logic is only executed once\r\n\tconst [storedValue, setStoredValue] = useState(() => {\r\n\t\ttry {\r\n\t\t\t// Get from local storage by key\r\n\t\t\tconst item = window.localStorage.getItem(key);\r\n\t\t\t// Parse stored json or if none return initialValue\r\n\t\t\treturn item ? JSON.parse(item) : initialValue;\r\n\t\t} catch (error) {\r\n\t\t\t// If error also return initialValue\r\n\t\t\tconsole.log(error);\r\n\t\t\treturn initialValue;\r\n\t\t}\r\n\t});\r\n\r\n\t// Return a wrapped version of useState's setter function that persists the new value to localStorage.\r\n\tconst setValue = (value: T) => {\r\n\t\ttry {\r\n\t\t\t// Allow value to be a function so we have same API as useState\r\n\t\t\tconst valueToStore = value instanceof Function ? value(storedValue) : value;\r\n\t\t\t// Save state\r\n\t\t\tsetStoredValue(valueToStore);\r\n\t\t\t// Save to local storage\r\n\t\t\twindow.localStorage.setItem(key, JSON.stringify(valueToStore));\r\n\t\t} catch (error) {\r\n\t\t\t// A more advanced implementation would handle the error case\r\n\t\t\tconsole.log(error);\r\n\t\t}\r\n\t};\r\n\r\n\treturn [storedValue, setValue];\r\n}\r\n\r\nexport default useLocalStorage;\r\n","export enum AddAssetType {\r\n\tSermon = 0,\r\n\tFolder = 1,\r\n\tSeries = 2,\r\n\tSermonManuscript = 3,\r\n\tSermonOutline = 4,\r\n\tHandout = 5,\r\n\tDevotional = 6,\r\n\tSmallGroupStudy = 7,\r\n\tPresentationSlides = 8,\r\n\tNotes = 9,\r\n\tSermonAudio = 10,\r\n\tSermonVideo = 11,\r\n}","import { AddAssetType } from \"./AddAssetType\";\r\n\r\nexport enum AssetCategory {\r\n None = \"None\",\r\n Outline = \"Outline\",\r\n Manuscript = \"Manuscript\",\r\n Handout = \"Handout\",\r\n Devotional = \"Devotional\",\r\n SmallGroupStudy = \"SmallGroupStudy\",\r\n SermonSlides = \"SermonSlides\",\r\n Notes = \"Notes\",\r\n Audio = \"Audio\",\r\n Video = \"Video\"\r\n}\r\n\r\nexport function toAssetCategory(assetCategoryValue: string) {\r\n if(!assetCategoryValue)\r\n return AssetCategory.None;\r\n \r\n let valueNoWhiteSpace = assetCategoryValue.replace(/\\s/g, '');\r\n switch (valueNoWhiteSpace)\r\n {\r\n case \"None\": return AssetCategory.None;\r\n case \"Outline\": return AssetCategory.Outline;\r\n case \"Manuscript\": return AssetCategory.Manuscript;\r\n case \"Handout\": return AssetCategory.Handout;\r\n case \"Devotional\": return AssetCategory.Devotional;\r\n case \"SmallGroupStudy\": return AssetCategory.SmallGroupStudy;\r\n case \"SermonSlides\": return AssetCategory.SermonSlides;\r\n case \"Notes\": return AssetCategory.Notes;\r\n case \"Audio\": return AssetCategory.Audio;\r\n case \"Video\": return AssetCategory.Video;\r\n default: return AssetCategory.None;\r\n }\r\n}\r\n\r\nexport function printAssetCategory(assetCategory: AssetCategory) {\r\n switch (assetCategory) {\r\n case AssetCategory.Outline:\r\n return \"Sermon Outline\";\r\n case AssetCategory.Audio:\r\n return \"Sermon Audio\";\r\n case AssetCategory.Devotional:\r\n return \"Devotional\";\r\n case AssetCategory.Handout:\r\n return \"Handout\";\r\n case AssetCategory.Notes:\r\n return \"Notes\";\r\n case AssetCategory.SermonSlides:\r\n return \"Presentation Slides\";\r\n case AssetCategory.SmallGroupStudy:\r\n return \"Small Group Study\";\r\n case AssetCategory.Video:\r\n return \"Sermon Video\";\r\n default:\r\n return \"Sermon Manuscript\";\r\n }\r\n}\r\n\r\nexport function toAssetCategoryFromNumber(assetCategoryValue: number) { \r\n switch (assetCategoryValue)\r\n {\r\n case 0: return AssetCategory.None;\r\n case 1: return AssetCategory.Outline;\r\n case 2: return AssetCategory.Manuscript;\r\n case 3: return AssetCategory.Handout;\r\n case 4: return AssetCategory.Devotional;\r\n case 5: return AssetCategory.SmallGroupStudy;\r\n case 6: return AssetCategory.SermonSlides;\r\n case 7: return AssetCategory.Notes;\r\n case 8: return AssetCategory.Audio;\r\n case 9: return AssetCategory.Video;\r\n default: return AssetCategory.None;\r\n }\r\n}\r\n\r\nexport function toAssetAddTypeFromAssetCategoryString(assetCategoryValue: string) {\r\n let valueNoWhiteSpace = assetCategoryValue.replace(/\\s/g, '');\r\n switch (valueNoWhiteSpace)\r\n {\r\n case \"Outline\": return AddAssetType.SermonOutline;\r\n case \"Manuscript\": return AddAssetType.SermonManuscript;\r\n case \"Handout\": return AddAssetType.Handout;\r\n case \"Devotional\": return AddAssetType.Devotional;\r\n case \"SmallGroupStudy\": return AddAssetType.SmallGroupStudy;\r\n case \"SermonSlides\": return AddAssetType.PresentationSlides;\r\n case \"Notes\": return AddAssetType.Notes;\r\n case \"Audio\": return AddAssetType.SermonAudio;\r\n case \"Video\": return AddAssetType.SermonVideo;\r\n default: return AddAssetType.SermonManuscript;\r\n }\r\n}","import { AssetCategory } from \"./AssetCategory\";\r\n\r\nexport interface AssetCategoryType {\r\n\tid: number;\r\n\tname: string;\r\n\tdisplayName: string;\r\n\tcategory: AssetCategory;\r\n\tsupportedTypes: AssetDataType[];\r\n}\r\n\r\nexport enum AssetDataType {\r\n\tEditableText = \"EditableText\",\r\n\tLink = \"Link\",\r\n\tFile = \"File\",\r\n}\r\n\r\nexport const AssetCategoryTypes: AssetCategoryType[] = [\r\n { id: 1, displayName: \"Sermon Outline\", name: 'Outline', category: AssetCategory.Outline, supportedTypes: [AssetDataType.EditableText, AssetDataType.File, AssetDataType.Link] },\r\n { id: 2, displayName: \"Sermon Manuscript\", name: 'Manuscript', category: AssetCategory.Manuscript, supportedTypes: [AssetDataType.EditableText, AssetDataType.File, AssetDataType.Link] },\r\n { id: 3, displayName: \"Handout\", name: 'Handout', category: AssetCategory.Handout, supportedTypes: [AssetDataType.EditableText, AssetDataType.File, AssetDataType.Link] },\r\n { id: 4, displayName: \"Devotional\", name: 'Devotional', category: AssetCategory.Devotional, supportedTypes: [AssetDataType.EditableText, AssetDataType.File, AssetDataType.Link] },\r\n { id: 5, displayName: \"Small Group Study\", name: 'Small Group Study', category: AssetCategory.SmallGroupStudy, supportedTypes: [AssetDataType.EditableText, AssetDataType.File, AssetDataType.Link] },\r\n { id: 6, displayName: \"Presentation Slides\", name: 'Sermon Slides', category: AssetCategory.SermonSlides, supportedTypes: [AssetDataType.File, AssetDataType.Link] },\r\n { id: 7, displayName: \"Notes\", name: 'Notes', category: AssetCategory.Notes, supportedTypes: [AssetDataType.EditableText, AssetDataType.File, AssetDataType.Link] },\r\n { id: 8, displayName: \"Sermon Audio\", name: 'Audio', category: AssetCategory.Audio, supportedTypes: [AssetDataType.File, AssetDataType.Link] },\r\n { id: 9, displayName: \"Sermon Video\", name: 'Video', category: AssetCategory.Video, supportedTypes: [AssetDataType.File, AssetDataType.Link] },\r\n];\r\n","export enum LibraryItemType\r\n{\r\n None = 0,\r\n Folder,\r\n SermonSeries,\r\n PremiumSermon,\r\n PremiumSermonSeries,\r\n BuilderAsset,\r\n LinkAsset,\r\n FileAsset\r\n}\r\n\r\nexport function printLibraryItemType(type: LibraryItemType) {\r\n switch (type) { \r\n case LibraryItemType.Folder:\r\n return \"Folder\";\r\n case LibraryItemType.SermonSeries:\r\n return \"Series\";\r\n case LibraryItemType.PremiumSermon:\r\n return \"Premium Sermon\";\r\n case LibraryItemType.PremiumSermonSeries:\r\n return \"Premium Series\";\r\n default:\r\n return ''\r\n }\r\n}","import Asset from \"./Asset\";\r\nimport { AssetDataType } from \"./AssetType\";\r\nimport { AspectRatios } from './AspectRatios';\r\nimport { FormFactor, OperatingSystem } from \"../utilities/UserAgent\";\r\nimport { toAssetCategory } from \"./AssetCategory\";\r\nimport { Modify } from \"../utilities/modifyType\";\r\nimport { LibraryItem } from \"./LibraryItem\";\r\nimport { LibraryItemType } from \"./LibraryItemType\";\r\n\r\nexport interface BuilderAsset extends Asset {\r\n // HTML content from the builder\r\n text: string;\r\n slideCount: number;\r\n assetType: AssetDataType.EditableText;\r\n shareId?: string;\r\n isShared: boolean;\r\n isTemplate: boolean;\r\n templateDescription: string;\r\n slideExporterAspectRatio: AspectRatios;\r\n customSlideBackgroundImagePath?: string;\r\n customSlideBackgroundImageUrl?: string;\r\n offlineMode: boolean;\r\n lastModifiedOnOperatingSystem?: OperatingSystem;\r\n lastModifiedFormFactor?: FormFactor;\r\n}\r\n\r\nexport type SerializedBuilderAsset = Modify;\r\n\r\nexport const deserializeBuilderAsset = (builderResponse: SerializedBuilderAsset): BuilderAsset => {\r\n\treturn {\r\n\t\t...builderResponse,\r\n\t\tcategory: toAssetCategory(builderResponse.category),\r\n\t\tdateAccessed: new Date(builderResponse.dateAccessed),\r\n\t\tdateCreated: new Date(builderResponse.dateCreated),\r\n\t\tdateModified: new Date(builderResponse.dateModified),\r\n\t\tdatePreached: builderResponse.datePreached ? new Date(builderResponse.datePreached) : undefined,\r\n\t\tassetType: AssetDataType.EditableText,\r\n\t};\r\n};\r\n\r\nexport const convertBuilderAssetToLibraryItem = (asset:BuilderAsset): LibraryItem => {\r\n return {\r\n ...asset,\r\n type: LibraryItemType.BuilderAsset\r\n }\r\n};","import { deserializeBuilderAsset, SerializedBuilderAsset, BuilderAsset } from \"../../src/entities/BuilderAsset\";\r\nimport { AssetCategory } from \"../../src/entities/AssetCategory\";\r\nimport { AspectRatios } from \"../entities/AspectRatios\";\r\nimport { FormFactor, OperatingSystem } from \"../utilities/UserAgent\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\n\r\nexport interface SaveBuilderAssetRequest {\r\n\tid?: string;\r\n\tparentId?: string;\r\n\tname: string;\r\n\tisStarred: boolean;\r\n\tdateAccessed: Date;\r\n\tcategory: AssetCategory;\r\n\ttext: string;\r\n\tslideCount: number;\r\n\tisTemplate: boolean;\r\n\ttemplateDescription: string;\r\n\tslideExporterAspectRatio?: AspectRatios;\r\n\tcustomSlideBackgroundImagePath?: string;\r\n\tofflineMode: boolean;\r\n\tlastModifiedOnOperatingSystem?: OperatingSystem;\r\n\tlastModifiedFormFactor?: FormFactor;\r\n}\r\n\r\nexport interface SaveCustomSlideBackgroundImageRequest {\r\n\tfileContents: string;\r\n\tid: string;\r\n}\r\n\r\nexport interface SetOfflineModeRequest {\r\n\tbuilderAssetId: string;\r\n\tofflineMode: boolean;\r\n}\r\n\r\n\r\nexport const BuilderAssetService = {\r\n\tget: (id: string) => WebClient.Get(`api/BuilderAssets/GetBuilderAsset/${id}`, deserializeBuilderAsset),\r\n\r\n\tgetSermonAsBuilderAsset: (sermonId:string)=> WebClient.Get(`api/BuilderAssets/GetSermonAsBuilderAsset/${sermonId}`, deserializeBuilderAsset),\r\n\r\n\tdownloadAsPdf: async (builderAsset: BuilderAsset) => {\r\n\t\tconst response = await fetch(`/api/BuilderAssets/pdf/${builderAsset.id}`)\r\n\t\tconst blob = await response.blob();\r\n\t\tconst url = window.URL.createObjectURL(blob);\r\n\t\tconst link = document.createElement(\"a\");\r\n\t\tlink.target = \"_blank\"\r\n\t\tlink.href = url;\r\n\t\tlink.download = `${builderAsset.name}.pdf`\r\n\t\tdocument.body.appendChild(link);\r\n\t\tlink.click();\r\n\t\tdocument.body.removeChild(link);\r\n\t},\r\n\r\n\tdownloadAsDocx: async (builderAsset: BuilderAsset) => {\r\n\t\tconst response = await fetch(`/api/BuilderAssets/docx/${builderAsset.id}`)\r\n\t\tconst blob = await response.blob();\r\n\t\tconst url = window.URL.createObjectURL(blob);\r\n\t\tconst link = document.createElement(\"a\");\r\n\t\tlink.target = \"_blank\"\r\n\t\tlink.href = url;\r\n\t\tlink.download = `${builderAsset.name}.docx`\r\n\t\tdocument.body.appendChild(link);\r\n\t\tlink.click();\r\n\t\tdocument.body.removeChild(link);\r\n\t},\r\n\r\n\tgetOfflineBuilderAssets: () => \r\n\t\tWebClient.Get(`api/BuilderAssets/GetOfflineBuilderAssets`, (response: SerializedBuilderAsset[]) => response.map(deserializeBuilderAsset)),\r\n\r\n\tsave: (builderAssetToSave: SaveBuilderAssetRequest) => \r\n\t\tWebClient.Post.Validated(`api/BuilderAssets/SaveBuilderAsset/`, builderAssetToSave, deserializeBuilderAsset),\r\n\r\n\tsaveFromTemplate: (builderAssetToSave: SaveBuilderAssetRequest) => \r\n\t\tWebClient.Post.Validated(`api/BuilderAssets/SaveFromTemplateAsset/`, builderAssetToSave, deserializeBuilderAsset),\r\n\r\n\tsaveTemplate: (builderAssetToSave: SaveBuilderAssetRequest) => \r\n\t\tWebClient.Post.Validated(`api/BuilderAssets/SaveTemplateAsset/`, builderAssetToSave, deserializeBuilderAsset),\r\n\r\n\tgetTemplates: () => \r\n\t\tWebClient.Get(\"api/BuilderAssets/GetTemplates\", (response: SerializedBuilderAsset[]) => response.map(deserializeBuilderAsset)),\r\n\r\n\tremove: (id: string) => WebClient.Delete(`api/BuilderAssets/DeleteBuilderAsset/${id}`),\r\n\r\n\tundeleteBuilderAsset: (id: string) => \r\n\t\tWebClient.Put.Validated(`api/BuilderAssets/UndeleteBuilderAsset/`, { id }, deserializeBuilderAsset),\r\n\r\n\tsetName: (id: string, name: string) => \r\n\t\tWebClient.Put.Validated(`api/BuilderAssets/SetNameBuilderAsset`, { id, name }, deserializeBuilderAsset),\r\n\r\n\tsetStarred: (id: string, isStarred: boolean) => \r\n\t\tWebClient.Put.Validated(`api/BuilderAssets/SetStarredBuilderAsset`, { id, isStarred }, deserializeBuilderAsset),\r\n\r\n\tmove: (id: string, parentId: string | null) => \r\n\t\tWebClient.Put.Validated(`api/BuilderAssets/MoveBuilderAsset`, { id, parentId }, deserializeBuilderAsset),\r\n\r\n\taccessAsset: (id: string) => \r\n\t\tWebClient.Put.Validated(`api/BuilderAssets/WasAccessed/${id}`, {}, deserializeBuilderAsset),\r\n\r\n\tremoveCustomSlideBackgroundImageUrl: (id: string) => \r\n\t\tWebClient.Delete(`api/BuilderAssets/DeleteSlideExporterCustomBackgroundImage/${id}`),\r\n\r\n\tgeneratePowerPointUploadUrl: (id: string, fileName: string) => \r\n\t\tWebClient.Get<{ url: string }>(`api/BuilderAssets/GenerateCustomSlideImageUploadUrl?id=${id}&fileName=${fileName}`),\r\n\r\n\tuploadSourceImage: (uploadUrl: string, file: File, progress?: (percentage: number) => void) => \r\n\t\tWebClient.Put.File.External(uploadUrl, file, progress),\r\n\r\n\tsaveSlideExporterCustomBackgroundImage: (request: SaveCustomSlideBackgroundImageRequest) => \r\n\t\tWebClient.Put.Validated(\"api/BuilderAssets/SaveSlideExporterCustomBackgroundImage/\", request, deserializeBuilderAsset),\r\n\r\n\tgetCustomBackgroundImageForDownload: (id: string) => \r\n\t\tWebClient.Get<{ url: string }>(`api/BuilderAssets/GetCustomSlideBackgroundDownload/${id}`),\r\n\r\n\tsaveSlideAspectRatio: (id: string, aspectRatio: AspectRatios) => \r\n\t\tWebClient.Put.Validated(`api/BuilderAssets/SaveSlideAspectRatio/${id}/${aspectRatio}`, {}, deserializeBuilderAsset),\r\n\r\n\tgetPublicUrlForCustomSlideImage: (id: string) => \r\n\t\tWebClient.Get<{ customSlideBackgroundImagePath: string }>(`api/BuilderAssets/GetCdnUrlForCustomSlideBackground/${id}`),\r\n\r\n\tsetOfflineMode: (id: string, offlineMode: boolean) => {\r\n\t\tconst request: SetOfflineModeRequest = { builderAssetId: id, offlineMode };\r\n\t\treturn WebClient.Put.Validated(`api/BuilderAssets/SetOfflineMode`, request, deserializeBuilderAsset);\r\n\t},\r\n\r\n\tgetCustomBackgroundImageAsArrayBuffer: async (id: string) => {\r\n\t\treturn await fetch(`api/BuilderAssets/image/${id}`)\r\n\t\t\t.then((res) => res.body)\r\n\t\t\t.then((body) => {\r\n\t\t\t\tif (body === null) return;\r\n\r\n\t\t\t\tconst reader = body.getReader();\r\n\r\n\t\t\t\treturn new ReadableStream({\r\n\t\t\t\t\tasync start(controller) {\r\n\t\t\t\t\t\twhile (true) {\r\n\t\t\t\t\t\t\tconst { done, value } = await reader.read();\r\n\r\n\t\t\t\t\t\t\tif (done) break;\r\n\r\n\t\t\t\t\t\t\tcontroller.enqueue(value);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcontroller.close();\r\n\t\t\t\t\t\treader.releaseLock();\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.then((res) => new Response(res))\r\n\t\t\t.then((res) => res.blob())\r\n\t\t\t.then((blob) => blob.arrayBuffer());\r\n\t}\r\n}\r\n","import axios from \"axios\";\r\nimport { AxiosError } from \"axios\";\r\nimport { ServerError, ValidationError, SuccessResult } from \"./ServerResponses\";\r\n\r\nexport class ServerResponse {\r\n\tstatic isSuccess(model: any): model is SuccessResult {\r\n\t\treturn model.data !== undefined && model.message !== undefined;\r\n\t}\r\n\tstatic isError(model: any): model is ServerError {\r\n\t\treturn model.message !== undefined && model.statusCode !== undefined;\r\n\t}\r\n\tstatic isModelValidation(model: any): model is ValidationError {\r\n\t\treturn model.valid !== undefined && model.errors !== undefined;\r\n\t}\r\n}\r\n\r\n\r\nconst serializeAxiosError = (errorResponse: AxiosError) => {\r\n\tlet serverError: ServerError;\r\n\tlet response = errorResponse.response;\r\n\r\n\t// Happens if the http request gets killed mid request\r\n\tif (!response) {\r\n\t\tserverError = { message: \"Received no response\", statusCode: 500 };\r\n\t} else if (response.status === 404) {\r\n\t\tserverError = { message: \"Server is not responding\", statusCode: response.status };\r\n\t}\r\n\t// Redirect to sign in page\r\n\telse if (response.status === 401) {\r\n\t\tlet path = window.location.pathname;\r\n\t\tlet redirect = \"?returnUrl=\" + encodeURIComponent(path);\r\n\t\twindow.location.replace(\"/sign-in\" + redirect);\r\n\t\tlet standardServerResponse = response.data as SuccessResult;\r\n\t\tserverError = { message: standardServerResponse.message, statusCode: response.status };\r\n\t} else {\r\n\t\tlet standardServerResponse = response.data as SuccessResult;\r\n\t\tserverError = { message: standardServerResponse.message, statusCode: response.status };\r\n\t}\r\n\r\n\treturn serverError;\r\n};\r\n\r\nconst uploadProgressPercent = (progress: ProgressEvent) => {\r\n\treturn Math.round((progress.loaded * 100) / progress.total);\r\n};\r\n\r\nconst offlineError: ServerError = {\r\n\tmessage: \"Maker is offline\",\r\n\tstatusCode: 503,\r\n};\r\n\r\nexport class OldWebClient {\r\n\tstatic async Get(url: string) {\r\n\t\tif (!navigator.onLine) {\r\n\t\t\treturn offlineError;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await axios.get(url, { headers: { Pragma: \"no-cache\" } });\r\n\t\t\treturn response.data as SuccessResult | ValidationError;\r\n\t\t} catch (errorResult) {\r\n\t\t\treturn serializeAxiosError(errorResult as AxiosError);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async GetWithBody(url: string, reqBody: any) {\r\n\t\tif (!navigator.onLine) {\r\n\t\t\treturn offlineError;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await axios(url, {\r\n\t\t\t\tmethod: \"get\",\r\n\t\t\t\tparams: reqBody,\r\n\t\t\t\theaders: { Pragma: \"no-cache\" },\r\n\t\t\t});\r\n\t\t\treturn response.data as SuccessResult | ValidationError;\r\n\t\t} catch (errorResult) {\r\n\t\t\treturn serializeAxiosError(errorResult as AxiosError);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async GetWithoutModelValidation(url: string) {\r\n\t\tif (!navigator.onLine) {\r\n\t\t\treturn offlineError;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await axios.get(url, { headers: { Pragma: \"no-cache\" } });\r\n\t\t\treturn response.data as SuccessResult;\r\n\t\t} catch (errorResult) {\r\n\t\t\treturn serializeAxiosError(errorResult as AxiosError);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async Post(url: string, data: any, headers: any = { Pragma: \"no-cache\" }) {\r\n\t\tif (!navigator.onLine) {\r\n\t\t\treturn offlineError;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await axios(url, {\r\n\t\t\t\tmethod: \"post\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\t\t\treturn response.data as SuccessResult | ValidationError;\r\n\t\t} catch (errorResult) {\r\n\t\t\treturn serializeAxiosError(errorResult as AxiosError);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async Put(url: string, data: any, headers = { Pragma: \"no-cache\" }) {\r\n\t\tif (!navigator.onLine) {\r\n\t\t\treturn offlineError;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await axios(url, {\r\n\t\t\t\tmethod: \"put\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\t\t\treturn response.data as SuccessResult | ValidationError;\r\n\t\t} catch (errorResult) {\r\n\t\t\treturn serializeAxiosError(errorResult as AxiosError);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async Delete(url: string, data?: any) {\r\n\t\tif (!navigator.onLine) {\r\n\t\t\treturn offlineError;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await axios(url, {\r\n\t\t\t\tmethod: \"delete\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\theaders: { Pragma: \"no-cache\" },\r\n\t\t\t});\r\n\t\t\treturn response.data as SuccessResult | ValidationError;\r\n\t\t} catch (errorResult) {\r\n\t\t\treturn serializeAxiosError(errorResult as AxiosError);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async PostFile(url: string, file: File) {\r\n\t\tif (!navigator.onLine) {\r\n\t\t\treturn offlineError;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet formData = new FormData();\r\n\t\t\tformData.append(\"file\", file, file.name);\r\n\t\t\tconst response = await axios(url, {\r\n\t\t\t\tmethod: \"post\",\r\n\t\t\t\tdata: formData,\r\n\t\t\t\theaders: { Pragma: \"no-cache\" },\r\n\t\t\t});\r\n\t\t\treturn response.data as SuccessResult;\r\n\t\t} catch (errorResult) {\r\n\t\t\treturn serializeAxiosError(errorResult as AxiosError);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async PutFile(url: string, file: File, onUploadProgress?: (percent: number) => void) {\r\n\t\tif (!navigator.onLine) {\r\n\t\t\treturn offlineError;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tawait axios.put(url, file, {\r\n\t\t\t\tonUploadProgress: onUploadProgress ? (p) => onUploadProgress(uploadProgressPercent(p)) : undefined,\r\n\t\t\t\theaders: { Pragma: \"no-cache\" },\r\n\t\t\t});\r\n\t\t\tlet response: SuccessResult = {\r\n\t\t\t\tdata: true,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t};\r\n\t\t\treturn response;\r\n\t\t} catch (errorResult) {\r\n\t\t\treturn serializeAxiosError(errorResult as AxiosError);\r\n\t\t}\r\n\t}\r\n}\r\n","import React from \"react\";\r\n\r\ntype isOffline = boolean; \r\n\r\nexport const OfflineStatusContext = React.createContext(false);\r\n\r\nexport function useOfflineStatus(): isOffline {\r\n\treturn React.useContext(OfflineStatusContext);\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport { useOfflineStatus } from \"../../utilities/useOfflineStatus\";\r\n\r\ninterface OfflineManagerNotificationsProps {\r\n\tofflineMode: boolean;\r\n\tonChangeOfflineMode: (offlineMode: boolean) => void;\r\n\tofflineModeChangeMessage?: string;\r\n\tonDismissOfflineModeChangeMessage: () => void;\r\n}\r\n\r\nexport function OfflineManagerNotifications(props: OfflineManagerNotificationsProps) {\r\n\tconst { offlineMode, offlineModeChangeMessage } = props;\r\n\tconst browserIsOffline = useOfflineStatus();\r\n\r\n\tconst [goOnlinePrompt, setGoOnlinePrompt] = useState(false);\r\n\tconst [goOfflinePrompt, setGoOfflinePrompt] = useState(false);\r\n\tconst [updateAvailable, setUpdateAvailable] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\twindow.addEventListener(\"MakerNeedsUpdate\", function (e) {\r\n\t\t\tsetUpdateAvailable(true);\r\n\t\t});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst browserIsOnline = !browserIsOffline;\r\n\t\tconst onlineMode = !offlineMode;\r\n\r\n\t\tif(browserIsOffline !== offlineMode){\r\n\t\t\tsetGoOfflinePrompt(onlineMode && browserIsOffline);\r\n\t\t\tsetGoOnlinePrompt(offlineMode && browserIsOnline);\r\n\t\t} else {\r\n\t\t\tsetGoOfflinePrompt(false);\r\n\t\t\tsetGoOnlinePrompt(false);\r\n\t\t}\r\n\t}, [browserIsOffline, offlineMode]);\r\n\r\n\tconst onGoOffline = () => {\r\n\t\tprops.onChangeOfflineMode(true);\r\n\t\tsetGoOfflinePrompt(false);\r\n\t};\r\n\r\n\tconst onGoOnline = () => {\r\n\t\tprops.onChangeOfflineMode(false);\r\n\t\tsetGoOnlinePrompt(false);\r\n\t};\r\n\r\n\tif (updateAvailable) {\r\n\t\treturn (\r\n\t\t\t window.location.reload()}>\r\n\t\t\t\t\t\tUPDATE\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n\r\n\tif (goOnlinePrompt) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\t\tGO ONLINE\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n\r\n\tif (goOfflinePrompt) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\t\tGO OFFLINE\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n\r\n\tif (offlineModeChangeMessage) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { SaveBuilderAssetRequest, BuilderAssetService } from \"../../services/BuilderAssetService\";\r\nimport { ConflictedAsset } from \"./BuilderAssetConflictDialog\";\r\nimport { ServerResponse } from \"../../services/server/OldWebClient\";\r\nimport { makeStyles, Typography, Button } from \"@material-ui/core\";\r\n\r\nimport classNames from \"classnames\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tcontainer: {\r\n\t\tmargin: 10,\r\n\t\tmarginTop: 0,\r\n\t},\r\n\tselection: {\r\n\t\tbackgroundColor: \"#F4F4F4\",\r\n\t\tmargin: 7,\r\n\t\tmarginTop: 0,\r\n\t\tpadding: \"5px 15px 5px 15px\",\r\n\t\tborderRadius: 10,\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: \"#CECECE\",\r\n\t\t\tcursor: \"pointer\",\r\n\t\t},\r\n\t},\r\n\tdisabledSelection: {\r\n\t\tcursor: \"not-allowed\",\r\n\t\t\"&:hover\": {\r\n\t\t\tcursor: \"not-allowed\",\r\n\t\t\tbackgroundColor: \"#F4F4F4\",\r\n\t\t},\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tconflictedAsset: ConflictedAsset;\r\n\tonConflictResolved: (id: string, result: BuilderAsset | null) => void;\r\n}\r\n\r\nexport function BuilderAssetConflictItem(props: Props) {\r\n\tconst { conflictedAsset } = props;\r\n\tconst classes = useStyles();\r\n\tconst [disabled, setDisabled] = useState(false);\r\n\tconst [errorMessage, setErrorMessage] = useState();\r\n\tconst [orderedConflicts, setOrderedConflicts] = useState(\r\n\t\t[\r\n\t\t\t{ ...conflictedAsset.online, online: true },\r\n\t\t\t{ ...conflictedAsset.offline, online: false },\r\n\t\t]\r\n .sort((a, b) => b.dateModified.getTime() - a.dateModified.getTime())\r\n\t);\r\n\r\n useEffect(() => {\r\n const conflicts = [\r\n\t\t\t{ ...conflictedAsset.online, online: true },\r\n\t\t\t{ ...conflictedAsset.offline, online: false },\r\n\t\t]\r\n .sort((a, b) => b.dateModified.getTime() - a.dateModified.getTime());\r\n setOrderedConflicts(conflicts);\r\n }, [conflictedAsset])\r\n\r\n\tconst onSelectOnline = (conflictedAsset: ConflictedAsset) => {\r\n\t\tif (disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (conflictedAsset.online) {\r\n\t\t\tonUpdate(conflictedAsset.online);\r\n\t\t} else {\r\n\t\t\tclearFromOfflineStorage();\r\n\t\t}\r\n\t};\r\n\r\n\tconst onSelectOffline = (conflictedAsset: ConflictedAsset) => {\r\n\t\tif (disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (conflictedAsset.online) {\r\n\t\t\tonUpdate(conflictedAsset.offline);\r\n\t\t} else {\r\n\t\t\tonRestore(conflictedAsset.offline);\r\n\t\t}\r\n\t};\r\n\r\n\tconst onUpdate = (builderAsset: BuilderAsset) => {\r\n\t\tconst saveRequest: SaveBuilderAssetRequest = {\r\n\t\t\t...builderAsset,\r\n\t\t};\r\n\t\tonSave(saveRequest);\r\n\t};\r\n\r\n\tconst onRestore = (builderAsset: BuilderAsset) => {\r\n\t\t// Remove id so it's treated like a create\r\n\t\tconst { id, ...rest } = builderAsset;\r\n\t\tconst saveRequest: SaveBuilderAssetRequest = {\r\n\t\t\t...rest,\r\n\t\t};\r\n\t\tonSave(saveRequest);\r\n\t};\r\n\r\n\tconst onSave = async (saveRequest: SaveBuilderAssetRequest) => {\r\n\t\tsetDisabled(true);\r\n\t\tconst response = await BuilderAssetService.save(saveRequest);\r\n\t\tsetDisabled(false);\r\n\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tprops.onConflictResolved(response.data.id, response.data);\r\n\t\t} else if (ServerResponse.isModelValidation(response)) {\r\n\t\t\tsetErrorMessage(`${response.errors[0].field} - ${response.errors[0].errors[0]}`);\r\n\t\t} else {\r\n\t\t\tsetErrorMessage(`${response.statusCode} - ${response.message}`);\r\n\t\t}\r\n\t};\r\n\r\n\tconst clearFromOfflineStorage = () => {\r\n\t\tprops.onConflictResolved(conflictedAsset.offline.id, null);\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{orderedConflicts.map((c) => (\r\n\t\t\t\t (c.online ? onSelectOnline(conflictedAsset) : onSelectOffline(conflictedAsset))}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{c.name}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tLast modified {c.online ? \"online\" : \"offline\"}: {c.dateModified.toLocaleString()}\r\n\t\t\t\t\t\r\n {\r\n (c.lastModifiedOnOperatingSystem || c.lastModifiedFormFactor)\r\n &&\r\n \r\n\t\t\t\t\t\t Edited on a {c.lastModifiedOnOperatingSystem} {c.lastModifiedFormFactor}\r\n\t\t\t\t\t \r\n }\r\n \r\n\t\t\t\t
\r\n\t\t\t))}\r\n\t\t\t{errorMessage && (\r\n\t\t\t\t
\r\n\t\t\t\t\t{errorMessage}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}","import React from \"react\";\r\nimport { Dialog, DialogTitle, Grid, CircularProgress } from \"@material-ui/core\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { OfflineBuilderAsset } from \"../../entities/OfflineBuilderAsset\";\r\nimport { BuilderAssetConflictItem } from \"../offline/BuilderAssetConflictItem\";\r\n\r\nexport interface ConflictedAsset {\r\n\tonline: BuilderAsset;\r\n\toffline: OfflineBuilderAsset;\r\n}\r\n\r\nexport interface ConflictStatus {\r\n\ttotal: number;\r\n\tcurrent: number;\r\n}\r\n\r\ninterface BuilderAssetConflictDialogProps {\r\n\tconflictedAssets: ConflictedAsset[];\r\n\tstatus: ConflictStatus;\r\n\tonConflictResolved: (id: string, result: BuilderAsset | null) => void;\r\n}\r\n\r\nexport function BuilderAssetConflictDialog(props: BuilderAssetConflictDialogProps) {\r\n\tconst { conflictedAssets, status } = props;\r\n\treturn (\r\n\t\t 0}>\r\n\t\t\tWhich version do you want? {status.total > 1 ? `(${status.current} of ${status.total})` : undefined}\r\n {\r\n conflictedAssets.length > 0\r\n ?\r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\t\t\r\n\t);\r\n}\r\n\r\n","declare const gtag: (command: string, commandParameters?: any, additionalConfigInfo?: any) => any;\r\n\r\nexport class GTag {\r\n static event(action: string, detail: EventDetail) {\r\n let windowObject: any = window;\r\n if (windowObject.gtag && navigator.onLine) {\r\n gtag(\"event\", action, detail);\r\n }\r\n }\r\n\r\n static purchase(price: number, planName: \"Sermon Maker - Monthly\" | \"Sermon Maker - Annual\") {\r\n let windowObject: any = window;\r\n if (windowObject.gtag) {\r\n let item = {\r\n \"id\": \"plan_EwKerZhWAamWP2\",\r\n \"name\": planName,\r\n \"brand\": \"Sermon Maker\",\r\n \"category\": \"Sermon Maker Subscription\",\r\n \"quantity\": \"1\",\r\n \"price\": price.toString(),\r\n };\r\n let transaction = {\r\n \"transaction_id\": new Date().getTime().toString(),\r\n \"affiliation\": \"Sermon Maker\",\r\n \"value\": price.toString(),\r\n \"currency\": \"USD\",\r\n \"shipping\": \"0\",\r\n \"tax\": \"0\",\r\n \"items\": [ item ]\r\n };\r\n\r\n gtag('event', 'purchase', transaction);\r\n\r\n // make publicly visible by copying event to window so marketing can use GTM\r\n windowObject.gaItem = item;\r\n windowObject.gaTransaction = transaction;\r\n }\r\n }\r\n\r\n static setUserId(userId: string, trackingId: string) {\r\n gtag('config', trackingId, {\r\n 'user_id': userId\r\n });\r\n }\r\n}\r\n\r\nexport interface EventDetail {\r\n event_category: string;\r\n event_label?: string;\r\n value?: number;\r\n}\r\n","export enum AddAssetAction {\r\n\tBlank = 0,\r\n\tTemplate = 1,\r\n\tUpload = 2,\r\n\tAddLink = 3,\r\n\tAddYoutubeLink = 4,\r\n\tAddVimeoLink = 5,\r\n\tAddSoundCloudLink = 6,\r\n\tAddDocUpload = 7,\r\n\tShareAsset = 8,\r\n\tCreateCustomTemplate = 9,\r\n\tCreateFromPremiumTemplate = 10,\r\n\tDuplicate = 11,\r\n\tPremiumSermon = 12,\r\n\tPremiumSermonSeries = 13,\r\n\tGenius = 14,\r\n\tAnalyzer = 15,\r\n\tHearItNow = 16,\r\n\tFolder = 17,\r\n\tSeries = 18,\r\n\tImportSermonFromSC = 19,\r\n}","import { GTag } from \"./GoogleAnalytics\";\r\nimport { TelemetryService } from \"../../../src/services/TelemetryService\";\r\nimport { debounce } from \"lodash\";\r\nimport { AddAssetAction } from \"../../entities/AddAssetAction\";\r\n\r\nexport enum Location {\r\n\tLibrary = \"Library\",\r\n\tBuilderPreview = \"BuilderPreview\"\r\n}\r\n\r\nexport enum LibraryLocation {\r\n\tCalendar = \"Calendar\",\r\n\tListView = \"ListView\",\r\n\tQuickAccess = \"Quick Access\",\r\n}\r\n\r\nexport enum EntityDetails {\r\n\tScripture = \"Scripture\",\r\n\tLocation = \"Location\",\r\n\tPreachDate = \"Preach Date\",\r\n\tName = \"Name\",\r\n}\r\n\r\nexport enum SearchEntity {\r\n\tSermon = \"Sermon\",\r\n\tIllustration = \"Illustration\",\r\n\tBible = \"Bible\",\r\n\tGenius = \"Sermon Genius\",\r\n}\r\n\r\nexport type OfflineActionLocation =\r\n\t| \"Drawer Toggle (Library)\"\r\n\t| \"Drawer Icon (Library)\"\r\n\t| \"Drawer Toggle (Builder)\"\r\n\t| \"Drawer Icon (Builder)\"\r\n\t| \"App Bar Icon (Builder)\"\r\n\t| \"App Bar Icon Mobile (Builder)\"\r\n\t| \"File Dropdown (Builder)\"\r\n\t| \"3 Dots Mobile (Builder)\"\r\n\t| \"Right Click (Library)\"\r\n\t| \"3 Dots Desktop (Library)\"\r\n\t| \"3 Dots Mobile (Library)\"; \r\n\r\nexport type BuilderActionLocations =\r\n\t| \"Navigation Desktop\" \r\n\t| \"Navigation Mobile\"\r\n\t| \"Detail Drawer Interaction\"\r\n\t| \"Slide Drawer Interaction\"\r\n\t| \"Bible Drawer Interaction\"\r\n\t| \"Illustration Drawer Interaction\"\r\n\t| \"Sermon Drawer Interaction\"\r\n\t| \"Genius Drawer Interaction\"\r\n\t| \"Analyzer Drawer Interaction\"\r\n\r\nexport type PremiumContentLocations =\r\n\t| \"Premium Series\"\r\n\t| \"Premium Sermon\"\r\n\t\r\nexport type PrintActions = \r\n\t\"Quick Print\"\r\n\t| \"Single Column\"\r\n\t| \"Two Column\"\r\n\t| \"Three Column\"\r\n\r\nexport class EventTracking {\r\n\tstatic Offline = {\r\n\t\tenableOffline(actionLocation: OfflineActionLocation, offlineAssetCount: number) {\r\n\t\t\tGTag.event(actionLocation, { event_category: \"Enable Offline\", event_label: offlineAssetCount.toString() });\r\n\t\t},\r\n\t\tdisableOffline(actionLocation: OfflineActionLocation, offlineAssetCount: number) {\r\n GTag.event(actionLocation, { event_category: \"Disable Offline\", event_label: offlineAssetCount.toString() });\r\n },\r\n\t\tconflictResolved(conflictsResolved: number) {\r\n GTag.event(\"Resolved Conflicts\", { event_category: \"Offline\", event_label: conflictsResolved.toString() });\r\n },\r\n\t};\r\n\r\n\tstatic Subscribe = {\r\n\t\tonNewSubscription(price: number, upgradeAction?: AddAssetAction, fromRegisteration?: boolean) {\r\n\t\t\tconst planName = price === 179 ? \"Sermon Maker - Annual\" : \"Sermon Maker - Monthly\"\r\n\t\t\tGTag.purchase(price, planName);\r\n\r\n\t\t\tif (!upgradeAction) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (upgradeAction === AddAssetAction.AddDocUpload) {\r\n\t\t\t\tGTag.event(\"Word CTA\", { event_category: \"Upgrade\", event_label: price.toString() });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.AddSoundCloudLink) {\r\n\t\t\t\tGTag.event(\"SoundCloud CTA\", { event_category: \"Upgrade\", event_label: price.toString() });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.ImportSermonFromSC) {\r\n\t\t\t\tGTag.event(\"BuilderPreview CTA\", { event_category: \"Upgrade\", event_label: price.toString() });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.AddVimeoLink) {\r\n\t\t\t\tGTag.event(\"Vimeo CTA\", { event_category: \"Upgrade\", event_label: price.toString() });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.AddYoutubeLink) {\r\n\t\t\t\tGTag.event(\"YouTube CTA\", { event_category: \"Upgrade\", event_label: price.toString() });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.ShareAsset) {\r\n\t\t\t\tGTag.event(\"Share CTA\", { event_category: \"Upgrade\", event_label: price.toString() });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.CreateFromPremiumTemplate || upgradeAction === AddAssetAction.CreateCustomTemplate) {\r\n\t\t\t\tGTag.event(\"Template CTA\", { event_category: \"Upgrade\", event_label: price.toString() });\r\n\t\t\t} else if (fromRegisteration) {\r\n\t\t\t\tGTag.event(\"Registration\", { event_category: \"Upgrade\", event_label: price.toString() });\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonDiscountPlan(){\r\n\t\t\tGTag.event(\"Settings\", {event_category: \"Discount\", event_label: \"Converted to Annual Discound Plan\" })\r\n\t\t},\r\n\r\n\t\tonCancelSubscription(){\r\n\t\t\tGTag.event(\"Settings\", {event_category: \"Cancel\", event_label: `Cancelled Subscription` })\r\n\t\t},\r\n\r\n\t\tonOpenUpgrade(upgradeAction?: AddAssetAction) {\r\n\t\t\tif (!upgradeAction) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (upgradeAction === AddAssetAction.AddDocUpload) {\r\n\t\t\t\tGTag.event(\"Word CTA\", { event_category: \"Upgrade\", event_label: \"Intent\" });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.AddSoundCloudLink) {\r\n\t\t\t\tGTag.event(\"SoundCloud CTA\", { event_category: \"Upgrade\", event_label: \"Intent\" });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.AddVimeoLink) {\r\n\t\t\t\tGTag.event(\"Vimeo CTA\", { event_category: \"Upgrade\", event_label: \"Intent\" });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.AddYoutubeLink) {\r\n\t\t\t\tGTag.event(\"YouTube CTA\", { event_category: \"Upgrade\", event_label: \"Intent\" });\r\n\t\t\t} else if (upgradeAction === AddAssetAction.ShareAsset) {\r\n\t\t\t\tGTag.event(\"Share CTA\", { event_category: \"Upgrade\", event_label: \"Intent\" });\r\n\t\t\t} else if (\r\n\t\t\t\tupgradeAction === AddAssetAction.CreateFromPremiumTemplate ||\r\n\t\t\t\tupgradeAction === AddAssetAction.CreateCustomTemplate ||\r\n\t\t\t\tupgradeAction === AddAssetAction.Template\r\n\t\t\t) {\r\n\t\t\t\tGTag.event(\"Template CTA\", { event_category: \"Upgrade\", event_label: \"Intent\" });\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n\r\n\tstatic Navigation = {\r\n\t\tonSignOut(location: Location) {\r\n\t\t\tGTag.event(\"Navigation\", { event_category: location, event_label: \"Sign Out\" });\r\n\t\t},\r\n\t\tonVisitAccount(location: Location) {\r\n\t\t\tGTag.event(\"Navigation\", { event_category: location, event_label: \"Visit Account\" });\r\n\t\t},\r\n\t};\r\n\r\n\tstatic Authentication = {\r\n\t\tonNewRegistration(location: Location) {\r\n\t\t\tGTag.event(\"Authentication\", { event_category: location, event_label: \"New Registration\" });\r\n\t\t},\r\n\t\tonLogin(location: Location) {\r\n\t\t\tGTag.event(\"Authentication\", { event_category: location, event_label: \"Login\" });\r\n\t\t},\r\n\t};\r\n\r\n\tstatic Builder = {\r\n\t\tonSaveAsset(detail: EntityDetails) {\r\n\t\t\tGTag.event(\"Detail Drawer Interaction\", { event_category: \"Library\", event_label: `Modified ${detail}` });\r\n\t\t},\r\n\r\n\t\tonImportSCSermon(sermonId:number){\r\n\t\t\tGTag.event(\"Sermon Preview\", { event_category: \"Builder\", event_label: `Sermon ${sermonId} import from SC`});\r\n\t\t},\r\n\r\n\t\tonDrawerOpen(drawer: string) {\r\n\t\t\tGTag.event(\"Detail Drawer Interaction\", { event_category: \"Builder\", event_label: `${drawer} Opened` });\r\n\t\t},\r\n\r\n\t\tonTabChange(drawer: string) {\r\n\t\t\tGTag.event(\"Explore Drawer Interaction\", { event_category: \"Builder\", event_label: `${drawer} Tab` });\r\n\t\t},\r\n\r\n\t\tonPreferencesChanges(drawer: string, label: string) {\r\n\t\t\tGTag.event(`${drawer} Settings`, { event_category: \"Builder\", event_label: label });\r\n\t\t},\r\n\r\n\t\tonDownloadSermonAsPdf(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Download Sermon Pdf\" });\r\n\t\t},\r\n\r\n\t\tonCustomTemplate(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Save as Custom Template\" });\r\n\t\t},\r\n\r\n\t\tonShare(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Share Asset\" });\r\n\t\t},\r\n\r\n\t\tonDownloadSermonAsDocx(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Download Sermon Docx\" });\r\n\t\t},\r\n\r\n\t\tonPrint(action: PrintActions, location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: `Print - ${action}` });\r\n\t\t},\r\n\r\n\t\tonExportSlides(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Export Slides\" });\r\n\t\t},\r\n\r\n\t\tonCloseMainDrawerFromX() {\r\n\t\t\tGTag.event(\"Detail Drawer Interaction\", { event_category: \"Builder\", event_label: \"Close from X\" });\r\n\t\t},\r\n\r\n\t\tonPresentSermon(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Present Asset\" });\r\n\t\t},\r\n\r\n\t\tonPresentSlides(location:BuilderActionLocations){\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Present Slides\"})\r\n\t\t},\r\n\r\n\t\tcontentDrawerOpen(entity: SearchEntity, location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: `${entity} Bible` });\r\n\t\t},\r\n\r\n\t\tonMainDrawerOpenWithChevron(label: string) {\r\n\t\t\tGTag.event(\"Detail Drawer Interaction\", { event_category: \"Builder\", event_label: label });\r\n\t\t},\r\n\t\t\r\n\t\tsendDebouncedSearchEvent: debounce((entity:SearchEntity, location:BuilderActionLocations) => GTag.event(location, { event_category: \"Builder\", event_label: `Search ${entity}` }), 5000),\r\n\r\n\t\tonSearch(entity: SearchEntity, location:BuilderActionLocations) {\r\n\t\t\tEventTracking.Builder.sendDebouncedSearchEvent(entity, location)\r\n\t\t},\r\n\r\n\t\tonCopy(entity: SearchEntity, location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: `Copy ${entity}` });\r\n\t\t},\r\n\r\n\t\tonOpenSettings(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Settings\" });\r\n\t\t},\r\n\r\n\t\tonOpenWritingLogs(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Open Writing Logs\" });\r\n\t\t},\r\n\r\n\t\tonDeleteWritingLogs(location:BuilderActionLocations) {\r\n\t\t\tGTag.event(location, { event_category: \"Builder\", event_label: \"Deleted Writing Log\" });\r\n\t\t},\r\n\r\n\t\tonAddSlide(slideCount: number) {\r\n\t\t\tGTag.event(\"Slide Created\", { event_category: \"Builder\", event_label: `Slide ${slideCount.toString()}` });\r\n\t\t\tTelemetryService.recordSlideChange();\r\n\t\t},\r\n\r\n\t\tonExtendSlide(slideCount: number) {\r\n\t\t\tGTag.event(\"Slide Extended\", { event_category: \"Builder\", event_label: `Slide ${slideCount.toString()}` });\r\n\t\t\tTelemetryService.recordSlideChange();\r\n\t\t},\r\n\r\n\t\tonRemoveSlide(slideCount: number) {\r\n\t\t\tGTag.event(\"Slide Removed\", { event_category: \"Builder\", event_label: `Slide ${slideCount.toString()}` });\r\n\t\t\tTelemetryService.recordSlideChange();\r\n\t\t},\r\n\r\n\t\tonRemoveSlideFromDrawer() {\r\n\t\t\tGTag.event(\"Slide Drawer Interaction\", { event_category: \"Builder\", event_label: \"Slide Deleted\" });\r\n\t\t},\r\n\r\n\t\tonStartedTextToSpeech(seconds: number, words: number) {\r\n\t\t\tGTag.event(\"Audio Playback\", { event_category: \"Builder\", event_label: `Started - ${seconds} seconds, ${words} words` });\r\n\t\t},\r\n\r\n\t\tonCompletedTextToSpeech(seconds: number, words: number) {\r\n\t\t\tGTag.event(\"Audio Playback\", { event_category: \"Builder\", event_label: `Completed - ${seconds} seconds, ${words} words` });\r\n\t\t},\r\n\r\n\t\tonPausedTextToSpeech() {\r\n\t\t\tGTag.event(\"Audio Playback\", { event_category: \"Builder\", event_label: \"Paused\" });\r\n\t\t},\r\n\r\n\t\tonUnPausedTextToSpeech() {\r\n\t\t\tGTag.event(\"Audio Playback\", { event_category: \"Builder\", event_label: \"Unpause\" });\r\n\t\t},\r\n\r\n\t\tonReStartTextToSpeech() {\r\n\t\t\tGTag.event(\"Audio Playback\", { event_category: \"Builder\", event_label: \"Restart\" });\r\n\t\t},\r\n\r\n\t\tonChangeTextToSpeechSpeed(speed: number) {\r\n\t\t\tGTag.event(\"Audio Settings\", { event_category: \"Builder\", event_label: `Speed - ${speed}x` });\r\n\t\t},\r\n\r\n\t\tonChangeTextToSpeechVoice(voice: string) {\r\n\t\t\tGTag.event(\"Audio Settings\", { event_category: \"Builder\", event_label: `Voice - ${voice}` });\r\n\t\t},\r\n\t};\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { OfflineAssetsContext } from \"./useOfflineAssets\";\r\nimport { useLocalStorage } from \"../../utilities/useLocalStorage\";\r\nimport { OfflineBuilderAsset } from \"../../entities/OfflineBuilderAsset\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { BuilderAssetService } from \"../../services/BuilderAssetService\";\r\nimport { ServerResponse } from \"../../services/server/OldWebClient\";\r\nimport { useOfflineStatus } from \"../../utilities/useOfflineStatus\";\r\nimport { OfflineManagerNotifications } from \"./OfflineManagerNotifications\";\r\nimport { useUser } from \"../../utilities/useUser\";\r\nimport { AssetDataType } from \"../../entities/AssetType\";\r\nimport { toAssetCategory } from \"../../entities/AssetCategory\";\r\nimport { ConflictedAsset, BuilderAssetConflictDialog, ConflictStatus } from \"./BuilderAssetConflictDialog\";\r\nimport { EventTracking, OfflineActionLocation } from \"../../utilities/Tracking/EventTracking\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst resolveUpdatedOfflineAssets = async (offlineBuilderAssets: OfflineBuilderAsset[], serverBuilderAssets: BuilderAsset[]) => {\r\n\tconst editedOfflineAssets = offlineBuilderAssets.filter((a) => a.editedOffline);\r\n\t// Asset was either deleted or no long marked for offline use\r\n\tconst editedOfflineAssetsWithoutOnlineCounterParts = editedOfflineAssets.filter(\r\n\t\t(offlineAsset) => serverBuilderAssets.find((serverAsset) => offlineAsset.id === serverAsset.id) === undefined\r\n\t);\r\n\r\n\tconst conflictsToResolve: ConflictedAsset[] = await checkServerForOfflineBuilderAsset(editedOfflineAssetsWithoutOnlineCounterParts);\r\n\r\n\t// This should remove any offline assets that are deleted or don't belong to the user\r\n\tconst offlineAssetsThatAreMarkedAsOnlineOnlyNow = editedOfflineAssetsWithoutOnlineCounterParts.filter((a) =>\r\n\t\tconflictsToResolve.some((c) => c.offline.id === a.id)\r\n\t);\r\n\r\n\tconst updatedOfflineAssets: OfflineBuilderAsset[] = serverBuilderAssets\r\n\t\t.map((serverAsset) => {\r\n\t\t\tconst conflict = editedOfflineAssets.find((editedAsset) => editedAsset.id === serverAsset.id);\r\n\t\t\tif (conflict) {\r\n\t\t\t\tconflictsToResolve.push({ online: serverAsset, offline: conflict });\r\n\t\t\t\treturn conflict;\r\n\t\t\t}\r\n\t\t\tconst offlineAsset: OfflineBuilderAsset = { ...serverAsset, editedOffline: false };\r\n\t\t\treturn offlineAsset;\r\n\t\t})\r\n\t\t.concat(offlineAssetsThatAreMarkedAsOnlineOnlyNow);\r\n\r\n\treturn { updatedOfflineAssets, conflictsToResolve };\r\n};\r\n\r\nconst checkServerForOfflineBuilderAsset = (editedOfflineAssetsWithoutOnlineCounterParts: OfflineBuilderAsset[]) => {\r\n\tconst conflictsToResolve: ConflictedAsset[] = [];\r\n\r\n\teditedOfflineAssetsWithoutOnlineCounterParts.forEach(async (offlineAsset) => {\r\n\t\tconst response = await BuilderAssetService.get(offlineAsset.id);\r\n\t\t// User changed the offline preference for this asset\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tconflictsToResolve.push({ online: response.data, offline: offlineAsset });\r\n\t\t}\r\n\t\t// If user either deleted this asset or it's garbage we're going to ignore it\r\n\t});\r\n\r\n\treturn conflictsToResolve;\r\n};\r\n\r\nconst deserializeOfflineBuilderAsset = (asset: OfflineBuilderAsset): OfflineBuilderAsset => {\r\n\treturn {\r\n\t\t...asset,\r\n\t\tcategory: toAssetCategory(asset.category),\r\n\t\tdateAccessed: new Date(asset.dateAccessed),\r\n\t\tdateCreated: new Date(asset.dateCreated),\r\n\t\tdateModified: new Date(asset.dateModified),\r\n\t\tdatePreached: asset.datePreached ? new Date(asset.datePreached) : undefined,\r\n\t\tassetType: AssetDataType.EditableText,\r\n\t};\r\n};\r\n\r\ninterface Props {}\r\n\r\nexport function OfflineManager(props: React.PropsWithChildren) {\r\n\tconst isOffline = useOfflineStatus();\r\n\tconst userInfo = useUser();\r\n\tconst location = useLocation();\r\n\tconst { onlineUser } = userInfo;\r\n\r\n\tconst [offlineMode, setOfflineMode] = useState(isOffline);\r\n\tconst [serailizedOfflineBuilderAssets, setOfflineBuilderAssets] = useLocalStorage(\"offlineBuilderAssets\", []);\r\n\tconst [offlineBuilderAssets, setDeseriealizedOfflineBuilderAssets] = useState([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetDeseriealizedOfflineBuilderAssets(serailizedOfflineBuilderAssets.map(deserializeOfflineBuilderAsset));\r\n\t}, [serailizedOfflineBuilderAssets]);\r\n\r\n\tconst [conflictedAssets, setConflictedAssets] = useState([]);\r\n\tconst [conflictStatus, setConflictStatus] = useState({ total: 0, current: 0 });\r\n\r\n\tconst [offlineModeChangeMessage, setOfflineModeChangeMessage] = useState();\r\n\t\r\n\tuseEffect(() => {\r\n\t\t// Don't attempt fetch unless someone is online and logged in\r\n\t\tif (!offlineMode && onlineUser) {\t\t\t\r\n\t\t\tfetchUpdatedAssetsMarkedAsOffline();\r\n\t\t}\r\n\r\n\t\tasync function fetchUpdatedAssetsMarkedAsOffline() {\r\n\t\t\tconst response = await BuilderAssetService.getOfflineBuilderAssets();\r\n\t\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\t\tawait reconcileOnlineAssetsWithOffline(response.data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync function reconcileOnlineAssetsWithOffline(serverAssets: BuilderAsset[]) {\r\n\t\t\tconst { updatedOfflineAssets, conflictsToResolve } = await resolveUpdatedOfflineAssets(offlineBuilderAssets, serverAssets);\r\n\t\t\tsetOfflineBuilderAssets(updatedOfflineAssets);\r\n\t\t\tsetConflictedAssets(conflictsToResolve);\r\n\t\t\tsetConflictStatus({ total: conflictsToResolve.length, current: 1 });\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [onlineUser, offlineMode]);\r\n\r\n\tconst setAssetOfflineMode = async (builderAssetId: string, offlineMode: boolean, actionLocation?: OfflineActionLocation) => {\r\n\t\tconst response = await BuilderAssetService.setOfflineMode(builderAssetId, offlineMode);\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tif (offlineMode) {\r\n\t\t\t\tsetOfflineModeChangeMessage(\"Available offline\");\r\n\t\t\t\taddAssetToOfflineStorage(response.data);\r\n\t\t\t\tif(actionLocation)\r\n\t\t\t\t\tEventTracking.Offline.enableOffline(actionLocation, offlineBuilderAssets.length + 1);\r\n\t\t\t} else {\r\n\t\t\t\tsetOfflineModeChangeMessage(\"No longer available offline\");\r\n\t\t\t\tremoveAssetFromOfflineStorage(builderAssetId);\r\n\t\t\t\tif(actionLocation)\r\n\t\t\t\t\tEventTracking.Offline.disableOffline(actionLocation, offlineBuilderAssets.length + 1);\r\n\t\t\t}\r\n\t\t\treturn response.data;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tconst addAssetToOfflineStorage = (builderAsset: BuilderAsset) => {\r\n\t\tconst offlineAsset: OfflineBuilderAsset = {\r\n\t\t\t...builderAsset,\r\n\t\t\teditedOffline: false,\r\n\t\t};\r\n\t\tsetOfflineBuilderAssets([...offlineBuilderAssets, offlineAsset]);\r\n\t};\r\n\r\n\tconst removeAssetFromOfflineStorage = (builderAssetId: string) => {\r\n\t\tsetOfflineBuilderAssets([...offlineBuilderAssets].filter((a) => a.id !== builderAssetId));\r\n\t};\r\n\r\n\tconst updateAssetInOfflineStorage = (builderAsset: BuilderAsset) => {\r\n\t\tconst offlineAsset: OfflineBuilderAsset = {\r\n\t\t\t...builderAsset,\r\n\t\t\tdateModified: new Date(),\r\n\t\t\tdateAccessed: new Date(),\r\n\t\t\teditedOffline: offlineMode,\r\n\t\t};\r\n\t\tconst updatedAssets: OfflineBuilderAsset[] = offlineBuilderAssets.map((a) => {\r\n\t\t\tif (a.id === offlineAsset.id) {\r\n\t\t\t\treturn offlineAsset;\r\n\t\t\t}\r\n\t\t\treturn a;\r\n\t\t});\r\n\t\tsetOfflineBuilderAssets(updatedAssets);\r\n\t\treturn offlineAsset;\r\n\t};\r\n\r\n\tconst onConflictResolved = (id: string, builderAsset: BuilderAsset | null) => {\r\n\t\tconst conflicts = conflictedAssets.filter((a) => a.offline.id !== id);\r\n\t\tsetConflictedAssets(conflicts);\r\n\r\n\t\tif (conflicts.length > 0) {\r\n\t\t\tsetConflictStatus({ ...conflictStatus, current: conflictStatus.current + 1 });\r\n\t\t} else {\r\n\t\t\tEventTracking.Offline.conflictResolved(conflictStatus.total);\r\n\t\t}\r\n\r\n\t\tif (!builderAsset) {\r\n\t\t\tremoveAssetFromOfflineStorage(id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst offlineAsset: OfflineBuilderAsset = {\r\n\t\t\t...builderAsset,\r\n\t\t\teditedOffline: false,\r\n\t\t};\r\n\t\tconst updatedAssets: OfflineBuilderAsset[] = offlineBuilderAssets.map((a) => {\r\n\t\t\tif (a.id === offlineAsset.id) {\r\n\t\t\t\treturn offlineAsset;\r\n\t\t\t}\r\n\t\t\treturn a;\r\n\t\t});\r\n\t\tsetOfflineBuilderAssets(updatedAssets);\r\n\r\n\t\tif (location.pathname.includes(\"/build/\")) {\r\n\t\t\twindow.location.reload();\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t setOfflineMode(offlineMode),\r\n\t\t\t\tsetAssetOfflineMode,\r\n\t\t\t\tsaveBuilderAssetOffline: updateAssetInOfflineStorage,\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t{props.children}\r\n\t\t\t setOfflineMode(offlineMode)}\r\n\t\t\t\tofflineModeChangeMessage={offlineModeChangeMessage}\r\n\t\t\t\tonDismissOfflineModeChangeMessage={() => setOfflineModeChangeMessage(undefined)}\r\n\t\t\t/>\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import { ApplicationUser } from '../entities/ApplicationUser';\r\nimport { WebClient } from './server/WebClient';\r\n\r\nexport interface RegisterAccountRequest {\r\n firstName: string,\r\n lastName: string,\r\n email: string,\r\n password: string\r\n}\r\n\r\nexport const AuthenticationService = {\r\n decodeResetPasswordEmail: (email: string) => WebClient.Post.Validated(\"api/Authentication/DecodeResetPasswordEmail\", { email: email }),\r\n\r\n getAuthenticatedUser: () => WebClient.Get(\"api/Authentication/GetAuthenticatedUser\"),\r\n\r\n register: (request:RegisterAccountRequest) => \r\n WebClient.Post.Validated(\"api/Authentication/Register\", request),\r\n\r\n resetPassword: (email: string, password: string, confirmPassword: string, code: string) => \r\n WebClient.Post.Validated(\"api/Authentication/ResetPassword\", { email, password, confirmPassword, code }),\r\n\r\n sendResetPasswordEmail: (email: string, redirect?:string) => \r\n WebClient.Post.Validated(\"api/Authentication/SendResetPasswordEmail\", { email, redirect }),\r\n\r\n signIn: (email: string, password: string, rememberMe: boolean) => \r\n WebClient.Post.Validated(\"api/Authentication/SignIn\", { email, password, rememberMe }),\r\n\r\n signOut: async () => {\r\n const response = await WebClient.Get(\"api/Authentication/SignOut\");\r\n if (response.success) {\r\n return response.data;\r\n }\r\n return '';\r\n }\r\n}","import { getDataLayer } from \"./DataLayer\"\r\n\r\nexport const ProfitWell = {\r\n onUserAuthenticated: (email: string) => {\r\n const dataLayer = getDataLayer();\r\n dataLayer.push({ 'event': 'start_pw', 'pw_user_email': email })\r\n },\r\n onAnonymousUser: () => {\r\n const dataLayer = getDataLayer();\r\n dataLayer.push({ 'event': 'start_pw' })\r\n }\r\n}","import { Grid } from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nexport function LoadingPage(props: {message?: string}) {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\"Loading\"\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { ApplicationUser } from \"../entities/ApplicationUser\";\r\nimport { AuthenticationService } from \"../services/AuthenticationService\";\r\nimport { GTag } from \"../utilities/Tracking/GoogleAnalytics\";\r\nimport { useAppConfig } from \"../utilities/useAppConfig\";\r\nimport { useLocalStorage } from \"../utilities/useLocalStorage\";\r\nimport { useOfflineStatus } from \"../utilities/useOfflineStatus\";\r\nimport { UserContext } from \"../utilities/useUser\";\r\nimport { ProfitWell } from \"../utilities/Tracking/ProfitWell\"\r\nimport { LoadingPage } from \"./LoadingPage\";\r\n\r\ninterface UserProviderProps {}\r\n\r\nexport function UserProvider(props: React.PropsWithChildren) {\r\n\tconst isOffline = useOfflineStatus();\r\n\tconst [appConfig] = useAppConfig();\r\n\tconst { trackingId: mikesGoogleAnalyticsTrackingId, isEnabled: mikesGoogleAnalyticsEnabled } = appConfig.mikesGoogleAnalytics;\r\n\r\n\tconst [offlineUser, setOfflineUser] = useLocalStorage(\"offlineUser\", null);\r\n\tconst [onlineUser, setOnlineUser] = useState(undefined);\r\n\tconst [loading, setLoading] = useState(true);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tasync function loadUser() {\r\n\t\t\tconst result = await AuthenticationService.getAuthenticatedUser();\r\n\t\t\tif (result.success && result.data) {\r\n\t\t\t\tconst user = result.data;\r\n\t\t\t\tProfitWell.onUserAuthenticated(user.email);\r\n\t\t\t\tsetOnlineUser(user);\r\n\t\t\t\tsetOfflineUser(user);\r\n\t\t\t} else {\r\n\t\t\t\tProfitWell.onAnonymousUser();\r\n\t\t\t\tsetOnlineUser(null);\r\n\t\t\t}\r\n\t\t\tsetLoading(false)\r\n\t\t}\r\n\r\n\t\tif (!isOffline) {\r\n\t\t\tloadUser();\r\n\t\t}\r\n\t\tif(isOffline)\r\n\t\t\tsetLoading(false)\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [isOffline]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (onlineUser && mikesGoogleAnalyticsEnabled && !loading) {\r\n\t\t\tGTag.setUserId(onlineUser.id.toString(), mikesGoogleAnalyticsTrackingId);\r\n\t\t}\r\n\t}, [onlineUser, mikesGoogleAnalyticsTrackingId, mikesGoogleAnalyticsEnabled]);\r\n\r\n\tconst updateUser = (user: ApplicationUser | null) => {\r\n\t\tsetOnlineUser(user);\r\n\t\tif (user) {\r\n\t\t\tsetOfflineUser(user);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{loading ? : props.children}\r\n\t\t\r\n\t);\r\n}\r\n","import AppConfig from '../../src/entities/AppConfig';\r\nimport { WebClient } from './server/WebClient';\r\n\r\nexport const AppConfigService = {\r\n getAppConfig: () => WebClient.Get(\"api/AppConfig\")\r\n}\r\n","import React from \"react\";\r\n\r\nexport const PageTitleContext = React.createContext<[string, (title: string) => void]>([\"Response\", () => {}]);\r\n\r\nexport function usePageTitle() {\r\n\treturn React.useContext(PageTitleContext);\r\n}","import React, { useEffect } from \"react\";\r\nimport AppConfig from \"../entities/AppConfig\";\r\nimport { useLocalStorage } from \"../utilities/useLocalStorage\";\r\nimport { AppConfigContext, defaultAppConfig } from \"../utilities/useAppConfig\";\r\nimport { AppConfigService } from \"../services/AppConfigService\";\r\nimport { useOfflineStatus } from \"../utilities/useOfflineStatus\";\r\nimport { StripeProvider } from \"react-stripe-elements\";\r\nimport { LoadingPage } from \"./LoadingPage\";\r\nimport { PageTitleContext } from \"../utilities/usePageTitle\";\r\n\r\ninterface AppConfigProviderProps {\r\n}\r\n\r\nexport function AppConfigProvider(props: React.PropsWithChildren){\r\n const isOffline = useOfflineStatus();\r\n const [appConfig, setAppConfig] = useLocalStorage(\"offlineAppConfig\", defaultAppConfig);\r\n const [stripe, setStripe] = React.useState(null);\r\n\tconst [title, setTitle] = React.useState(\"Sermon Maker\");\r\n\r\n useEffect(() => {\r\n async function loadAppConfig(){\r\n const result = await AppConfigService.getAppConfig();\r\n if(result.success){\r\n setAppConfig(result.data);\r\n onStripeApiKeyLoaded(result.data.stripeApiKey)\r\n } else {\r\n onStripeApiKeyLoaded(appConfig.stripeApiKey)\r\n }\r\n } \r\n if(!isOffline) {\r\n loadAppConfig()\r\n } else {\r\n onStripeApiKeyLoaded(appConfig.stripeApiKey)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isOffline])\r\n\r\n const onStripeApiKeyLoaded = (stripeApiKey: string) => {\r\n\t\tconst windowAny: any = window;\r\n\t\tif (windowAny.Stripe) {\r\n\t\t\tconsole.log(\"Stripe loaded\");\r\n\t\t\tconst stripe: stripe.Stripe = windowAny.Stripe(stripeApiKey);\r\n\t\t\tsetStripe(stripe);\r\n\t\t} else {\r\n\t\t\tconsole.log(\"Stripe hasn't finished loading\");\r\n\t\t\twindow.document!.querySelector(\"#stripe-js\")!.addEventListener(\"load\", () => {\r\n\t\t\t\tconsole.log(\"Stripe loaded\");\r\n\t\t\t\t// Create Stripe instance once Stripe.js loads\r\n\t\t\t\tconst stripe: stripe.Stripe = windowAny.Stripe(stripeApiKey);\r\n\t\t\t\tsetStripe(stripe);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n const onChangeTitle = (newTitle: string) => {\r\n\t\tif (newTitle === title) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tdocument.title = newTitle;\r\n\t\tsetTitle(newTitle);\r\n\t};\r\n\r\n if(stripe === null){\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n );\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { OfflineStatusContext } from \"../utilities/useOfflineStatus\";\r\nimport axios from 'axios';\r\nimport { LoadingPage } from \"./LoadingPage\";\r\n\r\ninterface OfflineStatusProviderProps {\r\n}\r\n\r\nexport function OfflineStatusProvider(props: React.PropsWithChildren){\r\n const [isOffline, setIsOffline] = useState();\r\n\r\n React.useEffect(() => {\r\n\t\tasync function ping(){\r\n try {\r\n const response = await axios.get(\"/ping\", { headers: { Pragma: 'no-cache' } });\r\n setIsOffline(response.status !== 200);\r\n }\r\n catch {\r\n setIsOffline(true)\r\n }\r\n\t\t}\r\n\r\n\t\tif(!navigator.onLine){\r\n\t\t\tsetIsOffline(true);\r\n\t\t} else{\r\n ping()\r\n }\r\n\t}, [])\r\n\r\n useEffect(() => {\r\n\t\tfunction onBrowserOnline() {\r\n\t\t\tsetIsOffline(false);\r\n\t\t}\r\n\r\n\t\tfunction onBrowserOffline() {\r\n setIsOffline(true);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener(\"offline\", onBrowserOffline);\r\n\t\twindow.addEventListener(\"online\", onBrowserOnline);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"offline\", onBrowserOffline);\r\n\t\t\twindow.removeEventListener(\"online\", onBrowserOnline);\r\n\t\t};\r\n\t}, []);\r\n\r\n\r\n if(isOffline === undefined){\r\n\t\treturn ;\r\n\t}\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}","import { withWidth } from \"@material-ui/core\";\r\nimport { Breakpoint } from \"@material-ui/core/styles/createBreakpoints\";\r\nimport { WithWidth } from \"@material-ui/core/withWidth\";\r\nimport React, { useMemo } from \"react\";\r\n\r\nconst WidthReactContext = React.createContext(\"md\");\r\nconst IsMobileReactContext = React.createContext(false);\r\n\r\nexport function useWidth() {\r\n\treturn React.useContext(WidthReactContext);\r\n}\r\n\r\nexport function useIsMobile() {\r\n return React.useContext(IsMobileReactContext);\r\n}\r\n\r\ninterface Mui3WidthProviderProps extends WithWidth {}\r\n\r\nfunction Mui3WidthProvider(props: React.PropsWithChildren) {\r\n\tconst isMobile = useMemo(() => props.width === \"xs\" || props.width === \"sm\", [props.width]);\r\n\treturn (\r\n\t\t\r\n\t\t\t{props.children}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default withWidth()(Mui3WidthProvider);\r\n","export const routes = {\r\n public: {\r\n signInPage: \"/auth/sign-in\",\r\n reqisterPage: \"/auth/register\",\r\n forgotPasswordPage: \"/auth/forgot-password\",\r\n forgotPasswordSuccessPage: \"/auth/forgot-password/success\",\r\n resetPasswordPage: \"/auth/reset-password/:email/:code\",\r\n popularSeriesListPage: \"/popular-sermon-series\",\r\n popularSeriesDetailPage: \"/popular-sermon-series/:name\",\r\n popularSermonListPage: \"/popular-sermons\",\r\n popularSermonDetailPage: \"/popular-sermons/:name\",\r\n googleAuthPage: \"/googleauth\",\r\n sharePage: \"/share/:id\",\r\n shareSlidePage: \"/share/slide/:id\",\r\n builderPreviewPage: \"/builderPreview/:id\",\r\n resolve: {\r\n signInPage: () => routes.public.signInPage,\r\n reqisterPage: (query:string) => `${routes.public.reqisterPage}${query}`,\r\n forgotPasswordPage: () => routes.public.forgotPasswordPage,\r\n forgotPasswordSuccessPage: () => routes.public.forgotPasswordSuccessPage,\r\n resetPasswordPage: (email:string, code:string) => `/auth/reset-password/${email}/${code}`,\r\n popularSeriesListPage: () => routes.public.popularSeriesListPage,\r\n popularSeriesDetailPage: (name:string) => `/popular-sermon-series/${name}`,\r\n popularSermonListPage: () => routes.public.popularSermonListPage,\r\n popularSermonDetailPage: (name:string) => `/popular-sermons/${name}`,\r\n googleAuthPage: () => routes.public.googleAuthPage,\r\n sharePage: (id:string) => `/share/${id}`,\r\n shareSlidePage: (id:string) => `/share/slide/${id}`,\r\n builderPreviewPage: (id:string) => `/builderPreview/${id}`,\r\n }\r\n },\r\n app: {\r\n libraryHomePage: \"/library-home\",\r\n libraryRecentPage: \"/library-recent\",\r\n libraryStarredPage: \"/library-starred\",\r\n librarySearchPage: \"/library-search\",\r\n libraryCalendarPage: \"/library-calendar\",\r\n libraryOfflinePage: \"/library-offline\",\r\n libraryFolder: \"/library-home/:id\",\r\n sermonTemplateListPage: \"/sermon-templates\",\r\n sermonTemplateDetailPage: \"/sermon-templates/:id\",\r\n premiumSermonListPage: \"/premium-sermons\",\r\n premiumSermonDetailPage: \"/premium-sermons/:id\",\r\n premiumSeriesListPage: \"/premium-series\",\r\n premiumSeriesDetailPage: \"/premium-series/:id\",\r\n builderPage: \"/build/:id\",\r\n presenterPage: \"/present/:id\",\r\n settings: \"/settings\",\r\n subscriptionConfirmationPage: \"/confirmation\",\r\n activatePage: \"/activate\",\r\n checkoutPage: \"/checkout/:sessionId\",\r\n resolve: {\r\n libraryHomePage: () => routes.app.libraryHomePage,\r\n libraryRecentPage: () => routes.app.libraryRecentPage,\r\n libraryStarredPage: () => routes.app.libraryStarredPage,\r\n librarySearchPage: (query: string | null) => `${routes.app.librarySearchPage}${query ? `?query=${query}` : \"\"}`,\r\n libraryCalendarPage: () => routes.app.libraryCalendarPage,\r\n libraryOfflinePage: () => routes.app.libraryOfflinePage,\r\n libraryFolder: (id:string) => `${routes.app.libraryHomePage}/${id}`,\r\n sermonTemplateListPage: (query?: string | null) => `${routes.app.sermonTemplateListPage}${query ? `?query=${query}` : \"\"}`,\r\n sermonTemplateDetailPage: (id:string) => `/sermon-templates/${id}`,\r\n premiumSermonListPage: (query?: string | null) => `${routes.app.premiumSermonListPage}${query ? `?query=${query}` : \"\"}`,\r\n premiumSermonDetailPage: (id:string) => `/premium-sermons/${id}`,\r\n premiumSeriesListPage: (query?: string | null) => `${routes.app.premiumSeriesListPage}${query ? `?query=${query}` : \"\"}`,\r\n premiumSeriesDetailPage: (id:string) => `/premium-series/${id}`,\r\n builderPage: (id:string) => `/build/${id}`,\r\n presenterPage: (id:string) => `/present/${id}`,\r\n settings: () => routes.app.settings,\r\n activatePage: (query:string) => `${routes.app.activatePage}${query}`,\r\n subscriptionConfirmationPage: () => routes.app.subscriptionConfirmationPage,\r\n checkoutPage: (sessionId:string) => `/checkout/${sessionId}`,\r\n }\r\n }\r\n}","import React from \"react\";\r\nimport { ApplicationUser } from \"../entities/ApplicationUser\";\r\n\r\nexport const AuthenticatedUserContext = React.createContext({} as any);\r\n\r\nexport function useAuthenticatedUser() {\r\n\treturn React.useContext(AuthenticatedUserContext);\r\n}","import * as React from \"react\";\r\nimport { Redirect, Route, RouteProps } from \"react-router-dom\";\r\nimport { ApplicationUser } from \"../../src/entities/ApplicationUser\";\r\nimport { routes } from \"../routes\";\r\nimport { AuthenticatedUserContext } from \"../utilities/useAuthenticatedUser\";\r\n\r\ninterface PrivateRouteProps extends RouteProps {\r\n user: ApplicationUser | null;\r\n}\r\n\r\nexport const PrivateRoute: React.FunctionComponent = ({ component, ...rest }) => {\r\n\r\n const renderComponent = (Component: any) => (props: RouteProps) => {\r\n\r\n return ;\r\n };\r\n const user = rest.user;\r\n\r\n if (!user) {\r\n return (\r\n {\r\n\r\n // allow Caleb to direct new user to upgrade immediately.\r\n const redirectBase = routeProps.location ? routeProps.location.search.indexOf('newUser') > -1 ? routes.public.reqisterPage : routes.public.signInPage : routes.public.signInPage;\r\n const redirectWithQuery = `${redirectBase}?redirect=${encodeURI(routeProps.location.pathname + routeProps.location.search)}`\r\n return ;\r\n }}\r\n />\r\n );\r\n }\r\n else if (rest.location && rest.location.search.indexOf('upgrade=standard') > -1) { \r\n window.location.assign(\"https://www.sermonmaker.net/activate\");\r\n return null;\r\n }\r\n else if (component) {\r\n return ;\r\n }\r\n else if (rest.render) {\r\n return ;\r\n }\r\n else {\r\n return null;\r\n }\r\n};","export interface ServerError {\r\n\tmessage: string;\r\n\tstatusCode: number;\r\n}\r\n\r\n\r\nexport interface SuccessResult {\r\n\tdata: T;\r\n\tmessage: string;\r\n}\r\n\r\nexport interface ValidationError {\r\n\tvalid: boolean;\r\n\terrors: FieldValidationError[];\r\n}\r\n\r\nexport interface FieldValidationError {\r\n\tfield: string;\r\n\terrors: string[];\r\n}\r\n\r\nexport const ValidationHelper = {\r\n\tisFieldInError: (errors: FieldValidationError[], fieldName: string) => {\r\n\t\treturn errors.map((error) => error.field).indexOf(fieldName) > -1;\r\n\t},\r\n\tgetFieldErrorSummary:(errors: FieldValidationError[], fieldName: string) => {\r\n\t\tvar retVal = \"\";\r\n\t\terrors\r\n\t\t\t.filter((error) => error.field === fieldName)\r\n\t\t\t.forEach((error) => {\r\n\t\t\t\terror.errors.forEach((str) => (retVal += str + \" \"));\r\n\t\t\t});\r\n\t\treturn retVal;\r\n\t},\r\n\thasGenericError: (errors: FieldValidationError[]) => {\r\n\t\treturn errors.map((error) => error.field).indexOf(\"\") > -1;\r\n\t},\r\n\tgetGenericErrorSummary: (errors: FieldValidationError[]) => {\r\n\t\tvar retVal = \"\";\r\n\t\terrors\r\n\t\t\t.filter((error) => error.field === \"\")\r\n\t\t\t.forEach((error) => {\r\n\t\t\t\terror.errors.forEach((str) => (retVal += str + \" \"));\r\n\t\t\t});\r\n\t\treturn retVal;\r\n\t}\r\n}","import { useEffect } from \"react\";\r\nimport { usePageTitle } from \"../utilities/usePageTitle\";\r\n\r\nexport function PageTitle(props: {title: string}) {\r\n const title = props.title;\r\n const [, setPageTitle] = usePageTitle();\r\n\r\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\tuseEffect(() => setPageTitle(title), [title]);\r\n\r\n return null;\r\n}","import { useMemo } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nexport function useQueryParams() {\r\n const { search } = useLocation();\r\n \r\n return useMemo(() => new URLSearchParams(search), [search]);\r\n }","import React from \"react\";\r\nimport { Grid, Paper } from \"@material-ui/core\";\r\nimport { useIsMobile } from \"../../components/Mui3WidthProvider\"\r\n\r\nexport function AuthLayout(props: React.PropsWithChildren<{}>){\r\n\r\n const mobile = useIsMobile();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \"Sermon\r\n \r\n {props.children}\r\n \r\n \r\n \r\n )\r\n}","import React from \"react\";\r\nimport { SvgIcon, SvgIconProps } from \"@material-ui/core\";\r\n\r\n\r\nexport function GlooIcon(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React from \"react\";\r\n\r\nimport { Button, makeStyles } from \"@material-ui/core\";\r\nimport { GlooIcon } from \"./GlooIcon\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n glooButton: {\r\n borderColor: '#41B768',\r\n borderRadius: 16,\r\n borderWidth: 2,\r\n color: '#41B768',\r\n fontFamily: 'poppins',\r\n fontSize: '1.1rem',\r\n minHeight: '50px',\r\n padding: '2px 0px',\r\n textTransform: 'none',\r\n },\r\n glooIcon: {\r\n transform: 'scale(3)',\r\n marginLeft: 28,\r\n marginRight: 24,\r\n },\r\n disabledLink: {\r\n pointerEvents: 'none',\r\n cursor: 'default',\r\n }\r\n}));\r\ninterface Props {\r\n url: string;\r\n disabled?: boolean;\r\n fullWidth?: boolean;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function GlooButton(props: Props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}","export enum MakerSubscriptionStatus {\r\n // The subscription initial payment attempt failed.\r\n Incomplete,\r\n // The subscription initial payment attempt failed and was not corrected within 23 hours.\r\n // Essentially canceled due to no payment.\r\n IncompleteExpired,\r\n // The subscription is in trial.\r\n Trial,\r\n // The subscription is active and user should have full benefits.\r\n // When canceling at end of term, subscription is still considered active.\r\n Active,\r\n // The subscription payment to renew failed. \r\n PastDue,\r\n // The subscription is canceled.\r\n Canceled,\r\n // The subscription is unpaid.\r\n Unpaid\r\n}\r\n\r\nexport default interface MakerSubscription {\r\n id: string;\r\n accountId: string;\r\n status: MakerSubscriptionStatus;\r\n serviceStopDate?: string;\r\n serviceStartDate?: string;\r\n cancellationDate?: string;\r\n currentPlanName: \"Annual\" | \"Annual - Discount\" | \"Monthly\" | \"Standard\" | \"Standard - Discount\";\r\n}\r\n\r\nexport function isActiveMakerSubscription(subscription?:MakerSubscription){\r\n if(!subscription){\r\n return false\r\n };\r\n switch(subscription.status){\r\n case MakerSubscriptionStatus.Active:\r\n case MakerSubscriptionStatus.Trial:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}","import React, { useState, useMemo } from 'react';\r\nimport { Link, Redirect, useHistory } from 'react-router-dom';\r\n\r\nimport { Grid, Snackbar, SnackbarContent, Typography, TextField, Hidden, Button, makeStyles, Box } from '@material-ui/core';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\n\r\nimport { TelemetryService } from '../../../src//services/TelemetryService';\r\nimport { EventTracking, Location as PageLocation } from '../../../src//utilities/Tracking/EventTracking';\r\nimport { ProfitWell } from '../../utilities/Tracking/ProfitWell';\r\nimport { FieldValidationError, ValidationHelper } from '../../services/server/ServerResponses';\r\nimport { PageTitle } from '../../components/PageTitle';\r\nimport { useUser } from '../../utilities/useUser';\r\nimport { routes } from '../../routes';\r\nimport { useQueryParams } from '../../components/useQueryParams';\r\nimport { AuthLayout } from './AuthLayout';\r\nimport { GlooButton } from '../../components/GlooButton';\r\nimport AppConfig, { AppConfigEnvironment } from '../../entities/AppConfig';\r\nimport { MakerSubscriptionStatus } from '../../entities/MakerSubscription';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n title: {\r\n fontSize: \"1.7rem\",\r\n fontWeight: 500\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px',\r\n minHeight: '50px',\r\n },\r\n submitButtonMobile: {\r\n marginTop: '20px',\r\n minHeight: '50px',\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 50px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n messageLink: {\r\n color: \"#00a5e7\"\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(1),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n termsText: {\r\n paddingBottom: 55\r\n },\r\n}));\r\n\r\ninterface Props {\r\n config: AppConfig;\r\n}\r\n\r\nexport function SignIn(props: Props){\r\n const query = useQueryParams();\r\n const history = useHistory()\r\n \r\n const classes = useStyles();\r\n const userContext = useUser();\r\n const user = userContext.onlineUser;\r\n\r\n const [disabled, setDisabled] = useState(false);\r\n const [email, setEmail] = useState(\"\");\r\n const [password, setPassword] = useState('');\r\n const [errors, setErrors] = useState([]);\r\n\tconst redirectUrl = useMemo(() => query.get(\"redirect\") ?? routes.app.libraryHomePage, [query]);\r\n\r\n const glooRedirectUrl = props.config.makerSiteUrl + routes.public.signInPage + '?redirect=' + redirectUrl;\r\n const glooUrl = props.config.mainSiteUrl + '/account/gloo/login?redirectUri=' + encodeURIComponent(glooRedirectUrl);\r\n\r\n const handleFormSubmit = async(e: React.FormEvent) => {\r\n e.preventDefault();\r\n \r\n if (disabled)\r\n return;\r\n\r\n if(email.trim().length === 0)\r\n return setErrors([{field: \"Email\", errors: [\"Invalid Email Address\"]}]);\r\n\r\n setDisabled(true);\r\n const response = await AuthenticationService.signIn(email, password, false);\r\n setDisabled(false);\r\n\r\n if(response.error) return setErrors([{ field: \"\", errors: ['An unknown error occurred. Please try again.'] }]);\r\n if(response.validation) return setErrors(response.errors);\r\n\r\n ProfitWell.onUserAuthenticated(response.data.email);\r\n TelemetryService.updateContactField(\"sc_cloud_subscription\", response.data.makerSubscription?.status === MakerSubscriptionStatus.Active ? \"Paid\" : \"Free\");\r\n TelemetryService.recordUserActivity();\r\n EventTracking.Authentication.onLogin(PageLocation.Library);\r\n \r\n userContext.updateUser(response.data);\r\n\r\n }\r\n\r\n if (user)\r\n return ;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n Sign in\r\n \r\n
handleFormSubmit(e)}>\r\n setEmail(e.target.value)}\r\n helperText={}\r\n />\r\n setPassword(e.target.value)}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n *Sign in to your Sermon Maker account using your SermonCentral.com account details.\r\n Or, create a new account to get started today.\r\n \r\n
\r\n );\r\n}","import React, { useState } from 'react';\r\nimport { Link, Redirect, useHistory } from 'react-router-dom';\r\n\r\nimport { Grid, Snackbar, SnackbarContent, Typography, TextField, Hidden, Button, makeStyles } from '@material-ui/core';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\n\r\nimport { FieldValidationError, ValidationHelper } from '../../services/server/ServerResponses';\r\nimport { PageTitle } from '../../components/PageTitle';\r\nimport { useUser } from '../../utilities/useUser';\r\nimport { routes } from '../../routes';\r\nimport { AuthLayout } from './AuthLayout';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n title: {\r\n fontSize: \"1.7rem\",\r\n fontWeight: 500\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px'\r\n },\r\n submitButtonMobile: {\r\n margin: '20px 0px 70px 0px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(1),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n termsText: {\r\n paddingBottom: 55\r\n },\r\n messageLink: {\r\n color: \"#00a5e7\"\r\n }\r\n}));\r\n\r\nexport function ForgotPassword(){\r\n const [disabled, setDisabled] = useState(false);\r\n const [email, setEmail] = useState('');\r\n const [errors, setErrors] = useState([])\r\n const history = useHistory();\r\n const classes = useStyles();\r\n const userContext = useUser();\r\n const user = userContext.onlineUser;\r\n\r\n const handleFormSubmit = async(e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if(disabled)\r\n return;\r\n\r\n if(email.trim().length === 0)\r\n return setErrors([{ field:\"Email\", errors: [\"Invalid Email Address\"] }]);\r\n\r\n setDisabled(true)\r\n const response = await AuthenticationService.sendResetPasswordEmail(email);\r\n setDisabled(false)\r\n\r\n if (response.error) return setErrors([{ field: \"\", errors: [response.message] }])\r\n if (response.validation) return setErrors(response.errors)\r\n\r\n return history.push(routes.public.forgotPasswordSuccessPage);\r\n\r\n }\r\n\r\n if(user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n Forgot Password\r\n \r\n
handleFormSubmit(e)}>\r\n setEmail(e.target.value)}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n *Sermon Maker is part of SermonCentral.com. Use your SermonCentral.com account details\r\n to sign in or create a new account to get started.\r\n \r\n \r\n
\r\n );\r\n}","import React from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\n\r\nimport { makeStyles, Grid, Typography, Hidden, Button } from '@material-ui/core';\r\nimport { PageTitle } from '../../components/PageTitle';\r\nimport { useUser } from '../../utilities/useUser';\r\nimport { routes } from '../../routes';\r\nimport { AuthLayout } from './AuthLayout';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px',\r\n marginTop: '50px',\r\n marginBottom: '50px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n}));\r\n\r\nexport function ForgotPasswordSuccess(){\r\n const userContext = useUser();\r\n const user = userContext.onlineUser;\r\n const classes = useStyles();\r\n\r\n if (user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Reset Password Link Sent\r\n Check your email for a link to reset your password.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React, { useMemo, useState } from 'react';\r\nimport { Redirect, useParams } from 'react-router-dom';\r\n\r\nimport { Snackbar, SnackbarContent, TextField, Hidden, Button, makeStyles, Grid, Typography } from '@material-ui/core';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport { FieldValidationError, ValidationHelper } from '../../services/server/ServerResponses';\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\nimport { PageTitle } from '../../components/PageTitle';\r\nimport { useUser } from '../../utilities/useUser';\r\nimport { useQueryParams } from '../../components/useQueryParams';\r\nimport { routes } from '../../routes';\r\nimport { AuthLayout } from './AuthLayout';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px',\r\n marginBottom: '30px'\r\n },\r\n submitButtonMobile: {\r\n margin: '20px 0px 70px 0px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n textLink: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(1),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n }\r\n}));\r\n\r\nexport function ResetPassword(){\r\n const classes = useStyles();\r\n const userContext = useUser();\r\n const user = userContext.onlineUser;\r\n const params = useParams<{ email: string, code: string }>()\r\n const query = useQueryParams();\r\n\r\n const code = useMemo(() => params.code, [params]);\r\n const redirectUrl = useMemo(() => query.get(\"redirect\") ?? routes.app.libraryHomePage, [query]);\r\n \r\n const [disabled, setDisabled] = useState(false);\r\n const [email, setEmail] = useState(\"\");\r\n const [password, setPassword] = useState('');\r\n const [confirmPassword, setConfirmPassword] = useState('');\r\n const [errors, setErrors] = useState([]);\r\n \r\n const handleFormSubmit = async(e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (disabled)\r\n return;\r\n\r\n if(email.trim().length === 0)\r\n return setErrors([{field: \"Email\", errors: [\"Invalid Email Address\"]}]);\r\n\r\n if(password !== confirmPassword)\r\n return setErrors([{field: \"ConfirmPassword\", errors: [\"Please make sure your passwords match\"]}]);\r\n\r\n setDisabled(true);\r\n const response = await AuthenticationService.resetPassword(email, password, confirmPassword, code);\r\n setDisabled(false);\r\n\r\n if(response.error) return setErrors([{ field: \"\", errors: ['An unknown error occurred. Please try again.'] }]);\r\n if(response.validation) return setErrors(response.errors);\r\n \r\n return userContext.updateUser(response.data);\r\n }\r\n\r\n if (user)\r\n return ;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n Reset Password\r\n \r\n
handleFormSubmit(e)}>\r\n setEmail(e.target.value)}\r\n helperText={}\r\n />\r\n setPassword(e.target.value)}\r\n helperText={}\r\n />\r\n setConfirmPassword(e.target.value)}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport SentimentVeryDissatisfiedIcon from '@material-ui/icons/SentimentVeryDissatisfied';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { useOfflineAssets } from '../offline/useOfflineAssets';\r\nimport { Grid, Typography, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n container: {\r\n margin: '5% auto'\r\n },\r\n refresh: {\r\n textDecoration: 'underline',\r\n color: 'blue',\r\n cursor: 'pointer'\r\n }\r\n}));\r\n\r\ninterface Props {\r\n errorMessage?: string;\r\n\r\n}\r\n\r\nexport function ServerFailed(props:Props) {\r\n const { errorMessage, } = props;\r\n const { onlineMode } = useOfflineAssets();\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n
\r\n {errorMessage ? \r\n <>\r\n {errorMessage} Please try onlineMode ? window.location.reload() : }>refreshing the page. If the problem continues, contact our customer support team by email or call 866-899-4426. \r\n : \r\n We're sorry, but we're having trouble processing your request. Please click onlineMode ? window.location.reload() : }>here to try again. If you continue to experience difficulties contact our customer service team by email or call 866-899-4426.\r\n }\r\n
\r\n
\r\n
\r\n \r\n );\r\n}","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Typography, Grid } from '@material-ui/core';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport { useOfflineAssets } from '../offline/useOfflineAssets';\r\n\r\ninterface Props {\r\n errorMessage?: string;\r\n refreshPage?: boolean;\r\n}\r\n\r\nexport function PageNotFound(props:Props) {\r\n const { errorMessage, refreshPage } = props;\r\n const { onlineMode } = useOfflineAssets();\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n
\r\n {errorMessage ? errorMessage : \"We're sorry, but we couldn't find the page you've requested.\"}\r\n
\r\n { refreshPage\r\n ? Refresh\r\n : Return to my library\r\n }\r\n
\r\n
\r\n
\r\n \r\n );\r\n}","import { BuilderPreferences } from \"../../src/entities/BuilderPreferences\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport const BuilderPreferenceService = {\r\n\tgetPreferences: () => WebClient.Get(`api/BuilderPreferences/GetBuilderPreferences`),\r\n\tsavePreferences: (preferences: BuilderPreferences) => WebClient.Post.Validated(`api/BuilderPreferences/SaveBuilderPreferences`, preferences)\r\n}\r\n","export enum LinkAssetType {\r\n General = \"general\",\r\n YouTube = \"youtube\",\r\n Vimeo = \"vimeo\",\r\n SoundCloud = \"soundcloud\"\r\n}","import { Modify } from \"../utilities/modifyType\";\r\nimport Asset from \"./Asset\";\r\nimport { toAssetCategory } from \"./AssetCategory\";\r\nimport { AssetDataType } from \"./AssetType\";\r\nimport { LibraryItem } from \"./LibraryItem\";\r\nimport { LibraryItemType } from \"./LibraryItemType\";\r\nimport { LinkAssetType } from \"./LinkAssetType\";\r\n\r\nexport interface LinkAsset extends Asset {\r\n // Link url\r\n url: string;\r\n assetType: AssetDataType;\r\n}\r\n\r\nexport type SerializedLinkAsset = Modify;\r\n\r\nexport const deserializeLinkAsset = (linkAsset:SerializedLinkAsset): LinkAsset => {\r\n return {\r\n ...linkAsset,\r\n category: toAssetCategory(linkAsset.category),\r\n dateAccessed: new Date(linkAsset.dateAccessed),\r\n dateCreated: new Date(linkAsset.dateCreated),\r\n dateModified: new Date(linkAsset.dateModified),\r\n datePreached: linkAsset.datePreached ? new Date(linkAsset.datePreached) : undefined,\r\n assetType: AssetDataType.Link\r\n } \r\n}\r\n\r\nexport function convertLinkAssetToLibraryItem(linkAsset: LinkAsset): LibraryItem {\r\n return {\r\n ...linkAsset,\r\n category: linkAsset.category,\r\n customSlideBackgroundImagePath: undefined,\r\n type: LibraryItemType.LinkAsset,\r\n isShared: false,\r\n isTemplate: false,\r\n templateDescription: \"\",\r\n slideExporterAspectRatio: \"16x9\",\r\n linkUrl: linkAsset.url,\r\n linkType: getLinkAssetType(linkAsset.url)\r\n }\r\n}\r\n\r\nexport function getLinkAssetType(linkUrl?: string) {\r\n if (!linkUrl) {\r\n return undefined;\r\n }\r\n if (linkUrl.indexOf(\"youtube://\") === 0) {\r\n return LinkAssetType.YouTube;\r\n }\r\n if (linkUrl.indexOf(\"vimeo://\") === 0) {\r\n return LinkAssetType.Vimeo;\r\n }\r\n if (linkUrl.indexOf(\"soundcloud://\") === 0) {\r\n return LinkAssetType.SoundCloud;\r\n }\r\n return LinkAssetType.General;\r\n}","import { LibraryItemType } from \"./LibraryItemType\";\r\nimport { LinkAssetType } from \"./LinkAssetType\";\r\nimport { AssetCategory, toAssetCategory } from \"./AssetCategory\";\r\nimport { AspectRatios } from \"./AspectRatios\";\r\nimport { Modify } from \"../utilities/modifyType\";\r\nimport { getLinkAssetType } from \"./LinkAsset\";\r\n\r\nexport interface LibraryItem {\r\n id: string;\r\n parentId?: string;\r\n type: LibraryItemType;\r\n name: string;\r\n linkUrl?: string;\r\n linkType?: LinkAssetType;\r\n isStarred: boolean;\r\n dateCreated: Date;\r\n dateModified: Date;\r\n dateAccessed: Date;\r\n datePreached?: Date;\r\n shareId?: string;\r\n isShared: boolean;\r\n isTemplate: boolean;\r\n templateDescription: string;\r\n scripture?: string;\r\n category?: AssetCategory;\r\n templateText?: string;\r\n slideExporterAspectRatio: AspectRatios;\r\n customSlideBackgroundImagePath?: string;\r\n shareViews?: number;\r\n shareUrl?: string;\r\n offlineMode?: boolean;\r\n locationPreached?: string\r\n}\r\n\r\nexport type SerializedLibraryItem = Modify\r\n\r\nexport const deserializeLibraryItem = (libraryItem: SerializedLibraryItem): LibraryItem => {\r\n\treturn {\r\n\t\t...libraryItem,\r\n\t\tlinkType: getLinkAssetType(libraryItem.linkUrl),\r\n\t\tlocationPreached: libraryItem.locationPreached,\r\n\t\tdatePreached: libraryItem.datePreached ? new Date(libraryItem.datePreached) : undefined,\r\n\t\tdateAccessed: new Date(libraryItem.dateAccessed),\r\n\t\tdateCreated: new Date(libraryItem.dateCreated),\r\n\t\tdateModified: new Date(libraryItem.dateModified),\r\n\t\tcategory: libraryItem.category ? toAssetCategory(libraryItem.category) : undefined,\r\n\t};\r\n};\r\n","import { Modify } from \"../utilities/modifyType\";\r\nimport { AssetCategory, toAssetCategory } from \"./AssetCategory\";\r\n\r\nexport interface ShareItem {\r\n id: number,\r\n name: string,\r\n category: AssetCategory;\r\n enabled: boolean;\r\n commentsEnabled: boolean;\r\n videoPath?: string;\r\n assetShareType: AssetShareType;\r\n views: number;\r\n slug: string;\r\n}\r\n\r\nexport enum AssetShareType {\r\n YouTube = 0,\r\n Vimeo,\r\n Facebook,\r\n None, \r\n}\r\n\r\nexport type serializedShareItem = Modify\r\n\r\nexport const deserializeShareItem = (shareItem:serializedShareItem): ShareItem => {\r\n return {\r\n ...shareItem,\r\n category: toAssetCategory(shareItem.category),\r\n }\r\n}","import { deserializeBuilderAsset, SerializedBuilderAsset } from \"../entities/BuilderAsset\";\r\nimport { deserializeLibraryItem } from \"../entities/LibraryItem\";\r\nimport { deserializeShareItem, ShareItem } from \"../entities/ShareItem\"\r\nimport { BuilderPreferences } from \"../entities/BuilderPreferences\";\r\nimport UserSharePreference from \"../entities/UserSharePreference\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface SaveShareRequest {\r\n commentsEnabled: boolean;\r\n enabled: boolean;\r\n assetShareId: number;\r\n assetShareVideoTypeId?: number;\r\n videoPath?: string;\r\n}\r\n\r\nexport const ShareService = {\r\n getSharedAsset: (shareId: string) => WebClient.Get(`api/Share/SharedAsset?shareId=${shareId}`, deserializeBuilderAsset),\r\n getSharedSlide: (shareId: string) => WebClient.Get<{builderAsset: SerializedBuilderAsset, builderPreferences: BuilderPreferences}>(`api/Share/SharedSlide?shareId=${shareId}`),\r\n getCustomSlideBackgroundImageUrl: (shareId: string) => WebClient.Get<{url: string}>(`api/Share/SlideBackground/${shareId}`),\r\n share: (libraryAssetId: string) => WebClient.Put.Unvalidated(`api/Share/Share`, { libraryAssetId }, deserializeLibraryItem),\r\n unshare: (libraryAssetId: string) => WebClient.Put.Unvalidated(`api/Share/UnShare`, { libraryAssetId }, deserializeLibraryItem),\r\n createUserShareItem: (id: string) => WebClient.Post.Unvalidated(\"api/Share/CreateUserSharedAsset/\", {builderAssetId: id}, deserializeShareItem),\r\n getUserShareItem: (id: string) => WebClient.Get(`api/Share/GetUserSharedAsset/${id}`, (item) => item ? deserializeShareItem(item) : null),\r\n getUserSharePreference: () => WebClient.Get(`api/Share/GetUserSharedPreference/`),\r\n saveUserSharePreferences: (subdomain: string) => WebClient.Post.Validated(`api/Share/SaveUserSharePreferences/`, {subdomain}),\r\n saveAssetShare: (request:SaveShareRequest) => WebClient.Post.Unvalidated(`api/Share/SaveAssetShare/`, request, deserializeShareItem),\r\n}","import { Modify } from \"../utilities/modifyType\";\r\n\r\nexport interface WritingLog {\r\n id: string;\r\n logDate: Date;\r\n logTimeInSeconds: number;\r\n}\r\n\r\nexport type SerializedWritingLog = Modify<\r\n\tWritingLog,\r\n\t{\r\n\t\tlogDate: string;\r\n\t}\r\n>;\r\n\r\nexport const deserializeWritingLog = (model: SerializedWritingLog): WritingLog => {\r\n\treturn {\r\n\t\t...model,\r\n\t\tlogDate: new Date(model.logDate),\r\n\t};\r\n};","import { Modify } from \"../utilities/modifyType\";\r\nimport {deserializeWritingLog, SerializedWritingLog, WritingLog} from \"./WritingLog\";\r\n\r\nexport interface AssetWritingLogs {\r\n id: string;\r\n totalTime: number;\r\n writingLogs: WritingLog[]\r\n}\r\n\r\nexport type SerializedAssetWritingLogs = Modify<\r\n\tAssetWritingLogs,\r\n\t{\r\n\t\twritingLogs: SerializedWritingLog[];\r\n\t}\r\n>;\r\n\r\nexport const deserializeAssetWritingLogs = (model: SerializedAssetWritingLogs): AssetWritingLogs => {\r\n\treturn {\r\n\t\t...model,\r\n\t\twritingLogs: model.writingLogs.map(deserializeWritingLog),\r\n\t};\r\n};","import { deserializeAssetWritingLogs } from \"../entities/AssetWritingLogs\";\r\nimport { deserializeWritingLog } from \"../entities/WritingLog\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface WritingLogRequest {\r\n\tid?: string;\r\n\tassetId: string;\r\n\tdateCreated: Date;\r\n\twritingTimeInSeconds: number;\r\n}\r\n\r\nexport const AssetWritingLogService = {\r\n\tgetAssetWritingLogs: (assetId: string) => WebClient.Get(`api/AssetWritingLog/GetAssetWritingLog/${assetId}`, deserializeAssetWritingLogs),\r\n\r\n\tcreateAssetWritingLog: (request: WritingLogRequest) =>\r\n\t\tWebClient.Post.Validated(\"api/AssetWritingLog/CreateAssetWritingLog\", request, deserializeWritingLog),\r\n\r\n\tupdateAssetWritingLog: (request: WritingLogRequest) =>\r\n\t\tWebClient.Put.Validated(\"api/AssetWritingLog/UpdateAssetWritingLog\", request, deserializeWritingLog),\r\n\r\n\tdeleteAssetWritingLog: (writingLogId: string) => WebClient.Delete(`api/AssetWritingLog/DeleteAssetWritingLog/${writingLogId}`),\r\n};\r\n","import axios, { CancelTokenSource } from \"axios\";\r\n\r\nexport interface SearchResult {\r\n\tresults: T[];\r\n\ttotalCount: number;\r\n\tisValidScriptureSearch: boolean;\r\n\tisChapter: boolean;\r\n}\r\n\r\nexport interface SermonSearchItem {\r\n\tid: string;\r\n\ttitle: string;\r\n\tcontributor: string;\r\n\tdescription: string;\r\n\trating: number;\r\n}\r\n\r\nexport interface IllustrationSearchItem {\r\n\tid: string;\r\n\ttitle: string;\r\n\tcontributor: string;\r\n\tdescription: string;\r\n\trating: number;\r\n}\r\n\r\nexport interface BibleVerseSearchItem {\r\n\ttitle: string;\r\n\tscriptureReference: string;\r\n\tdescription: string;\r\n}\r\n\r\nexport interface SermonContentItem {\r\n\tid: number;\r\n\ttitle: string;\r\n\tsummary: string;\r\n\tauthorFirstName: string;\r\n\tauthorLastName: string;\r\n\tbody: string;\r\n}\r\n\r\nexport interface IllustrationContentItem {\r\n\tid: string;\r\n\ttitle: string;\r\n\tauthorFirstName: string;\r\n\tauthorLastName: string;\r\n\tbody: string;\r\n}\r\n\r\nexport interface BibleChapterContentItem {\r\n\tbookName: string;\r\n\tchapterNumber: number;\r\n\ttranslationName: string;\r\n\ttranslationId: string;\r\n\tverses: BibleVerseContentItem[];\r\n}\r\n\r\nexport interface BibleVerseContentItem {\r\n\tverseNumberStart: number;\r\n\tverseNumberEnd: number;\r\n\tverseContent: string;\r\n\tstartsParagraph: boolean;\r\n}\r\n\r\nexport class SearchServiceHelper {\r\n\tstatic removeTranslationNotes(verse: string) {\r\n\t\tconst translationNoteRegexSurroundingBrackets = /\\[T.N.[^\\]]*\\]/g;\r\n\t\tconst translationNoteRegexSurroundingParenths = /\\(T.N.[^)]*\\)/g;\r\n\t\tconst translationNoteRegex = /, T.N.[^)]*\\)/g;\r\n\t\tconst translationNoteRegexLeadingSemicolonEndingBracket = /; T.N.[^\\]]*\\]/g;\r\n\t\tconst translationNoteRegexNoComma = /T.N.[^)]*\\)/g;\r\n\t\tconst translationNoteRegexEndingBracket = /T.N.[^\\]]*\\]/g;\r\n\t\tconst translationNoteRegexEmptyNote = /T.N./g;\r\n\t\tconst footnoteRegex = /.*<\\/footnote>/g;\r\n\r\n\t\tif (verse.match(translationNoteRegexSurroundingBrackets)) {\r\n\t\t\tverse = verse.replace(translationNoteRegexSurroundingBrackets, \"\");\r\n\t\t}\r\n\t\tif (verse.match(translationNoteRegexSurroundingParenths)) {\r\n\t\t\tverse = verse.replace(translationNoteRegexSurroundingParenths, \"\");\r\n\t\t}\r\n\t\tif (verse.match(translationNoteRegex)) {\r\n\t\t\tverse = verse.replace(translationNoteRegex, \")\");\r\n\t\t}\r\n\t\tif (verse.match(translationNoteRegexLeadingSemicolonEndingBracket)) {\r\n\t\t\tverse = verse.replace(translationNoteRegexLeadingSemicolonEndingBracket, \"]\");\r\n\t\t}\r\n\t\tif (verse.match(translationNoteRegexNoComma)) {\r\n\t\t\tverse = verse.replace(translationNoteRegexNoComma, \")\");\r\n\t\t}\r\n\t\tif (verse.match(translationNoteRegexEndingBracket)) {\r\n\t\t\tverse = verse.replace(translationNoteRegexEndingBracket, \"]\");\r\n\t\t}\r\n\t\tif (verse.match(translationNoteRegexEmptyNote)) {\r\n\t\t\tverse = verse.replace(translationNoteRegexEmptyNote, \"\");\r\n\t\t}\r\n\t\tif (verse.match(footnoteRegex)) {\r\n\t\t\tverse = this.removeFootNotes(verse);\r\n\t\t}\r\n\t\treturn verse;\r\n\t}\r\n\r\n\tstatic removeVerseNumbers(verse: string) {\r\n\t\tconst verseNumberRegex = /\\(\\d*\\)/g;\r\n\t\tconst verseNumberTagRegex = /\\d*<\\/sup> /g;\r\n\t\tif (verseNumberRegex.test(verse)) {\r\n\t\t\tverse = verse.replace(verseNumberRegex, \"\");\r\n\t\t}\r\n\t\tif (verseNumberTagRegex.test(verse)) {\r\n\t\t\tverse = verse.replace(verseNumberTagRegex, \"\");\r\n\t\t}\r\n\t\treturn verse;\r\n\t}\r\n\r\n\tstatic removeFootNotes(verse:string){\r\n\t\tlet retVal = \"\";\r\n\t\tlet start = 0\r\n\r\n\t\twhile(start < verse.length){\r\n\t\t\tlet open = verse.indexOf(\"\", start);\r\n\t\t\tlet close = verse.indexOf(\"\", open);\r\n\r\n\t\t\tif(close === -1 || open === -1){\r\n\t\t\t\tretVal += verse.slice(start);\r\n\t\t\t\tstart = verse.length;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(start === -1){\r\n\t\t\t\tstart = verse.length;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tretVal += `${verse.slice(start, open)} `;\r\n\t\t\tstart = close;\t\r\n\t\t}\r\n\t\treturn retVal;\r\n\t}\r\n\r\n\tstatic replace(regEx: RegExp, replacementData: string, data: string) {\r\n\t\treturn data.replace(new RegExp(regEx, \"g\"), replacementData);\r\n\t}\r\n}\r\n\r\nexport class SearchService {\r\n\tstatic async findSermons(\r\n\t\tqueryText: string,\r\n\t\tpreferredLanguageId: string = \"english\",\r\n\t\tskip: number = 0,\r\n\t\ttake: number = 10,\r\n\t\tcancellationToken: CancelTokenSource\r\n\t): Promise> {\r\n\t\tlet url = \"/api/Search/FindSermons\";\r\n\t\turl += `?q=${queryText}`;\r\n\t\turl += `&skip=${skip}`;\r\n\t\turl += `&take=${take}`;\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await axios.get(url, { cancelToken: cancellationToken.token});\r\n\r\n\t\t\tconst searchResponse: SearchResult = result.data.data;\r\n\r\n\t\t\treturn searchResponse;\r\n\t\t} catch (error) {\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async findIllustrations(\r\n\t\tqueryText: string,\r\n\t\tskip: number = 0,\r\n\t\ttake: number = 10,\r\n\t\tcancellationToken: CancelTokenSource\r\n\t): Promise> {\r\n\t\tlet url = \"/api/Search/FindIllustrations\";\r\n\t\turl += `?q=${queryText}`;\r\n\t\turl += `&skip=${skip}`;\r\n\t\turl += `&take=${take}`;\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await axios.get(url, { cancelToken: cancellationToken.token});\r\n\r\n\t\t\tconst searchResponse: SearchResult = result.data.data;\r\n\r\n\t\t\treturn searchResponse;\r\n\t\t} catch (error) {\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async findBibleVerses(\r\n\t\tqueryText: string,\r\n\t\ttranslationId: string = \"NIV\",\r\n\t\tskip: number = 0,\r\n\t\ttake: number = 10,\r\n\t\tcancellationToken: CancelTokenSource\r\n\t): Promise> {\r\n\t\tlet url = \"/api/Search/FindBibleVerses\";\r\n\t\turl += `?q=${queryText}`;\r\n\t\turl += `&skip=${skip}`;\r\n\t\turl += `&take=${take}`;\r\n\t\turl += `&translationId=${translationId}`;\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await axios.get(url, { cancelToken: cancellationToken.token});\r\n\r\n\t\t\tconst searchResponse: SearchResult = result.data.data;\r\n\r\n\t\t\treturn searchResponse;\r\n\t\t} catch (error) {\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async getSermon(id: string): Promise {\r\n\t\tlet url = `/api/Search/GetSermon/${id}`;\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await axios.get(url);\r\n\t\t\tconst response: SermonContentItem = result.data.data;\r\n\t\t\treturn response;\r\n\t\t} catch (error) {\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async getIllustration(id: string): Promise {\r\n\t\tlet url = `/api/Search/GetIllustration/${id}`;\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await axios.get(url);\r\n\t\t\tconst response: IllustrationContentItem = result.data.data;\r\n\t\t\treturn response;\r\n\t\t} catch (error) {\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async getBibleChapter(scriptureReference: string, translationId: string): Promise {\r\n\t\tlet url = \"/api/Search/GetBibleChapter\";\r\n\t\turl += `?scriptureReference=${scriptureReference}`;\r\n\t\turl += `&translationId=${translationId}`;\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await axios.get(url);\r\n\t\t\tlet response: BibleChapterContentItem = result.data.data;\r\n\r\n\t\t\treturn response;\r\n\t\t} catch (error) {\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n}\r\n","export interface BibleTranslation {\r\n id: string;\r\n name: string;\r\n copyrightHtml: string;\r\n}\r\n\r\nexport const SupportedTranslations: BibleTranslation[] = [\r\n {\r\n id: \"AMP\",\r\n name: \"Amplified© Bible\",\r\n copyrightHtml: `\r\n Copyright © 2015 by The Lockman Foundation, La Habra, CA 90631. All rights reserved. For Permission To Quote information visit http://www.lockman.org/\r\n
\r\n The \"Amplified\" trademark is registered in the United States Patent and Trademark Office by The Lockman Foundation. Use of this trademark requires the permission of The Lockman Foundation.`\r\n },\r\n {\r\n id: \"ASV\",\r\n name: \"American Standard Version\",\r\n copyrightHtml: `The American Standard Version of the Holy Bible, first published in 1901. Public Domain.`\r\n },\r\n {\r\n id: \"DBY\",\r\n name: \"Darby Translation\",\r\n copyrightHtml: `The Holy Scriptures, a New Translation from the Original Languages by J. N. Darby. Public Domain.`\r\n },\r\n {\r\n id: \"ERV\",\r\n name: \"English Revised Version\",\r\n copyrightHtml: `The Revised Version of the Holy Bible (1895) with Apocrypha. Public Domain.`\r\n },\r\n {\r\n id: \"ESV\",\r\n name: \"English Standard Version\",\r\n copyrightHtml: `The Holy Bible, English Standard Version. ESV® Text Edition: 2016. Copyright © 2001 by Crossway Bibles, a publishing ministry of Good News Publishers.`\r\n },\r\n {\r\n id: \"KJV\",\r\n name: \"King James Version\",\r\n copyrightHtml: `The King James Version or Authorized Version of the Holy Bible, using the standardized text of 1769, with Apocrypha/Deuterocanon. Public Domain.`\r\n },\r\n {\r\n id: \"LBLA\",\r\n name: \"La Biblia de Las Américas\",\r\n copyrightHtml: `LA BIBLIA DE LAS AMERICAS®, Copyright © 1986, 1995, 1997 by The Lockman Foundation. Used by permission.`\r\n },\r\n {\r\n id: \"MSG\",\r\n name: \"The Message\",\r\n copyrightHtml: `Copyright © 1993, 1994, 1995, 1996, 2000, 2001, 2002. Used by permission of NavPress Publishing Group.`\r\n },\r\n {\r\n id: \"NASB\",\r\n name: \"New American Standard Bible\",\r\n copyrightHtml: `NEW AMERICAN STANDARD BIBLE®, Copyright © 1960, 1962, 1963, 1968, 1971, 1972, 1973, 1975, 1977, 1995 by The Lockman Foundation. Used by permission.`\r\n },\r\n {\r\n id: \"NBL\",\r\n name: \"Nueva Biblia Latinoamericana\",\r\n copyrightHtml: `\r\n
\r\n LA BIBLIA DE LAS AMERICAS®, Copyright © 1986, 1995, 1997 by The Lockman Foundation. Used by permission.\r\n
`\r\n },\r\n {\r\n id: \"NIRV\",\r\n name: \"New International Reader's Version\",\r\n copyrightHtml: `\r\n
\r\n THE HOLY BIBLE, NEW INTERNATIONAL READER'S VERSION®, NIrV® Copyright © 1995, 1996, 1998, 2014 by Biblica, Inc.® Used by permission. All rights reserved worldwide.\r\n
`\r\n },\r\n {\r\n id: \"NIV\",\r\n name: \"New International Version\",\r\n copyrightHtml: `\r\n
\r\n THE HOLY BIBLE, NEW INTERNATIONAL VERSION®, NIV® Copyright © 1973, 1978, 1984, 2011 by Biblica, Inc.® Used by permission. All rights reserved worldwide.\r\n
`\r\n },\r\n {\r\n id: \"NLT\",\r\n name: \"New Living Translation\",\r\n copyrightHtml: `Holy Bible, New Living Translation, copyright © 1996, 2004, 2015 by Tyndale House Foundation. Used by permission of Tyndale House Publishers, Inc., Carol Stream, Illinois 60188. All rights reserved.`\r\n },\r\n {\r\n id: \"OJB\",\r\n name: \"Orthodox Jewish Bible\",\r\n copyrightHtml: `The Orthodox Jewish Bible fourth edition, OJB. Copyright 2002, 2003, 2008, 2010, 2011 by Artists for Israel International. All rights reserved.`\r\n },\r\n {\r\n id: \"WEB\",\r\n name: \"World English Bible\",\r\n copyrightHtml: `The World English Bible is in the Public Domain. That means that it is not copyrighted. However, \"World English Bible\" is a Trademark of eBible.org.`\r\n },\r\n {\r\n id: \"YLT\",\r\n name: \"Young's Literal Translation\",\r\n copyrightHtml: `Young's Literal Translation of the Holy Bible by Robert Young. Published in 1862. Public Domain.`\r\n },\r\n \r\n];","import React from \"react\";\r\n\r\n\r\nimport ArrowForwardIos from \"@material-ui/icons/ArrowForwardIos\";\r\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\r\n\r\nimport {\r\n\tSermonContentItem,\r\n\tSearchService,\r\n\tSearchServiceHelper,\r\n\tIllustrationContentItem,\r\n\tBibleChapterContentItem,\r\n\tBibleVerseContentItem,\r\n} from \"../../../../src/services/SearchService\";\r\nimport { SupportedTranslations } from \"../../../../src/entities/BibleTranslation\";\r\nimport { BuilderPreferences } from \"../../../../src/entities/BuilderPreferences\";\r\nimport { EventTracking, SearchEntity } from \"../../../../src/utilities/Tracking/EventTracking\";\r\nimport ClipboardJS from \"clipboard\";\r\nimport classNames from \"classnames\";\r\nimport { Typography, Divider, CircularProgress, Drawer, ListSubheader, IconButton, Tooltip, makeStyles } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme) =>({\r\n\troot: {},\r\n\tdrawer: {\r\n\t\twidth: \"350px\",\r\n\t\ttextAlign: \"left\",\r\n\t\tflexShrink: 0,\r\n\t\tzIndex: theme.zIndex.drawer + 101,\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\twidth: \"90%\",\r\n\t\t},\r\n\t},\r\n\ttitle: {\r\n\t\tbackground: \"#666\",\r\n\t\tcolor: \"#FFF\",\r\n\t\ttextAlign: \"left\",\r\n\t\tfontSize: 18,\r\n\t},\r\n\tcloseIcon: {\r\n\t\tfloat: \"right\",\r\n\t\tpadding: 16,\r\n\t},\r\n\tcopyButton: {\r\n\t\tborderRadius: \"unset\",\r\n\t},\r\n\tloading: {\r\n\t\tmarginTop: theme.spacing(4),\r\n\t\tmarginBottom: theme.spacing(2),\r\n\t},\r\n\tcontent: {\r\n\t\toverflow: \"auto\",\r\n\t\tpaddingLeft: theme.spacing(3),\r\n\t\tpaddingRight: theme.spacing(3),\r\n\t\tpaddingTop: theme.spacing(2),\r\n\t\tpaddingBottom: theme.spacing(2),\r\n\t},\r\n\tcontentBody: {\r\n\t\tpaddingTop: theme.spacing(1),\r\n\t\tpaddingBottom: theme.spacing(2),\r\n\t},\r\n\tchapterParagraph: {\r\n\t\tpaddingTop: 5,\r\n\t},\r\n\tverseNumber: {\r\n\t\tfontSize: 10,\r\n\t\tverticalAlign: \"top\",\r\n\t\tcolor: \"#676767\",\r\n\t\tmarginRight: 3,\r\n\t},\r\n\tbibleCopyright: {\r\n\t\tmarginTop: 20,\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tonDrawerClose: () => void;\r\n\tonClipboardCopy: (nameOfThingCopied: string) => void;\r\n\tsetBuilderAlert: (message: string) => void;\r\n\tsermonId?: string;\r\n\tillustrationId?: string;\r\n\tscriptureReference?: string;\r\n\tpreferences: BuilderPreferences;\r\n}\r\n\r\ntype PropsWithClasses = Props & { classes: ReturnType };\r\n\r\ninterface State {\r\n\topen: boolean;\r\n\tcontentType: string;\r\n\tcontentText: string;\r\n\tsermon?: SermonContentItem;\r\n\tillustration?: IllustrationContentItem;\r\n\tbibleChapter?: BibleChapterContentItem;\r\n\tcopyContent?: string;\r\n}\r\n\r\nclass ContentDrawerComponent extends React.Component {\r\n\tconstructor(props: PropsWithClasses) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\topen: false,\r\n\t\t\tcontentType: props.sermonId ? \"Sermon\" : props.illustrationId ? \"Illustration\" : \"Bible\",\r\n\t\t\tcontentText: \"\",\r\n\t\t};\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.setState({ open: true });\r\n\t\tthis.getContent();\r\n\t\tlet clipboard = new ClipboardJS(\"#content-copy\");\r\n\t\tclipboard.on(\"success\", () => {\r\n\t\t\tthis.props.onClipboardCopy(this.state.contentType);\r\n\t\t});\r\n\t}\r\n\r\n\tasync getContent() {\r\n\t\tif (this.props.sermonId) {\r\n\t\t\tconst sermon = await SearchService.getSermon(this.props.sermonId);\r\n\t\t\tlet contentText = this.getSermonText(sermon);\r\n\t\t\tthis.setState({ sermon, contentText });\r\n\t\t\tEventTracking.Builder.onDrawerOpen(\"Sermon\");\r\n\t\t} else if (this.props.illustrationId) {\r\n\t\t\tconst illustration = await SearchService.getIllustration(this.props.illustrationId);\r\n\t\t\tlet contentText = this.getIllustrationText(illustration);\r\n\t\t\tthis.setState({ illustration, contentText });\r\n\t\t\tEventTracking.Builder.onDrawerOpen(\"Illustration\");\r\n\t\t} else if (this.props.scriptureReference) {\r\n\t\t\tconst bibleChapter = await SearchService.getBibleChapter(\r\n\t\t\t\tthis.props.scriptureReference,\r\n\t\t\t\tthis.props.preferences.bibleTranslationId ? this.props.preferences.bibleTranslationId : \"NIV\",\r\n\t\t\t);\r\n\t\t\tlet contentText = this.getChapterTextForView(bibleChapter);\r\n\t\t\tlet copyChapterContent = this.getChapterTextForCopy(bibleChapter);\r\n\t\t\tthis.setState({ bibleChapter, contentText, copyContent: copyChapterContent });\r\n\t\t\tEventTracking.Builder.onDrawerOpen(\"Bible\");\r\n\t\t}\r\n\t}\r\n\r\n\tgroupChapterVerses = (bibleChapter: BibleChapterContentItem) => {\r\n\t\tconst versesGroupedByParagraph: [BibleVerseContentItem[]] = [[]];\r\n\t\tbibleChapter.verses.forEach((verse) => {\r\n\t\t\tif (verse.startsParagraph) {\r\n\t\t\t\tversesGroupedByParagraph.push([verse]);\r\n\t\t\t} else {\r\n\t\t\t\tlet lastGroup = versesGroupedByParagraph[versesGroupedByParagraph.length - 1];\r\n\t\t\t\tlastGroup.push(verse);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn versesGroupedByParagraph;\r\n\t};\r\n\r\n\tonCopy = () => {\r\n\t\tif (this.props.sermonId) {\r\n\t\t\tEventTracking.Builder.onCopy(SearchEntity.Sermon, \"Sermon Drawer Interaction\");\r\n\t\t\tthis.copyBibleChapterTextToClipboard(SearchEntity.Sermon);\r\n\t\t} else if (this.props.illustrationId) {\r\n\t\t\tEventTracking.Builder.onCopy(SearchEntity.Illustration, \"Illustration Drawer Interaction\");\r\n\t\t\tthis.copyBibleChapterTextToClipboard(SearchEntity.Illustration);\r\n\t\t} else if (this.props.scriptureReference) {\r\n\t\t\tEventTracking.Builder.onCopy(SearchEntity.Bible, \"Bible Drawer Interaction\");\r\n\t\t\tthis.copyBibleChapterTextToClipboard(SearchEntity.Bible);\r\n\t\t}\r\n\t};\r\n\r\n\tcopyBibleChapterTextToClipboard = (contentType: SearchEntity) => {\r\n\t\tlet { setBuilderAlert, onClipboardCopy } = this.props;\r\n\t\tlet copiedThing,\r\n\t\t\tnameOfThingCopied = undefined;\r\n\r\n\t\tif (contentType === SearchEntity.Bible) {\r\n\t\t\tif (this.state.bibleChapter === undefined) {\r\n\t\t\t\tsetBuilderAlert(\"Error: could not get bible verse for copy.\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tlet { bibleChapter } = this.state;\r\n\t\t\tnameOfThingCopied = `${bibleChapter.bookName} ${bibleChapter.chapterNumber} - ${bibleChapter.translationId}`;\r\n\t\t\tcopiedThing = this.getChapterTextForCopy(bibleChapter);\r\n\t\t} else if (contentType === SearchEntity.Illustration) {\r\n\t\t\tif (this.state.illustration === undefined) {\r\n\t\t\t\tsetBuilderAlert(\"Error: could not get illustration for copy.\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tlet { illustration } = this.state;\r\n\t\t\tnameOfThingCopied = `${illustration.title} by ${illustration.authorFirstName} ${illustration.authorLastName}`;\r\n\t\t\tcopiedThing = this.getIllustrationText(illustration);\r\n\t\t} else if (contentType === SearchEntity.Sermon) {\r\n\t\t\tif (this.state.sermon === undefined) {\r\n\t\t\t\tsetBuilderAlert(\"Error: could not get sermon for copy.\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tlet { sermon } = this.state;\r\n\t\t\tnameOfThingCopied = `${sermon.title} by ${sermon.authorFirstName} ${sermon.authorLastName}`;\r\n\t\t\tcopiedThing = this.getSermonText(sermon);\r\n\t\t} else {\r\n\t\t\tsetBuilderAlert(\"Error: Unsupported copy type. Please contact support if the issue persists.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (copiedThing === undefined || nameOfThingCopied === undefined) {\r\n\t\t\tsetBuilderAlert(\"Error: There was an unknown error when copying.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!navigator.clipboard) {\r\n\t\t\tsetBuilderAlert(\"Error: It appears your web browser does not support copying.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tnavigator.clipboard.writeText(copiedThing);\r\n\t\t\tonClipboardCopy(nameOfThingCopied);\r\n\t\t} catch (err) {\r\n\t\t\tsetBuilderAlert(\"Error: \" + err);\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tgetChapterTextForCopy = (chapter: BibleChapterContentItem) => {\r\n\t\tconst bibleChapter = {...chapter};\r\n\t\tlet versesGroupedByParagraph = this.groupChapterVerses(bibleChapter);\r\n\t\tlet { bibleSearchCopySetting } = this.props.preferences;\r\n\r\n\t\tlet copiedText = versesGroupedByParagraph.reduce((verses, group) => {\r\n\t\t\tgroup.forEach((verse) => {\r\n\t\t\t\tlet verseForCopy = verse.verseContent;\r\n\t\t\t\tif (verse.startsParagraph && verses !== \"\") {\r\n\t\t\t\t\tverses += \"\\n\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (bibleSearchCopySetting !== \"text\") {\r\n\t\t\t\t\tlet verseNumber = verse.verseNumberStart.toString();\r\n\t\t\t\t\tif (verse.verseNumberStart !== verse.verseNumberEnd) {\r\n\t\t\t\t\t\tverseNumber += `-${verse.verseNumberEnd}`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tverses += `(${verseNumber}) `;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (bibleSearchCopySetting === \"all\") {\r\n\t\t\t\t\twhile (verseForCopy.includes(\"\") || verseForCopy.includes(\"\")) {\r\n\t\t\t\t\t\tverseForCopy = verseForCopy.replace(\"\", \" (Note:- \");\r\n\t\t\t\t\t\tif (this.props.preferences.bibleTranslationId === \"DBY\") {\r\n\t\t\t\t\t\t\tverseForCopy = verseForCopy.replace(\"\", \") \");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tverseForCopy = verseForCopy.replace(\"
\", \")\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst footnoteTagRegex = /.*<\\/footnote>/g;\r\n\t\t\t\t\tverseForCopy = verseForCopy.replace(footnoteTagRegex, \"\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tverseForCopy = verseForCopy.replace(/<(?:.|\\n)*?>/gm, \"\");\r\n\t\t\t\tverseForCopy = verseForCopy.replace(/ /g, \"\");\r\n\t\t\t\tverseForCopy = verseForCopy.replace(/—/g, \"-\");\r\n\t\t\t\tverseForCopy = verseForCopy.replace(/–/g, \"-\");\r\n\r\n\t\t\t\tverses += verseForCopy + \" \"; //need to add a space after each verse\r\n\t\t\t});\r\n\t\t\treturn verses;\r\n\t\t}, \"\");\r\n\r\n\t\treturn `${copiedText} \\n${bibleChapter.bookName} ${bibleChapter.chapterNumber} - ${bibleChapter.translationId}`;\r\n\t};\r\n\r\n\tgetSermonText = (sermon: SermonContentItem) => {\r\n\t\treturn sermon.body.replace(/<\\/p>/g, \"\\n\\n\").replace(/<(?:.|\\n)*?>/gm, \"\");\r\n\t};\r\n\r\n\tgetIllustrationText = (illustration: IllustrationContentItem) => {\r\n\t\treturn illustration.body.replace(/<\\/p>/g, \"\\n\").replace(/<(?:.|\\n)*?>/gm, \"\");\r\n\t};\r\n\r\n\tgetChapterTextForView = (chapter: BibleChapterContentItem) => {\r\n\t\tconst bibleChapter = {...chapter};\r\n\t\tlet versesGroupedByParagraph = this.groupChapterVerses(bibleChapter);\r\n\t\tlet verses = \"\";\r\n\t\tversesGroupedByParagraph.forEach((groupedVerses) => {\r\n\t\t\tverses += \"\\n\";\r\n\t\t\tgroupedVerses.forEach((verse) => {\r\n\t\t\t\tconst footnoteStartRegex = //g;\r\n\t\t\t\tconst footnoteEndRegex = /<\\/footnote>/g;\r\n\t\t\t\tconst removeFootnoteRegex = /(?:.|\\n)*?<\\/footnote>/g\r\n\t\t\r\n\t\t\t\tif (verse.verseContent.match(footnoteStartRegex) && verse.verseContent.match(footnoteEndRegex)) {\r\n\t\t\t\t\tif(this.props.preferences.bibleSearchViewSetting === \"all\"){\r\n\t\t\t\t\t\tverse.verseContent = verse.verseContent.replace(footnoteStartRegex, \" (Note- \");\r\n\t\t\t\t\t\tverse.verseContent = verse.verseContent.replace(footnoteEndRegex, \")\");\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tverse.verseContent = verse.verseContent.replace(removeFootnoteRegex, \"\")\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tverse.verseContent.replace(\"\", '').replace(\"\", \"\");\r\n\t\t\t\tverses += `\\n${verse.verseNumberStart}${verse.verseNumberStart !== verse.verseNumberEnd ? `-${verse.verseNumberEnd}` : \"\"} ${verse.verseContent}`;\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet chapterCitation = `\\n${chapter.bookName} ${chapter.chapterNumber} - ${this.props.preferences.bibleTranslationId}`;\r\n\t\tlet versesNoHtml = verses.replace(/<(?:.|\\n)*?>/gm, \"\");\r\n\t\treturn versesNoHtml + chapterCitation;\r\n\t};\r\n\r\n\tonClose = () => {\r\n\t\tthis.setState({ open: false }, () => {\r\n\t\t\tsetTimeout(this.props.onDrawerClose, 500);\r\n\t\t});\r\n\t};\r\n\r\n\trenderSermon() {\r\n\t\tconst classes = this.props.classes;\r\n\r\n\t\treturn this.state.sermon ? (\r\n\t\t\t
\r\n\t\t\t\t{this.state.sermon.title}\r\n\t\t\t\t\r\n\t\t\t\t\tBy: {this.state.sermon.authorFirstName} {this.state.sermon.authorLastName}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t) : (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\tLoading Sermon\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\trenderIllustration() {\r\n\t\tconst classes = this.props.classes;\r\n\r\n\t\treturn this.state.illustration ? (\r\n\t\t\t
\r\n\t\t\t\t{this.state.illustration.title}\r\n\t\t\t\t\r\n\t\t\t\t\tFrom: {this.state.illustration.authorFirstName} {this.state.illustration.authorLastName}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t) : (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\tLoading Illustration\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\trenderBibleChapter() {\r\n\t\tconst { classes } = this.props;\r\n\t\tconst { bibleChapter } = this.state;\r\n\r\n\t\tif (!bibleChapter) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\tLoading Bible Chapter\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst versesGroupedByParagraph = this.groupChapterVerses(bibleChapter);\r\n\t\tconst copyright = SupportedTranslations.find((t) => t.id === bibleChapter.translationId)!.copyrightHtml;\r\n\t\tconst { bibleSearchViewSetting } = this.props.preferences;\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{bibleChapter.bookName} {bibleChapter.chapterNumber}\r\n\t\t\t\t\r\n\t\t\t\tTranslation: {bibleChapter.translationName}\r\n\t\t\t\t\r\n\t\t\t\t{versesGroupedByParagraph.map((group, index) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{group.map((verse) => {\r\n\t\t\t\t\t\t\tlet { verseNumberStart, verseNumberEnd, verseContent } = verse;\r\n\t\t\t\t\t\t\tlet showVerseNumbers = bibleSearchViewSetting === \"all\" || bibleSearchViewSetting === \"numbers\";\r\n\t\t\t\t\t\t\tlet showTranslationNotes = bibleSearchViewSetting === \"all\";\r\n\r\n\t\t\t\t\t\t\tif (!showTranslationNotes) {\r\n\t\t\t\t\t\t\t\tverseContent = SearchServiceHelper.removeTranslationNotes(verseContent);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{showVerseNumbers && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{verseNumberStart}\r\n\t\t\t\t\t\t\t\t\t\t\t\t{verseNumberStart !== verseNumberEnd ? `-${verseNumberEnd}` : null}\r\n\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { classes, sermonId, illustrationId, scriptureReference } = this.props;\r\n\t\tconst title =\r\n\t\t\tthis.state.contentType === \"Bible\" && this.state.bibleChapter\r\n\t\t\t\t? `${this.state.bibleChapter.bookName} ${this.state.bibleChapter.chapterNumber}`\r\n\t\t\t\t: this.state.contentType;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCopy {title}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{sermonId && this.renderSermon()}\r\n\t\t\t\t{illustrationId && this.renderIllustration()}\r\n\t\t\t\t{scriptureReference && this.renderBibleChapter()}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport function ContentDrawer(props:Props){\r\n\tconst classes = useStyles();\r\n\treturn ;\r\n}","import React from \"react\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\ninterface Props {\r\n\tsnackbarOpen: boolean;\r\n\tsnackbarMessage: string;\r\n\tonClose: () => void;\r\n}\r\n\r\nconst BuilderSnackbar = (props: Props) => {\r\n\tconst { snackbarOpen, snackbarMessage } = props;\r\n\treturn (\r\n\t\t{snackbarMessage}}\r\n\t\t\taction={[\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t,\r\n\t\t\t]}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default BuilderSnackbar;\r\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\r\nimport AttributeCommand from '@ckeditor/ckeditor5-basic-styles/src/attributecommand';\r\n\r\nconst Slide = 'addSlide';\r\n\r\nexport default class SlideEditing extends Plugin {\r\n init() {\r\n const editor = this.editor;\r\n // Allow bold attribute on text nodes.\r\n editor.model.schema.extend('$text', { allowAttributes: Slide });\r\n\r\n // Build converter from model to view for data and editing pipelines.\r\n\r\n editor.conversion.attributeToElement({\r\n model: Slide,\r\n view: 'slide',\r\n });\r\n\r\n // Create bold command.\r\n editor.commands.add(Slide, new AttributeCommand(editor, Slide));\r\n\r\n // Set the Ctrl+S keystroke.\r\n editor.keystrokes.set('CTRL+S', Slide);\r\n }\r\n}","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\r\nimport SlideEditing from './slideEditing';\r\n\r\n// strong inspiration from CkEditor 5's bold plugin\r\n// https://github.com/ckeditor/ckeditor5-basic-styles/blob/master/src/bold.js\r\nexport default class AddSlide extends Plugin {\r\n static get requires() {\r\n return [SlideEditing];\r\n }\r\n\r\n static get pluginName() {\r\n return 'AddSlide';\r\n }\r\n}","import DecoupledEditor from \"@ckeditor/ckeditor5-build-decoupled-document/build/ckeditor\";\r\nimport { Editor } from \"./Editor\";\r\nimport AddSlide from \"./slide\";\r\n\r\nexport interface SlideMap {\r\n\tslideContent: string;\r\n\tstartingIndex: number;\r\n\tendingIndex: number;\r\n}\r\n\r\nexport interface CkEditorSelection {\r\n\tattributes?: { addSlide?: boolean };\r\n\tchildren?: CkEditorSelection[];\r\n\tdata: string;\r\n}\r\n\r\nexport const CkEditorRegex = {\r\n\tnoSlides: new RegExp(/<(slide|\\/slide)[^>]{0,}>/g),\r\n\tnoMarks: new RegExp(/<(strong|\\/strong|span|\\/span|em|\\/em|i|\\/i|u|\\/u|mark|\\/mark)[^>]{0,}>/g),\r\n\tnoBlocks: new RegExp(/<(blockquote|\\/blockquote|p|\\/p|h1|\\/h1|h2|\\/h2|h3|\\/h3|h4|\\/h4|ul|\\/ul|ol|\\/ol|li|\\/li)[^>]{0,}>/g),\r\n\tsiblingSlides: new RegExp(/<\\/slide>/g),\r\n\tsoftBreak: new RegExp(/
/g),\r\n};\r\n\r\nexport const CkEditorHelper = {\r\n\tgetSlides: (data: string) => {\r\n\t\tlet slideMap = [];\r\n\r\n\t\tlet slideStartIndexes = getIndexesOfAllOccurrences(data, //);\r\n\r\n\t\t// in theory, normalized html should contain an equal number of opening and closing tags so the arrays should be equal length\r\n\t\tfor (let i = 0; i < slideStartIndexes.length; i++) {\r\n\t\t\tconst startingIndex = slideStartIndexes[i];\r\n\t\t\tconst endingIndex = slideEndIndexes[i] + \"\".length;\r\n\r\n\t\t\tconst contentStartingIndex = startingIndex + \"\".length;\r\n\t\t\tconst contentEndingIndex = slideEndIndexes[i] - contentStartingIndex;\r\n\r\n\t\t\tconst innerHTML = data.substr(contentStartingIndex, contentEndingIndex);\r\n\r\n\t\t\tconst slideContent = innerHTML.replace(CkEditorRegex.noMarks, \"\");\r\n\r\n\t\t\tconst mapping = {\r\n\t\t\t\tstartingIndex,\r\n\t\t\t\tendingIndex,\r\n\t\t\t\tslideContent,\r\n\t\t\t};\r\n\r\n\t\t\tslideMap.push(mapping);\r\n\t\t}\r\n\r\n\t\treturn SlideProccessor.combineSiblingSlides(slideMap, data);\r\n\t},\r\n\r\n\tremoveSlide(data: string, slide: SlideMap) {\r\n\t\treturn (\r\n\t\t\tdata.substring(0, slide.startingIndex) +\r\n\t\t\tdata.substring(slide.startingIndex, slide.endingIndex).replace(CkEditorRegex.noSlides, \"\") +\r\n\t\t\tdata.substring(slide.endingIndex)\r\n\t\t);\r\n\t},\r\n\r\n\tremovePreviewSlide(slidesToBeRemovedIds: string[], editorRef: Editor) {\r\n\t\tlet slideElements = slidesToBeRemovedIds.map((id) => {\r\n\t\t\treturn document.getElementById(id);\r\n\t\t});\r\n\r\n\t\tslideElements.forEach((slideElementToBeRemoved) => {\r\n\t\t\tif (slideElementToBeRemoved === null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t//insert all child nodes of the element to be removed before itself\r\n\t\t\twhile (slideElementToBeRemoved.firstChild !== null) {\r\n\t\t\t\tslideElementToBeRemoved.parentNode?.insertBefore(slideElementToBeRemoved.firstChild, slideElementToBeRemoved);\r\n\t\t\t}\r\n\t\t\tslideElementToBeRemoved.parentNode?.removeChild(slideElementToBeRemoved);\r\n\t\t});\r\n\r\n\t\tlet newEditorData = document.getElementById(\"editor\")?.innerHTML.toString();\r\n\t\teditorRef.setData(newEditorData!);\r\n\t},\r\n\r\n\tgetSelections(editor: any) {\r\n\t\tlet content = editor.model.getSelectedContent(editor.model.document.selection);\r\n\t\tlet selections: CkEditorSelection[] = content.toJSON();\r\n\t\treturn selections;\r\n\t},\r\n\r\n\tisAttributeActionActive: (selections: CkEditorSelection[], action: string) => {\r\n\t\tlet firstElement = selections[0];\r\n\t\tlet firstElementIsAction = firstElement.attributes != null && (firstElement.attributes as any)[action] != null;\r\n\r\n\t\treturn firstElementIsAction;\r\n\t},\r\n\r\n\tcreateEditorInDOM: async (editorElement: Element) => {\r\n\t\tDecoupledEditor.builtinPlugins = [...DecoupledEditor.builtinPlugins, AddSlide];\r\n\t\tconst editor: Editor = await DecoupledEditor.create(editorElement, CkEditorHelper.config);\r\n\r\n\t\tconst toolbarContainer = document.querySelector(\"#toolbar-container\");\r\n\t\tif (toolbarContainer) {\r\n\t\t\ttoolbarContainer.appendChild(editor.ui.view.toolbar.element);\r\n\t\t}\r\n\r\n\t\treturn editor;\r\n\t},\r\n\r\n\tinjectCopyPasteButtonsIntoToolbar: (onCopyButtonClick: () => void, onPasteButtonClick: () => void) => {\r\n\t\tconst toolbarCollection = document.getElementsByClassName(\"ck ck-toolbar ck-reset_all ck-rounded-corners\");\r\n\t\tlet toolbarElement = toolbarCollection.item(0);\r\n\r\n\t\tif (toolbarElement) {\r\n\t\t\tconst copyPasteElement = document.createElement(\"span\");\r\n\r\n\t\t\tconst copyButton = document.createElement(\"button\");\r\n\t\t\tcopyButton.className = \"ck ck-button ck-off\";\r\n\t\t\tcopyButton.id = \"copyButton\";\r\n\t\t\tcopyButton.innerHTML =\r\n\t\t\t\t'Copy (CTRL + C)Copy';\r\n\t\t\tcopyButton.onclick = onCopyButtonClick;\r\n\r\n\t\t\tconst pasteButton = document.createElement(\"button\");\r\n\t\t\tpasteButton.className = \"ck ck-button ck-off\";\r\n\t\t\tpasteButton.id = \"pasteButton\";\r\n\t\t\tpasteButton.innerHTML =\r\n\t\t\t\t'Paste (CTRL + V)Paste';\r\n\t\t\tpasteButton.onclick = onPasteButtonClick;\r\n\r\n\t\t\tconst verticalDivider = document.createElement(\"span\");\r\n\t\t\tverticalDivider.className = \"ck ck-toolbar__separator\";\r\n\r\n\t\t\tcopyPasteElement.appendChild(copyButton);\r\n\t\t\tcopyPasteElement.appendChild(pasteButton);\r\n\r\n\t\t\ttoolbarElement.insertBefore(copyPasteElement, toolbarElement.childNodes[3]);\r\n\t\t\ttoolbarElement.insertBefore(verticalDivider, toolbarElement.childNodes[4]);\r\n\t\t}\r\n\t},\r\n\r\n\tconfig: {\r\n\t\ttoolbar: [\r\n\t\t\t\"undo\",\r\n\t\t\t\"redo\",\r\n\t\t\t\"|\",\r\n\t\t\t\"heading\",\r\n\t\t\t\"fontFamily\",\r\n\t\t\t\"fontSize\",\r\n\t\t\t\"|\",\r\n\t\t\t\"bold\",\r\n\t\t\t\"italic\",\r\n\t\t\t\"underline\",\r\n\t\t\t\"highlight\",\r\n\t\t\t\"|\",\r\n\t\t\t\"alignment\",\r\n\t\t\t\"|\",\r\n\t\t\t\"bulletedList\",\r\n\t\t\t\"numberedList\",\r\n\t\t\t\"blockquote\",\r\n\t\t],\r\n\t\theading: {\r\n\t\t\toptions: [\r\n\t\t\t\t{ model: \"paragraph\", title: \"Paragraph\", class: \"ck-heading_paragraph\" },\r\n\t\t\t\t{ model: \"heading1\", view: \"h1\", title: \"Heading 1\", class: \"ck-heading_heading1\" },\r\n\t\t\t\t{ model: \"heading2\", view: \"h2\", title: \"Heading 2\", class: \"ck-heading_heading2\" },\r\n\t\t\t],\r\n\t\t},\r\n\t\tfontFamily: {\r\n\t\t\toptions: [\"default\", \"Ubuntu, Arial, sans-serif\", \"Helvetica Neue\", \"Roboto\"],\r\n\t\t},\r\n\t\tfontSize: {\r\n\t\t\toptions: [9, 11, 13, \"default\", 17, 19, 21],\r\n\t\t},\r\n\t\thighlight: {\r\n\t\t\toptions: [\r\n\t\t\t\t{ model: \"yellowMarker\", class: \"marker-yellow\", title: \"Yellow Marker\", color: \"#fdfd77\", type: \"marker\" },\r\n\t\t\t\t{ model: \"greenMarker\", class: \"marker-green\", title: \"Green marker\", color: \"#63f963\", type: \"marker\" },\r\n\t\t\t\t{ model: \"lightRedMarker\", class: \"marker-light-red\", title: \"Light Red marker\", color: \"#fc7999\", type: \"marker\" },\r\n\t\t\t\t{ model: \"blueMarker\", class: \"marker-blue\", title: \"Blue marker\", color: \"#72cdfd\", type: \"marker\" },\r\n\t\t\t\t{ model: \"orangeMarker\", class: \"marker-orange\", title: \"Orange marker\", color: \"#ff9800\", type: \"marker\" },\r\n\t\t\t\t{ model: \"purpleMarker\", class: \"marker-purple\", title: \"Purple marker\", color: \"#ce93d8\", type: \"marker\" },\r\n\t\t\t\t{ model: \"blackMarker\", class: \"marker-black\", title: \"Black marker\", color: \"#000\", type: \"marker\" },\r\n\t\t\t\t{ model: \"redPen\", class: \"pen-red\", title: \"Red pen\", color: \"#e91313\", type: \"pen\" },\r\n\t\t\t\t{ model: \"bluePen\", class: \"pen-blue\", title: \"Blue pen\", color: \"#72cdfd\", type: \"pen\" },\r\n\t\t\t],\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst SlideProccessor = {\r\n\tcombineSiblingSlides(slideMapping: SlideMap[], data: string) {\r\n\t\tif (slideMapping.length < 2) {\r\n\t\t\treturn slideMapping;\r\n\t\t}\r\n\t\tlet combinedSlideMapping: SlideMap[] = [];\r\n\r\n\t\tlet previousSlide: SlideMap = slideMapping[0];\r\n\t\tfor (let i = 1; i < slideMapping.length; i++) {\r\n\t\t\tconst combinedSlide = SlideProccessor.combineSlides(previousSlide, slideMapping[i], data);\r\n\r\n\t\t\t// Slides are not siblings\r\n\t\t\tif (combinedSlide === null) {\r\n\t\t\t\tcombinedSlideMapping.push(previousSlide);\r\n\t\t\t\tpreviousSlide = slideMapping[i];\r\n\t\t\t} else {\r\n\t\t\t\tpreviousSlide = combinedSlide;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcombinedSlideMapping.push(previousSlide);\r\n\r\n\t\treturn combinedSlideMapping;\r\n\t},\r\n\r\n\tcombineSlides(slide1: SlideMap, slide2: SlideMap, data: string) {\r\n\t\tlet combinedSlideHtml = data.substring(slide1.startingIndex, slide2.endingIndex);\r\n\t\tlet dataWithoutMarks = combinedSlideHtml.replace(CkEditorRegex.noMarks, \"\");\r\n\t\tlet dataWithoutBlocks = dataWithoutMarks.replace(CkEditorRegex.noBlocks, \"\");\r\n\r\n\t\tif (getIndexesOfAllOccurrences(dataWithoutBlocks, /<\\/slide>/).length > 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet combinedSlide: SlideMap = {\r\n\t\t\tslideContent: dataWithoutBlocks.replace(CkEditorRegex.noSlides, \"\"),\r\n\t\t\tstartingIndex: slide1.startingIndex,\r\n\t\t\tendingIndex: slide2.endingIndex,\r\n\t\t};\r\n\r\n\t\treturn combinedSlide;\r\n\t},\r\n};\r\n\r\nfunction getIndexesOfAllOccurrences(str: string, toMatch: RegExp) {\r\n\tlet re = new RegExp(toMatch, \"g\"),\r\n\t\tindexMatches = [],\r\n\t\tmatch;\r\n\r\n\twhile ((match = re.exec(str)) !== null) {\r\n\t\tindexMatches.push(match.index);\r\n\t}\r\n\r\n\treturn indexMatches;\r\n}\r\n","export const UserAgent = {\r\n\tiOS() {\r\n\t\treturn /(iPad|iPhone|iPod)/g.test(navigator.userAgent);\r\n\t},\r\n\tmobile() {\r\n\t\treturn /(iPad|iPhone|iPod|Android)/g.test(navigator.userAgent);\r\n\t},\r\n\tgetOperatingSystem(): OperatingSystem {\r\n\t\tconst userAgentString = navigator.userAgent;\r\n\t\tif (/Windows/g.test(userAgentString)) {\r\n\t\t\treturn \"Windows\";\r\n\t\t} else if (/(iPad|iPhone|iPod)/g.test(userAgentString)) {\r\n\t\t\treturn \"IOS\";\r\n\t\t} else if (/Macintosh/g.test(userAgentString)) {\r\n\t\t\treturn \"Mac\";\r\n\t\t} else if (/Android/g.test(userAgentString)) {\r\n\t\t\treturn \"Android\";\r\n\t\t} else if (/CrOS/g.test(userAgentString)) {\r\n\t\t\treturn \"ChromeOS\";\r\n\t\t} else if (/Linux/g.test(userAgentString)) {\r\n\t\t\treturn \"Linux\";\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t},\r\n\tgetFormFactor(): FormFactor {\r\n\t\tconst userAgentString = navigator.userAgent;\r\n\t\tif (/(tablet|ipad|playbook|silk|Kindle)|(android(?!.*mobi))/i.test(userAgentString)) {\r\n\t\t\treturn \"Tablet\";\r\n\t\t} else if (/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(userAgentString)) {\r\n\t\t\treturn \"Mobile\";\r\n\t\t} else {\r\n\t\t\treturn \"Desktop\";\r\n\t\t}\r\n\t},\r\n\tgetBrowser() {\r\n\t\tvar userAgentRef = navigator.userAgent,\r\n\t\t\ttem,\r\n\t\t\tregexMatch = userAgentRef.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n\r\n\t\tif (/trident/i.test(regexMatch[1])) {\r\n\t\t\ttem = /\\brv[ :]+(\\d+)/g.exec(userAgentRef) || [];\r\n\t\t\treturn {\r\n\t\t\t\tname: \"IE\",\r\n\t\t\t\tversion: tem[1] || \"\",\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (regexMatch[1] === \"Chrome\") {\r\n\t\t\ttem = userAgentRef.match(/\\bOPR|Edge\\/(\\d+)/);\r\n\t\t\tif (tem != null) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tname: \"Opera\",\r\n\t\t\t\t\tversion: tem[1],\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregexMatch = regexMatch[2] ? [regexMatch[1], regexMatch[2]] : [navigator.appName, navigator.appVersion, \"-?\"];\r\n\r\n\t\tif ((tem = userAgentRef.match(/version\\/(\\d+)/i)) != null) {\r\n\t\t\tregexMatch.splice(1, 1, tem[1]);\r\n\t\t}\r\n\r\n\t\tlet result: BrowserData = {\r\n\t\t\tname: regexMatch[0],\r\n\t\t\tversion: parseInt(regexMatch[1]),\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t},\r\n};\r\n\r\nexport type OperatingSystem = \"Windows\" | \"Mac\" | \"ChromeOS\" | \"Linux\" | \"Android\" | \"IOS\" | null;\r\nexport type FormFactor = \"Mobile\" | \"Tablet\" | \"Desktop\";\r\ninterface BrowserData {\r\n\tname: string;\r\n\tversion: number;\r\n}\r\n","import React from \"react\";\r\n\r\ninterface TextToSpeechState {\r\n showAudioPlayer: boolean;\r\n isLoading: boolean;\r\n isAudioPaused: boolean;\r\n toggleSettingsOpen: () => void;\r\n pauseTextToSpeech: () => void;\r\n startTextToSpeech: () => void;\r\n stopTextToSpeech: () => void;\r\n resumeTextToSpeech: () => void;\r\n restartTextToSpeech: () => void;\r\n}\r\n\r\nexport const TextToSpeechContext = React.createContext({} as any);\r\n\r\nexport function useTextToSpeech() {\r\n\treturn React.useContext(TextToSpeechContext);\r\n}","import React from \"react\";\r\nimport { SlideAction } from \"./SlideAction\";\r\n\r\nimport FormatItalicIcon from \"@material-ui/icons/FormatItalic\";\r\nimport FormatBoldIcon from \"@material-ui/icons/FormatBold\";\r\nimport FormatUnderlinedIcon from \"@material-ui/icons/FormatUnderlined\";\r\nimport FormatListBulletedIcon from \"@material-ui/icons/FormatListBulleted\";\r\nimport FormatListNumberedIcon from \"@material-ui/icons/FormatListNumbered\";\r\nimport FormatQuoteIcon from \"@material-ui/icons/FormatQuote\";\r\nimport { useTextToSpeech } from \"./texttospeech/useTextToSpeech\";\r\nimport { useOfflineStatus } from \"../../../utilities/useOfflineStatus\";\r\nimport { Button, makeStyles, Typography } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n\tslidePrompt: {\r\n\t\tposition: \"absolute\",\r\n\t\tzIndex: 9999,\r\n\t\tbackgroundColor: \"#000\",\r\n\t\tborderRadius: 7,\r\n\t\tcolor: \"white\",\r\n\t},\r\n\tdesktopBallonEditorButton: {\r\n\t\tmargin: \"3px 2px\",\r\n\t\tpadding: \"6px 10px\",\r\n\t\tminWidth: 40,\r\n\t\tborderRadius: 3,\r\n\t\tbackgroundColor: \"transparent\",\r\n\t\theight: 36,\r\n\t\topacity: 1,\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tbackgroundColor: \"#ffffff\",\r\n\t\t\tcolor: \"#000\",\r\n\t\t},\r\n\t\tcolor: \"white\",\r\n\t},\r\n\tslidePromptArrowContainer: {\r\n\t\tposition: \"absolute\",\r\n\t},\r\n\tslidePromptArrowInverted: {\r\n\t\ttop: \"-50px\",\r\n\t\tleft: 0,\r\n\t\twidth: 0,\r\n\t\tposition: \"absolute\",\r\n\t\tborderBottom: \"8px solid #000\",\r\n\t\tborderLeft: \"10px solid transparent\",\r\n\t\tborderRight: \"10px solid transparent\",\r\n\t},\r\n\tslidePromptArrow: {\r\n\t\tborderTop: \"8px solid #000\",\r\n\t\tborderLeft: \"10px solid transparent\",\r\n\t\tborderRight: \"10px solid transparent\",\r\n\t\tleft: 0,\r\n\t\tposition: \"absolute\",\r\n\t\twidth: 0,\r\n\t},\r\n\tverticalDivider: {\r\n\t\tpaddingBottom: 12,\r\n\t\tpaddingTop: 10,\r\n\t\tborderRight: \"1px solid white\",\r\n\t},\r\n\tisActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tbackgroundColor: \"#ffffff\",\r\n\t\tcolor: \"#000\",\r\n\t},\r\n\ttextToSpeechButton: {\r\n\t\tmargin: \"3px 2px\",\r\n\t\tpadding: \"6px 10px\",\r\n\t\tminWidth: 40,\r\n\t\tborderRadius: 3,\r\n\t\tbackgroundColor: \"transparent\",\r\n\t\theight: 36,\r\n\t\topacity: 1,\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tbackgroundColor: \"#ffffff\",\r\n\t\t\tcolor: \"#000\",\r\n\t\t},\r\n\t\tcolor: \"white\",\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"grey\",\r\n\t\t},\r\n\t},\r\n}));\r\n\r\nexport type DesktopFormatBubbleSettings = {\r\n\tleft: number;\r\n\ttop: number;\r\n\twidth: number;\r\n\tmessage: string;\r\n\taction: SlideAction;\r\n\tisBolded: boolean;\r\n\tisItalic: boolean;\r\n\tisUnderlined: boolean;\r\n\tinvertArrowDirection: boolean;\r\n};\r\n\r\ninterface Props {\r\n\tsettings: DesktopFormatBubbleSettings;\r\n\tonClickSlidePrompt: (slideAction: SlideAction) => void;\r\n\texcecuteEditorAction: (action: string, value?: string) => void;\r\n}\r\n\r\nexport function DesktopFormatBubble(props: Props) {\r\n\tconst desktopSlidePrompt = props.settings;\r\n\tconst classes = useStyles();\r\n\tconst { startTextToSpeech } = useTextToSpeech();\r\n\tconst isOnline = !useOfflineStatus();\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t{isOnline && (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t props.excecuteEditorAction(\"bold\")}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t props.excecuteEditorAction(\"italic\")}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t props.excecuteEditorAction(\"underline\")}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n}","import React from \"react\";\r\n\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport InsertPhotoIcon from \"@material-ui/icons/InsertPhoto\";\r\nimport PlayIcon from \"@material-ui/icons/PlayCircleOutline\";\r\nimport { useTextToSpeech } from \"./texttospeech/useTextToSpeech\";\r\n\r\nimport { SlideAction } from \"./SlideAction\";\r\nimport { useOfflineStatus } from \"../../../utilities/useOfflineStatus\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n\tmobileSlidePrompt: {\r\n\t\tposition: \"absolute\",\r\n\t\tzIndex: 9999,\r\n\t},\r\n\tmobileSlidePromptButton: {\r\n\t\tborder: \"1px solid\",\r\n\t\tpadding: 4,\r\n\t\tdisplay: \"block\",\r\n\t},\r\n\tmobileTextToSpeechButton: {\r\n\t\tborder: \"1px solid\",\r\n\t\tpadding: 4,\r\n\t\tmarginTop: 5,\r\n\t\tdisplay: \"block\",\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"white\",\r\n\t\t},\r\n\t},\r\n}));\r\n\r\nexport type MobileFormatBubbleSettings = { right: number; top: number; action: SlideAction };\r\n\r\ninterface Props {\r\n\tsettings: MobileFormatBubbleSettings;\r\n\tonClickSlidePrompt: (slideAction: SlideAction) => void;\r\n}\r\n\r\nexport function MobileFormatBubble(props: Props) {\r\n\tconst mobileSlidePrompt = props.settings;\r\n\tconst classes = useStyles();\r\n\tconst { startTextToSpeech } = useTextToSpeech();\r\n\tconst isOnline = !useOfflineStatus();\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t props.onClickSlidePrompt(mobileSlidePrompt.action)}>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{isOnline && (\r\n\t\t\t\t startTextToSpeech()}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}","import React from \"react\";\r\nimport { DesktopFormatBubble, DesktopFormatBubbleSettings } from \"./DesktopFormatBubble\";\r\nimport { MobileFormatBubble, MobileFormatBubbleSettings } from \"./MobileFormatBubble\";\r\nimport { SlideAction } from \"./SlideAction\";\r\n\r\nexport type FormatBubbleSettings = { mobile: MobileFormatBubbleSettings } | { desktop: DesktopFormatBubbleSettings };\r\n\r\ninterface Props {\r\n\tsettings: FormatBubbleSettings;\r\n\tonClickSlidePrompt: (slideAction: SlideAction) => void;\r\n\texcecuteEditorAction: (action: string, value?: string) => void;\r\n}\r\n\r\nexport function FormatBubble(props: Props) {\r\n\tconst { settings } = props;\r\n\r\n\tif (\"mobile\" in settings) {\r\n\t\treturn ;\r\n\t}\r\n\treturn (\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default FormatBubble;\r\n","\r\nexport enum SlideAction {\r\n\tAdd,\r\n\tRemove,\r\n\tLeftToRightExtend,\r\n\tMiddleExtend,\r\n\tRightToLeftExtend,\r\n}","import React from 'react'\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\ninterface Props {\r\n editor: any;\r\n snackbarOpen: boolean;\r\n snackbarMessage: string;\r\n toggleSnackbarOpen: () => void;\r\n}\r\n\r\nconst EditorActionAlert = (props: Props) => {\r\n const {snackbarOpen, snackbarMessage, editor} = props;\r\n return (\r\n props.toggleSnackbarOpen()}\r\n ContentProps={{\r\n \"aria-describedby\": \"message-id\",\r\n }}\r\n message={{snackbarMessage}}\r\n action={[\r\n \r\n {\r\n snackbarMessage.includes(\"paste\") && (\r\n {\r\n editor.execute(\"undo\");\r\n props.toggleSnackbarOpen();\r\n }}\r\n >\r\n UNDO\r\n \r\n )}\r\n props.toggleSnackbarOpen()}\r\n >\r\n \r\n \r\n \r\n ]}\r\n />\r\n );\r\n}\r\n\r\nexport default EditorActionAlert\r\n\r\n","import React from \"react\";\r\nimport { SlideMap } from \"./ckeditor/CkEditorHelper\";\r\nimport { Editor } from \"./ckeditor/Editor\";\r\nimport { PreviewSlide } from \"./PreviewSlide\";\r\nimport { TextAnalysis } from \"../../../utilities/sermonAnalyzer/SermonAnalyzer\";\r\n\r\ninterface EditorState {\r\n\tlastEdit: string;\r\n\tsaveInProgress: boolean;\r\n\tslides: PreviewSlide[];\r\n\twordCount: number;\r\n\tcharacterCount: number;\r\n\tgradeLevel: string;\r\n\timprovements: TextAnalysis[];\r\n\tgoodResults: TextAnalysis[];\r\n\tkeywords: string[];\r\n\tscriptureReferences: string[];\r\n\twritingLogCreated: boolean;\r\n\tsetEditor: (editor: Editor) => void;\r\n\tonRemoveSlide: (slide: SlideMap) => void;\r\n\tonRemovePreviewSlide: (previewSlide: PreviewSlide) => void;\r\n\tgetHtml: () => string;\r\n\tgetBubbleText: () => string;\r\n\tgetBubbleWordCount: () => number;\r\n\thideFormatBubble: () => void;\r\n\tonEditorDomChange: () => void;\r\n\tupdateAnalyzerResults: () => void;\r\n}\r\n\r\nexport const EditorContext = React.createContext({} as any);\r\n\r\nexport function useEditor() {\r\n\treturn React.useContext(EditorContext);\r\n}\r\n","import { EventTracking } from \"../../../utilities/Tracking/EventTracking\";\r\nimport { CkEditorHelper, CkEditorSelection } from \"./ckeditor/CkEditorHelper\";\r\nimport { Editor } from \"./ckeditor/Editor\";\r\nimport { DesktopFormatBubbleSettings } from \"./DesktopFormatBubble\";\r\nimport { DomSlide, DomSlideStyle, EditorSlide, SlideStyle } from \"./EditorSlide\";\r\nimport { MobileFormatBubbleSettings } from \"./MobileFormatBubble\";\r\nimport { SlideAction } from \"./SlideAction\";\r\nimport { v4 as generateGuid } from \"uuid\";\r\nimport visit from \"unist-util-visit\";\r\nimport { PreviewSlide, SlideLine, SlideLineChar } from \"./PreviewSlide\";\r\n\r\nconst alignmentOptions = [\"center\", \"left\", \"right\", \"justify\"] as const;\r\ntype ValidAlignmentOption = typeof alignmentOptions[number];\r\n\r\nfunction isValidAlignmentString(maybeCorrectString?: string): maybeCorrectString is ValidAlignmentOption {\r\n\tif (maybeCorrectString === undefined) return false;\r\n\treturn alignmentOptions.includes(maybeCorrectString as ValidAlignmentOption);\r\n}\r\n\r\nconst ELEMENT_NODE_TYPE = 1;\r\nconst blockTags = [\"h1\", \"h2\", \"p\", \"ul\", \"ol\"];\r\nconst styleTags = [\"u\", \"i\", \"strong\", \"li\", \"blockquote\", \"mark\", \"span\"];\r\n\r\nconst isElementOfType = (element: Element, elementType: string | string[]) => {\r\n\tif (element != null) {\r\n\t\tif (Array.isArray(elementType)) {\r\n\t\t\treturn elementType.includes(element.tagName.toLowerCase());\r\n\t\t}\r\n\t\treturn element.tagName.toLowerCase() === elementType.toLowerCase();\r\n\t}\r\n\treturn false;\r\n};\r\nconst isBlockElement = (element: Element) => isElementOfType(element, blockTags);\r\nconst isStyleElement = (element: Element) => isElementOfType(element, styleTags);\r\nconst isSlideElement = (element: Element) => isElementOfType(element, \"slide\");\r\nconst isLineBreakElement = (element: Element) => isElementOfType(element, \"br\");\r\nconst isListElement = (element: Element) => isElementOfType(element, \"li\");\r\n\r\nconst nextPotentialSlideSiblingElement = (element: Element): Element | undefined => {\r\n\tlet currentElement = element;\r\n\tlet nextSiblingNode = element.nextSibling;\r\n\twhile (nextSiblingNode != null && nextSiblingNode.nodeType === ELEMENT_NODE_TYPE) {\r\n\t\tlet nextSiblingElement = currentElement.nextElementSibling!;\r\n\r\n\t\tcurrentElement = nextSiblingElement;\r\n\r\n\t\tif (!isLineBreakElement(nextSiblingElement)) {\r\n\t\t\treturn nextSiblingElement;\r\n\t\t}\r\n\r\n\t\tnextSiblingNode = nextSiblingNode.nextSibling;\r\n\t}\r\n\r\n\t//need to check parent in case of double nested slide\r\n\tcurrentElement = element.parentElement as Element;\r\n\tif (currentElement != null && !isBlockElement(currentElement)) {\r\n\t\treturn nextPotentialSlideSiblingElement(currentElement) as Element;\r\n\t}\r\n\r\n\treturn undefined;\r\n};\r\n\r\nconst isLastSlide = (element: Element) => {\r\n\tconst parent = element.parentElement!;\r\n\tconst nextSiblingNode = element.nextSibling;\r\n\r\n\tif (!nextSiblingNode) {\r\n\t\t// Last slides in a block tag are the final slide\r\n\t\tif (isBlockElement(parent)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst potentialSlideElement = nextPotentialSlideSiblingElement(parent);\r\n\t\tif (!potentialSlideElement) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// this element is at the end of a style or in a list\r\n\t\tif (isSlideElement(potentialSlideElement) || firstChildIsASlide(potentialSlideElement)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If the first child of the next parent sibling is not a slide, this is the last slide\r\n\t\treturn !firstChildIsASlide(potentialSlideElement);\r\n\t}\r\n\r\n\tconst potentialSlideElement = nextPotentialSlideSiblingElement(element);\r\n\tif (!potentialSlideElement) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// The next element is another slide, so this is not the last slide\r\n\tif (isSlideElement(potentialSlideElement)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// if the next element is a style element without a slide being the first child, then we're done\r\n\treturn !firstChildIsASlide(potentialSlideElement);\r\n};\r\n\r\nconst firstChildIsASlide = (element: Element) => {\r\n\tconst firstChildNode = element.firstChild;\r\n\tif (firstChildNode === null || firstChildNode.nodeType !== ELEMENT_NODE_TYPE) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tlet firstChildElement = element.firstElementChild!;\r\n\twhile (isStyleElement(firstChildElement)) {\r\n\t\tlet tempNode = firstChildElement.firstChild;\r\n\t\tif (!tempNode || tempNode.nodeType !== ELEMENT_NODE_TYPE) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfirstChildElement = firstChildElement.firstElementChild!;\r\n\t}\r\n\treturn isSlideElement(firstChildElement);\r\n};\r\n\r\nconst parseStylesFromElement = (element: Element, content: string): DomSlideStyle[] => {\r\n\tconst styles: DomSlideStyle[] = [];\r\n\r\n\tconst indexStart = 0;\r\n\tconst indexEnd = content.length;\r\n\r\n\tif (hasOuterTag(element, \"strong\")) {\r\n\t\tstyles.push({ content, indexStart, indexEnd, style: \"bold\" });\r\n\t}\r\n\r\n\tif (hasOuterTag(element, \"i\")) {\r\n\t\tstyles.push({ content, indexStart, indexEnd, style: \"italic\" });\r\n\t}\r\n\r\n\tif (hasOuterTag(element, \"u\")) {\r\n\t\tstyles.push({ content, indexStart, indexEnd, style: \"underline\" });\r\n\t}\r\n\r\n\tif (hasOuterTag(element, \"mark\")) {\r\n\t\tlet parentElement = getOuterTag(element, \"mark\");\r\n\t\tlet bgColor = parentElement?.className;\r\n\t\tif (bgColor !== undefined) {\r\n\t\t\tlet colorAsHex = getTextBackgroundHexValue(bgColor);\r\n\t\t\tstyles.push({ content, indexStart, indexEnd, style: \"backgroundColor\", colorAsHex });\r\n\t\t}\r\n\t}\r\n\r\n\tif (hasOuterTag(element, \"span\")) {\r\n\t\tlet parentElement = getOuterTag(element, \"span\");\r\n\t\tlet fontFamily = parentElement?.style.fontFamily;\r\n\t\tlet correctedFontFamily = fontFamily?.split(\",\")[0].replace(/['\"]/g, \"\") ?? \"Arial\";\r\n\t\tif (correctedFontFamily !== \"\") {\r\n\t\t\tstyles.push({ content, indexStart, indexEnd, style: \"fontFamily\", fontFamily: correctedFontFamily });\r\n\t\t}\r\n\t}\r\n\r\n\tif (hasOuterTag(element, \"li\")) {\r\n\t\tlet listType = checkListType(element);\r\n\t\tif (listType === \"ol\") {\r\n\t\t\tstyles.push({ content, indexStart, indexEnd, style: \"orderedList\" });\r\n\t\t} else if (listType === \"ul\") {\r\n\t\t\tstyles.push({ content, indexStart, indexEnd, style: \"unorderedList\" });\r\n\t\t}\r\n\t}\r\n\r\n\tif (elementIsInBlockQuote(element)) {\r\n\t\tstyles.push({ content, indexStart, indexEnd, style: \"blockQuote\" });\r\n\t}\r\n\r\n\tlet elementBlockTag = getBlockTag(element);\r\n\tif (elementBlockTag?.style.textAlign) {\r\n\t\tlet alignment = elementBlockTag.style.textAlign;\r\n\t\tif (isValidAlignmentString(alignment)) {\r\n\t\t\tstyles.push({ content, indexStart, indexEnd, style: \"textAlignment\", alignment });\r\n\t\t}\r\n\t} else if (!hasOuterTag(element, \"li\") && !elementIsInBlockQuote(element)) {\r\n\t\tstyles.push({ content, indexStart, indexEnd, style: \"textAlignment\", alignment: \"center\" });\r\n\t}\r\n\tif (elementBlockTag && isBlockElement(elementBlockTag)) {\r\n\t\tlet tagName = elementBlockTag.tagName.toLowerCase();\r\n\t\tstyles.push({ content, indexStart, indexEnd, style: \"blockTag\", blockTag: tagName });\r\n\t}\r\n\r\n\tlet fontSize = getFontSize(element);\r\n\tif (fontSize) {\r\n\t\tstyles.push({ content, indexStart, indexEnd, style: \"fontSize\", fontSize });\r\n\t}\r\n\r\n\tconst html = element.innerHTML;\r\n\r\n\tconst strongRegEx = /(.*?)<\\/strong>/g;\r\n\tconst boldStyles = getInnerStyle(html, strongRegEx, \"bold\");\r\n\tstyles.push(...boldStyles);\r\n\r\n\tconst italicRegEx = /(.*?)<\\/i>/g;\r\n\tconst italicStyles = getInnerStyle(html, italicRegEx, \"italic\");\r\n\tstyles.push(...italicStyles);\r\n\r\n\tconst underlineRegEx = /(.*?)<\\/u>/g;\r\n\tconst underlineStyles = getInnerStyle(html, underlineRegEx, \"underline\");\r\n\tstyles.push(...underlineStyles);\r\n\r\n\treturn styles;\r\n};\r\n\r\nconst getFontSize = (element: Element) => {\r\n\tlet parentElement = element.parentElement;\r\n\twhile (parentElement && !isBlockElement(parentElement) && parentElement.style.fontSize === \"\") {\r\n\t\tparentElement = parentElement.parentElement;\r\n\t}\r\n\r\n\tif (!parentElement || !parentElement.style.fontSize) return null;\r\n\telse {\r\n\t\treturn parentElement.style.fontSize;\r\n\t}\r\n};\r\n\r\nconst getBlockTag = (element: Element) => {\r\n\tlet parentElement = element.parentElement;\r\n\twhile (parentElement && !isBlockElement(parentElement)) {\r\n\t\tparentElement = parentElement.parentElement;\r\n\t}\r\n\r\n\treturn parentElement;\r\n};\r\n\r\nconst elementIsInBlockQuote = (element: Element) => {\r\n\tlet parent = element.parentElement;\r\n\twhile (parent && parent.tagName.toLowerCase() !== \"div\") {\r\n\t\tif (parent.tagName.toLowerCase() === \"blockquote\") {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tparent = parent.parentElement;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nconst checkListType = (element: Element) => {\r\n\tlet parent = element.parentElement;\r\n\r\n\twhile (parent != null && parent?.tagName.toLowerCase() !== \"li\" && !isBlockElement(parent)) {\r\n\t\tparent = parent.parentElement;\r\n\t}\r\n\r\n\tif (parent) {\r\n\t\tlet listParent = parent.parentElement;\r\n\t\tlet listParentType = listParent?.tagName.toLowerCase();\r\n\t\treturn listParentType;\r\n\t}\r\n};\r\n\r\nconst hasOuterTag = (element: Element, tagType: string) => {\r\n\tlet parent = element.parentElement;\r\n\twhile (parent != null && parent.tagName.toLowerCase() !== \"div\") {\r\n\t\tif (parent.tagName.toLowerCase() === tagType) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tparent = parent.parentElement;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nconst getOuterTag = (element: Element, tagType: string) => {\r\n\tlet parent = element.parentElement;\r\n\twhile (parent != null && tagType !== parent.tagName.toLowerCase() && parent.tagName.toLowerCase() !== \"div\") {\r\n\t\tparent = parent.parentElement;\r\n\t}\r\n\treturn parent;\r\n};\r\n\r\nconst getInnerStyle = (html: string, regex: RegExp, style: SlideStyle): DomSlideStyle[] => {\r\n\tconst styles: DomSlideStyle[] = [];\r\n\r\n\tlet results: RegExpExecArray | null = null;\r\n\r\n\twhile ((results = regex.exec(html)) !== null) {\r\n\t\tconst contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.innerHTML = results[0];\r\n\t\tconst contentPlainText = contentElement.innerText;\r\n\r\n\t\tconst substring = html.substring(0, regex.lastIndex);\r\n\r\n\t\tconst substringElement = document.createElement(\"div\");\r\n\t\tsubstringElement.innerHTML = substring;\r\n\t\tconst substringPlainText = substringElement.innerText;\r\n\r\n\t\tconst indexStart = substringPlainText.length - contentPlainText.length;\r\n\t\tconst indexEnd = substringPlainText.length;\r\n\t\tstyles.push({ indexStart, indexEnd, style, content: contentPlainText });\r\n\t}\r\n\r\n\treturn styles;\r\n};\r\n\r\nconst getElementInnerText = (element: Element): string => {\r\n\tconst elementWithInnerText: any = element;\r\n\tif (\"innerText\" in elementWithInnerText) {\r\n\t\treturn elementWithInnerText.innerText;\r\n\t}\r\n\treturn element.textContent ?? \"\";\r\n};\r\n\r\nconst getTextBackgroundHexValue = (className: string) => {\r\n\tif (className === \"marker-purple\") {\r\n\t\treturn \"#CE93D8\";\r\n\t} else if (className === \"marker-orange\") {\r\n\t\treturn \"#FF9800\";\r\n\t} else if (className === \"marker-blue\") {\r\n\t\treturn \"#72CDFD\";\r\n\t} else if (className === \"marker-light-red\") {\r\n\t\treturn \"#FC6C63\";\r\n\t} else if (className === \"marker-green\") {\r\n\t\treturn \"#63F963\";\r\n\t} else if (className === \"marker-yellow\") {\r\n\t\treturn \"#FDFD77\";\r\n\t} else if (className === \"pen-red\") {\r\n\t\treturn \"#e91313\";\r\n\t} else if (className === \"marker-black\") {\r\n\t\treturn \"#000000\";\r\n\t} else if (className === \"pen-blue\") {\r\n\t\treturn \"#72cdfd\";\r\n\t}\r\n};\r\n\r\nconst isLastSlideElementForBullet = (current: Element, next: Element) => {\r\n\tif (current == null || next == null) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tlet currentElementLiParent = current.parentElement;\r\n\twhile (currentElementLiParent != null && !isListElement(currentElementLiParent) && !isBlockElement(currentElementLiParent)) {\r\n\t\tcurrentElementLiParent = currentElementLiParent.parentElement;\r\n\t}\r\n\r\n\tlet nextElementLiParent = next.parentElement;\r\n\twhile (nextElementLiParent != null && !isListElement(nextElementLiParent) && !isBlockElement(nextElementLiParent)) {\r\n\t\tnextElementLiParent = nextElementLiParent.parentElement;\r\n\t}\r\n\r\n\tif (\r\n\t\tcurrentElementLiParent != null &&\r\n\t\tisListElement(currentElementLiParent) &&\r\n\t\tnextElementLiParent != null &&\r\n\t\tisListElement(nextElementLiParent)\r\n\t) {\r\n\t\treturn currentElementLiParent !== nextElementLiParent;\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\nexport const EditorHelper = {\r\n\tgetEditorDomHtml: () => {\r\n\t\tconst editorElement = document.querySelector(\"#editor\");\r\n\t\treturn editorElement?.innerHTML ?? \"\";\r\n\t},\r\n\tgetSlideElements: (editorHtml = document) => {\r\n\t\treturn editorHtml.getElementsByTagName(\"slide\");\r\n\t},\r\n\tgetEditorSlides: (editorHtml: string = \"\") => {\r\n\t\tlet slideElements = null;\r\n\t\tif (editorHtml) {\r\n\t\t\tlet doc = new DOMParser().parseFromString(editorHtml, \"text/html\");\r\n\t\t\tslideElements = [...EditorHelper.getSlideElements(doc)];\r\n\t\t} else {\r\n\t\t\tslideElements = [...EditorHelper.getSlideElements()];\r\n\t\t}\r\n\r\n\t\tconst editorSlides: EditorSlide[] = [];\r\n\t\tlet count = 0;\r\n\t\tlet bulletCount = 0;\r\n\t\tlet domSlides: DomSlide[] = [];\r\n\r\n\t\tslideElements.forEach((slideElement, index, slideElementArray) => {\r\n\t\t\tlet isOrderedList = false;\r\n\t\t\tlet isUnorderedList = false;\r\n\t\t\tlet isBlockQuote = false;\r\n\t\t\tlet textAlignment = undefined;\r\n\t\t\tlet fontSize = undefined;\r\n\t\t\tlet incBulletCount = false;\r\n\r\n\t\t\tlet id = slideElement.id;\r\n\t\t\tif (id === \"\") {\r\n\t\t\t\tid = generateGuid();\r\n\t\t\t\tslideElement.setAttribute(\"id\", id);\r\n\t\t\t}\r\n\r\n\t\t\tlet slideContent = getElementInnerText(slideElement);\r\n\t\t\tif (slideElement.nextElementSibling !== null && slideElement.nextElementSibling.tagName.toLowerCase() === \"br\") {\r\n\t\t\t\tslideContent += \"\\n\";\r\n\t\t\t}\r\n\r\n\t\t\tlet slideStyles = parseStylesFromElement(slideElement, slideContent);\r\n\r\n\t\t\tif (slideStyles.some((style) => style.style === \"orderedList\")) {\r\n\t\t\t\tisOrderedList = true;\r\n\t\t\t} else if (slideStyles.some((style) => style.style === \"unorderedList\")) {\r\n\t\t\t\tisUnorderedList = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (slideStyles.some((style) => style.style === \"blockQuote\")) {\r\n\t\t\t\tisBlockQuote = true;\r\n\t\t\t}\r\n\t\t\tif (slideStyles.some((style) => style.style === \"textAlignment\")) {\r\n\t\t\t\ttextAlignment = slideStyles.filter((style) => style.style === \"textAlignment\")[0].alignment;\r\n\t\t\t}\r\n\t\t\tif (slideStyles.some((style) => style.style === \"fontSize\")) {\r\n\t\t\t\tfontSize = slideStyles.filter((style) => style.style === \"fontSize\")[0].fontSize;\r\n\t\t\t}\r\n\r\n\t\t\tif (isOrderedList || isUnorderedList) {\r\n\t\t\t\tlet isLastContentForCurrentBullet = isLastSlideElementForBullet(slideElement, slideElementArray[index + 1]);\r\n\t\t\t\tif (isLastContentForCurrentBullet) {\r\n\t\t\t\t\tincBulletCount = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet domSlide: DomSlide = {\r\n\t\t\t\tid,\r\n\t\t\t\thtml: slideElement.innerHTML,\r\n\t\t\t\tstyles: slideStyles,\r\n\t\t\t\tcontent: slideContent,\r\n\t\t\t\tisOrderedList,\r\n\t\t\t\tisUnorderedList,\r\n\t\t\t\tisBlockQuote,\r\n\t\t\t\ttextAlignment,\r\n\t\t\t\tfontSize,\r\n\t\t\t\tbulletNumber: isOrderedList || isUnorderedList ? bulletCount : undefined,\r\n\t\t\t};\r\n\t\t\tdomSlides.push(domSlide);\r\n\r\n\t\t\tif (incBulletCount) {\r\n\t\t\t\tbulletCount++;\r\n\t\t\t\tincBulletCount = false;\r\n\t\t\t}\r\n\r\n\t\t\t// This slide is next to another slide on the DOM that we want to treat as the same slide\r\n\t\t\tif (!isLastSlide(slideElement)) {\r\n\t\t\t\tif (slideElement.hasAttribute(\"count\")) {\r\n\t\t\t\t\tslideElement.removeAttribute(\"count\");\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcount++;\r\n\t\t\tconst countStr = count.toString();\r\n\t\t\tif (slideElement.getAttribute(\"count\") !== countStr) {\r\n\t\t\t\tslideElement.setAttribute(\"count\", countStr);\r\n\t\t\t}\r\n\r\n\t\t\teditorSlides.push({ domSlides });\r\n\t\t\tdomSlides = [];\r\n\t\t});\r\n\r\n\t\treturn editorSlides;\r\n\t},\r\n\tgetPreviewSlides: (editorSlides: EditorSlide[]) => {\r\n\t\tconst MAX_LINE_LENGTH = 80;\r\n\t\tlet previewSlides: PreviewSlide[] = [];\r\n\r\n\t\teditorSlides.forEach((editorSlide) => {\r\n\t\t\tconst domSlideIds = editorSlide.domSlides.map((domSlide) => domSlide.id);\r\n\t\t\tconst slideLines = getContentSeperatedByLine(editorSlide, MAX_LINE_LENGTH);\r\n\t\t\tconst slideLinesSplitIntoChars = getSlideLineChars(slideLines, editorSlide);\r\n\r\n\t\t\tlet previewSlide: PreviewSlide = {\r\n\t\t\t\tdomSlideIds,\r\n\t\t\t\tlines: slideLinesSplitIntoChars,\r\n\t\t\t};\r\n\t\t\tpreviewSlides.push(previewSlide);\r\n\t\t});\r\n\r\n\t\treturn previewSlides;\r\n\t},\r\n\tgetFormatBubblePostitionSettings: (selections: CkEditorSelection[], mobile: boolean, iOS: boolean) => {\r\n\t\tlet hasSelection = selections.length > 0;\r\n\t\tif (!hasSelection) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet bubbleWidth = 95;\r\n\t\tlet message = \"\";\r\n\t\tlet action = SlideAction.Add;\r\n\r\n\t\tlet hasSlideInSelection = selections.some((s) => s.attributes != null && s.attributes.addSlide != null);\r\n\t\tlet allSelectedIsSlide = selections.every((s) => s.attributes != null && s.attributes.addSlide != null);\r\n\t\tlet firstElement = selections[0];\r\n\t\tlet firstElementIsSlide = firstElement.attributes != null && firstElement.attributes.addSlide != null;\r\n\t\tlet lastElement = selections[selections.length - 1];\r\n\t\tlet lastElementIsSlide = lastElement.attributes != null && lastElement.attributes.addSlide != null;\r\n\r\n\t\tlet isAddSlide = !hasSlideInSelection;\r\n\t\tlet isExtendSlide = hasSelection && !allSelectedIsSlide;\r\n\t\tlet isRemoveSlide = allSelectedIsSlide;\r\n\r\n\t\tlet rightToLeftExtension = isExtendSlide && firstElementIsSlide && !lastElementIsSlide;\r\n\t\tlet middleExtension = isExtendSlide && firstElementIsSlide && lastElementIsSlide;\r\n\r\n\t\tif (isAddSlide) {\r\n\t\t\tbubbleWidth = 95;\r\n\t\t\tmessage = \"Add Slide\";\r\n\t\t\taction = SlideAction.Add;\r\n\t\t} else if (isExtendSlide) {\r\n\t\t\tbubbleWidth = 120;\r\n\t\t\tmessage = \"Extend Slide\";\r\n\t\t\tif (rightToLeftExtension) {\r\n\t\t\t\taction = SlideAction.RightToLeftExtend;\r\n\t\t\t} else if (middleExtension) {\r\n\t\t\t\taction = SlideAction.MiddleExtend;\r\n\t\t\t} else {\r\n\t\t\t\taction = SlideAction.LeftToRightExtend;\r\n\t\t\t}\r\n\t\t} else if (isRemoveSlide) {\r\n\t\t\tbubbleWidth = 130;\r\n\t\t\tmessage = \"Remove Slide\";\r\n\t\t\taction = SlideAction.Remove;\r\n\t\t}\r\n\r\n\t\tlet selectionLocation = window.getSelection()!.getRangeAt(0).getBoundingClientRect();\r\n\t\tif (mobile) {\r\n\t\t\tlet mobile: MobileFormatBubbleSettings = {\r\n\t\t\t\tright: 5 + (iOS ? 0 : 50),\r\n\t\t\t\ttop: selectionLocation.top - 2,\r\n\t\t\t\taction,\r\n\t\t\t};\r\n\t\t\treturn mobile;\r\n\t\t} else {\r\n\t\t\tlet desktop: DesktopFormatBubbleSettings = {\r\n\t\t\t\tleft: (selectionLocation.left + selectionLocation.left + selectionLocation.width - bubbleWidth) / 2,\r\n\t\t\t\ttop: selectionLocation.top > 150 ? selectionLocation.top - 50 : selectionLocation.top + 30,\r\n\t\t\t\twidth: bubbleWidth,\r\n\t\t\t\tmessage: message,\r\n\t\t\t\taction,\r\n\t\t\t\tisBolded: CkEditorHelper.isAttributeActionActive(selections, \"bold\"),\r\n\t\t\t\tisItalic: CkEditorHelper.isAttributeActionActive(selections, \"italic\"),\r\n\t\t\t\tisUnderlined: CkEditorHelper.isAttributeActionActive(selections, \"underline\"),\r\n\t\t\t\tinvertArrowDirection: selectionLocation.top < 150,\r\n\t\t\t};\r\n\t\t\treturn desktop;\r\n\t\t}\r\n\t},\r\n\tcheckIfClipBoardContainsText: async () => {\r\n\t\tlet copiedText = await (window.navigator as any).clipboard.readText();\r\n\t\tif (copiedText && copiedText.length > 0) {\r\n\t\t\treturn copiedText;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t},\r\n\texecuteSlideAction: (slideAction: SlideAction, editor: Editor) => {\r\n\t\tif (slideAction === SlideAction.MiddleExtend) {\r\n\t\t\treturn onMiddleSlideExtend(editor);\r\n\t\t} else if (slideAction === SlideAction.RightToLeftExtend) {\r\n\t\t\treturn onRightToLeftSlideExtend(editor);\r\n\t\t} else {\r\n\t\t\treturn onToggleSlide(slideAction, editor);\r\n\t\t}\r\n\t},\r\n\tgetTextFromSelections: (selections: CkEditorSelection[]) => {\r\n\t\tlet data: string[] = [];\r\n\t\tselections.forEach((selection: CkEditorSelection) => {\r\n\t\t\tvisit(selection, gatherSentences);\r\n\r\n\t\t\tfunction gatherSentences(selection: CkEditorSelection) {\r\n\t\t\t\tif (selection.data) {\r\n\t\t\t\t\tdata.push(selection.data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn data.join(\" \");\r\n\t},\r\n};\r\n\r\nconst getContentSeperatedByLine = (editorSlide: EditorSlide, maxLen: number) => {\r\n\tconst MAX_LINE_LENGTH = maxLen;\r\n\tlet lines: string[] = [];\r\n\tlet lineNum = 0;\r\n\teditorSlide.domSlides.forEach((domSlide, index, domSlideArray) => {\r\n\t\tlet { content, isBlockQuote, isOrderedList, isUnorderedList } = domSlide;\r\n\t\tlet contentLength = content.length;\r\n\r\n\t\tif (lines[lineNum] === undefined) {\r\n\t\t\tlines[lineNum] = \"\";\r\n\t\t}\r\n\r\n\t\tif (isOrderedList || isUnorderedList) {\r\n\t\t\tif (domSlideArray[index + 1] === undefined) {\r\n\t\t\t\tif (domSlideArray[index - 1] !== undefined && domSlide.bulletNumber === domSlideArray[index - 1].bulletNumber) {\r\n\t\t\t\t\tlines[lineNum] += content;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlines[lineNum + 1] = content;\r\n\t\t\t\t\tlineNum += 2;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (domSlide.bulletNumber === domSlideArray[index + 1].bulletNumber) {\r\n\t\t\t\tif (domSlideArray[index - 1] !== undefined && domSlide.bulletNumber !== domSlideArray[index - 1].bulletNumber) {\r\n\t\t\t\t\tlineNum++;\r\n\t\t\t\t\tlines[lineNum] = \"\";\r\n\t\t\t\t}\r\n\t\t\t\tlines[lineNum] += content;\r\n\t\t\t} else if (domSlideArray[index - 1] !== undefined && domSlide.bulletNumber === domSlideArray[index - 1].bulletNumber) {\r\n\t\t\t\tlines[lineNum] += content;\r\n\t\t\t\tlineNum++;\r\n\t\t\t} else {\r\n\t\t\t\tif (lines[lineNum] !== \"\") {\r\n\t\t\t\t\tlineNum++;\r\n\t\t\t\t\tlines[lineNum] = \"\";\r\n\t\t\t\t}\r\n\t\t\t\tlines[lineNum] = content;\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isBlockQuote) {\r\n\t\t\tif (lines[lineNum].length > 0) {\r\n\t\t\t\tlines[lineNum + 1] = content;\r\n\t\t\t\tlineNum += 2;\r\n\t\t\t} else {\r\n\t\t\t\tlines[lineNum] = content;\r\n\t\t\t\tlineNum++;\r\n\t\t\t}\r\n\t\t\tlines[lineNum] = \"\";\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (contentLength > MAX_LINE_LENGTH || contentLength + lines[lineNum].length > MAX_LINE_LENGTH) {\r\n\t\t\tlet words = content.split(\" \");\r\n\t\t\twords.forEach((word) => {\r\n\t\t\t\tif (word.length + lines[lineNum].length < MAX_LINE_LENGTH) {\r\n\t\t\t\t\tlines[lineNum] += word + \" \";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlineNum++;\r\n\t\t\t\t\tlines[lineNum] = word + \" \";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tlines[lineNum] += content;\r\n\t\t}\r\n\t});\r\n\r\n\tif (lines[lines.length - 1] === \"\") {\r\n\t\tlines.splice(lines.length - 1, 1);\r\n\t}\r\n\r\n\treturn lines;\r\n};\r\n\r\nconst getSlideLineChars = (contentLines: string[], editorSlide: EditorSlide) => {\r\n\tlet indexCorrectedLinesSplitIntoChars = getIndexCorrectedLineChars(contentLines);\r\n\tlet indexCorrectedDomSlideStyles = getIndexCorrectedStyles(editorSlide.domSlides);\r\n\r\n\tindexCorrectedDomSlideStyles.forEach((style) => {\r\n\t\tlet styleIndexStart = style.indexStart;\r\n\t\tlet styleIndexEnd = style.indexEnd;\r\n\r\n\t\tindexCorrectedLinesSplitIntoChars.forEach((line) => {\r\n\t\t\tconst lastIndex = line.lineChars.length - 1;\r\n\t\t\tlet lastChar = line.lineChars[lastIndex];\r\n\t\t\tlet firstChar = line.lineChars[0];\r\n\t\t\tif (lastChar === undefined || firstChar === undefined) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet lineIndexEnd = lastChar.indexInContent;\r\n\t\t\tlet lineIndexStart = firstChar.indexInContent;\r\n\r\n\t\t\tif (style.style === \"orderedList\") {\r\n\t\t\t\tif (lineIndexStart === styleIndexStart && lineIndexEnd === styleIndexEnd) {\r\n\t\t\t\t\tline.isOrderedList = true;\r\n\t\t\t\t}\r\n\t\t\t} else if (style.style === \"unorderedList\") {\r\n\t\t\t\tif (lineIndexStart === styleIndexStart && lineIndexEnd === styleIndexEnd) {\r\n\t\t\t\t\tline.isUnorderedList = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (style.style === \"blockQuote\") {\r\n\t\t\t\tif (lineIndexStart === styleIndexStart && lineIndexEnd === styleIndexEnd) {\r\n\t\t\t\t\tline.isBlockQuote = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (style.style === \"textAlignment\" && isValidAlignmentString(style.alignment)) {\r\n\t\t\t\tline.textAlignment = style.alignment;\r\n\t\t\t}\r\n\r\n\t\t\tif (style.style === \"blockTag\" && style.blockTag !== undefined) {\r\n\t\t\t\tline.blockTag = style.blockTag;\r\n\t\t\t}\r\n\r\n\t\t\tline.lineChars.forEach((char) => {\r\n\t\t\t\tif (char.indexInContent !== undefined && char.indexInContent <= styleIndexEnd && char.indexInContent >= styleIndexStart) {\r\n\t\t\t\t\tif (style.style === \"bold\") {\r\n\t\t\t\t\t\tchar.isBold = true;\r\n\t\t\t\t\t} else if (style.style === \"italic\") {\r\n\t\t\t\t\t\tchar.isItalics = true;\r\n\t\t\t\t\t} else if (style.style === \"underline\") {\r\n\t\t\t\t\t\tchar.isUnderlined = true;\r\n\t\t\t\t\t} else if (style.style === \"backgroundColor\") {\r\n\t\t\t\t\t\tchar.backgroundColor = style.colorAsHex;\r\n\t\t\t\t\t} else if (style.style === \"fontFamily\" && style.fontFamily !== undefined) {\r\n\t\t\t\t\t\tchar.fontFamily = style.fontFamily;\r\n\t\t\t\t\t} else if (style.style === \"fontSize\" && style.fontSize !== undefined) {\r\n\t\t\t\t\t\tchar.fontSize = style.fontSize;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n\r\n\treturn indexCorrectedLinesSplitIntoChars;\r\n};\r\n\r\nconst getIndexCorrectedLineChars = (contentLines: string[]) => {\r\n\tlet trueIndex = 0;\r\n\tlet correctedChars = contentLines.map((line) => {\r\n\t\tlet chars = line.split(\"\");\r\n\t\tlet indexCorrectedChars = chars.map((char) => {\r\n\t\t\tlet indexCorrectedChar: SlideLineChar = {\r\n\t\t\t\tchar,\r\n\t\t\t\tindexInContent: trueIndex,\r\n\t\t\t\tisBold: false,\r\n\t\t\t\tisItalics: false,\r\n\t\t\t\tisUnderlined: false,\r\n\t\t\t\tfontFamily: \"Arial\",\r\n\t\t\t};\r\n\t\t\ttrueIndex++;\r\n\r\n\t\t\treturn indexCorrectedChar;\r\n\t\t});\r\n\r\n\t\tlet slideLine: SlideLine = {\r\n\t\t\tlineChars: indexCorrectedChars,\r\n\t\t\tindentLeft: false,\r\n\t\t\tindentRight: false,\r\n\t\t\tisBlockQuote: false,\r\n\t\t\tisOrderedList: false,\r\n\t\t\tisUnorderedList: false,\r\n\t\t\ttextAlignment: undefined,\r\n\t\t};\r\n\r\n\t\treturn slideLine;\r\n\t});\r\n\r\n\treturn correctedChars;\r\n};\r\n\r\nconst getIndexCorrectedStyles = (slides: DomSlide[]) => {\r\n\tlet bulletStartIndex: number | undefined = undefined;\r\n\tlet bulletContentAccumulator = \"\";\r\n\tlet bulletContent = \"\";\r\n\tlet domSlideWithCombinedIndexCorrectedStyles = slides.reduce(\r\n\t\t(accumulator, currentSlide, index, slideArray) => {\r\n\t\t\tif (currentSlide.bulletNumber !== undefined) {\r\n\t\t\t\tlet next = slideArray[index + 1];\r\n\t\t\t\tlet prev = slideArray[index - 1];\r\n\t\t\t\tif (next !== undefined && next.bulletNumber === currentSlide.bulletNumber) {\r\n\t\t\t\t\tbulletContent += currentSlide.content;\r\n\t\t\t\t\tif (bulletStartIndex === undefined) {\r\n\t\t\t\t\t\tbulletStartIndex = bulletContentAccumulator.length === 0 ? 0 : bulletContentAccumulator.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbulletContentAccumulator += currentSlide.content;\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tprev !== undefined &&\r\n\t\t\t\t\tprev.bulletNumber === currentSlide.bulletNumber &&\r\n\t\t\t\t\t(next === undefined || next.bulletNumber !== currentSlide.bulletNumber)\r\n\t\t\t\t) {\r\n\t\t\t\t\tbulletContentAccumulator += currentSlide.content;\r\n\t\t\t\t\tbulletContent += currentSlide.content;\r\n\r\n\t\t\t\t\tlet listStyle = currentSlide.styles.filter((style) => style.style === \"unorderedList\" || style.style === \"orderedList\")[0];\r\n\t\t\t\t\tlistStyle.content = bulletContent;\r\n\t\t\t\t\tlistStyle.indexEnd = bulletContentAccumulator.length - 1;\r\n\t\t\t\t\tlistStyle.indexStart = bulletStartIndex !== undefined ? bulletStartIndex : listStyle.indexStart;\r\n\t\t\t\t\taccumulator.styles = accumulator.styles.concat(listStyle);\r\n\r\n\t\t\t\t\tbulletContent = \"\";\r\n\t\t\t\t\tbulletStartIndex = undefined;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet listStyle = currentSlide.styles.filter((style) => style.style === \"unorderedList\" || style.style === \"orderedList\")[0];\r\n\t\t\t\t\tlistStyle.indexStart = bulletContentAccumulator.length;\r\n\t\t\t\t\tlistStyle.indexEnd = listStyle.indexStart + currentSlide.content.length - 1;\r\n\r\n\t\t\t\t\taccumulator.styles = accumulator.styles.concat(listStyle);\r\n\r\n\t\t\t\t\tbulletContentAccumulator += currentSlide.content;\r\n\t\t\t\t\tbulletContent = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet stylesWithoutListStyles = currentSlide.styles.filter((style) => style.style !== \"unorderedList\" && style.style !== \"orderedList\");\r\n\t\t\tlet correctedIndexStyles = stylesWithoutListStyles.map((style) => {\r\n\t\t\t\tstyle.indexStart += accumulator.content.length ?? 0;\r\n\t\t\t\tstyle.indexEnd += accumulator.content.length - 1 ?? 0;\r\n\t\t\t\treturn style;\r\n\t\t\t});\r\n\t\t\taccumulator.styles = accumulator.styles.concat(correctedIndexStyles);\r\n\t\t\taccumulator.content = accumulator.content + currentSlide.content;\r\n\t\t\treturn accumulator;\r\n\t\t},\r\n\t\t{ id: \"\", html: \"\", content: \"\", styles: [] }\r\n\t);\r\n\r\n\treturn domSlideWithCombinedIndexCorrectedStyles.styles;\r\n};\r\n\r\nconst onToggleSlide = (action: SlideAction, editor: Editor) => {\r\n\teditor.execute(\"addSlide\");\r\n\tlet editorData = editor.getData();\r\n\tlet slides = CkEditorHelper.getSlides(editorData);\r\n\tlet slideCount = slides.length;\r\n\tif (action === SlideAction.Add) {\r\n\t\tEventTracking.Builder.onAddSlide(slideCount);\r\n\t} else if (action === SlideAction.LeftToRightExtend) {\r\n\t\tEventTracking.Builder.onExtendSlide(slideCount);\r\n\t} else {\r\n\t\tEventTracking.Builder.onRemoveSlide(slideCount);\r\n\t}\r\n\r\n\treturn slides;\r\n};\r\n\r\nconst onRightToLeftSlideExtend = (editor: Editor) => {\r\n\teditor.execute(\"addSlide\");\r\n\teditor.execute(\"addSlide\");\r\n\teditor.editing.view.focus();\r\n\r\n\tlet editorData = editor.getData();\r\n\tlet slides = CkEditorHelper.getSlides(editorData);\r\n\tlet slideCount = slides.length;\r\n\tEventTracking.Builder.onExtendSlide(slideCount);\r\n\r\n\treturn slides;\r\n};\r\n\r\nconst onMiddleSlideExtend = (editor: Editor) => {\r\n\teditor.execute(\"addSlide\");\r\n\teditor.execute(\"addSlide\");\r\n\r\n\tlet editorData = editor.getData();\r\n\tlet slides = CkEditorHelper.getSlides(editorData);\r\n\tlet slideCount = slides.length;\r\n\tEventTracking.Builder.onExtendSlide(slideCount);\r\n\treturn slides;\r\n};\r\n","import React from \"react\";\r\nimport AppConfig from \"../../entities/AppConfig\";\r\nimport { ApplicationUser } from \"../../entities/ApplicationUser\";\r\nimport {AssetWritingLogs} from \"../../entities/AssetWritingLogs\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { BuilderPreferences } from \"../../entities/BuilderPreferences\";\r\nimport { BuilderActionLocations } from \"../../utilities/Tracking/EventTracking\";\r\n\r\nexport enum BuilderAppBarAction {\r\n\tGoBack,\r\n\tPresent,\r\n\tShare,\r\n SaveAsTemplate\r\n}\r\n\r\nexport type SelectedContent =\r\n\t| { type: \"Sermon\"; selectedSermonId: string }\r\n\t| { type: \"Illustration\"; selectedIllustrationId: string }\r\n\t| { type: \"Bible Verse\"; selectedScriptureReference: string };\r\n\r\nexport interface BuilderState {\r\n\tbuilderAsset: BuilderAsset;\r\n\tsetBuilderAsset: (builderAsset: BuilderAsset) => void;\r\n\tpreferences: BuilderPreferences;\r\n savePreferences: (preferences: BuilderPreferences) => void;\r\n customImageBase64Content?: string;\r\n setCustomImageBase64Content: (content: string) => void;\r\n handleAppBarAction: (action: BuilderAppBarAction, location:BuilderActionLocations) => void;\r\n handleContentDetailSelection: (selectedContent: SelectedContent) => void;\r\n copyToClipboard: (content: string, type: \"Sermon\" | \"Illustration\" | \"Verse\") => void;\r\n showShareDialog: (fromSlides: boolean, location:BuilderActionLocations) => void;\r\n setAlert: (message: string) => void;\r\n writingLogs: AssetWritingLogs;\r\n refreshWritingLog: () => void;\r\n toggleSlideExportDialog: (location:BuilderActionLocations) => void;\r\n\r\n // These should really come from a global context\r\n appConfig: AppConfig;\r\n user?: ApplicationUser | null;\r\n}\r\n\r\nexport const BuilderContext = React.createContext({} as any);\r\n\r\nexport function useBuilder() {\r\n\treturn React.useContext(BuilderContext);\r\n}\r\n","import visit from 'unist-util-visit';\r\nimport stringify from 'nlcst-to-string';\r\nimport { TextAnalysis, TextAnalysisCategory, TextAnalysisResult } from '../SermonAnalyzer';\r\n\r\nexport default function ConsecutiveSentences() {\r\n\r\n let totalSentanceCount:number = 0;\r\n let repeatFirstWordCount:number = 0;\r\n let previousFirstword:string = '';\r\n\r\n \r\n return transformer\r\n \r\n function transformer(tree: any, file: any) {\r\n \r\n visit(tree, 'SentenceNode', search)\r\n \r\n function search(sentence: any) { \r\n let firstword:string = stringify(sentence.children[0]);\r\n\r\n if(firstword === previousFirstword){\r\n repeatFirstWordCount++;\r\n };\r\n \r\n previousFirstword = firstword;\r\n\r\n totalSentanceCount++;\r\n \r\n return visit.SKIP;\r\n };\r\n\r\n if(totalSentanceCount === 0){\r\n return;\r\n }\r\n \r\n let consecutiveFirstWord:TextAnalysis = getConsecutiveSentenceText(Math.round((repeatFirstWordCount / totalSentanceCount) * 100));\r\n \r\n if(consecutiveFirstWord.result === TextAnalysisResult.improvement){\r\n file.improvements.push(consecutiveFirstWord);\r\n } else { \r\n file.goodResults.push(consecutiveFirstWord);\r\n };\r\n };\r\n\r\n function getConsecutiveSentenceText(percentage:number) {\r\n let result:TextAnalysis = {title: TextAnalysisCategory.consecutive_sentences, displayText: \"\", helperText: \"Percentage based on number of complete sentences that have the same beginning word as the previous sentence\"};\r\n if (percentage >= 25) {\r\n result.displayText = `Hmm, it seems like ${percentage}% of your sentences begin with the same word. This may not be an issue, but consider changing things up to create diversity.`\r\n result.result = TextAnalysisResult.improvement;\r\n } else {\r\n result.displayText = \"Great job, the sentences in your sermon are diverse and attention-grabbing.\";\r\n result.result = TextAnalysisResult.goodResult;\r\n };\r\n return result;\r\n };\r\n};\r\n\r\n\r\n\r\n","import visit from 'unist-util-visit';\r\nimport stringify from 'nlcst-to-string';\r\n\r\nexport default function GradeLevel() {\r\n const minimumWordsPerSentence:number = 4;\r\n \r\n let ariScore:number[] = [];\r\n\r\n return transformer\r\n \r\n function transformer(tree: any, file: any) {\r\n visit(tree, 'SentenceNode', gather);\r\n \r\n function gather(sentence: any) {\r\n let wordCount:number = 0;\r\n let letters:number = 0;\r\n let counts;\r\n\r\n visit(sentence, 'WordNode', visitor);\r\n\r\n if (wordCount >= minimumWordsPerSentence) {\r\n counts = {\r\n sentence: 1,\r\n word: wordCount,\r\n character: letters,\r\n letter: letters\r\n };\r\n\r\n ariScore.push(ari(counts));\r\n };\r\n\r\n return visit.SKIP\r\n\r\n function visitor(node: any) {\r\n let value:string = stringify(node)\r\n wordCount++;\r\n letters += value.length;\r\n }\r\n }\r\n\r\n let gradeLevel:number = ariScore.length > 0 ? Math.round(Math.floor((ariScore.reduce((a,b) => a + b)) / ariScore.length)) : 0;\r\n\r\n file.gradeLevel = getGradeText(gradeLevel);\r\n }\r\n\r\n function getGradeText (age:number){\r\n switch (age) {\r\n case (14): return \"Professional\";\r\n case (13): return \"College student\";\r\n case (12): return \"12th grade\";\r\n case (11): return \"11th grade\";\r\n case (10): return \"10th grade\";\r\n case (9): return \"9th grade\";\r\n case (8): return \"8th grade\";\r\n case (7): return \"7th grade\";\r\n case (6): return \"6th grade\";\r\n case (5): return \"5th grade\";\r\n case (4): return \"4th grade\";\r\n case (3): return \"3rd grade\";\r\n case (2): return \"2nd grade\";\r\n case (1): return \"1st grade\";\r\n default: return \"Grade Level not available\";\r\n }\r\n }\r\n \r\n function ari(counts:any){\r\n let characterWeight:number = 4.71;\r\n let sentenceWeight:number = 0.5;\r\n let base:number = 21.43;\r\n \r\n if (!counts || !counts.sentence || !counts.word || !counts.character) {\r\n return NaN;\r\n };\r\n \r\n return (\r\n characterWeight * (counts.character / counts.word) +\r\n sentenceWeight * (counts.word / counts.sentence) -\r\n base\r\n );\r\n };\r\n};\r\n\r\n","import visit from 'unist-util-visit';\r\nimport { TextAnalysis, TextAnalysisCategory, TextAnalysisResult } from '../SermonAnalyzer';\r\n\r\nexport default function SentenceLength() {\r\n const maxSentenceWordCount = 20;\r\n\r\n let totalSentanceCount:number = 0;\r\n let hardSentences:number = 0;\r\n\r\n return transformer\r\n \r\n function transformer(tree: any, file: any) {\r\n \r\n visit(tree, 'SentenceNode', gather)\r\n \r\n function gather(sentence: any) {\r\n \r\n totalSentanceCount++;\r\n let sentenceWordCount = 0;\r\n\r\n visit(sentence, 'WordNode', countWords)\r\n\r\n if(sentenceWordCount >= maxSentenceWordCount){\r\n hardSentences++;\r\n };\r\n\r\n return visit.SKIP\r\n \r\n function countWords(node: any) {\r\n sentenceWordCount++;\r\n }\r\n }\r\n \r\n if(totalSentanceCount === 0){\r\n return;\r\n }\r\n\r\n let sentenceLength = getHardSentenceText(Math.round((hardSentences / totalSentanceCount) * 100));\r\n\r\n if(sentenceLength.result === TextAnalysisResult.improvement){\r\n file.improvements.push(sentenceLength);\r\n } else {\r\n file.goodResults.push(sentenceLength);\r\n }\r\n }\r\n\r\n function getHardSentenceText (percentage:number){\r\n let result:TextAnalysis = {title: TextAnalysisCategory.sentence_length, displayText: \"\", helperText: \"Percentage based on number of complete sentences containing 20 or more words\"};\r\n if (percentage > 25) {\r\n result.displayText = `It looks like ${percentage}% of your sentences are longer than expected. We recommend keeping sentences short and to the point. To improve your sermon, write sentences with fewer than 20 words.`;\r\n result.result = TextAnalysisResult.improvement;\r\n } else {\r\n result.displayText = \"Congrats, your average sentence length looks perfect.\";\r\n result.result = TextAnalysisResult.goodResult;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import visit from 'unist-util-visit';\r\nimport { TextAnalysis, TextAnalysisCategory, TextAnalysisResult } from '../SermonAnalyzer';\r\n\r\nexport default function ParagraphLength() {\r\n const recommendedParagrahLength = 6;\r\n\r\n let totalParagraphCount:number = 0;\r\n let longParagraphCount:number = 0;\r\n\r\n return transformer;\r\n \r\n function transformer(tree: any, file: any) {\r\n\r\n visit(tree, \"ParagraphNode\", increment);\r\n \r\n function increment(paragraph:any) {\r\n let sentenceCount:number = paragraph.children.filter((c:any) => c.type === \"SentenceNode\" ).length;\r\n \r\n if(sentenceCount > recommendedParagrahLength) {\r\n longParagraphCount++;\r\n };\r\n\r\n totalParagraphCount++;\r\n \r\n return visit.SKIP\r\n }\r\n \r\n if(totalParagraphCount === 0){\r\n return;\r\n }\r\n\r\n let longParagraphs:TextAnalysis = getLongParagraphText(Math.round((longParagraphCount / totalParagraphCount) * 100));\r\n\r\n if(longParagraphs.result === TextAnalysisResult.improvement){\r\n file.improvements.push(longParagraphs);\r\n } else {\r\n file.goodResults.push(longParagraphs);\r\n };\r\n };\r\n \r\n function getLongParagraphText(percentage:number){\r\n let result:TextAnalysis = {title: TextAnalysisCategory.paragraph_length, displayText: \"\", helperText: \"Percentage based on number of paragraphs that have 6 or more complete sentences\"};\r\n if (percentage > 25) {\r\n result.displayText = `${percentage}% of your paragraphs contain more than 6 sentences, which is more than the recommended maximum of 25%.`;\r\n result.result = TextAnalysisResult.improvement;\r\n } else {\r\n result.displayText = \"Great! None of your paragraphs are too long.\";\r\n result.result = TextAnalysisResult.goodResult;\r\n }\r\n return result;\r\n }\r\n}\r\n","import visit from 'unist-util-visit';\r\nimport search from 'nlcst-search'\r\nimport findAfter from 'unist-util-find-after';\r\nimport { TextAnalysis, TextAnalysisCategory, TextAnalysisResult } from '../SermonAnalyzer';\r\n\r\nexport default function PassiveVoice() {\r\n\r\n\tlet verbs: string[] = ['am', 'are', 'were', 'being', 'is', 'been', 'was', 'be', \"got\"]\r\n\tlet passiveVoiceCount: number = 0;\r\n \tlet totalSentanceCount: number = 0;\r\n\r\n\treturn transformer;\r\n\r\n\tfunction transformer(tree: any, file: any) {\r\n\t\tsearch(tree, verbs, searcher);\r\n\r\n\t\tfunction searcher(match: any, index: any, parent: any, phrase: any) {\r\n\t\t\tlet nodeAfter = findAfter(parent, index, \"WordNode\");\r\n\r\n\t\t\tif (!nodeAfter) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (nodeAfter.data.partOfSpeech === \"VBN\") {\r\n\t\t\t\tpassiveVoiceCount++\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvisit(tree, 'SentenceNode', increment)\r\n\r\n\t\tfunction increment(sentence: any) {\r\n\t\t\ttotalSentanceCount++;\r\n\t\t\treturn visit.SKIP\r\n\t\t}\r\n\r\n\t\tif (totalSentanceCount === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet passiveAvg: number = Math.round((passiveVoiceCount / totalSentanceCount) * 100);\r\n\r\n\t\tlet passivePercentage: TextAnalysis = getPassiveText(passiveAvg);\r\n\r\n\t\tif (passivePercentage.result === TextAnalysisResult.improvement) {\r\n\t\t\tfile.improvements.push(passivePercentage);\r\n\t\t} else {\r\n\t\t\tfile.goodResults.push(passivePercentage)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getPassiveText(percentage: number) {\r\n\t\tlet result: TextAnalysis = { title: TextAnalysisCategory.passive_voice, displayText: \"\", helperText: \"Passive voice is calulated using the form of “to be” + past participle\"};\r\n\t\t\r\n\t\tif (percentage > 10) {\r\n\t\t\tresult.displayText = `${percentage}% of your sentences contain passive voice. Instead, try to use active words and sentences to make your preaching stronger, more direct, and more active.`;\r\n\t\t\tresult.result = TextAnalysisResult.improvement;\r\n\t\t} else if (percentage === 0) {\r\n\t\t\tresult.displayText = `Great! None of your sentences contain passive voice.`;\r\n\t\t\tresult.result = TextAnalysisResult.goodResult;\r\n\t\t} else {\r\n\t\t\tresult.displayText = `Great work, only ${percentage}% of your sentences contain passive voice. You’re using active expressions in your sermon which means you’re crafting a message for big impact. Keep going!`;\r\n\t\t\tresult.result = TextAnalysisResult.goodResult;\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import visit from 'unist-util-visit';\r\nimport stringify from 'nlcst-to-string';\r\nimport syllable from 'syllable';\r\nimport { TextAnalysis, TextAnalysisCategory, TextAnalysisResult } from '../SermonAnalyzer';\r\n\r\nexport default function ReadingScore() {\r\n\r\n const minWords:number = 4;\r\n\r\n let fleschScore:number[] = [];\r\n\r\n return transformer;\r\n \r\n function transformer(tree: any, file: any) {\r\n visit(tree, 'SentenceNode', gather);\r\n \r\n function gather(sentence: any) {\r\n let totalSyllables:number = 0;\r\n let wordCount:number = 0;\r\n let counts;\r\n\r\n visit(sentence, 'WordNode', visitor)\r\n\r\n if (wordCount >= minWords) {\r\n counts = {\r\n syllable: totalSyllables,\r\n sentence: 1,\r\n word: wordCount,\r\n };\r\n\r\n fleschScore.push(flesch(counts));\r\n }\r\n\r\n return visit.SKIP\r\n\r\n function visitor(node: any) {\r\n let value:string = stringify(node);\r\n let syllables:number = syllable(value);\r\n wordCount++;\r\n totalSyllables += syllables;\r\n }\r\n }\r\n \r\n let fleschAvg:number = fleschScore.length > 0 ? Math.round(Math.floor((fleschScore.reduce((a,b) => a + b)) / fleschScore.length)) : 0;\r\n\r\n let readingEase:TextAnalysis = getReadingScoreText(fleschAvg);\r\n\r\n if(readingEase.result === TextAnalysisResult.improvement){ \r\n file.improvements.push(readingEase);\r\n } else { \r\n file.goodResults.push(readingEase);\r\n }\r\n }\r\n \r\n function getReadingScoreText(score:number) {\r\n let result:TextAnalysis = {title: TextAnalysisCategory.flesch_reading_ease, displayText: \"\", helperText: \"Reading score calculated using the Flesch Reading Ease scale\"};\r\n if(score < 60) {\r\n result.displayText = `Uh oh, it looks like your sermon may be difficult to read. Remember to keep paragraphs short, somewhere around five sentences. Include more action words, write shorter sentences, and try to keep your thoughts simple and clear.`;\r\n result.result = TextAnalysisResult.improvement;\r\n } else { \r\n result.displayText = `Nicely done, it looks like your sermon is easy to read. You’ve kept paragraphs short, with clear and simple sentences. Keep up the good work.`;\r\n result.result = TextAnalysisResult.goodResult;\r\n }\r\n return result;\r\n }\r\n\r\n function flesch(counts:any){\r\n let sentenceWeight = 1.015\r\n let wordWeight = 84.6\r\n let base = 206.835\r\n \r\n if (!counts || !counts.sentence || !counts.word || !counts.syllable) {\r\n return NaN\r\n }\r\n \r\n return (\r\n base -\r\n sentenceWeight * (counts.word / counts.sentence) -\r\n wordWeight * (counts.syllable / counts.word)\r\n )\r\n }\r\n}","import visit from 'unist-util-visit';\r\nimport stringify from 'nlcst-to-string';\r\nimport { TextAnalysis, TextAnalysisCategory, TextAnalysisResult } from '../SermonAnalyzer';\r\n\r\nexport default function ScriptureSaturation() {\r\n\r\n const scriptureRegex = `(?:Genesis|1 Kings|2 Kings|1 Timothy|2 Timothy|1 Peter|2 Peter|1 Samuel|2 Samuel|1 John|2 John|3 John|1 Chronicles|2 Chronicles|1 Corinthians|2 Corinthians|1 Thessalonians|2 Thessalonians|I Kings|II Kings|I Timothy|II Timothy|I Peter|II Peter|I Samuel|II Samuel|I John|II John|III John|I Chronicles|II Chronicles|I Corinthians|II Corinthians|I Thessalonians|Thessalonians|Exodus|Leviticus|Numbers|Deuteronomy|Joshua|Judges|Ruth|Ezra|Nehemiah|Esther|Job|Psalms?|Proverbs?|Ecclesiastes|Songs? of Solomon|Song of Songs|Isaiah|Jeremiah|Lamentations|Ezekiel|Daniel|Hosea|Joel|Amos|Obadiah|Jonah|Micah|Nahum|Habakkuk|Zephaniah|Haggai|Zechariah|Malachi|Matt|Matthew|Mark|Luke|John|Acts?|Acts of the Apostles|Romans|Galatians|Ephesians|Phil+ippians|Colossians|Titus|Philemon|Hebrews|James|Jude|Revelations?)\\\\s\\\\d{1,3}(?::\\\\d{1,3})?(?:\\\\s?(?:[-&]\\\\s?(?:\\\\d{1,3}:)?\\\\d+))*`;\r\n const scriptureReferenceRegex = new RegExp(scriptureRegex, \"gi\");\r\n\r\n let scriputreReferences:string[] = [];\r\n let scriptureReferenceCount:number = 0;\r\n let totalWordCount:number = 0;\r\n\r\n return transformer;\r\n \r\n function transformer(tree: any, file: any) {\r\n visit(tree, 'SentenceNode', gather);\r\n \r\n function gather(sentence: any) {\r\n let value:string = stringify(sentence);\r\n \r\n if(scriptureReferenceRegex.test(value)){\r\n scriptureReferenceCount++;\r\n \r\n let refs = value.match(scriptureReferenceRegex);\r\n \r\n if (refs !== null){\r\n refs.forEach( ref => scriputreReferences.push(ref));\r\n }\r\n }\r\n\r\n totalWordCount += sentence.children.filter((c:any) => c.type === \"WordNode\" ).length;\r\n return visit.SKIP;\r\n }\r\n\r\n let scriptureReferenceAvg:number = scriptureReferenceCount > 0 ? scriptureReferenceCount / totalWordCount : 0;\r\n\r\n let scriptureSaturation = getScriptureSaturation(scriptureReferenceAvg);\r\n \r\n if(scriptureSaturation.result === TextAnalysisResult.improvement){ \r\n file.improvements.push(scriptureSaturation);\r\n } else { \r\n file.goodResults.push(scriptureSaturation);\r\n }\r\n\r\n file.scriptureReferences = scriputreReferences;\r\n }\r\n \r\n function getScriptureSaturation(percentage:number){\r\n let result:TextAnalysis = {title: TextAnalysisCategory.scripture_saturation, displayText: '', helperText: \"Based on the number of Scripture references found\"};\r\n if (percentage === 0) { \r\n result.result = TextAnalysisResult.improvement;\r\n result.color = \"#ff0000\" ;\r\n result.displayText = \"No Scripture\";\r\n } else if (percentage >= .01) {\r\n result.result = TextAnalysisResult.goodResult;\r\n result.color = \"#006600\";\r\n result.displayText = \"Heavy Scripture\";\r\n } else if (percentage >= .004) {\r\n result.result = TextAnalysisResult.goodResult;\r\n result.color = \"#009900\";\r\n result.displayText = \"Solid Scripture\";\r\n } else if (percentage >= .001) {\r\n result.result = TextAnalysisResult.goodResult;\r\n result.color = \"#00ff00\" ;\r\n result.displayText = \"Light Scripture\";\r\n } else {\r\n result.result = TextAnalysisResult.improvement;\r\n result.color = \"#ff0000\" ;\r\n result.displayText = \"Needs Scripture\";\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n\r\n","import visit from 'unist-util-visit';\r\nimport stringify from 'nlcst-to-string';\r\nimport transistionalWords from './TransitionalWords.json';\r\nimport { TextAnalysis, TextAnalysisCategory, TextAnalysisResult } from '../SermonAnalyzer';\r\n\r\n\r\nexport default function TransitionalWords() {\r\n let transitionalWordRegex = new RegExp(transistionalWords.join('|'), 'gi');\r\n\r\n let totalSentanceCount:number = 0;\r\n let transitionalPhraseCount:number = 0;\r\n\r\n return transformer\r\n \r\n function transformer(tree: any, file: any) {\r\n \r\n visit(tree, 'SentenceNode', search);\r\n \r\n function search(sentence: any) {\r\n let value:string = stringify(sentence);\r\n \r\n if(transitionalWordRegex.test(value)){\r\n transitionalPhraseCount++;\r\n }\r\n \r\n totalSentanceCount++;\r\n \r\n return visit.SKIP;\r\n }\r\n\r\n if(totalSentanceCount === 0){\r\n return;\r\n }\r\n \r\n let transitionalWords:TextAnalysis = getTransitionalWordText(Math.round((transitionalPhraseCount / totalSentanceCount) * 100));\r\n \r\n if(transitionalWords.result === TextAnalysisResult.improvement){\r\n file.improvements.push(transitionalWords);\r\n } else {\r\n file.goodResults.push(transitionalWords);\r\n }\r\n\r\n }\r\n function getTransitionalWordText(percentage:number) {\r\n let result:TextAnalysis = {title: TextAnalysisCategory.transitional_words, displayText: \"\", helperText: \"Percentage based on number on transitional words or phrases found\"};\r\n if(percentage < 30) {\r\n result.displayText = `Only ${percentage}% of your sentences contain a transitional word or phrase, which is less than the recommended minimum of 30%.`;\r\n result.result = TextAnalysisResult.improvement;\r\n } else {\r\n result.displayText = `Great! You are using enough transitional words or phrases.`;\r\n result.result = TextAnalysisResult.goodResult;\r\n }\r\n return result;\r\n }\r\n}","import visit from 'unist-util-visit';\r\n\r\nexport default function WordCount() {\r\n let wordCount:number = 0;\r\n\r\n return transformer;\r\n \r\n function transformer(tree: any, file: any) {\r\n\r\n visit(tree, 'WordNode', increment, true);\r\n\r\n function increment(node:Node) {\r\n wordCount++;\r\n return visit.SKIP;\r\n }\r\n \r\n file.wordCount = wordCount;\r\n }\r\n}","\r\nimport { TextAnalysis, TextAnalysisCategory, TextAnalysisResult } from '../SermonAnalyzer';\r\n\r\nexport default function SubheadingDistribution(subheadings:number = 0) {\r\n\r\n return analyze;\r\n\r\n function analyze(tree:any, file:any){\r\n\r\n let result:TextAnalysis = getSubheadingText(subheadings);\r\n\r\n if(result.result === TextAnalysisResult.improvement){ \r\n file.improvements.push(result);\r\n } else { \r\n file.goodResults.push(result);\r\n }\r\n\r\n function getSubheadingText(subheadings: number) {\r\n let result:TextAnalysis = {title: TextAnalysisCategory.subheading_distribution, displayText: \"\", helperText: \"The number of subheading tags found\"};\r\n if (subheadings === 0){\r\n result.displayText = \"I don’t see any subheadings in your sermon. This may not be an issue if you’re already formatting your main points with something other than the H2 tag. Otherwise, try to mark each main point as a heading with the H2 formatting option in the editor.\";\r\n result.result = TextAnalysisResult.improvement;\r\n } else {\r\n result.result = TextAnalysisResult.goodResult;\r\n result.displayText = \"Perfect, it looks like you’re using the H2 formatting tag for your main preaching points.\";\r\n }\r\n return result;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n","import ConsecutiveSentences from './modules/ConsecutiveSentences';\r\nimport GradeLevel from './modules/GradeLevel';\r\nimport SentenceLength from './modules/SentenceLength';\r\nimport ParagraphLength from './modules/LongParagraphs';\r\nimport PassiveVoice from './modules/PassiveVoice';\r\nimport ReadingScore from './modules/ReadingScore';\r\nimport ScriptureSaturation from './modules/ScriptureSaturation';\r\nimport TransitionalWords from './modules/TransitionalWords';\r\nimport WordCount from './modules/WordCount';\r\nimport SubheadingDistribution from './modules/SubheadingDistribution';\r\nimport { BuilderPreferences } from '../../entities/BuilderPreferences';\r\n\r\nexport default function Analyzer(subheadingCount:number = 0, preferences:BuilderPreferences) {\r\n const {hideConsecutiveSentences, hideFleschReadingEase, hideParagraphLength, hidePassiveVoice, \r\n hideScriptureSaturation, hideSentenceLength, hideSubheadingDistribution, hideTransitionalWords} = preferences;\r\n\r\n return analyze;\r\n \r\n function analyze(tree:any, file:any){\r\n file.improvements = [];\r\n file.goodResults = [];\r\n\r\n WordCount()(tree,file);\r\n\r\n GradeLevel()(tree,file);\r\n\r\n if(hideConsecutiveSentences === false){\r\n ConsecutiveSentences()(tree,file);\r\n }\r\n \r\n if(hideFleschReadingEase === false){\r\n ReadingScore()(tree,file);\r\n }\r\n \r\n if(hideParagraphLength === false){\r\n ParagraphLength()(tree,file);\r\n }\r\n \r\n if(hidePassiveVoice === false){\r\n PassiveVoice()(tree,file);\r\n }\r\n \r\n if(hideSentenceLength === false){\r\n SentenceLength()(tree,file);\r\n }\r\n\r\n if(hideScriptureSaturation === false){\r\n ScriptureSaturation()(tree,file);\r\n }\r\n \r\n if(hideSubheadingDistribution === false){\r\n SubheadingDistribution(subheadingCount)(tree,file);\r\n }\r\n\r\n if(hideTransitionalWords === false){\r\n TransitionalWords()(tree,file);\r\n }\r\n }\r\n}","import retext from 'retext';\r\nimport pos from 'retext-pos';\r\nimport english from 'retext-english';\r\nimport Analyzer from './AnalyzerModule';\r\nimport { BuilderPreferences } from '../../entities/BuilderPreferences';\r\nimport KeyWordParser from '../KeyWordParser';\r\n\r\nexport enum TextAnalysisResult {\r\n improvement = \"Improvement\",\r\n goodResult = \"Good Result\"\r\n}\r\n\r\nexport enum TextAnalysisCategory {\r\n transitional_words = \"Transitional words\",\r\n subheading_distribution = \"Subheading distribution\",\r\n scripture_saturation = \"Scripture saturation\",\r\n flesch_reading_ease = \"Flesch reading ease\",\r\n passive_voice = \"Passive voice\",\r\n paragraph_length = \"Paragraph length\",\r\n sentence_length = \"Sentence length\",\r\n consecutive_sentences = \"Consecutive sentences\"\r\n}\r\n\r\nexport interface TextAnalysis {\r\n result?: TextAnalysisResult;\r\n title: TextAnalysisCategory;\r\n displayText: string;\r\n helperText: string;\r\n color?: string; \r\n}\r\n\r\nexport interface AnalyzerResult {\r\n wordCount: number;\r\n characterCount: number;\r\n gradeLevel: string;\r\n improvements: TextAnalysis[];\r\n goodResults: TextAnalysis[];\r\n keywords: string[];\r\n scriptureReferences: string[];\r\n}\r\n\r\nexport const SermonAnalyzer = {\r\n analyze: (text:string, preferences:BuilderPreferences) => {\r\n let results:AnalyzerResult = { \r\n wordCount: 0,\r\n characterCount: 0,\r\n gradeLevel: '',\r\n improvements: [],\r\n goodResults: [],\r\n keywords: [],\r\n scriptureReferences: [],\r\n };\r\n\r\n let subheadingCount:number = 0;\r\n\r\n let search = text.replace(/<(?:.|\\n)*?>/gm, (match) => {\r\n if (match === '

'){\r\n subheadingCount++;\r\n }\r\n if (match === '

'){\r\n return ' \\n';\r\n }\r\n if(match[1] === '/'){\r\n return ' '\r\n }\r\n\r\n return '';\r\n })\r\n .replace(/ /gm, ' ')\r\n\r\n let characterCount = text.replace(/<(?:.|\\n)*?>/gm, '').replace(/ /gm, '').length;\r\n let keywords = KeyWordParser.parseKeywords(text, [], 10);\r\n\r\n retext()\r\n .use(english)\r\n .use(pos)\r\n .use(Analyzer, subheadingCount, preferences)\r\n .process(search, (err:Error, file:any) => {\r\n\r\n results = {\r\n wordCount: file.wordCount,\r\n characterCount: characterCount,\r\n keywords: keywords ? keywords.slice(0, 10) : [],\r\n gradeLevel: file.gradeLevel,\r\n goodResults: file.goodResults,\r\n improvements: file.improvements,\r\n scriptureReferences: file.scriptureReferences,\r\n }\r\n });\r\n\r\n return results;\r\n }\r\n}\r\n\r\nexport default SermonAnalyzer","import retext from 'retext';\r\nimport keywords from 'retext-keywords';\r\nimport pos from 'retext-pos';\r\nimport english from 'retext-english';\r\nimport toString from 'nlcst-to-string';\r\n\r\n\r\nexport const KeyWordParser = {\r\n\r\n parseKeywords: (text:string, stopWords:string[] = [], max:number = 5) => {\r\n\r\n const removeText = [ \"re\", \"t\", \"s\", \"ve\", \"ll\", \"you\", \"they\", \"we\", \"he\", \"she\", \"i'm\", \"isn\", \"won\", \"AMP\", \"ASV\", \"DBY\", \"ERV\", \"ESV\", \"KJV\", \"MSG\", \"OJB\", \"NASB\", \"NIRV\", \"NIV\", \"NLT\", \"WEB\", \"YLT\", \"LBLA\", \"NBL\", \"NKJV\"].concat(stopWords);\r\n const removeContractionsRegex = new RegExp(\"([A-Za-z]+'[A-Za-z]+)\", \"gi\");\r\n const stopStr = removeText.join(\"|\");\r\n \r\n let search = text.replace(/<(?:.|\\n)*?>/gm, ' ')\r\n .replace(removeContractionsRegex, ' ')\r\n .replace(new RegExp('\\\\b(' + stopStr + ')\\\\b', 'gi'), ' ')\r\n .replace(/\\s{2,}/g, ' ')\r\n .replace(/ /gm, ' ')\r\n .replace(/[^A-Za-z0-9\\s]/g,\" \")\r\n \r\n let foundKeywords:string[] = []\r\n retext()\r\n .use(english)\r\n .use(pos)\r\n .use(keywords, {maximum: max})\r\n .process(search, (err:Error, file:any) => {\r\n if (err) throw err\r\n file.data.keywords.forEach((keyword:any) => {\r\n foundKeywords.push(toString(keyword.matches[0].node))\r\n })\r\n })\r\n\r\n return foundKeywords;\r\n },\r\n}\r\n\r\nexport default KeyWordParser;","\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport const TextToSpeechService = {\r\n getToken: () => WebClient.Get(\"/api/TextToSpeech/GetToken\")\r\n}","import React, { useEffect, useState } from 'react'\r\nimport { Dialog, DialogContent, InputLabel, Select, MenuItem, DialogActions, Button, FormControl, DialogTitle, Tooltip, Slider, makeStyles } from '@material-ui/core';\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\nimport { useBuilder } from '../../useBuilder';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n mobileSpacing: {\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginTop: \"2em !important\",\r\n },\r\n }, \r\n slider: {\r\n padding: '25px 0px',\r\n },\r\n labelStyle: {\r\n fontSize: 21, \r\n transform: \"translate(0, -5.5px) scale(0.75)\", \r\n transformOrigin: 'top left', \r\n \"&:focused\": {\r\n color: \"#1976d2\"\r\n }\r\n }\r\n}));\r\n\r\ninterface Props {\r\n showSettings: boolean;\r\n disabled: boolean;\r\n toggleSettingsOpen: () => void;\r\n handlePreferenceChange: (voice:string, speed:number) => void;\r\n}\r\n\r\nconst textVoice:{displayName:string, value:string }[] = [\r\n {displayName: \"Female - Australian\", value: \"en-AU-Catherine\"}, \r\n {displayName: \"Male - British\", value: \"en-GB-George\"}, \r\n {displayName: \"Female - British\", value:\"en-GB-HazelRUS\"},\r\n {displayName: \"Male - American\", value: \"en-US-BenjaminRUS\"},\r\n {displayName: \"Female - American\", value: \"en-US-JessaRUS\"}]\r\n\r\nexport function TextToSpeechSettings(props: Props){\r\n const { toggleSettingsOpen, showSettings, handlePreferenceChange, disabled} = props;\r\n const { preferences} = useBuilder();\r\n const classes = useStyles();\r\n\r\n const [voice, setVoice] = useState(preferences.textToSpeechVoice);\r\n const [speed, setSpeed] = useState(preferences.textToSpeechSpeed);\r\n\r\n useEffect(() => {\r\n setVoice(preferences.textToSpeechVoice ? preferences.textToSpeechVoice : \"en-US-BenjaminRUS\");\r\n setSpeed(preferences.textToSpeechSpeed);\r\n }, [preferences])\r\n\r\n const handleSpeedChange = (value:number) => {\r\n let rounded:number = parseFloat(value.toFixed(2));\r\n setSpeed(rounded)\r\n }\r\n\r\n return (\r\n \r\n Audio Playback Settings\r\n \r\n \r\n \r\n \r\n Speaker Voice \r\n \r\n\t\t\t\t\r\n \r\n \r\n \r\n \r\n \r\n Speaker Speed - {speed}x\r\n \r\n \r\n {handleSpeedChange(value as number)}}\r\n className={classes.mobileSpacing}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import { TextToSpeechService } from \"../../../../services/TextToSpeechService\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { TextToSpeechContext as ReactTextToSpeechContext } from \"./useTextToSpeech\";\r\nimport { SpeechSynthesizer, AudioConfig, SpeechConfig, SpeechSynthesisResult, SpeechSynthesisOutputFormat, AudioOutputStream } from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/microsoft.cognitiveservices.speech.sdk';\r\nimport { TextToSpeechSettings } from './TextToSpeechSettings';\r\nimport { ServerResponse } from '../../../../services/server/OldWebClient';\r\nimport { useEditor } from '../useEditor';\r\nimport { useBuilder } from '../../useBuilder';\r\nimport { EventTracking } from '../../../../utilities/Tracking/EventTracking'\r\nimport { BuilderPreferences } from \"../../../../entities/BuilderPreferences\";\r\nimport { UserAgent } from \"../../../../utilities/UserAgent\";\r\n\r\ninterface Props{}\r\n\r\nfunction TextToSpeechContext(props: React.PropsWithChildren) {\r\n const builder = useBuilder();\r\n const {user, setAlert, preferences, savePreferences } = builder;\r\n const editor = useEditor();\r\n const isMobile = UserAgent.mobile();\r\n const audioPlayerRef = useRef(null);\r\n\r\n const [bubbleWordCount, setBubbleWordCount] = useState(0);\r\n const [showAudioPlayer, setShowAudioPlayer] = useState(false);\r\n \r\n const [audioFileUrl, setAudioFileURL] = useState(\"\");\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [isDisabled, setIsDisabled] = useState(false)\r\n const [isAudioPaused, setIsAudioPaused] = useState(true);\r\n\r\n const [synthesizerVoice, setSynthesizerVoice] = useState(preferences.textToSpeechVoice);\r\n const [synthesizerSpeed, setSynthesizerSpeed] = useState(preferences.textToSpeechSpeed);\r\n \r\n const [openSettings, setOpenSettings] = useState(false);\r\n\r\n useEffect(() => {\r\n setSynthesizerVoice(preferences.textToSpeechVoice ? preferences.textToSpeechVoice : \"en-US-BenjaminRUS\");\r\n setSynthesizerSpeed(preferences.textToSpeechSpeed);\r\n }, [preferences])\r\n\r\n const startTextToSpeech = async(textToSpeechVoice:string = synthesizerVoice, textToSpeechSpeed:number = synthesizerSpeed) => {\r\n if(user && !user.makerSubscription){\r\n return window.location.assign(`https://www.sermonmaker.net/upgrade-now/?upgradePath=HearItNow&upgradeAction=16`);\r\n }\r\n\r\n const audioPlayer = audioPlayerRef.current!;\r\n \r\n if(!audioPlayer.paused){\r\n audioPlayer.pause()\r\n setIsAudioPaused(true)\r\n }\r\n\r\n const wordCount = editor.getBubbleWordCount() \r\n \r\n if(wordCount > 1000){\r\n return setAlert(\"Unable to process, text too long\");\r\n }\r\n\r\n try {\r\n editor.hideFormatBubble()\r\n const text:string = editor.getBubbleText();\r\n setShowAudioPlayer(true);\r\n setIsLoading(true)\r\n \r\n let conversion = `\r\n \r\n \r\n ${text}\r\n \r\n \r\n `\r\n \r\n let token = await TextToSpeechService.getToken();\r\n\r\n if(ServerResponse.isSuccess(token)){\r\n let speechConfig = SpeechConfig.fromAuthorizationToken(token.message, \"westus2\");\r\n speechConfig.speechSynthesisOutputFormat = SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3;\r\n\r\n const stream = AudioOutputStream.createPullStream() ;\r\n const audioConfig = AudioConfig.fromStreamOutput(stream);\r\n\r\n let speechSynthesizer = new SpeechSynthesizer(speechConfig, audioConfig);\r\n\r\n speechSynthesizer.speakSsmlAsync(conversion, (result:SpeechSynthesisResult) => {\r\n speechSynthesizer.close();\r\n EventTracking.Builder.onStartedTextToSpeech(0, wordCount)\r\n \r\n let audioFile = URL.createObjectURL(new Blob([result.audioData], {type: 'audio/mpeg'}));\r\n \r\n if(!isMobile){\r\n audioPlayer.autoplay = true;\r\n setIsAudioPaused(false);\r\n }\r\n \r\n audioPlayer.onended = stopTextToSpeech;\r\n audioPlayer.src = audioFile;\r\n audioPlayer.load();\r\n \r\n setIsLoading(false);\r\n setBubbleWordCount(wordCount);\r\n setAudioFileURL(audioFile);\r\n }, (e) => {\r\n setShowAudioPlayer(false);\r\n setAlert(e);\r\n })}\r\n } catch(e){\r\n setAlert(\"Something went wrong, please try again.\");\r\n }\r\n };\r\n \r\n const pauseTextToSpeech = () => {\r\n const audioPlayer = audioPlayerRef.current!;\r\n EventTracking.Builder.onPausedTextToSpeech();\r\n setIsAudioPaused(true);\r\n audioPlayer.pause();\r\n }\r\n \r\n const resumeTextToSpeech = () => {\r\n const audioPlayer = audioPlayerRef.current!;\r\n\r\n EventTracking.Builder.onUnPausedTextToSpeech();\r\n audioPlayer.play();\r\n setIsAudioPaused(false);\r\n }\r\n \r\n const restartTextToSpeech = () => {\r\n const audioPlayer = audioPlayerRef.current!;\r\n EventTracking.Builder.onReStartTextToSpeech();\r\n audioPlayer.pause();\r\n audioPlayer.currentTime = 0;\r\n setIsAudioPaused(false);\r\n audioPlayer.play();\r\n }\r\n\r\n const stopTextToSpeech = () => {\r\n const audioPlayer = audioPlayerRef.current!;\r\n EventTracking.Builder.onCompletedTextToSpeech(audioPlayer.currentTime, bubbleWordCount);\r\n audioPlayer.pause();\r\n setShowAudioPlayer(false);\r\n setIsAudioPaused(true)\r\n URL.revokeObjectURL(audioFileUrl);\r\n }\r\n\r\n const handlePreferenceChange = (voice:string, speed:number) => {\r\n setIsDisabled(true);\r\n setOpenSettings(!openSettings);\r\n const audioPlayer = audioPlayerRef.current!;\r\n\r\n audioPlayer.pause();\r\n \r\n let updatedPreferences:BuilderPreferences = {...preferences};\r\n \r\n if(voice !== preferences.textToSpeechVoice){\r\n EventTracking.Builder.onChangeTextToSpeechVoice(voice);\r\n updatedPreferences.textToSpeechVoice = voice;\r\n setSynthesizerVoice(voice);\r\n }\r\n \r\n if(speed !== preferences.textToSpeechSpeed){\r\n EventTracking.Builder.onChangeTextToSpeechSpeed(speed);\r\n updatedPreferences.textToSpeechSpeed = speed;\r\n setSynthesizerSpeed(speed);\r\n }\r\n\r\n savePreferences(updatedPreferences);\r\n setAlert(\"Preferences Saved\");\r\n setIsDisabled(false);\r\n startTextToSpeech(voice, speed);\r\n }\r\n\r\n const toggleSettingsOpen = () => setOpenSettings(!openSettings);\r\n\r\n\treturn (\r\n \r\n { props.children }\r\n \r\n \r\n\t)\r\n}\r\n\r\nexport default (TextToSpeechContext);","\r\nexport const WordCountParser = {\r\n parse: (stringToParse: string ) => {\r\n\r\n const wordCount = stringToParse.replace(/<(?:.|\\n)*?>/gm, ' ').match(/\\b\\S+\\b/g);\r\n\r\n return wordCount !== null ? wordCount.length : 0;\r\n },\r\n};\r\n\r\nexport default WordCountParser;","export const DateHelper = {\r\n timeSinceDate: (dateSearched: Date): string => {\r\n\r\n const current = new Date();\r\n \r\n const diffInMS = current.getTime() - dateSearched.getTime();\r\n const diffInS = diffInMS / 1000;\r\n \r\n if (diffInS < 60) {\r\n return 'seconds ago';\r\n }\r\n \r\n const diffInM = diffInS / 60;\r\n if (diffInM < 60) {\r\n return `${Math.round(diffInM)} minute${Math.round(diffInM) > 1 ? 's' : ''} ago`;\r\n }\r\n \r\n const diffInH = diffInM / 60;\r\n if (diffInH < 24) {\r\n return `${Math.round(diffInH)} hour${Math.round(diffInH) > 1 ? 's' : ''} ago`;\r\n }\r\n \r\n const diffInD = diffInH / 24;\r\n if (diffInD < 10) {\r\n return `${Math.round(diffInD)} day${Math.round(diffInD) > 1 ? 's' : ''} ago`;\r\n }\r\n \r\n return '';\r\n },\r\n \r\n timeFromSeconds: (seconds:number): string => {\r\n\r\n if (seconds < 60) {\r\n return `${seconds} seconds`;\r\n }\r\n\r\n const diffInM = seconds / 60;\r\n if (diffInM < 60) {\r\n return `${Math.round(diffInM)} Min${Math.round(diffInM) > 1 ? 's' : ''}`;\r\n }\r\n\r\n const diffInH = diffInM / 60;\r\n if (diffInH < 24) {\r\n return `${Math.round(diffInH)} Hr${Math.round(diffInH) > 1 ? 's' : ''} ${Math.round(diffInM % 60)} Min${Math.round(diffInM % 60) > 1 ? 's' : ''}`;\r\n }\r\n\r\n const diffInD = diffInH / 24;\r\n if (diffInD < 10) {\r\n return `${Math.round(diffInD)} day${Math.round(diffInD) > 1 ? 's' : ''} ${Math.round(diffInM % 60)} Min${Math.round(diffInM % 60) > 1 ? 's' : ''}`;\r\n }\r\n\r\n return '';\r\n },\r\n\r\n buildDateFormat: (dt: Date): string => {\r\n if (!dt) {\r\n return '';\r\n }\r\n\r\n return dt.toLocaleDateString('en-us', { month: 'short', day: \"numeric\", year: \"numeric\"});\r\n },\r\n\r\n renewalDate: (isTrial: boolean): string => {\r\n let today = isTrial ? new Date(Date.now() + 12096e5) : new Date();\r\n let nextMonth = (today.getMonth() + (isTrial ? 0 : 1)) % 12 + 1;\r\n let year = today.getFullYear();\r\n let day = today.getDate();\r\n switch (nextMonth) {\r\n case 1:\r\n return `January ${day}, ${year}`;\r\n case 2:\r\n return `February ${day}, ${year}`;\r\n case 3:\r\n return `March ${day}, ${year}`;\r\n case 4:\r\n return `April ${day}, ${year}`;\r\n case 5:\r\n return `May ${day}, ${year}`;\r\n case 6:\r\n return `June ${day}, ${year}`;\r\n case 7:\r\n return `July ${day}, ${year}`;\r\n case 8:\r\n return `August ${day}, ${year}`;\r\n case 9:\r\n return `September ${day}, ${year}`;\r\n case 10:\r\n return `October ${day}, ${year}`;\r\n case 11:\r\n return `November ${day}, ${year}`;\r\n case 12:\r\n return `December ${day}, ${year}`;\r\n default:\r\n return \"today next month\";\r\n }\r\n },\r\n addDays: (date: Date, days: number) => {\r\n\t\tconst result = new Date(date);\r\n\t\tresult.setDate(result.getDate() + days);\r\n\t\treturn result;\r\n\t},\r\n getDatesBetween: (startDate: Date, endDate: Date): Date[] => {\r\n const dates:Date[] = [];\r\n let currentDate = startDate;\r\n while (currentDate <= endDate) {\r\n dates.push(new Date(currentDate));\r\n currentDate = DateHelper.addDays(currentDate, 1);\r\n }\r\n return dates;\r\n },\r\n sameCalendarDate: (date1: Date, date2: Date): boolean => {\r\n return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate();\r\n }\r\n}\r\n\r\nexport default DateHelper;","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport withWidth, { WithWidth } from \"@material-ui/core/withWidth\";\r\nimport debounce from \"lodash/debounce\";\r\n\r\nimport { CkEditorHelper, CkEditorSelection, SlideMap } from \"./ckeditor/CkEditorHelper\";\r\nimport { UserAgent } from \"../../../utilities/UserAgent\";\r\nimport { SlideAction } from \"./SlideAction\";\r\nimport FormatBubble, { FormatBubbleSettings } from \"./FormatBubble\";\r\nimport { EventTracking } from \"../../../utilities/Tracking/EventTracking\";\r\nimport EditorActionAlert from \"./EditorActionAlert\";\r\nimport { EditorContext as ReactEditorContext } from \"./useEditor\";\r\nimport { EditorHelper } from \"./EditorHelper\";\r\nimport { Editor } from \"./ckeditor/Editor\";\r\nimport { useBuilder } from \"../useBuilder\";\r\nimport { BuilderAsset } from \"../../../entities/BuilderAsset\";\r\nimport { BuilderAssetService } from \"../../../services/BuilderAssetService\";\r\nimport { ServerResponse } from \"../../../services/server/OldWebClient\";\r\nimport SermonAnalyzer, { AnalyzerResult } from \"../../../utilities/sermonAnalyzer/SermonAnalyzer\";\r\nimport { EditorSlide } from \"./EditorSlide\";\r\nimport { PreviewSlide } from \"./PreviewSlide\";\r\nimport { AssetWritingLogService, WritingLogRequest } from \"../../../services/AssetWritingLogService\";\r\nimport TextToSpeechContext from \"./texttospeech/TextToSpeechContext\";\r\nimport WordCountParser from \"../../../utilities/WordCountParser\";\r\nimport { useOfflineAssets } from \"../../offline/useOfflineAssets\";\r\nimport DateHelper from \"../../../utilities/DateHelper\";\r\n\r\nconst saveEditorContentAfterNoActionForMilliseconds = 3000;\r\nconst throttleForHeavyProcessingOfEditorChangesInMilliseconds = 3000;\r\nconst throttleForHeavyProcessingOfDOMChangesInMilliseconds = 1000;\r\n\r\ninterface Props extends WithWidth {}\r\n\r\nfunction EditorContext(props: React.PropsWithChildren) {\r\n\tconst builder = useBuilder();\r\n\tconst { preferences, builderAsset, refreshWritingLog } = builder;\r\n\tconst { onlineMode, saveBuilderAssetOffline } = useOfflineAssets();\r\n\r\n\tconst [iOS] = useState(UserAgent.iOS());\r\n\r\n\tconst [editor, setEditor] = useState(undefined);\r\n\tconst [, setEditorSlides] = useState([]);\r\n\tconst [previewSlides, setPreviewSlides] = useState([]);\r\n\tconst [offlineEnabled, ] = useState(builderAsset.offlineMode);\r\n\r\n\tconst [analyzerResults, setAnalyzerResults] = useState({\r\n\t\tscriptureReferences: [],\r\n\t\tkeywords: [],\r\n\t\twordCount: 0,\r\n\t\tcharacterCount: 0,\r\n\t\timprovements: [],\r\n\t\tgoodResults: [],\r\n\t\tgradeLevel: \"\",\r\n\t});\r\n\r\n\tconst [lastEdit, setLastEdit] = useState(`Last edit: ${DateHelper.timeSinceDate(builderAsset.dateModified)}`);\r\n\tconst [logDate] = useState(new Date());\r\n\tconst [writingLogTimer, setWritingLogTimer] = useState(1);\r\n\tconst [writingLogCreated, setWritingLogCreated] = useState(false);\r\n\tconst [writingLogId, setWritingLogId] = useState();\r\n\r\n\tconst [saveInProgress, setSaveInProgress] = useState(false);\r\n\tconst [formatBubbleSettings, setFormatBubbleSettings] = useState();\r\n\r\n\tconst [snackbarOpen, setSnackbarOpen] = useState(false);\r\n\tconst [snackbarMessage, setSnackbarMessage] = useState(\"\");\r\n\r\n\t// Refs to hold values used in editor callbacks (ONLY USE IN EDITOR CALLBACKS)\r\n\t// https://reactjs.org/docs/hooks-faq.html#why-am-i-seeing-stale-props-or-state-inside-my-function\r\n\tconst editorCallbackRef = useRef({\r\n\t\tbuilder,\r\n\t\tslides: previewSlides,\r\n\t\teditor,\r\n\t\twritingLogCreated,\r\n\t\twritingLogTimer,\r\n\t\twritingLogId,\r\n\t\tpreferences,\r\n\t\tofflineEnabled,\r\n\t});\r\n\r\n\t// Update refs on state updates\r\n\tuseEffect(() => {\r\n\t\teditorCallbackRef.current.builder = builder;\r\n\t}, [builder]);\r\n\r\n\tuseEffect(() => {\r\n\t\teditorCallbackRef.current.slides = previewSlides;\r\n\t}, [previewSlides]);\r\n\r\n\tuseEffect(() => {\r\n\t\teditorCallbackRef.current.editor = editor;\r\n\t}, [editor]);\r\n\r\n\tuseEffect(() => {\r\n\t\teditorCallbackRef.current.writingLogCreated = writingLogCreated;\r\n\t}, [writingLogCreated]);\r\n\r\n\tuseEffect(() => {\r\n\t\teditorCallbackRef.current.writingLogTimer = writingLogTimer;\r\n\t}, [writingLogTimer]);\r\n\r\n\tuseEffect(() => {\r\n\t\teditorCallbackRef.current.writingLogId = writingLogId;\r\n\t}, [writingLogId]);\r\n\r\n\tuseEffect(() => {\r\n\t\teditorCallbackRef.current.offlineEnabled = builderAsset.offlineMode;\r\n\t}, [builderAsset.offlineMode]);\r\n\r\n\tuseEffect(() => {\r\n\t\teditorCallbackRef.current.preferences = preferences;\r\n\t\tif (editor) {\r\n\t\t\tsetAnalyzerResults(SermonAnalyzer.analyze(editor.getData(), preferences));\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [preferences]);\r\n\r\n\tuseEffect(() => {\r\n\t\tfunction onWindowResize() {\r\n\t\t\tsetFormatBubbleSettings(undefined);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener(\"resize\", onWindowResize);\r\n\t\treturn () => window.removeEventListener(\"resize\", onWindowResize);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n}, [setFormatBubbleSettings]);\r\n\r\n\tconst setEditorInstance = (editor: Editor) => {\r\n\t\teditor.setData(builderAsset.text);\r\n\t\teditor.model.document.selection.on(\"change:range\", () => {\r\n\t\t\tupdateFormatBubbleSettings(CkEditorHelper.getSelections(editor));\r\n\t\t});\r\n\r\n\t\tif (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\r\n\t\t\tCkEditorHelper.injectCopyPasteButtonsIntoToolbar(copyFromBuilder, pasteIntoBuilder);\r\n\t\t}\r\n\t\teditor.model.document.on(\"change:data\", onEditorContentChanged);\r\n\t\tsetEditor(editor);\r\n\t};\r\n\r\n\t// Every function under here must get state from editorCallbackRef\r\n\r\n\tuseEffect(() => {\r\n\t\tsetInterval(() => {\r\n\t\t\tconst { writingLogTimer, builder } = editorCallbackRef.current;\r\n\t\t\tsetLastEdit(`Last edit: ${DateHelper.timeSinceDate(builder.builderAsset.dateModified)}`);\r\n\r\n\t\t\tif (document.visibilityState === \"visible\") {\r\n\t\t\t\tsetWritingLogTimer(writingLogTimer + 1);\r\n\t\t\t}\r\n\t\t}, 1000);\r\n\t}, []);\r\n\r\n\tconst onEditorContentChanged = () => {\r\n\t\tdelayedSaveEditorContentToBuilderAsset();\r\n\t\tdebouncedProcessingOfEditorContent();\r\n\t};\r\n\r\n\tconst onSaveEditorContentToBuilderAsset = useCallback(async () => {\r\n\t\tconst { editor, slides, writingLogCreated, writingLogTimer, writingLogId, offlineEnabled, builder } = editorCallbackRef.current;\r\n\r\n\t\tif (editor == null) {\r\n\t\t\tconsole.log(\"No editor\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetSaveInProgress(true);\r\n\t\tconst assetToSave: BuilderAsset = {\r\n\t\t\t...builderAsset,\r\n\t\t\tcustomSlideBackgroundImagePath: builder.builderAsset.customSlideBackgroundImagePath,\r\n\t\t\tcustomSlideBackgroundImageUrl: builder.builderAsset.customSlideBackgroundImageUrl,\r\n\t\t\tslideExporterAspectRatio: builder.builderAsset.slideExporterAspectRatio,\r\n\t\t\tslideCount: slides.length,\r\n\t\t\ttext: editor.getData(),\r\n\t\t\tlastModifiedFormFactor: UserAgent.getFormFactor(),\r\n\t\t\tlastModifiedOnOperatingSystem: UserAgent.getOperatingSystem(),\r\n\t\t\tofflineMode: offlineEnabled,\r\n\t\t};\r\n\r\n\t\tif (offlineEnabled) {\r\n\t\t\tconst updatedOfflineAsset = saveBuilderAssetOffline(assetToSave);\r\n\t\t\tif (!onlineMode) {\r\n\t\t\t\tbuilder.setBuilderAsset(updatedOfflineAsset);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (onlineMode) {\r\n\t\t\t// Save writing log\r\n\t\t\tconst logToSave: WritingLogRequest = {\r\n\t\t\t\tid: writingLogId ? writingLogId : undefined,\r\n\t\t\t\tassetId: builderAsset.id,\r\n\t\t\t\tdateCreated: logDate,\r\n\t\t\t\twritingTimeInSeconds: writingLogTimer,\r\n\t\t\t};\r\n\t\t\tconst responses = await Promise.all([\r\n\t\t\t\tBuilderAssetService.save(assetToSave),\r\n\t\t\t\twritingLogCreated ? AssetWritingLogService.updateAssetWritingLog(logToSave) : AssetWritingLogService.createAssetWritingLog(logToSave),\r\n\t\t\t]);\r\n\r\n\t\t\tconst [saveAssetResult, writingLogResult] = responses;\r\n\r\n\t\t\tif (ServerResponse.isSuccess(saveAssetResult)) {\r\n\t\t\t\tbuilder.setBuilderAsset(saveAssetResult.data);\r\n\t\t\t} else {\r\n\t\t\t\t// TODO: Toast in builder!\r\n\t\t\t}\r\n\r\n\t\t\tif (ServerResponse.isSuccess(writingLogResult)) {\r\n\t\t\t\tif (!writingLogCreated) {\r\n\t\t\t\t\tsetWritingLogCreated(true);\r\n\t\t\t\t\tsetWritingLogId(writingLogResult.data.id);\r\n\t\t\t\t}\r\n\t\t\t\trefreshWritingLog();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetSaveInProgress(false);\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [builderAsset, logDate, builder, refreshWritingLog]);\r\n\r\n\tconst delayedSaveEditorContentToBuilderAsset = useMemo(\r\n\t\t() => debounce(onSaveEditorContentToBuilderAsset, saveEditorContentAfterNoActionForMilliseconds),\r\n\t\t[onSaveEditorContentToBuilderAsset]\r\n\t);\r\n\r\n\t// For intensive computation on the editor state\r\n\tconst processEditorChanges = useCallback(() => {\r\n\t\tconst { editor, preferences } = editorCallbackRef.current;\r\n\r\n\t\tif (editor == null) {\r\n\t\t\tconsole.log(\"No editor\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// editor.getData() is really expensive..\r\n\t\t// Maybe we can switch to document.querySelector(\"#editor\").innerHTML.replaceAll('
', ' '); at some point\r\n\r\n\t\tsetAnalyzerResults(SermonAnalyzer.analyze(editor.getData(), preferences));\r\n\t}, [editorCallbackRef]);\r\n\r\n\tconst debouncedProcessingOfEditorContent = useMemo(\r\n\t\t() => debounce(processEditorChanges, throttleForHeavyProcessingOfEditorChangesInMilliseconds),\r\n\t\t[processEditorChanges]\r\n\t);\r\n\r\n\t// For intensive computation on the editor dom changing\r\n\tconst processDomChanges = useCallback(() => {\r\n\t\tconst { editor } = editorCallbackRef.current;\r\n\t\tif (editor == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst editorSlides = EditorHelper.getEditorSlides();\r\n\t\tsetEditorSlides(editorSlides);\r\n\t\tsetPreviewSlides(EditorHelper.getPreviewSlides(editorSlides));\r\n\t}, []);\r\n\r\n\tconst throttledProcessingOfEditorDOMContent = useMemo(\r\n\t\t() => debounce(processDomChanges, throttleForHeavyProcessingOfDOMChangesInMilliseconds),\r\n\t\t[processDomChanges]\r\n\t);\r\n\r\n\tconst getEditorHtml = () => {\r\n\t\treturn editor?.getData() ?? \"\";\r\n\t};\r\n\r\n\tconst getBubbleText = () => {\r\n\t\tconst { editor } = editorCallbackRef.current;\r\n\t\tif (editor) {\r\n\t\t\tlet results: CkEditorSelection[] = CkEditorHelper.getSelections(editor);\r\n\t\t\tlet data: string = EditorHelper.getTextFromSelections(results);\r\n\t\t\treturn data;\r\n\t\t} else {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t};\r\n\r\n\tconst getBubbleWordCount = () => {\r\n\t\tconst { editor } = editorCallbackRef.current;\r\n\r\n\t\tif (editor) {\r\n\t\t\tlet results: CkEditorSelection[] = CkEditorHelper.getSelections(editor);\r\n\t\t\tlet data: string = EditorHelper.getTextFromSelections(results);\r\n\t\t\treturn WordCountParser.parse(data);\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t};\r\n\r\n\tconst onNotifySnackBar = (message: string) => {\r\n\t\tsetSnackbarOpen(true);\r\n\t\tsetSnackbarMessage(message);\r\n\t};\r\n\r\n\tconst updateFormatBubbleSettings = (selections: CkEditorSelection[]) => {\r\n\t\tconst isMobile = props.width === \"sm\" || props.width === \"xs\";\r\n\t\tconst settings = EditorHelper.getFormatBubblePostitionSettings(selections, isMobile, iOS);\r\n\t\tif (!settings) {\r\n\t\t\tsetFormatBubbleSettings(undefined);\r\n\t\t} else if (\"isBolded\" in settings) {\r\n\t\t\tsetFormatBubbleSettings({ desktop: settings });\r\n\t\t} else {\r\n\t\t\tsetFormatBubbleSettings({ mobile: settings });\r\n\t\t}\r\n\t};\r\n\r\n\tconst copyFromBuilder = () => {\r\n\t\tdocument.execCommand(\"copy\");\r\n\t\tlet pasteButton = document.getElementById(\"pasteButton\");\r\n\t\tif (pasteButton) {\r\n\t\t\tpasteButton.classList.add(\"pasteActive\");\r\n\t\t}\r\n\t\tnotifyClipboardCopy(\"Text\");\r\n\t};\r\n\r\n\tconst pasteIntoBuilder = async () => {\r\n\t\tlet copiedText = await EditorHelper.checkIfClipBoardContainsText();\r\n\t\tlet myEditor = editor;\r\n\t\tif (!myEditor) {\r\n\t\t\tmyEditor = editorCallbackRef.current.editor;\r\n\t\t}\r\n\t\tif (myEditor === undefined) {\r\n\t\t\tonNotifySnackBar(`Error pasting from clipboard, editor instance not found. Please refresh and try again.`);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tmyEditor.model.change((writer) => {\r\n\t\t\tconst text = writer.createText(copiedText);\r\n\t\t\tmyEditor!.model.insertContent(text, myEditor!.model.document.selection);\r\n\t\t});\r\n\r\n\t\tlet pasteButton = document.getElementById(\"pasteButton\");\r\n\t\tif (pasteButton) {\r\n\t\t\tpasteButton.classList.remove(\"pasteActive\");\r\n\t\t}\r\n\t\tonNotifySnackBar(`Text pasted from clipboard`);\r\n\t};\r\n\r\n\tconst notifyClipboardCopy = (nameOfThingCopied: string) => {\r\n\t\tlet pasteButton = document.getElementById(\"pasteButton\");\r\n\t\tif (pasteButton) {\r\n\t\t\tpasteButton.classList.add(\"pasteActive\");\r\n\t\t}\r\n\t\tonNotifySnackBar(`${nameOfThingCopied} copied to clipboard`);\r\n\t};\r\n\r\n\tconst onClickSlidePrompt = (action: SlideAction) => {\r\n\t\tif (!editor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetFormatBubbleSettings(undefined);\r\n\t\tEditorHelper.executeSlideAction(action, editor);\r\n\t};\r\n\r\n\tconst onRemoveSlide = (slide: SlideMap) => {\r\n\t\tif (!editor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet data = CkEditorHelper.removeSlide(editor.getData(), slide);\r\n\t\teditor.setData(data);\r\n\t\tEventTracking.Builder.onRemoveSlideFromDrawer();\r\n\t};\r\n\r\n\tconst onRemovePreviewSlide = (previewSlide: PreviewSlide) => {\r\n\t\tif (!editor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tCkEditorHelper.removePreviewSlide(previewSlide.domSlideIds, editor);\r\n\t\tEventTracking.Builder.onRemoveSlideFromDrawer();\r\n\t};\r\n\r\n\tconst excecuteEditorAction = (action: string, value?: string) => {\r\n\t\tif (!editor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetFormatBubbleSettings(undefined);\r\n\t\teditor.execute(action, value ? { value } : undefined);\r\n\t};\r\n\r\n\tconst updateAnalyzerResults = () => {\r\n\t\tif (editor) {\r\n\t\t\tsetAnalyzerResults(SermonAnalyzer.analyze(editor.getData(), preferences));\r\n\t\t}\r\n\t};\r\n\r\n\tconst toggleSnackbarOpen = () => setSnackbarOpen(!snackbarOpen);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t setFormatBubbleSettings(undefined),\r\n\t\t\t\t\tonEditorDomChange: throttledProcessingOfEditorDOMContent,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\t\t{props.children}\r\n\t\t\t\t\t\r\n\t\t\t\t\t{formatBubbleSettings && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default withWidth()(EditorContext);\r\n","import { Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button } from \"@material-ui/core\";\r\nimport React, { useState } from \"react\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { ShareService } from \"../../services/ShareService\";\r\n\r\ninterface Props {\r\n open: boolean;\r\n onClose: () => void;\r\n item: BuilderAsset;\r\n onShareChangeSuccess: (\r\n id: string,\r\n isShared: boolean,\r\n shareId: string\r\n ) => void;\r\n}\r\n\r\nexport function NonPaidUnshareDialog(props:Props){\r\n const [disabled, setDisabled] = useState(false);\r\n\r\n const onConfirmUnshareNonPaid = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n \r\n if (disabled) return;\r\n\r\n setDisabled(true);\r\n let shareResponse = await ShareService.unshare(props.item.id);\r\n setDisabled(false);\r\n\r\n if(shareResponse.success){\r\n props.onShareChangeSuccess(shareResponse.data.id, shareResponse.data.isShared, shareResponse.data.shareId!);\r\n props.onClose();\r\n }\r\n };\r\n\r\n\r\n return (\r\n \r\n
) => onConfirmUnshareNonPaid(e)}>\r\n \r\n Confirm Unshare\r\n \r\n \r\n \r\n As a free user, once you stop sharing this resource, you will not\r\n be able to share it again unless you upgrade your account. Still\r\n want to stop sharing?\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAndJREFUaN7tmrFrE1Ecx7+/dzWDuxQ7CBYx9C+QXu3WTrVTSaBgbVI3IbOLYMGlXSuCKJqIU5MWRKF1EBQ0jWu3FkJwMaAOCg6K5t7XIUNruLte0txdLrzP+H6/e+/3CZcfd+8eYDAYDIYjJFgaZTpTnGhRnadyAl7T50K1RVqq+XFz6QAQnlrMzpTmCN4X4GIcQi40RFColvM7PYvZmdIcwJcAVNw2HThCNV/dWt71SvApmAJwYwClAMCicKNdY5di05niBIDxuA284aXJhVLaKzriFWgB5yLoEj8FeAXyLZQ0Heg/nQmK6gaAJderFUcBHHQlZlFEh2rGRxZw531l5Ztflp0tXoVHD7QonhV6ioVpJIJb1fLKwzAXiVyMImt75VyoUkD0He8zePZeFAtFKibkg1ol+2voxCiye/pZghHpfyz1F5+8Ynb26XVQ1gGM/f9rJEDs3Yv8D7fxK4uPR9GSJwBS/VprIB6XLOdMup9SAyOmNPtex0CIhcHQioXZPBoCaQTKtPR30dYbtxDBcfTwlhGemOB5tZxbDZL6YfPmPoBZt5idLa6CuNvt8kN7KxqxpGHEkkZoXVEoU3a2ePv42F45v+6WO5V5doGiF73mYQ9PwqGJEZwBMdMx7Com1OME1jzm6Wn9ob0VjVjSMGJJw4glDSOWNDzFHGGPO3rR4VejpxjVyNe4Cz8RLV+6Fmt/nUewPYtYkHptO3fYtRggFEEBgBO3ggsOwYLfsQjf5lEt53eEah6QetwmR0idwLVaJf/aL+vE15b2kQNenlwopUVxTEv/d22RSu3r1u9ZvxRF0dTSrG0vHwY5wGIwGAyG4/wDWH+8Q8liNnoAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDUtMDlUMjM6MDk6MzIrMDA6MDCOQgsIAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTA1LTA5VDIzOjA5OjMyKzAwOjAw/x+ztAAAACh0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vdG1wL21hZ2ljay1qZWF4UE9TMct5ZL0AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","import React, { useMemo } from \"react\";\r\nimport { DialogContent, Grid, Typography, TextField, List, ListItem, makeStyles } from \"@material-ui/core\";\r\nimport EmailIcon from \"@material-ui/icons/Email\";\r\n\r\nimport { printAssetCategory } from \"../../entities/AssetCategory\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { useAuthenticatedUser } from \"../../utilities/useAuthenticatedUser\";\r\n\r\nimport FacebookLogo from \"../../resources/facebookIcon.png\";\r\nimport TwitterLogo from \"../../resources/twitterIcon.png\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n copyButton: {\r\n width: \"100%\",\r\n height: 51,\r\n backgroundColor: \"#5bb2f6\",\r\n marginBottom: 8,\r\n color: \"#FFF\",\r\n textAlign: \"center\",\r\n verticalAlign: \"middle\",\r\n \"& span\": {\r\n display: \"inline-block\",\r\n marginTop: 16,\r\n },\r\n cursor: \"pointer\",\r\n },\r\n urlInput: {\r\n maxHeight: 51,\r\n borderRadius: \"0px\",\r\n fontSize: \"12px\",\r\n [`& fieldset`]: {\r\n borderRadius: 0,\r\n },\r\n },\r\n listHorizontal: {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n padding: 0,\r\n },\r\n listItem: {\r\n width: 70,\r\n \"&:nth-of-type(2)\": {\r\n width: 95,\r\n },\r\n },\r\n socialIcons: {\r\n width: 40,\r\n height: 40,\r\n marginTop: -5,\r\n },\r\n listItemSubContainer: {\r\n textAlign: \"center\",\r\n },\r\n}));\r\n\r\ninterface Props {\r\n item: BuilderAsset;\r\n fromSlides: boolean;\r\n url: string;\r\n handleCopy: () => void;\r\n}\r\n\r\nexport function SharedContent(props:Props){\r\n const {item, fromSlides, url} = props;\r\n const classes = useStyles();\r\n const user = useAuthenticatedUser();\r\n\r\n const encodedEmailUrl = useMemo(() => {\r\n let emailUrl = \"mailto:?body=I want to share \";\r\n\r\n if (fromSlides) {\r\n emailUrl += `these slides`;\r\n } else {\r\n emailUrl += `this ${printAssetCategory(item.category)}`;\r\n }\r\n\r\n emailUrl += \" https://maker.sermoncentral.com/share/\";\r\n\r\n if (fromSlides)\r\n emailUrl += \"slide/\";\r\n\r\n emailUrl += `${item.shareId}&subject=I want you to see this sermon`;\r\n\r\n return encodeURI(emailUrl);\r\n }, [props]);\r\n\r\n const encodedFacebookUrl = useMemo(() => {\r\n let facebookUrl = `https://www.facebook.com/sharer/sharer.php?u=${url}`;\r\n \r\n if (fromSlides) {\r\n facebookUrl += `"e=Slides from ${item.name}`;\r\n } else {\r\n facebookUrl += `"e=${item.name} by ${user.firstName} ${user.lastName}`;\r\n }\r\n return encodeURI(facebookUrl);\r\n }, [props])\r\n\r\n const encodedTwitterUrl = useMemo(() => {\r\n let twitterUrl = `https://twitter.com/share?ref_src=twsrc%5Etfw&url=${url}`;\r\n \r\n if (fromSlides) {\r\n twitterUrl += `&title=Slides from ${item.name}`;\r\n } else {\r\n twitterUrl += `&title=${item.name} by ${user.firstName} ${user.lastName}`;\r\n }\r\n \r\n return encodeURI(twitterUrl);\r\n }, [props])\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Link for sharing\r\n \r\n \r\n \r\n \r\n \r\n \r\n
props.handleCopy()} >\r\n COPY LINK\r\n
\r\n
\r\n
\r\n
\r\n \r\n More sharing options\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n Email\r\n
\r\n
\r\n \r\n
\r\n \"Facebook\"\r\n \r\n Facebook\r\n \r\n
\r\n
\r\n \r\n
\r\n \"Twitter\"\r\n \r\n Twitter\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAXpJREFUaN7tmDFOw0AQRf+stwUJWsgZwimwHEeKOw6QI9DkEihSKrgCaVwsBUXuQBsh0UAVCUUkorN2aSiQlbVwvPYk0rzS6x3/px2PLAOCIAicUNVinue9KIqmRHQN4KTjbFsiWiilJkmSLGsL5Hne01q/ADjvOHiZdVEU/SzL3nctKt+uKIqmBxAeAM601ne+Ra/Ab9scCrFvQVdsCt7zzrkVEc2I6Elr/RrH8Xf5HmOM27H1dB+B0MyttePRaLQNWbQrgXmapjdE5JqX6ljAObey1o7bCA9UvMShIKJZ6LbpVMA5Z9qs33oLWWvfdl03xqQAHgBcNKnf+glUtM990/CdCFRwGaIIp0AQRICb4FNoOBxSk/s830Jejv4ERIAbEeAm+BQqT5FQ08bH0Z+ACHAjAtyIADciwE2VQGv/cvbgq7YAES24U//hubaAUmoCYM2dHMCnUuq2tkCSJMuiKPoA5gA2DME3AB6VUleDweCD4fmCIAj/4Af3g1pnw0AGHwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wNS0xMFQxNzo0Mjo1NiswMDowMBJeJDkAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDUtMTBUMTc6NDI6NTYrMDA6MDBjA5yFAAAAKHRFWHRzdmc6YmFzZS11cmkAZmlsZTovLy90bXAvbWFnaWNrLS0zOGpuOWN0AP32hQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,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\"","import React from \"react\";\r\nimport { DialogContent, Grid, Link, List, ListItem, makeStyles, TextField, Typography } from \"@material-ui/core\";\r\nimport EmailIcon from \"@material-ui/icons/Email\";\r\n\r\nimport classNames from \"classnames\";\r\nimport FacebookLogoDisabled from \"../../resources/facebookIconDisabled.png\";\r\nimport TwitterLogoDisabled from \"../../resources/twitterLogoDisabled.png\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n copyButton: {\r\n width: \"100%\",\r\n height: 51,\r\n backgroundColor: \"#5bb2f6\",\r\n marginBottom: 8,\r\n color: \"#FFF\",\r\n textAlign: \"center\",\r\n verticalAlign: \"middle\",\r\n \"& span\": {\r\n display: \"inline-block\",\r\n marginTop: 16,\r\n },\r\n cursor: \"pointer\",\r\n },\r\n urlInput: {\r\n maxHeight: 51,\r\n borderRadius: \"0px\",\r\n fontSize: \"12px\",\r\n [`& fieldset`]: {\r\n borderRadius: 0,\r\n },\r\n },\r\n listHorizontal: {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n padding: 0,\r\n },\r\n listItem: {\r\n width: 70,\r\n \"&:nth-of-type(2)\": {\r\n width: 95,\r\n },\r\n },\r\n socialIcons: {\r\n width: 40,\r\n height: 40,\r\n marginTop: -5,\r\n },\r\n listItemSubContainer: {\r\n textAlign: \"center\",\r\n },\r\n disabledButton: {\r\n backgroundColor: \"#a7a7a7\",\r\n },\r\n disabledText: {\r\n color: \"#a7a7a7\",\r\n pointerEvents: \"none\",\r\n cursor: \"default\",\r\n },\r\n disabledAnchor: {\r\n pointerEvents: \"none\",\r\n cursor: \"default\",\r\n color: \"#b4b4b4\",\r\n },\r\n}));\r\n\r\ninterface Props {\r\n url: string;\r\n handleCopy: () => void;\r\n}\r\n\r\nexport function UnsharedContent(props:Props){\r\n const { url } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Link for sharing\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n COPY LINK\r\n \r\n \r\n \r\n
\r\n \r\n More sharing options\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n Email\r\n
\r\n
\r\n \r\n
\r\n \"Facebook\"\r\n Facebook\r\n
\r\n
\r\n \r\n
\r\n \"Twitter\"\r\n Twitter\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","import React, { useEffect, useMemo, useState } from \"react\";\r\n\r\nimport { Dialog, DialogTitle, DialogActions, Button, CircularProgress, FormControl, FormControlLabel, Switch, makeStyles } from \"@material-ui/core\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\nimport { ShareService } from \"../../services/ShareService\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { BuilderAssetService } from \"../../services/BuilderAssetService\";\r\nimport { printAssetCategory } from \"../../entities/AssetCategory\";\r\n\r\nimport { NonPaidUnshareDialog } from \"./NonPaidUnshareDialog\";\r\nimport { useIsMobile } from \"../Mui3WidthProvider\";\r\nimport { useAppConfig } from \"../../utilities/useAppConfig\";\r\nimport { useAuthenticatedUser } from \"../../utilities/useAuthenticatedUser\";\r\nimport { SharedContent } from \"./SharedContent\";\r\nimport { UnsharedContent } from \"./UnsharedContent\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n minWidth: \"600px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n minWidth: \"initial\",\r\n },\r\n },\r\n closeMobileIcon: {\r\n color: \"rgb(0, 0, 0, .4)\",\r\n position: \"absolute\",\r\n top: 10,\r\n right: 10,\r\n },\r\n titleRight: {\r\n float: \"right\",\r\n paddingTop: 5,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n float: \"initial\",\r\n },\r\n },\r\n mobileFormLabel: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: 0,\r\n },\r\n },\r\n switchLabel: {\r\n fontWeight: 500,\r\n fontSize: 16,\r\n },\r\n loadingContainer: {\r\n height: 375,\r\n width: 600,\r\n textAlign: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n height: \"auto\",\r\n width: \"auto\",\r\n },\r\n },\r\n }));\r\n\r\ninterface Props {\r\n onClose: () => void;\r\n isOpen: boolean;\r\n onShareChangeSuccess: (\r\n id: string,\r\n isShared: boolean,\r\n shareId: string\r\n ) => void;\r\n shareFromSlides?: boolean;\r\n id: string;\r\n onError: (message: string) => void;\r\n onGiveMessage: (message: string) => void;\r\n}\r\n\r\nexport function ShareDialog(props:Props){\r\n const classes = useStyles();\r\n const isMobile = useIsMobile();\r\n const [config,] = useAppConfig();\r\n const user = useAuthenticatedUser();\r\n\r\n const [loading, setLoading] = useState(true)\r\n const [item, setItem] = useState()\r\n const [url, setUrl] = useState(\"\")\r\n const [openUnshareNonPaidDialog, setOpenUnshareNonPaidDialog] = useState(false)\r\n\r\n const fromSlides = useMemo(() => Boolean(props.shareFromSlides), [props.shareFromSlides])\r\n const title = useMemo(() => item ? fromSlides ? \"Share Slides\" : `Share ${printAssetCategory(item.category)}`: \"\", [item, fromSlides]);\r\n const activeMakerSubscription = useMemo(() => user.makerSubscription, [user]);\r\n\r\n useEffect(() => {\r\n async function loadAsset(){\r\n setLoading(true);\r\n let responseItem = await BuilderAssetService.get(props.id);\r\n\r\n if(responseItem.error){\r\n props.onError(\"Unable to load shared infomation. Please try again\");\r\n return props.onClose();\r\n }\r\n\r\n const builderAsset = responseItem.data;\r\n let sharedId = builderAsset.shareId;\r\n\r\n if(!builderAsset.shareId || !builderAsset.isShared){\r\n const sharedResponse = await ShareService.share(builderAsset.id);\r\n\r\n if(sharedResponse.error){\r\n props.onError(\"Unable to initialize share. Please try again\");\r\n return props.onClose();\r\n }\r\n const sharedItem = sharedResponse.data;\r\n sharedId = sharedItem.shareId;\r\n props.onShareChangeSuccess(sharedItem.id, sharedItem.isShared, sharedId!);\r\n }\r\n\r\n if(!sharedId){\r\n props.onError(\"Unable to initialize share. Please try again\");\r\n return props.onClose();\r\n }\r\n\r\n const response = await ShareService.getSharedAsset(sharedId);\r\n setLoading(false);\r\n\r\n if(response.error){\r\n props.onError(\"Unable to load shared infomation. Please try again\");\r\n return props.onClose();\r\n }\r\n\r\n setItem(response.data);\r\n setUrl(determineUrl(response.data))\r\n };\r\n\r\n loadAsset()\r\n }, [])\r\n\r\n const handleShareToggle = (e: React.ChangeEvent) => {\r\n if (!item) {\r\n return;\r\n }\r\n\r\n handleShareDetermination(e.target.checked, item);\r\n };\r\n\r\n const handleShareDetermination = async (isShared: boolean, item: BuilderAsset) => {\r\n if (isShared)\r\n return await share(item.id);\r\n\r\n if (!activeMakerSubscription)\r\n return setOpenUnshareNonPaidDialog(true);\r\n\r\n await unshare(item.id);\r\n };\r\n\r\n const share = async (id: string) => {\r\n setLoading(true);\r\n let shareResponse = await ShareService.share(id);\r\n setLoading(false);\r\n\r\n if(shareResponse.success){\r\n const data = shareResponse.data;\r\n setItem({ ...item!, isShared: data.isShared, shareId: data.shareId })\r\n props.onShareChangeSuccess( data.id, data.isShared, data.shareId!)\r\n }\r\n };\r\n\r\n const unshare = async (id: string) => {\r\n setLoading(true);\r\n let shareResponse = await ShareService.unshare(id);\r\n setLoading(false);\r\n\r\n if(shareResponse.success){\r\n const data = shareResponse.data;\r\n setItem({ ...item!, isShared: data.isShared, shareId: data.shareId })\r\n props.onShareChangeSuccess( data.id, data.isShared, data.shareId!)\r\n }\r\n };\r\n\r\n const determineUrl = (asset: BuilderAsset) => {\r\n if (!asset.shareId) {\r\n return \"\";\r\n }\r\n\r\n let url = `${config.makerSiteUrl}/share/`;\r\n\r\n if (props.shareFromSlides && props.shareFromSlides === true) {\r\n url += \"slide/\";\r\n }\r\n\r\n url += asset.shareId;\r\n\r\n return url;\r\n }\r\n\r\n const handleCopy = () => {\r\n let el = document.getElementById(\"urlInput\") as HTMLInputElement;\r\n\r\n if (!el) {\r\n return;\r\n }\r\n\r\n // handle iOS as a special case\r\n if (navigator.userAgent.match(/ipad|ipod|iphone/i)) {\r\n // save current contentEditable/readOnly status\r\n var editable = el.contentEditable;\r\n var readOnly = el.readOnly;\r\n\r\n // convert to editable with readonly to stop iOS keyboard opening\r\n el.contentEditable = \"true\";\r\n el.readOnly = true;\r\n\r\n // create a selectable range\r\n var range = document.createRange();\r\n range.selectNodeContents(el);\r\n\r\n // select the range\r\n var selection = window.getSelection();\r\n if (selection) {\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n el.setSelectionRange(0, 999999);\r\n\r\n // restore contentEditable/readOnly to original state\r\n el.contentEditable = editable;\r\n el.readOnly = readOnly;\r\n } else {\r\n el.select();\r\n }\r\n\r\n document.execCommand(\"copy\");\r\n props.onGiveMessage(\"Link copied to clipboard.\");\r\n }\r\n\r\n if (openUnshareNonPaidDialog && item) {\r\n return \r\n }\r\n\r\n return (\r\n props.onClose()}\r\n fullScreen={isMobile}\r\n >\r\n
\r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n {item && !loading && (\r\n <>\r\n {isMobile && (\r\n \r\n )}\r\n \r\n {title}\r\n
\r\n \r\n \r\n }\r\n classes={{ label: classes.switchLabel }}\r\n labelPlacement=\"start\"\r\n />\r\n \r\n
\r\n
\r\n {item.isShared \r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n );\r\n}","import React, { useState } from \"react\";\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from \"@material-ui/core\";\r\nimport { ShareItem } from \"../../entities/ShareItem\";\r\nimport { ShareService } from \"../../services/ShareService\";\r\n\r\ninterface Props {\r\n sharedItem: ShareItem;\r\n isOpen: boolean;\r\n onClose: () => void;\r\n onError: (message:string) => void;\r\n handleUnshare: (item:ShareItem) => void;\r\n}\r\n\r\nexport function RenderNonPaidUnshareDialog(props:Props){\r\n const [disabled, setDisabled] = useState(false);\r\n \r\n const handleUnshare = async(e:React.FormEvent) => {\r\n e.preventDefault();\r\n if(disabled) return;\r\n\r\n setDisabled(true);\r\n const response = await ShareService.saveAssetShare({\r\n commentsEnabled: props.sharedItem.commentsEnabled,\r\n enabled: false,\r\n assetShareId: props.sharedItem.id,\r\n assetShareVideoTypeId: props.sharedItem.assetShareType,\r\n videoPath: props.sharedItem.videoPath\r\n });\r\n setDisabled(false);\r\n\r\n if(response.error) return props.onError(response.message);\r\n\r\n props.handleUnshare(response.data);\r\n }\r\n\r\n return (\r\n \r\n
) => handleUnshare(e)}>\r\n Confirm Unshare\r\n \r\n \r\n As a free user, once you stop sharing this resource, you will not be able to share it again unless you upgrade your account. Still want to stop sharing?\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}","import React, { useState } from \"react\";\r\nimport { Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, FormControlLabel, TextField, Typography } from \"@material-ui/core\";\r\nimport psl from 'psl';\r\nimport { FieldValidationError, ValidationHelper } from \"../../services/server/ServerResponses\";\r\nimport { useIsMobile } from \"../Mui3WidthProvider\";\r\nimport { ShareService } from \"../../services/ShareService\";\r\nimport { ShareItem } from \"../../entities/ShareItem\";\r\nimport UserSharePreference from \"../../entities/UserSharePreference\";\r\n\r\ninterface Props {\r\n isOpen: boolean;\r\n itemId: string;\r\n onClose: () => void;\r\n handleShareSuccess: (item:ShareItem, preferences:UserSharePreference) => void;\r\n}\r\n\r\nconst parseUrl = (unsafeUrl:string) =>{\r\n if (unsafeUrl.startsWith('https')) {\r\n unsafeUrl = unsafeUrl.replace('https', '');\r\n } else if (unsafeUrl.startsWith('http')) {\r\n unsafeUrl = unsafeUrl.replace('http', '');\r\n }\r\n\r\n unsafeUrl = unsafeUrl.replace(/\\b(www)\\b/g, '');\r\n unsafeUrl = unsafeUrl.replace('.com', '');\r\n unsafeUrl = unsafeUrl.replace('.net', '');\r\n unsafeUrl = unsafeUrl.replace('.org', '');\r\n unsafeUrl = unsafeUrl.replace('.church', '');\r\n\r\n unsafeUrl = unsafeUrl.replace(/\\s/g, \"-\");\r\n unsafeUrl = unsafeUrl.replace(/-{2,}/g, '-');\r\n unsafeUrl = unsafeUrl.replace(/_{2,}/g, '_');\r\n unsafeUrl = unsafeUrl.replace(/^-+|-+$/g, '');\r\n unsafeUrl = unsafeUrl.replace(/^_+|_+$/g, '');\r\n unsafeUrl = unsafeUrl.replace(/[^a-zA-Z0-9-_]+/g, '').toLowerCase();\r\n return unsafeUrl;\r\n} \r\n\r\n\r\nexport function SubdomainSetupDialog(props:Props){\r\n const [disabled, setDisabled] = useState(false);\r\n const [noChurchSite, setNoChurchSite] = useState(false);\r\n const [confirmDomainSet, setConfirmDomainSet] = useState(false);\r\n const [churchWebsiteForDomain, setChurchWebsiteForDomain] = useState(\"\");\r\n const [parsedChurchWebsiteForDomain, setParsedChurchWebsiteForDomain] = useState(\"\");\r\n const [churchNameForDomain, setChurchNameForDomain] = useState(\"\");\r\n const [parsedChurchNameForDomain, setParsedChurchNameForDomain] = useState(\"\");\r\n const [errors, setErrors] = useState([]);\r\n const isMobile = useIsMobile();\r\n\r\n const validateAndSetDomainFromChurchWebsite = (e: React.ChangeEvent) => {\r\n setChurchWebsiteForDomain(e.currentTarget.value);\r\n let unsafeUrl = e.currentTarget.value;\r\n\r\n if (psl.isValid(unsafeUrl)) {\r\n var parsed: any = psl.parse(unsafeUrl);\r\n unsafeUrl = parsed.sld;\r\n }\r\n\r\n let encoded = encodeURI(parseUrl(unsafeUrl));\r\n\r\n let errors: FieldValidationError[] = [];\r\n if (encoded.length > 20) {\r\n const lengthError: FieldValidationError = { field: \"Subdomain\", errors: [\"Oops. The web address you entered is too long, please make it a bit shorter.\"] };\r\n errors = [lengthError];\r\n setErrors(errors)\r\n }\r\n\r\n setChurchWebsiteForDomain(encoded);\r\n }\r\n\r\n const validateAndSetDomainFromChurchName = (e: React.ChangeEvent) => {\r\n setChurchNameForDomain(e.currentTarget.value);\r\n const encoded = encodeURI(parseUrl(e.currentTarget.value));\r\n\r\n if (encoded.length > 20)\r\n setErrors([{ field: \"Subdomain\", errors: [\"Oops. The name you entered is too long, please make it a bit shorter.\"] }]);\r\n\r\n setParsedChurchNameForDomain(encoded);\r\n }\r\n\r\n const handleNoWebsiteClick = () => {\r\n setErrors([]);\r\n setChurchNameForDomain(\"\");\r\n setChurchWebsiteForDomain(\"\");\r\n setParsedChurchNameForDomain(\"\");\r\n setParsedChurchWebsiteForDomain(\"\");\r\n setNoChurchSite(!noChurchSite);\r\n }\r\n\r\n const onSubmitDomain = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if ((parsedChurchNameForDomain.length === 0 && parsedChurchWebsiteForDomain.length === 0) || disabled || !confirmDomainSet) {\r\n return;\r\n }\r\n\r\n setDisabled(true);\r\n const prefResponse = await ShareService.saveUserSharePreferences(noChurchSite ? parsedChurchNameForDomain : parsedChurchWebsiteForDomain);\r\n setDisabled(false);\r\n\r\n if(prefResponse.error) return setErrors([{ field: \"\", errors: [prefResponse.message] }]);\r\n if(prefResponse.validation) return setErrors(prefResponse.errors);\r\n\r\n setDisabled(true);\r\n const response = await ShareService.createUserShareItem(props.itemId)\r\n setDisabled(false);\r\n\r\n \r\n if(response.error) return setErrors([{ field: \"\", errors: [response.message] }]);\r\n if(response.data === null) return setErrors([{ field: \"\", errors: [\"Unable to get share. Please try again\"] }]);\r\n props.handleShareSuccess(response.data, prefResponse.data)\r\n }\r\n\r\n return (\r\n \r\n
\r\n
onSubmitDomain(e)}>\r\n Before you share your message...\r\n \r\n \r\n Enter the web address for your church:\r\n \r\n ) => validateAndSetDomainFromChurchWebsite(e)}\r\n helperText={ValidationHelper.isFieldInError(errors, 'Subdomain') && !noChurchSite && }\r\n />\r\n
\r\n 0 ? .6 : 1 }}\r\n control={\r\n \r\n }\r\n label=\"I do not have a church website\"\r\n />\r\n\r\n {noChurchSite &&\r\n <>\r\n
\r\n
\r\n \r\n Enter the name of your church or ministry\r\n \r\n ) => validateAndSetDomainFromChurchName(e)}\r\n helperText={ValidationHelper.isFieldInError(errors, 'Subdomain') && noChurchSite && }\r\n />\r\n \r\n }\r\n\r\n\r\n
\r\n 0 || parsedChurchWebsiteForDomain.length > 0) ? 1 : .4\r\n }}>\r\n Your unique share URL: \r\n {parsedChurchWebsiteForDomain.length > 0 ? {parsedChurchWebsiteForDomain}.sermon.stream : {parsedChurchNameForDomain}.sermon.stream}\r\n \r\n setConfirmDomainSet(!confirmDomainSet)}\r\n value=\"checkedB\"\r\n color=\"primary\"\r\n disabled={(parsedChurchWebsiteForDomain.length === 0 && parsedChurchNameForDomain.length === 0) || disabled}\r\n />\r\n }\r\n label=\"I understand that once saved this domain cannot be changed.\"\r\n />\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n}","import React from 'react';\r\nimport { DialogContent, Grid, Typography, TextField, List, ListItem, Button, FormControl, FormControlLabel, Link, Switch, makeStyles } from '@material-ui/core';\r\nimport EmailIcon from '@material-ui/icons/Email';\r\n\r\nimport classNames from 'classnames';\r\nimport FacebookLogoDisabled from '../../resources/facebookIconDisabled.png';\r\nimport TwitterLogoDisabled from '../../resources/twitterLogoDisabled.png';\r\nimport { useSharingDialog } from './SharingDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n listItemSubContainer: {\r\n textAlign: 'center'\r\n },\r\n disabledAnchor: {\r\n pointerEvents: 'none',\r\n cursor: 'default',\r\n color: \"#b4b4b4\"\r\n },\r\n socialIcons: {\r\n width: 40,\r\n height: 40,\r\n marginTop: -5\r\n },\r\n disabledButton: {\r\n backgroundColor: '#a7a7a7',\r\n },\r\n disabledText: {\r\n color: \"#a7a7a7\",\r\n pointerEvents: \"none\",\r\n cursor: \"default\"\r\n },\r\n urlInput: {\r\n maxHeight: 51,\r\n borderRadius: '0px',\r\n fontSize: '12px',\r\n [`& fieldset`]: {\r\n borderRadius: 0,\r\n }\r\n },\r\n listHorizontal: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n padding: 0,\r\n },\r\n listItem: {\r\n width: 70,\r\n \"&:nth-of-type(2)\": {\r\n width: 95\r\n }\r\n },\r\n mobileFormLabel: {\r\n [theme.breakpoints.down('sm')]: {\r\n marginLeft: 0\r\n },\r\n },\r\n switchLabel: {\r\n fontWeight: 500,\r\n fontSize: 16\r\n },\r\n copyButton: {\r\n width: '100%',\r\n height: 51,\r\n backgroundColor: '#5bb2f6',\r\n marginBottom: 8,\r\n color: '#FFF',\r\n textAlign: 'center',\r\n verticalAlign: 'middle',\r\n \"& span\": {\r\n display: 'inline-block',\r\n marginTop: 16\r\n },\r\n cursor: 'pointer',\r\n\r\n },\r\n}));\r\n\r\nexport function RenderUnsharedContent(){\r\n const classes = useStyles();\r\n const { sharedItem, sharedUrl } = useSharingDialog();\r\n \r\n return (\r\n \r\n \r\n \r\n Link for sharing\r\n \r\n \r\n \r\n \r\n \r\n
\r\n COPY LINK\r\n
\r\n
\r\n
\r\n
\r\n More sharing options\r\n
\r\n \r\n \r\n
\r\n \r\n Email\r\n
\r\n
\r\n \r\n
\r\n \"Facebook\"\r\n Facebook\r\n
\r\n
\r\n \r\n
\r\n \"Twitter\"\r\n Twitter\r\n
\r\n
\r\n
\r\n
\r\n {\r\n (sharedItem.videoPath && sharedItem.videoPath.length > 0) ?\r\n
\r\n Your video message\r\n
\r\n
\r\n \r\n  \r\n \r\n
\r\n
\r\n
:\r\n
\r\n Your video message See an example\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n }\r\n Your shared page\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n }\r\n classes={{ label: classes.switchLabel }}\r\n labelPlacement=\"start\"\r\n />\r\n \r\n
\r\n );\r\n}","import React, { useState } from 'react';\r\nimport { Dialog, DialogTitle, DialogContent, DialogActions, Button } from '@material-ui/core';\r\nimport { useSharingDialog } from './SharingDialog';\r\nimport { ShareService } from '../../services/ShareService';\r\nimport { AssetShareType } from '../../entities/ShareItem';\r\n\r\ninterface Props {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport function RemoveVideoDialog(props:Props){\r\n const sharingContext = useSharingDialog();\r\n const { sharedItem } = sharingContext;\r\n const [disabled, setDisabled] = useState(false);\r\n\r\n const removeVideo = async() => {\r\n if (!disabled)\r\n return;\r\n\r\n setDisabled(true);\r\n const response = await ShareService.saveAssetShare({\r\n commentsEnabled: sharedItem.commentsEnabled,\r\n enabled: sharedItem.enabled,\r\n assetShareId: sharedItem.id,\r\n assetShareVideoTypeId: AssetShareType.None,\r\n videoPath: undefined\r\n });\r\n setDisabled(false);\r\n\r\n if(response.error) return sharingContext.onError('An unknown error occurred. Please try again.');\r\n\r\n sharingContext.updateSharedItem(response.data);\r\n sharingContext.showMessage(\"Video Removed\")\r\n }\r\n\r\n return (\r\n \r\n Remove Video\r\n \r\n Are you sure you want to remove this video?\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","export default \"data:image/png;base64,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\"","import React, { useState } from 'react';\r\nimport { Button, DialogActions, DialogContentText, IconButton, InputAdornment, TextField } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { FieldValidationError, ValidationHelper } from '../../services/server/ServerResponses';\r\nimport { useSharingDialog } from './SharingDialog';\r\nimport { ShareService } from '../../services/ShareService';\r\nimport { AssetShareType } from '../../entities/ShareItem';\r\n\r\nconst vimeoRegex = /(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_-]+)?/i;\r\n\r\ninterface Props {\r\n onClose: () => void;\r\n}\r\n\r\nexport function RenderVimeo(props:Props){\r\n const sharingContext = useSharingDialog();\r\n const { sharedItem } = sharingContext;\r\n const [videoPath, setVideoPath] = useState(\"\");\r\n const [goodParse, setGoodParse] = useState(false);\r\n const [disabled, setDisabled] = useState(false);\r\n const [errors, setErrors] = useState([])\r\n\r\n const saveVemio = async(e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (!disabled)\r\n return;\r\n\r\n let url = tryParseUrlVimeo();\r\n\r\n if (url === null) {\r\n return;\r\n }\r\n\r\n setDisabled(true);\r\n const response = await ShareService.saveAssetShare({\r\n commentsEnabled: sharedItem.commentsEnabled,\r\n enabled: sharedItem.enabled,\r\n assetShareId: sharedItem.id,\r\n assetShareVideoTypeId: AssetShareType.Vimeo,\r\n videoPath: `vimeo://${url}`\r\n });\r\n setDisabled(false);\r\n\r\n if(response.error) return sharingContext.onError('An unknown error occurred. Please try again.');\r\n\r\n sharingContext.updateSharedItem(response.data);\r\n sharingContext.showMessage(\"Video saved\")\r\n }\r\n\r\n const tryParseUrlVimeo = () => {\r\n setErrors([])\r\n const parsedUrl = videoPath.match(vimeoRegex);\r\n\r\n if(!parsedUrl || parsedUrl.length === 0){\r\n setErrors([{ field: \"Url\", errors: ['Sorry, this Vimeo url is invalid. (Example: https://vimeo.com/265636445)'] }]);\r\n setGoodParse(false);\r\n return null\r\n }\r\n\r\n const url = parsedUrl[1];\r\n setGoodParse(true);\r\n return url;\r\n }\r\n\r\n const handleClear = () => {\r\n setGoodParse(false);\r\n setVideoPath(\"\");\r\n }\r\n\r\n return (\r\n
saveVemio(e)}>\r\n \r\n Add a link to your Vimeo video.\r\n \r\n setVideoPath(e.target.value)}\r\n helperText={}\r\n error={ValidationHelper.isFieldInError(errors, 'Url')}\r\n InputProps={{\r\n endAdornment:\r\n \r\n handleClear()}\r\n style={{ display: goodParse ? \"block\" : \"none\" }}\r\n >\r\n \r\n \r\n \r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React, { useState } from \"react\";\r\nimport { Button, DialogActions, DialogContentText, IconButton, InputAdornment, TextField } from \"@material-ui/core\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { FieldValidationError, ValidationHelper } from \"../../services/server/ServerResponses\";\r\nimport { ShareService } from \"../../services/ShareService\";\r\nimport { useSharingDialog } from \"./SharingDialog\";\r\nimport { AssetShareType } from \"../../entities/ShareItem\";\r\n\r\nconst youtubeRegex = /(?:youtube\\.com\\/(?:[^/]+\\/.+\\/|(?:v|e(?:mbed)?)\\/|.*[?&]v=)|youtu\\.be\\/)([^\"&?/ ]{11})/i;\r\n\r\ninterface Props {\r\n onClose: () => void;\r\n}\r\n\r\nexport function RenderYoutube(props:Props){\r\n const sharingContext = useSharingDialog();\r\n const { sharedItem } = sharingContext;\r\n const [videoPath, setVideoPath] = useState(\"\");\r\n const [goodParse, setGoodParse] = useState(false);\r\n const [disabled, setDisabled] = useState(false);\r\n const [errors, setErrors] = useState([])\r\n\r\n const saveYouTube = async(e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (disabled)\r\n return;\r\n\r\n let url = tryParseUrlYouTube();\r\n\r\n if (url === null) return;\r\n\r\n setDisabled(true);\r\n const response = await ShareService.saveAssetShare({\r\n commentsEnabled: sharedItem.commentsEnabled,\r\n enabled: sharedItem.enabled,\r\n assetShareId: sharedItem.id,\r\n assetShareVideoTypeId: AssetShareType.YouTube,\r\n videoPath: `youtube://${url}`\r\n });\r\n setDisabled(false);\r\n\r\n if(response.error) return sharingContext.onError('An unknown error occurred. Please try again.');\r\n\r\n sharingContext.updateSharedItem(response.data);\r\n sharingContext.showMessage(\"Video saved\")\r\n }\r\n\r\n const tryParseUrlYouTube = () => {\r\n setErrors([]);\r\n const parsed = videoPath.match(youtubeRegex);\r\n\r\n if(!parsed || parsed.length === 0){\r\n setErrors([{ field: \"Url\", errors: ['Sorry, this YouTube url is invalid. (Example: https://youtu.be/ELIqj32_IJs)'] }]);\r\n setGoodParse(false);\r\n return null\r\n }\r\n\r\n const url = parsed[1];\r\n setGoodParse(true);\r\n return url;\r\n }\r\n\r\n const handleClear = () => {\r\n setGoodParse(false);\r\n setVideoPath(\"\");\r\n }\r\n\r\n return (\r\n
saveYouTube(e)}>\r\n \r\n Add a link to your YouTube video.\r\n \r\n setVideoPath(e.target.value)}\r\n helperText={}\r\n error={ValidationHelper.isFieldInError(errors, 'Url')}\r\n InputProps={{\r\n endAdornment:\r\n \r\n handleClear()}\r\n style={{ display: goodParse ? \"block\" : \"none\" }}\r\n >\r\n \r\n \r\n \r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { Button, DialogActions, DialogContentText, IconButton, InputAdornment, TextField } from \"@material-ui/core\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport { FieldValidationError, ValidationHelper } from \"../../services/server/ServerResponses\";\r\nimport { ShareService } from \"../../services/ShareService\";\r\nimport { useSharingDialog } from \"./SharingDialog\";\r\nimport { AssetShareType } from \"../../entities/ShareItem\";\r\n\r\nconst facebookRegex = /^(https?:\\/\\/)?(www\\.)?facebook.com\\/[a-zA-Z0-9(.?)?]/i;\r\n\r\ninterface Props {\r\n onClose: () => void;\r\n}\r\n\r\nexport function RenderFacebook(props:Props){\r\n const sharingContext = useSharingDialog();\r\n const { sharedItem } = sharingContext;\r\n const [videoPath, setVideoPath] = useState(\"\");\r\n const [goodParse, setGoodParse] = useState(false);\r\n const [disabled, setDisabled] = useState(false);\r\n const [errors, setErrors] = useState([])\r\n\r\n const saveFacebook = async(e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (disabled)\r\n return;\r\n\r\n let url = tryParseUrlFacebook();\r\n\r\n if (url === null)\r\n return;\r\n\r\n \r\n setDisabled(true);\r\n const response = await ShareService.saveAssetShare({\r\n commentsEnabled: sharedItem.commentsEnabled,\r\n enabled: sharedItem.enabled,\r\n assetShareId: sharedItem.id,\r\n assetShareVideoTypeId: AssetShareType.Facebook,\r\n videoPath: `facebook://${url}`\r\n });\r\n setDisabled(false);\r\n\r\n if(response.error) return sharingContext.onError('An unknown error occurred. Please try again.');\r\n\r\n sharingContext.updateSharedItem(response.data);\r\n sharingContext.showMessage(\"Video saved\")\r\n }\r\n\r\n const tryParseUrlFacebook = () => {\r\n setErrors([])\r\n const parsedUrl = videoPath.match(facebookRegex);\r\n\r\n if(!parsedUrl || parsedUrl.length === 0){\r\n setErrors([{ field: \"Url\", errors: ['Sorry, this Facebook url is invalid. (Example: https://www.facebook.com/watch/?v=10153231379946729)'] }]);\r\n setGoodParse(false)\r\n return null\r\n }\r\n\r\n const url = parsedUrl[1];\r\n setGoodParse(true);\r\n return url;\r\n }\r\n \r\n const handleClear = () => {\r\n setGoodParse(false);\r\n setVideoPath(\"\");\r\n }\r\n\r\n return (\r\n
saveFacebook(e)}>\r\n \r\n Add a link to your Facebook video.\r\n \r\n setVideoPath(e.target.value )}\r\n helperText={}\r\n error={ValidationHelper.isFieldInError(errors, 'Url')}\r\n InputProps={{\r\n endAdornment:\r\n \r\n handleClear()}\r\n style={{ display: goodParse ? \"block\" : \"none\" }}\r\n >\r\n \r\n \r\n \r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React, { useState } from 'react';\r\nimport { Dialog, DialogTitle, DialogContent, List, ListItem, makeStyles } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport classNames from 'classnames';\r\nimport { AssetShareType } from '../../entities/ShareItem';\r\nimport { useIsMobile } from '../Mui3WidthProvider';\r\nimport FacebookThumbnail from '../../resources/facebook-thumb.png';\r\nimport VimeoThumbnail from '../../resources/vimeo-thumb.png';\r\nimport YouTubeThumbnail from '../../resources/youtube-thumb.png'\r\nimport { RenderVimeo } from './RenderVimeo';\r\nimport { RenderYoutube } from './RenderYoutube';\r\nimport { RenderFacebook } from './RenderFacebook';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n closeMobileIcon: {\r\n color: \"rgb(0, 0, 0, .4)\",\r\n position: \"absolute\",\r\n top: 10,\r\n right: 10\r\n },\r\n listHorizontal: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n padding: 0,\r\n },\r\n thumbnailListItem: {\r\n width: 105,\r\n marginLeft: 5,\r\n marginRight: 5\r\n },\r\n socialThumnails: {\r\n marginTop: -5\r\n },\r\n listItemSubContainer: {\r\n textAlign: 'center'\r\n },\r\n fakeAnchor: {\r\n textDecoration: 'underline',\r\n color: '#0000EE'\r\n },\r\n clickable: {\r\n cursor: 'pointer',\r\n \"&:hover\": {\r\n opacity: .8\r\n }\r\n }\r\n}));\r\n\r\ninterface Props {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport function ShareVideoDialog(props:Props){\r\n const isMobile = useIsMobile();\r\n const classes = useStyles()\r\n\r\n const [addVideoType, setAddVideoType] = useState(AssetShareType.None);\r\n\r\n return (\r\n \r\n Share a video message\r\n {isMobile && }\r\n \r\n \r\n
\r\n Step 1: Add your video to YouTube, Facebook, or Vimeo Learn how\r\n
\r\n
\r\n Step 2: Select your video service below\r\n
\r\n
\r\n \r\n setAddVideoType(AssetShareType.YouTube)} \r\n style={{ opacity: (addVideoType !== AssetShareType.None && addVideoType !== AssetShareType.YouTube) ? .2 : 1 }} \r\n className={classNames(classes.thumbnailListItem, classes.clickable)}\r\n >\r\n
\r\n \"Youtube\"\r\n YouTube\r\n
\r\n
\r\n setAddVideoType(AssetShareType.Facebook)}\r\n style={{ opacity: (addVideoType !== AssetShareType.None && addVideoType !== AssetShareType.Facebook) ? .2 : 1 }}\r\n className={classNames(classes.thumbnailListItem, classes.clickable)}\r\n >\r\n
\r\n \"Facebook\"\r\n Facebook\r\n
\r\n
\r\n setAddVideoType(AssetShareType.Vimeo)}\r\n style={{ opacity: (addVideoType !== AssetShareType.None && addVideoType !== AssetShareType.Vimeo) ? .2 : 1 }}\r\n className={classNames(classes.thumbnailListItem, classes.clickable)}\r\n >\r\n
\r\n \"Vimeo\"\r\n Vimeo\r\n
\r\n
\r\n
\r\n
\r\n {addVideoType === AssetShareType.Vimeo && }\r\n {addVideoType === AssetShareType.YouTube && }\r\n {addVideoType === AssetShareType.Facebook && }\r\n
\r\n \r\n )\r\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAiCAMAAACePYwXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAL0UExURf///xkZGUBAQG1tbTAwMPv7+xwcHP8BABoaGhsbGyMjIx0dHU9PT+Xl5SYmJubm5hcXF/39/czMzHd3d/z8/C8vLykpKVtbW+np6aKiou3t7RMTE1paWi4uLuzs7NjY2B8fHxAQECAgIElJSTQ0NP8FBP8CAf+1tHFxcfj4+O7u7hISEjg4OJubmzExMU5OTvr6+v/Av4SEhJCQkD09PVVVVdDQ0GRkZP/+/q+vr29vb/b29vLy8hUVFaCgoCoqKt/f32ZmZvn5+UJCQiIiInNzcygoKCUlJfDw8CQkJEZGRhgYGDMzMzc3N//5+f/Z2P8PDv8mJv/Ix1RUVJ2dnT8/P+fn5z4+PkxMTLm5uevr64+Pj+Hh4cHBwePj4w4ODm5ubvHx8d7e3isrK4eHhzk5OYWFhS0tLWBgYB4eHuTk5FJSUv8uLv+urf/e3v8IB/+goP9RUP97ev85OP+Cgv8MC/8UE//7+/+0s/87O//Cwv8rKv/6+v+0tP8cHP95ef8YF/8xMf/v7v+Ojf9SUv+xsf+Hh/+Wlv+8u/9BQP+qqaysrMDAwJ+fnwgICJycnLu7u8vLy42NjdHR0UFBQXV1dRYWFqOjo2tra1BQULi4uKioqKGhoe/v7+rq6iEhITU1Nbq6ukpKSnl5eTw8PNXV1URERFlZWb6+vsXFxUtLS4ODg5SUlF5eXre3t8rKyn19fTo6Otzc3NbW1ujo6GhoaP9ZWf/o6f89Pf+jo/+4t//Jyf/ExP94d//q6v8qKv+jov7k4/9EQ//Y1//Qz/9dXf+5t//i4v9wb//y8v/a2v9NS/+rqv83N/81Nf/Hxv9paP/R0f9UVP9ubf/o5//Ozf8sLP9GRf+EhP9PT//4+P7w7/9+f/9nZ//w7/8SEf9sbP/Ew/+amv6jov/r6qqqqoGBgeDg4JaWlgwMDGNjY5GRkfPz88nJyb29vZOTk7GxsYmJiXh4eGpqan9/f7W1taamptnZ2Zqaml1dXc7OztPT03eMJVAAAAQFSURBVEjHY2AYBaMADMr9/GosaGP0qZ0ll48WHtpRfDanuvraueLKztPbLtS3nyfRGC3eMBGckm0B7NhB4T2g7ETdXl4GBo/p/SvQtMWGSIJASCRMwJVLhx+XHRXsOMFdoPTT+Hg7BoYJ2i8noekz75Nm5OSQ7tOHCcywTebFZUkLbkvuP2FgCGPxdmVgiGb0nIymLyVUWZYv2WvKVJgAM6MoLkvK9+O2hB0ULTICESIMGQLLNNE0CrKy6nMwJYoIEmHJ9jK4kWqq6JZ0ARW8FpANs14y7RMoarVQ9fJwMFkjeMyMslEMcpC4t5ZzQlaYV4qw5NEDNGvagQreKnGv3OTJ+YFhRbCPyvKJDAzvg3/GMBiZms8FWeIkZ266muG7ePAPoCUL3prrLfoFTCZfTFicJ7EiLDmihjCzg+FhJ4olbUAFb0xs56xjlJVb6smY7ObNEsOwVZFtM0O2It8WkCWsvHyK2QzrGeM1GJg5WVIV5guYCjJYKXItyJTWRViyB8lMdQYGi8eBSAJ3QCoSFKemaC9nEBYQE/rqImDMYMXJJ88gzskiAbaEn4VNhkGIi0OYgZlNwTiJSUl2XpYYh5HWTAF9eGwxHEO1hIHh9o06uEA9SGD2tAhT6TUMqzicGaRYOMxxWwKKEytOLvkebravDIsFfKWwZhOwJQxNN+ECe0H8JHs3+/m/DEzYlBm0VNiCGTRwWiLKz7CBU+nXbI7MdwzPBPQQWdMQzZJbzQ0IgSKQCpEIBRcTaw9fbmUGKRVuHnyW8DIYcSgISXIo6W5O4ESyZDeqJa2NyBFfAlaSxsmmwSAHtUQfvyVpQEumc4hxezMKuCNyzeF8hJmGh9GyfzNYiSUbRz/cEh7ClkhycM0wNjZ+YQO35DiieFS7jl5UFsAsCWHw2AiJk2z8loDi5BsHdw9qrj1Zh6dY2YWwhNWLcxmDlB5HBih1bWJYywG1hFeUTZzhN8QSFimGBE7PTRPYuL8y9OqZzkXYUonbDtXDCEsYHBnTHVZyeacwuHIqRcalKkEsMZDyyfRK1GXjBFrC6b4wbomCj80md86PTo6KOkhFThFuS3JqwCq6bbV/MDAsZOTW8eHkW8owR5orXXQVt9gWBmXtjdaCizjcWUyYFF0ZtkqLpYu52DoyWGRIuzm7aBshhdeVQJweqYWomBAa3g2k7MLd7L1mMTDYvBKTff1rykw5hs/ha60ZVqSKOZtFq0xiMNJZHBlqr7+JgYHfkYVP55k1cqwcPNHYUIpWMqrllwVeMkQU6uASwjomBlLoxUQxMLACmSIggsHGwYBB0ECEQcRAEKgEomLe80T04t6iKe9iUJVhRe6ZAwVdua0dVeev+u+7NdquGgWjAAgAPX8GP20ZprkAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","import React, { useMemo, useState } from 'react';\r\nimport { DialogContent, Grid, Typography, TextField, List, ListItem, Button, FormControl, FormControlLabel, Switch, makeStyles } from '@material-ui/core';\r\nimport EmailIcon from '@material-ui/icons/Email';\r\n\r\nimport FacebookLogo from '../../resources/facebookIcon.png';\r\nimport TwitterLogo from '../../resources/twitterIcon.png';\r\nimport { useAuthenticatedUser } from '../../utilities/useAuthenticatedUser';\r\nimport { RemoveVideoDialog } from './RemoveVideoDialog';\r\nimport { ShareVideoDialog } from './ShareVideoDialog';\r\nimport { ShareService } from '../../services/ShareService';\r\nimport { useSharingDialog } from './SharingDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n urlInput: {\r\n maxHeight: 51,\r\n borderRadius: '0px',\r\n fontSize: '12px',\r\n [`& fieldset`]: {\r\n borderRadius: 0,\r\n }\r\n },\r\n listHorizontal: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n padding: 0,\r\n },\r\n listItem: {\r\n width: 70,\r\n \"&:nth-of-type(2)\": {\r\n width: 95\r\n }\r\n },\r\n mobileFormLabel: {\r\n [theme.breakpoints.down('sm')]: {\r\n marginLeft: 0\r\n },\r\n },\r\n switchLabel: {\r\n fontWeight: 500,\r\n fontSize: 16\r\n },\r\n copyButton: {\r\n width: '100%',\r\n height: 51,\r\n backgroundColor: '#5bb2f6',\r\n marginBottom: 8,\r\n color: '#FFF',\r\n textAlign: 'center',\r\n verticalAlign: 'middle',\r\n \"& span\": {\r\n display: 'inline-block',\r\n marginTop: 16\r\n },\r\n cursor: 'pointer',\r\n },\r\n socialIcons: {\r\n width: 40,\r\n height: 40,\r\n marginTop: -5\r\n },\r\n listItemSubContainer: {\r\n textAlign: 'center'\r\n },\r\n}));\r\n\r\nexport function RenderSharedContent(){\r\n const classes = useStyles();\r\n const user = useAuthenticatedUser();\r\n const sharingContext = useSharingDialog();\r\n const { sharedItem, sharedUrl } = sharingContext;\r\n\r\n const [disabled, setDisabled] = useState(false);\r\n const [showLinkVideo, setShowLinkVideo] = useState(false);\r\n const [showRemoveVideo, setShowRemoveVideo] = useState(false);\r\n\r\n const encodedEmailUrl = useMemo(() => {\r\n let emailUrl = 'mailto:?body=I want to share ';\r\n emailUrl += `this ${sharedItem.category}`;\r\n emailUrl += ` ${sharedUrl}`;\r\n \r\n emailUrl += `${sharedItem.slug}&subject=I want you to see this ${sharedItem.category}`;\r\n\r\n return encodeURI(emailUrl);\r\n }, [sharedUrl, sharedItem]) \r\n\r\n const encodedFacebookUrl = useMemo(() => {\r\n let facebookUrl = 'https://www.facebook.com/sharer/sharer.php';\r\n facebookUrl += `?u=${sharedUrl}`;\r\n facebookUrl += `"e=${sharedItem.name}`;\r\n facebookUrl += ` by ${user.firstName} ${user.lastName}`;\r\n\r\n return encodeURI(facebookUrl)\r\n }, [sharedUrl, sharedItem])\r\n\r\n const encodedTwitterUrl = useMemo(() => {\r\n let twitterUrl = 'https://twitter.com/share?ref_src=twsrc%5Etfw';\r\n twitterUrl += `&url=${sharedUrl}`;\r\n twitterUrl += `&title=${sharedItem.name}`;\r\n twitterUrl += ` by ${user.firstName} ${user.lastName}`;\r\n return encodeURI(twitterUrl);\r\n }, [sharedUrl, sharedItem])\r\n\r\n const handleCopy = () => {\r\n let el = document.getElementById(\"urlInput\") as HTMLInputElement;\r\n \r\n if (!el) {\r\n return;\r\n }\r\n \r\n // handle iOS as a special case\r\n if (navigator.userAgent.match(/ipad|ipod|iphone/i)) {\r\n // save current contentEditable/readOnly status\r\n var editable = el.contentEditable;\r\n var readOnly = el.readOnly;\r\n\r\n // convert to editable with readonly to stop iOS keyboard opening\r\n el.contentEditable = \"true\";\r\n el.readOnly = true;\r\n\r\n // create a selectable range\r\n var range = document.createRange();\r\n range.selectNodeContents(el);\r\n\r\n // select the range\r\n var selection = window.getSelection();\r\n if (selection) {\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n el.setSelectionRange(0, 999999);\r\n\r\n // restore contentEditable/readOnly to original state\r\n el.contentEditable = editable;\r\n el.readOnly = readOnly;\r\n } else {\r\n el.select();\r\n }\r\n \r\n document.execCommand(\"copy\");\r\n sharingContext.showMessage(\"Link copied to clipboard.\");\r\n }\r\n\r\n const handleCommentsToggle = async() => {\r\n if(disabled) return;\r\n\r\n setDisabled(true);\r\n const response = await ShareService.saveAssetShare({\r\n commentsEnabled: !sharedItem.commentsEnabled,\r\n enabled: sharedItem.enabled,\r\n assetShareId: sharedItem.id,\r\n assetShareVideoTypeId: sharedItem.assetShareType,\r\n videoPath: sharedItem.videoPath\r\n });\r\n setDisabled(false);\r\n\r\n if(response.error) return sharingContext.onError('An unknown error occurred. Please try again.');\r\n\r\n sharingContext.updateSharedItem(response.data);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Link for sharing\r\n \r\n \r\n \r\n \r\n \r\n
handleCopy()}>\r\n COPY LINK\r\n
\r\n
\r\n
\r\n
\r\n More sharing options\r\n
\r\n \r\n \r\n
\r\n \r\n Email\r\n
\r\n
\r\n \r\n
\r\n \"Facebook\"\r\n Facebook\r\n
\r\n
\r\n \r\n
\r\n \"Twitter\"\r\n Twitter\r\n
\r\n
\r\n
\r\n
\r\n {\r\n (sharedItem.videoPath && sharedItem.videoPath.length > 0) ?\r\n
\r\n Your video message\r\n
\r\n
\r\n \r\n  \r\n \r\n
\r\n
\r\n
:\r\n
\r\n Your video message See an example\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n }\r\n {!disabled &&\r\n <>\r\n
\r\n Your shared page\r\n
\r\n
\r\n \r\n
\r\n \r\n }\r\n \r\n handleCommentsToggle()}\r\n value=\"Share\"\r\n color=\"primary\"\r\n />\r\n }\r\n classes={{ label: classes.switchLabel }}\r\n labelPlacement=\"start\"\r\n />\r\n \r\n setShowRemoveVideo(false)} />\r\n setShowLinkVideo(false)} />\r\n
\r\n );\r\n}","import React, { createContext, useEffect, useMemo, useState } from \"react\";\r\n\r\nimport { Dialog, CircularProgress, DialogTitle, FormControl, FormControlLabel, DialogActions, Button, Switch, makeStyles } from \"@material-ui/core\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ChatIcon from '@material-ui/icons/ChatBubble';\r\nimport PeopleIcon from '@material-ui/icons/People';\r\n\r\nimport { CommentsCount } from \"react-facebook\";\r\nimport { useIsMobile } from \"../Mui3WidthProvider\";\r\nimport { ShareItem } from \"../../entities/ShareItem\";\r\nimport UserSharePreference from \"../../entities/UserSharePreference\";\r\nimport { useAuthenticatedUser } from \"../../utilities/useAuthenticatedUser\";\r\nimport { ShareService } from \"../../services/ShareService\";\r\nimport { RenderNonPaidUnshareDialog } from \"./RenderNonPaidUnshareDialog\";\r\nimport { SubdomainSetupDialog } from \"./SubdomainSetupDialog\";\r\nimport { RenderUnsharedContent } from \"./RenderUnsharedContent\";\r\nimport { RenderSharedContent } from \"./RenderSharedContent\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n minWidth: '600px',\r\n [theme.breakpoints.down('sm')]: {\r\n minWidth: 'initial'\r\n },\r\n },\r\n closeMobileIcon: {\r\n color: \"rgb(0, 0, 0, .4)\",\r\n position: \"absolute\",\r\n top: 10,\r\n right: 10\r\n },\r\n titleRight: {\r\n float: 'right',\r\n paddingTop: 5,\r\n [theme.breakpoints.down('sm')]: {\r\n float: 'initial'\r\n },\r\n },\r\n mobileFormLabel: {\r\n [theme.breakpoints.down('sm')]: {\r\n marginLeft: 0\r\n },\r\n },\r\n switchLabel: {\r\n fontWeight: 500,\r\n fontSize: 16\r\n },\r\n loadingContainer: {\r\n height: 375,\r\n width: 600,\r\n textAlign: 'center',\r\n [theme.breakpoints.down('sm')]: {\r\n height: 'auto',\r\n width: 'auto'\r\n },\r\n },\r\n}));\r\n\r\ninterface SharingDialogContext {\r\n sharedItem: ShareItem;\r\n sharedUrl: string;\r\n updateSharedItem: (item:ShareItem) => void;\r\n onError: (message:string) => void;\r\n showMessage: (message:string) => void;\r\n}\r\n\r\nconst ReactSharingDialogContext = createContext({} as SharingDialogContext);\r\n\r\nexport const useSharingDialog = () => React.useContext(ReactSharingDialogContext);\r\n\r\ninterface Props {\r\n onClose: () => void;\r\n isOpen: boolean;\r\n id: string;\r\n onError: (message: string) => void;\r\n onGiveMessage: (message: string) => void;\r\n}\r\n\r\nexport function SharingDialog(props:Props){\r\n const isMobile = useIsMobile();\r\n const classes = useStyles();\r\n const user = useAuthenticatedUser();\r\n const [disabled, setDisabled] = useState(true);\r\n const [openUnshareNonPaidDialog, setOpenUnshareNonPaidDialog] = useState(false);\r\n const [firstTimeUser, setFirstTimeUser] = useState(false);\r\n const [sharedItem, setSharedItem] = useState();\r\n const [sharePreferences, setSharePreferences] = useState();\r\n\r\n const shareUrl = useMemo(() => `https://${sharePreferences?.subdomain}${sharedItem?.slug}`, [sharedItem, sharePreferences]);\r\n\r\n useEffect(() => {\r\n async function fetchData(){\r\n setDisabled(true);\r\n const sharePreferencesResponse = await ShareService.getUserSharePreference();\r\n setDisabled(false);\r\n\r\n if(sharePreferencesResponse.error){\r\n props.onError(\"Unable to initialize share. Please try again\");\r\n return props.onClose();\r\n }\r\n\r\n if(!sharePreferencesResponse.data) return setFirstTimeUser(true);\r\n \r\n setSharePreferences(sharePreferencesResponse.data);\r\n\r\n setDisabled(true);\r\n const existingShareResponse = await ShareService.getUserShareItem(props.id);\r\n setDisabled(false);\r\n\r\n if(existingShareResponse.error){\r\n props.onError(\"Unable to get share. Please try again\");\r\n return props.onClose();\r\n };\r\n\r\n if(existingShareResponse.data) return setSharedItem(existingShareResponse.data);\r\n\r\n setDisabled(true);\r\n const newShareResponse = await ShareService.createUserShareItem(props.id);\r\n setDisabled(false);\r\n\r\n if(newShareResponse.error) {\r\n props.onError(\"Unable to get share. Please try again\");\r\n return props.onClose();\r\n }\r\n\r\n setSharedItem(newShareResponse.data)\r\n }\r\n\r\n fetchData();\r\n }, []);\r\n\r\n const handleSubdomainSetup = (item:ShareItem, updatedPreferences:UserSharePreference) => {\r\n setSharedItem(item);\r\n setSharePreferences(updatedPreferences);\r\n setFirstTimeUser(false);\r\n }\r\n\r\n const handleShareToggle = async (e: React.ChangeEvent) => {\r\n e.preventDefault()\r\n if(!sharedItem) return;\r\n if (disabled) return;\r\n\r\n if(!user.makerSubscription) return setOpenUnshareNonPaidDialog(true);\r\n\r\n setDisabled(true);\r\n const response = await ShareService.saveAssetShare({\r\n commentsEnabled: sharedItem.commentsEnabled,\r\n enabled: e.currentTarget.checked,\r\n assetShareId: sharedItem.id,\r\n assetShareVideoTypeId: sharedItem.assetShareType,\r\n videoPath: sharedItem.videoPath\r\n });\r\n setDisabled(false);\r\n\r\n if(response.error) return props.onError('An unknown error occurred. Please try again.');\r\n\r\n setSharedItem(response.data);\r\n props.onGiveMessage(`Share is now ${response.data.enabled ? \"enabled\" : \"disabled\"}.`)\r\n }\r\n\r\n if (openUnshareNonPaidDialog && sharedItem) {\r\n return (\r\n {setSharedItem(item); setOpenUnshareNonPaidDialog(false)}} \r\n />\r\n )\r\n }\r\n\r\n if (firstTimeUser) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n props.onClose()}\r\n fullScreen={isMobile}\r\n >\r\n
\r\n { !sharedItem\r\n ?\r\n
\r\n \r\n
\r\n :\r\n \r\n {isMobile && }\r\n \r\n
\r\n
\r\n sharedItem.enabled ? window.location.assign(shareUrl) : null}\r\n style={{\r\n cursor: `${sharedItem.enabled ? \"pointer\" : \"initial\"}`,\r\n paddingTop: 6,\r\n paddingBottom: 6,\r\n paddingLeft: 4,\r\n paddingRight: 4,\r\n color: \"#FFF\",\r\n backgroundColor: `${sharedItem.enabled ? \"rgb(66, 133, 244)\" : \"#a7a7a7\"}`,\r\n borderRadius: 4,\r\n verticalAlign: \"super\",\r\n display: 'inline-flex',\r\n marginLeft: 0,\r\n }}\r\n >\r\n {sharedItem.views}\r\n \r\n \r\n
\r\n
\r\n sharedItem.enabled ? window.location.assign(shareUrl) : null}\r\n style={{\r\n cursor: `${sharedItem.enabled ? \"pointer\" : \"initial\"}`,\r\n paddingTop: 6,\r\n paddingBottom: 6,\r\n paddingLeft: 4,\r\n paddingRight: 4,\r\n color: \"#FFF\",\r\n backgroundColor: `${sharedItem.enabled ? \"rgb(66, 133, 244)\" : \"#a7a7a7\"}`,\r\n borderRadius: 4,\r\n verticalAlign: \"super\",\r\n display: 'inline-flex',\r\n marginLeft: 8,\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n }\r\n classes={{ label: classes.switchLabel }}\r\n labelPlacement=\"start\"\r\n />\r\n \r\n
\r\n
\r\n {sharedItem.enabled\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n
\r\n }\r\n
\r\n \r\n );\r\n}","import React, { useState } from 'react';\r\n\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport { Button, makeStyles, Dialog, DialogActions, DialogContent, FormHelperText, TextField, Typography } from '@material-ui/core';\r\nimport { FieldValidationError, ValidationHelper } from '../services/server/ServerResponses';\r\nimport { useIsMobile } from './Mui3WidthProvider';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n minWidth: '600px',\r\n [theme.breakpoints.down('sm')]: {\r\n minWidth: 'initial'\r\n },\r\n },\r\n closeMobileIcon: {\r\n color: \"rgb(0, 0, 0, .4)\",\r\n position: \"absolute\",\r\n top: 10,\r\n right: 10\r\n },\r\n titleRight: {\r\n float: 'right',\r\n paddingTop: 5,\r\n [theme.breakpoints.down('sm')]: {\r\n float: 'initial'\r\n },\r\n },\r\n mobileFormLabel: {\r\n [theme.breakpoints.down('sm')]: {\r\n marginLeft: 0\r\n },\r\n },\r\n switchLabel: {\r\n fontWeight: 500,\r\n fontSize: 16\r\n },\r\n copyButton: {\r\n width: '100%',\r\n height: 51,\r\n backgroundColor: '#5bb2f6',\r\n marginBottom: 8,\r\n color: '#FFF',\r\n textAlign: 'center',\r\n verticalAlign: 'middle',\r\n \"& span\": {\r\n display: 'inline-block',\r\n marginTop: 16\r\n },\r\n cursor: 'pointer',\r\n\r\n },\r\n disabledButton: {\r\n backgroundColor: '#a7a7a7',\r\n },\r\n disabledText: {\r\n color: \"#a7a7a7\",\r\n pointerEvents: \"none\",\r\n cursor: \"default\"\r\n },\r\n urlInput: {\r\n maxHeight: 51,\r\n borderRadius: '0px',\r\n fontSize: '12px',\r\n [`& fieldset`]: {\r\n borderRadius: 0,\r\n }\r\n },\r\n listHorizontal: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n padding: 0,\r\n },\r\n listItem: {\r\n width: 70,\r\n \"&:nth-of-type(2)\": {\r\n width: 95\r\n }\r\n },\r\n socialIcons: {\r\n width: 40,\r\n height: 40,\r\n marginTop: -5\r\n },\r\n listItemSubContainer: {\r\n textAlign: 'center'\r\n },\r\n disabledAnchor: {\r\n pointerEvents: 'none',\r\n cursor: 'default',\r\n color: \"#b4b4b4\"\r\n },\r\n loadingContainer: {\r\n height: 375,\r\n width: 600,\r\n textAlign: 'center',\r\n [theme.breakpoints.down('sm')]: {\r\n height: 'auto',\r\n width: 'auto'\r\n },\r\n }\r\n}));\r\n\r\nexport interface Props {\r\n onClose: () => void;\r\n isOpen: boolean;\r\n errors: FieldValidationError[];\r\n onSave: (title: string, description?: string) => void;\r\n}\r\n\r\nexport function SaveAsTemplateDialog(props:Props){\r\n const [isDisabled, setIsDisabled] = useState(false);\r\n const [templateTitle, setTemplateTitle] = useState(\"\");\r\n const [templateDescription, setTemplateDescription] = useState('');\r\n const isMobile = useIsMobile();\r\n const classes = useStyles();\r\n\r\n const handleSaveConfirm = async (e: React.FormEvent) => {\r\n e.preventDefault(); \r\n setIsDisabled(true)\r\n await props.onSave(templateTitle, templateDescription);\r\n setIsDisabled(false)\r\n }\r\n \r\n return (\r\n props.onClose()}\r\n fullScreen={isMobile}\r\n disableEscapeKeyDown={isDisabled}\r\n disableBackdropClick={isDisabled}\r\n >\r\n
\r\n {isMobile && }\r\n
handleSaveConfirm(e) }>\r\n \r\n \r\n Save As Custom Template\r\n \r\n setTemplateTitle(e.target.value)}\r\n fullWidth\r\n />\r\n {ValidationHelper.isFieldInError(props.errors, 'Name') &&\r\n \r\n }\r\n setTemplateDescription(e.target.value)}\r\n fullWidth\r\n />\r\n {ValidationHelper.isFieldInError(props.errors, 'TemplateDescription') &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n );\r\n}","import React from 'react';\r\nimport { MuiThemeProvider, createTheme, Theme } from '@material-ui/core/styles';\r\nimport blue from '@material-ui/core/colors/blue';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\n\r\n// A theme with custom primary and secondary color.\r\n// It's optional.\r\nconst theme = createTheme({\r\n typography: {\r\n },\r\n palette: {\r\n primary: blue,\r\n secondary: {\r\n main: '#d90000',\r\n },\r\n background: {\r\n default: \"#FFF\"\r\n }\r\n },\r\n overrides: {\r\n MuiCssBaseline: {\r\n '@global': {\r\n '@font-face': { fontFamily: 'Poppins' },\r\n }\r\n },\r\n MuiListItemIcon: {\r\n root: {\r\n minWidth: 40\r\n },\r\n },\r\n }\r\n});\r\n\r\nconst useThemeContext = React.createContext(theme);\r\n\r\nexport function useTheme() {\r\n\treturn React.useContext(useThemeContext);\r\n}\r\n\r\nfunction withRoot

(Component: React.ComponentType

) {\r\n function WithRoot(props: P) {\r\n // MuiThemeProvider makes the theme available down the React tree\r\n // thanks to React context.\r\n const propsAny = props as any;\r\n return (\r\n \r\n {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return WithRoot;\r\n}\r\n\r\nexport default withRoot;","import { ApplicationUser } from '../../src/entities/ApplicationUser';\r\nimport { WebClient } from './server/WebClient';\r\n\r\nexport const AdminService = {\r\n stopImpersonation: () => WebClient.Get(\"api/Admin/StopImpersonation\"),\r\n\r\n cancelAndRefundMakerSubscription: () => WebClient.Put.Validated(\"api/Admin/CancelAndRefundMakerSubscription\", {})\r\n}\r\n","import React, {useMemo, useState} from \"react\";\r\nimport { routes } from \"../routes\";\r\nimport {useOfflineAssets} from '../pages/offline/useOfflineAssets'\r\nimport { useUser } from \"../utilities/useUser\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useTheme } from \"../withRoot\";\r\nimport { Menu, MenuItem, Avatar} from \"@material-ui/core\";\r\nimport { AdminService } from \"../../src/services/AdminService\";\r\nimport { AuthenticationService } from \"../../src/services/AuthenticationService\";\r\n\r\ninterface Props{\r\n\tadminMode?: boolean;\r\n}\r\n\r\nexport function UserAvatar(props: Props){\r\n\tconst { adminMode} = props;\r\n\tconst userContext = useUser();\r\n\tconst {onlineMode, toggleOfflineMode } = useOfflineAssets();\r\n\tconst history = useHistory();\r\n\tconst theme = useTheme();\r\n\t\r\n\tconst { offlineUser, onlineUser } = userContext;\r\n\tconst [userMenu, setUserMenu] = useState(undefined);\r\n\tconst user = useMemo(() => onlineUser ? onlineUser : offlineUser ,[onlineUser, offlineUser])\r\n\r\n\tconst handleSignOutClick = async() => {\r\n\t\tif (user && user.inAdminImpersonationMode) {\r\n\t\t\tconst result = await AdminService.stopImpersonation();\r\n\t\t\tif (result.success) {\r\n\t\t\t\tuserContext.updateUser(result.data);\r\n\t\t\t\twindow.location.assign(routes.app.libraryHomePage);\r\n\t\t\t} else {\r\n\t\t\t\twindow.location.reload();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst windowLocation = await AuthenticationService.signOut();\r\n\r\n\t\t\tuserContext.updateUser(null);\r\n\t\t\tif (windowLocation) {\r\n\t\t\t\twindow.location.assign(routes.public.signInPage);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif(!user){\r\n\t\treturn null\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t setUserMenu(e.currentTarget)} style={{ cursor: 'pointer', backgroundColor: theme.palette.primary.light }} src={user.profileImageUrl ?? undefined}>\r\n\t\t\t\t{user.firstName.charAt(0)}\r\n\t\t\t\t{user.lastName.charAt(0)}\r\n\t\t\t\r\n\t\t\t

setUserMenu(undefined)}>\r\n\t\t\t\t{!adminMode && history.push(routes.app.settings)} disabled={!onlineMode}>Settings}\r\n\t\t\t\t{\r\n\t\t\t\t\tonlineMode\r\n\t\t\t\t\t?\r\n\t\t\t\t\t toggleOfflineMode(true)}>Go Offline\r\n\t\t\t\t\t:\r\n\t\t\t\t\t toggleOfflineMode(false)}>Go Online\r\n\t\t\t\t}\r\n\t\t\t\t handleSignOutClick()} disabled={!onlineMode}>Sign Out\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","export const printStyles = \r\n`html,body {\r\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Helvetica Neue\", Arial, sans-serif;\r\n height: 100%;\r\n -webkit-print-color-adjust: exact;\r\n color-adjust: exact;\r\n}\r\n\r\n#root {\r\n height: 100%;\r\n}\r\n\r\nbody {\r\n background-color: #eceff4;\r\n}\r\n\r\n.sc-content-spinner {\r\n display: block;\r\n margin: auto;\r\n margin-top: 25%;\r\n width: 25%;\r\n}\r\n\r\n.print-page {\r\n display: none;\r\n}\r\n\r\n@media print {\r\n .print-page {\r\n display: block;\r\n margin: 50px;\r\n }\r\n\r\n .print-page::before { \r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n /* Custom styling for builder */\r\n .slide {\r\n border-color: #2196f3;\r\n border-bottom-style: double;\r\n line-height: 1.9rem;\r\n position: relative;\r\n }\r\n \r\n .slide[right-open] {\r\n border-right: none;\r\n }\r\n \r\n .slide[left-open] {\r\n border-left: none;\r\n }\r\n \r\n .slide[count]::before {\r\n content: attr(count);\r\n position: absolute;\r\n font-size: 8px;\r\n font-weight: 700;\r\n background: #2196f3;\r\n color: white;\r\n width: 16px;\r\n height: 10px;\r\n right: 0;\r\n text-align: center;\r\n line-height: 8px;\r\n box-shadow: 0 0 1px #333;\r\n bottom: -11px;\r\n border-top-right-radius: 0;\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 5px;\r\n border-bottom-right-radius: 5px;\r\n transition: all 0.2s ease 0s;\r\n }\r\n}\r\n\r\n/* Custom styling for builder */\r\nslide {\r\n border-color: #2196f3;\r\n border-bottom-style: double;\r\n line-height: 1.9rem;\r\n position: relative;\r\n}\r\n\r\nslide[right-open] {\r\n border-right: none;\r\n}\r\n\r\nslide[left-open] {\r\n border-left: none;\r\n}\r\n\r\nslide[count]::before {\r\n content: attr(count);\r\n position: absolute;\r\n font-size: 8px;\r\n font-weight: 700;\r\n background: #2196f3;\r\n color: white;\r\n width: 16px;\r\n height: 10px;\r\n right: 0;\r\n text-align: center;\r\n line-height: 8px;\r\n box-shadow: 0 0 1px #333;\r\n bottom: -11px;\r\n border-top-right-radius: 0;\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 5px;\r\n border-bottom-right-radius: 5px;\r\n transition: all 0.2s ease 0s;\r\n}\r\n#editor {\r\n line-height: 1.75em;\r\n}\r\n\r\n#editor li {\r\n line-height: 1.6em;\r\n}\r\n\r\n/* Custom backgrounds */\r\n\r\n.marker-yellow {\r\n background: #fdfd77;\r\n}\r\n\r\n.marker-green {\r\n background: #63f963;\r\n}\r\n\r\n.marker-light-red {\r\n background: #fc7999;\r\n}\r\n\r\n.marker-blue {\r\n background: #72cdfd;\r\n}\r\n\r\n.marker-orange {\r\n background: #ff9800;\r\n}\r\n\r\n.marker-purple {\r\n background: #ce93d8;\r\n}\r\n\r\n.marker-black {\r\n background: #000000;\r\n color: #FFFFFF;\r\n}\r\n\r\n/* Custom font colors */\r\n.pen-red {\r\n color: #e91313;\r\n background: unset;\r\n}\r\n\r\n.pen-blue {\r\n color: #72cdfd;\r\n background: unset;\r\n}\r\n`","import { printStyles } from \"./printStyle\";\r\ndeclare const html2pdf: any;\r\nlet count = 0;\r\n\r\nexport const ExportHtml = {\r\n\tdownloadAsPdf: (fileName: string, html: string) => {\r\n\t\tlet allStyles = document.getElementsByTagName(\"style\");\r\n\t\tlet styleHtml = \"\";\r\n\t\tconst text = html.replace(/<(?:.|\\n)*?>/gm, (match) => mutateHtml(match));\r\n\t\tcount = 0;\r\n\r\n\t\tfor (let i = 0; i < allStyles.length; i++) {\r\n\t\t\tstyleHtml += ``;\r\n\t\t}\r\n\r\n\t\tlet outputHtml = `\r\n \r\n \r\n ${styleHtml}\r\n \r\n \r\n ${text}\r\n \r\n `;\r\n\t\t\r\n\t\t// https://github.com/eKoopmans/html2pdf#options\r\n\t\tvar options = {\r\n\t\t\tmargin: 1,\r\n\t\t\tfilename: `${fileName}.pdf`,\r\n\t\t\timage: { type: \"jpeg\", quality: 0.98 },\r\n\t\t\thtml2canvas: { scale: 2, logging: false },\r\n\t\t\tjsPDF: { unit: \"in\", format: \"letter\", orientation: \"portrait\" },\r\n\t\t\tpagebreak: { mode: \"avoid-all\" },\r\n\t\t};\r\n\t\thtml2pdf().set(options).from(outputHtml).save();\r\n\t},\r\n\r\n\tprint: (html: string, columns: number) => {\r\n\t\tconst text = html.replace(/<(?:.|\\n)*?>/gm, (match) => mutateHtml(match));\r\n\t\tcount = 0;\r\n\r\n\t\tconst columnStyle = columns === 1 ? \"\" : `style=\"columns:${columns};-moz-column-count: ${columns};-webkit-column-count:${columns}\"`\r\n\r\n\t\tlet outputHtml = `\r\n \r\n \r\n\t\t\t \r\n\t\t\t\r\n \r\n
${text}
\r\n \r\n `;\r\n\r\n\t\tlet win = window.open();\r\n\t\tif (win != null) {\r\n\t\t\twin.document.write(outputHtml);\r\n\t\t\twin.print();\r\n\t\t\twin.close();\r\n\t\t}\r\n\t},\r\n};\r\n\r\nfunction mutateHtml(match: string) {\r\n\tswitch (match) {\r\n\t\tcase \"
\":\r\n\t\t\treturn \"
\";\r\n\t\tcase \"
\":\r\n\t\t\treturn \"
\";\r\n\t\tcase \"\":\r\n\t\t\tcount++;\r\n\t\t\treturn ``;\r\n\t\tcase \"\":\r\n\t\t\treturn \"
\";\r\n\t\tdefault:\r\n\t\t\treturn match;\r\n\t}\r\n}\r\n","export enum DrawerContent {\r\n Bible = \"Bible\",\r\n Sermon = \"Sermons\",\r\n Illustration = \"Illustrations\",\r\n Details = \"Details\",\r\n Slides = \"Slides\",\r\n Genius = \"Sermon Genius\",\r\n Analyzer = \"Sermon Analyzer\",\r\n Assistant = \"AI Assistant\",\r\n}\r\n\r\nexport function toDrawerContent(drawerContentValue: string)\r\n{\r\n switch(drawerContentValue){\r\n case \"Bible\": return DrawerContent.Bible; \r\n case \"Sermons\": return DrawerContent.Sermon; \r\n case \"Illustrations\": return DrawerContent.Illustration; \r\n case \"Details\": return DrawerContent.Details; \r\n case \"Slides\": return DrawerContent.Slides; \r\n case \"Sermon Genius\": return DrawerContent.Genius;\r\n case \"Sermon Analyzer\": return DrawerContent.Analyzer;\r\n case \"AI Assistant\": return DrawerContent.Assistant;\r\n default: return DrawerContent.Bible;\r\n }\r\n}","import React from \"react\";\r\nimport { DrawerContent } from \"../../../entities/DrawerContent\";\r\n\r\nexport interface BuilderDrawerState {\r\n drawerOpen: boolean;\r\n drawerContent: DrawerContent;\r\n\tonMainDrawerChange: (open: boolean, contentType?: DrawerContent) => void;\r\n showGeniusBadge: boolean;\r\n dismissGeniusBadge: () => void;\r\n}\r\n\r\nexport const BuilderDrawerContext = React.createContext({} as any);\r\n\r\nexport function useBuilderDrawer() {\r\n\treturn React.useContext(BuilderDrawerContext);\r\n}","import React from \"react\";\r\nimport { SvgIcon } from \"@material-ui/core\";\r\n\r\nexport function RocketLaunchIcon() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nimport FilterIcon from \"@material-ui/icons/Filter\";\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\nimport LibraryBooksIcon from \"@material-ui/icons/LibraryBooks\";\r\nimport PagesIcon from \"@material-ui/icons/Pages\";\r\nimport ImportContactsIcon from \"@material-ui/icons/ImportContacts\";\r\nimport InfinityIcon from \"@material-ui/icons/AllInclusive\";\r\nimport BarChartIcon from \"@material-ui/icons/InsertChartOutlined\";\r\nimport SolidIcon from \"@material-ui/icons/Brightness1\";\r\nimport { makeStyles, ListItem, Tooltip, IconButton, Badge } from \"@material-ui/core\";\r\n\r\nimport { useOfflineAssets } from '../../../offline/useOfflineAssets'\r\nimport { DrawerContent } from \"../../../../entities/DrawerContent\";\r\nimport { useEditor } from \"../../editor/useEditor\";\r\nimport { useBuilderDrawer } from \"../../drawer/useBuilderDrawer\";\r\nimport { RocketLaunchIcon } from \"../../../../components/RocketLaunchIcon\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tslidesIcon: {\r\n\t\tcolor: \"#fff\",\r\n\t\tborder: \"1px solid #fff\",\r\n\t\tbackgroundColor: \"#801d66\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tcolor: \"#801d66\",\r\n\t\t\tbackgroundColor: \"#801d662e\",\r\n\t\t},\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"rgba(0, 0, 0, 0.26)\",\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.12)\",\r\n\t\t\tborderStyle: \"none\"\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: 5,\r\n\t\t},\r\n\t},\r\n\tslidesIconActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tcolor: \"#801d66\",\r\n\t\tborder: \"1px solid #801d66\",\r\n\t\tbackgroundColor: \"#801d662e\",\r\n\t},\r\n\tassistantIcon: {\r\n\t\tcolor: \"#fff\",\r\n\t\tborder: \"1px solid #fff\",\r\n\t\tbackgroundColor: \"#4067CA\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tcolor: \"#4067CA\",\r\n\t\t\tbackgroundColor: \"#4067CA2E\",\r\n\t\t},\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"rgba(0, 0, 0, 0.26)\",\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.12)\",\r\n\t\t\tborderStyle: \"none\"\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: 5,\r\n\t\t},\r\n\t},\r\n\tassistantIconActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tcolor: \"#4067CA\",\r\n\t\tborder: \"1px solid #4067CA\",\r\n\t\tbackgroundColor: \"#4067CA2E\",\r\n\t},\r\n\tbibleIcon: {\r\n\t\tcolor: \"#fff\",\r\n\t\tborder: \"1px solid #fff\",\r\n\t\tbackgroundColor: \"#027172\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tcolor: \"#027172\",\r\n\t\t\tbackgroundColor: \"#0271722e\",\r\n\t\t},\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"rgba(0, 0, 0, 0.26)\",\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.12)\",\r\n\t\t\tborderStyle: \"none\"\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: 5,\r\n\t\t},\r\n\t},\r\n\tbibleIconActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tcolor: \"#027172\",\r\n\t\tborder: \"1px solid #027172\",\r\n\t\tbackgroundColor: \"#0271722e\",\r\n\t},\r\n\tdetailIcon: {\r\n\t\tcolor: \"#fff\",\r\n\t\tborder: \"1px solid #fff\",\r\n\t\tbackgroundColor: \"#767676\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tcolor: \"#767676\",\r\n\t\t\tbackgroundColor: \"#7676762e\",\r\n\t\t},\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"rgba(0, 0, 0, 0.26)\",\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.12)\",\r\n\t\t\tborderStyle: \"none\"\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: 5,\r\n\t\t},\r\n\t},\r\n\tdetailIconActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tcolor: \"#767676\",\r\n\t\tborder: \"1px solid #767676\",\r\n\t\tbackgroundColor: \"#7676762e\",\r\n\t},\r\n\tillustrationIcon: {\r\n\t\tcolor: \"#fff\",\r\n\t\tborder: \"1px solid #fff\",\r\n\t\tbackgroundColor: \"#961617\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tcolor: \"#961617\",\r\n\t\t\tbackgroundColor: \"#9616172e\",\r\n\t\t},\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"rgba(0, 0, 0, 0.26)\",\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.12)\",\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: 5,\r\n\t\t},\r\n\t},\r\n\tillustrationIconActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tcolor: \"#961617\",\r\n\t\tborder: \"1px solid #961617\",\r\n\t\tbackgroundColor: \"#9616172e\",\r\n\t},\r\n\tsermonIcon: {\r\n\t\tcolor: \"#fff\",\r\n\t\tborder: \"1px solid #fff\",\r\n\t\tbackgroundColor: \"#f26321\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tcolor: \"#f26321\",\r\n\t\t\tbackgroundColor: \"#f263212e\",\r\n\t\t},\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"rgba(0, 0, 0, 0.26)\",\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.12)\",\r\n\t\t\tborderStyle: \"none\"\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: 5,\r\n\t\t},\r\n\t},\r\n\tsermonIconActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tcolor: \"#f26321\",\r\n\t\tborder: \"1px solid #f26321\",\r\n\t\tbackgroundColor: \"#f263212e\",\r\n\t},\r\n\tgeniusIcon: {\r\n\t\tcolor: \"#fff\",\r\n\t\tborder: \"1px solid #fff\",\r\n\t\tbackgroundColor: \"#9E70C1\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tcolor: \"#9E70C1\",\r\n\t\t\tbackgroundColor: \"#9E70C12e\",\r\n\t\t},\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"rgba(0, 0, 0, 0.26)\",\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.12)\",\r\n\t\t\tborderStyle: \"none\"\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: 5,\r\n\t\t},\r\n\t},\r\n\tgeniusIconActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tcolor: \"#9E70C1\",\r\n\t\tborder: \"1px solid #9E70C1\",\r\n\t\tbackgroundColor: \"#9E70C12e\",\r\n\t},\r\n\tgeniusBadge: {\r\n\t\tbackgroundColor: \"lime\",\r\n\t\tmarginRight: 25,\r\n\t\t[theme.breakpoints.up(\"md\")]: {\r\n\t\t\tmarginRight: \"30px\",\r\n\t\t\tmarginTop: \"-7px\",\r\n\t\t},\r\n\t},\r\n\tanalyzerIcon: {\r\n\t\tcolor: \"#fff\",\r\n\t\tborder: \"1px solid #fff\",\r\n\t\tbackgroundColor: \"#02376b\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\tcolor: \"#02376b\",\r\n\t\t\tbackgroundColor: \"#02376b2e\",\r\n\t\t},\r\n\t\t\"&:disabled\": {\r\n\t\t\tcolor: \"rgba(0, 0, 0, 0.26)\",\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.12)\",\r\n\t\t\tborderStyle: \"none\"\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: 5,\r\n\t\t},\r\n\t},\r\n\tanalyzerIconActive: {\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tcolor: \"#02376b\",\r\n\t\tborder: \"1px solid #02376b\",\r\n\t\tbackgroundColor: \"#02376b2e\",\r\n\t},\r\n\tbadge: {\r\n\t\tmarginRight: 25,\r\n\t\t[theme.breakpoints.up(\"md\")]: {\r\n\t\t\tmarginRight: \"30px\",\r\n\t\t\tmarginTop: \"-7px\",\r\n\t\t},\r\n\t},\r\n\tlistItem: {\r\n\t\tpaddingRight: theme.spacing(1),\r\n\t\tpaddingLeft: theme.spacing(1),\r\n\t},\r\n}));\r\n\r\nexport function BuilderAppIconListItems() {\r\n\tconst classes = useStyles();\r\n\tconst editor = useEditor();\r\n\tconst slideLength = editor.slides.length;\r\n\r\n\tconst {onlineMode} = useOfflineAssets();\r\n\r\n\tconst builderDrawer = useBuilderDrawer();\r\n\tconst { drawerContent, showGeniusBadge } = builderDrawer;\r\n\tconst { onMainDrawerChange } = builderDrawer;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t onMainDrawerChange(true, DrawerContent.Details)}\r\n\t\t\t\t\t\tdisabled={!onlineMode}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t 0 ? slideLength : \"\"} Slide${slideLength > 1 ? \"s\" : \"\"}`}\r\n\t\t\t\t>\r\n\t\t\t\t\t \r\n\t\t\t\t\t\tonMainDrawerChange(true, DrawerContent.Slides)}\r\n\t\t\t\t\t\tdisabled={!onlineMode}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{slideLength > 0 && onlineMode? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\tonMainDrawerChange(true, DrawerContent.Assistant)}\r\n\t\t\t\t\t\tdisabled={!onlineMode}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t onMainDrawerChange(true, DrawerContent.Bible)}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t onMainDrawerChange(true, DrawerContent.Sermon)} \r\n\t\t\t\t\t \tdisabled={!onlineMode}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t onMainDrawerChange(true, DrawerContent.Illustration)} disabled={!onlineMode}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t onMainDrawerChange(true, DrawerContent.Genius)} disabled={!onlineMode} >\r\n\t\t\t\t\t\t{showGeniusBadge && onlineMode ? (\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t onMainDrawerChange(true, DrawerContent.Analyzer)} disabled={!onlineMode}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import React from \"react\";\r\n\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\r\nimport { makeStyles, List, ListItem, IconButton, Box } from \"@material-ui/core\";\r\n\r\nimport { BuilderAppIconListItems } from \"./BuilderAppIconListItems\";\r\nimport { EventTracking } from \"../../../../utilities/Tracking/EventTracking\";\r\nimport { useBuilderDrawer } from \"../../drawer/useBuilderDrawer\";\r\nimport { useOfflineAssets } from '../../../offline/useOfflineAssets'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n contentDrawer: {\r\n position: \"relative\",\r\n right: 0,\r\n },\r\n toolbar: theme.mixins.toolbar,\r\n chevron: {\r\n position: \"fixed\",\r\n bottom: 0,\r\n paddingLeft: 9,\r\n background: \"white\",\r\n },\r\n}));\r\n\r\nexport function DesktopBuilderAppSelection() {\r\n const classes = useStyles();\r\n const builderDrawer = useBuilderDrawer();\r\n const {onlineMode} = useOfflineAssets();\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n \r\n \r\n \r\n \r\n \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\tbuilderDrawer.onMainDrawerChange(!builderDrawer.drawerOpen);\r\n\t\t\t\t\t\tEventTracking.Builder.onMainDrawerOpenWithChevron(`${builderDrawer.drawerOpen ? \"Open\" : \"Close\"} from Arrow Icon`);\r\n\t\t\t\t\t}}>\r\n {builderDrawer.drawerOpen ? : }\r\n \r\n\t\t\t\t\r\n \r\n\t\t
\r\n\t);\r\n}","import React from 'react'\r\nimport {Snackbar, IconButton, CircularProgress, Typography, makeStyles} from \"@material-ui/core/\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport PlayIcon from '@material-ui/icons/PlayArrow';\r\nimport ReplayIcon from '@material-ui/icons/Replay';\r\nimport PauseIcon from '@material-ui/icons/Pause';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport { useTextToSpeech } from './useTextToSpeech';\r\nimport { UserAgent } from '../../../../utilities/UserAgent';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {\r\n position: 'absolute',\r\n },\r\n backdrop: {\r\n position: 'absolute',\r\n },\r\n mobileMessageWraper: {\r\n overflow: 'hidden', \r\n position: \"absolute\", \r\n top: 20, \r\n left: 5,\r\n },\r\n desktopMessageWraper: {\r\n overflow: 'hidden', \r\n position: \"absolute\", \r\n top: 20, \r\n left: 5,\r\n width: 80,\r\n marginRight: 20\r\n },\r\n message: {\r\n color: 'white',\r\n whiteSpace: 'nowrap',\r\n animation: 'slide 5s linear infinite'\r\n },\r\n '@keyframes slide': {\r\n \"0%\": {\r\n transform: 'translatex(100%)'\r\n },\r\n '100%': {\r\n transform: 'translatex(-150%)'\r\n }\r\n }\r\n}));\r\n\r\nexport function TextToSpeechPlayer(){\r\n const classes = useStyles();\r\n const textToSpeech = useTextToSpeech();\r\n const { isAudioPaused, showAudioPlayer, pauseTextToSpeech, resumeTextToSpeech, stopTextToSpeech, restartTextToSpeech, isLoading, toggleSettingsOpen } = textToSpeech;\r\n const isMobile = UserAgent.mobile()\r\n \r\n return (\r\n \r\n Listening to sermon\r\n \r\n : \r\n }\r\n action={\r\n { isAudioPaused\r\n ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }/>\r\n )\r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport { useEditor } from \"../useEditor\";\r\nimport { CkEditorHelper } from \"./CkEditorHelper\";\r\n\r\ninterface Props extends React.DetailedHTMLProps, HTMLDivElement> {}\r\n\r\nexport function CKEditor(props: Props) {\r\n\tconst editorContext = useEditor();\r\n\tconst ref = useRef(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (ref.current) {\r\n\t\t\tconst observer = new MutationObserver(editorContext.onEditorDomChange);\r\n\t\t\tobserver.observe(ref.current, { childList: true, subtree: true });\r\n\t\t\treturn () => observer.disconnect();\r\n\t\t}\r\n\t}, [editorContext.onEditorDomChange]);\r\n\r\n\tconst { id, ...divProps } = props;\r\n\r\n\tuseEffect(\r\n\t\t() => {\r\n\t\t\tasync function setupEditor(editorElement: Element) {\r\n\t\t\t\tconst editor = await CkEditorHelper.createEditorInDOM(editorElement);\r\n\t\t\t\teditorContext.setEditor(editor);\r\n\t\t\t}\r\n\r\n\t\t\tconst editorElement = document.querySelector(\"#editor\");\r\n\t\t\tif (editorElement) {\r\n\t\t\t\tsetupEditor(editorElement);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(\"Editor id missing on initilization\");\r\n\t\t\t}\r\n\t\t},\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[]\r\n\t);\r\n\r\n\treturn
;\r\n}\r\n","import { Button, Typography, Hidden, IconButton, Popper, ClickAwayListener, Paper } from '@material-ui/core';\r\nimport React, {ReactFragment, useState} from 'react';\r\n\r\ninterface Props {\r\n buttonText:string;\r\n displayBody: ReactFragment;\r\n icon: ReactFragment;\r\n}\r\n\r\nexport function DropDownButton(props: Props) {\r\n const { displayBody, buttonText, icon} = props;\r\n const [anchorEl, setAnchorEl] = useState()\r\n \r\n return (\r\n <>\r\n \r\n setAnchorEl(e.currentTarget)}\r\n style={{ backgroundColor: anchorEl !== undefined ? \"rgba(0, 0, 0, 0.08)\" : undefined }}\r\n >\r\n {buttonText.toLocaleUpperCase()}\r\n \r\n \r\n \r\n setAnchorEl(e.currentTarget)}\r\n style={{ backgroundColor: anchorEl !== undefined ? \"rgba(0, 0, 0, 0.08)\" : undefined }}\r\n >\r\n {icon}\r\n \r\n \r\n setAnchorEl(undefined)}\r\n style={{zIndex:1500}}\r\n >\r\n setAnchorEl(undefined)}>\r\n \r\n \r\n {displayBody}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import PptxGenJS from \"pptxgenjs\";\r\nimport { AspectRatios } from \"../../../entities/AspectRatios\";\r\nimport { PreviewSlide, SlideLine } from \"../editor/PreviewSlide\";\r\n\r\nexport class PresentationExporter {\r\n\tstatic fontSizes = {\r\n\t\t\"4x3\": {\r\n\t\t\tsmall: 22,\r\n\t\t\tmedium: 41,\r\n\t\t\tlarge: 60,\r\n\t\t},\r\n\t\t\"16x9\": {\r\n\t\t\tsmall: 16,\r\n\t\t\tmedium: 34,\r\n\t\t\tlarge: 52,\r\n\t\t},\r\n\t\tsize: {\r\n\t\t\tlarge: 55,\r\n\t\t\tmedium: 200,\r\n\t\t},\r\n\t};\r\n\r\n\tpublic static exportWithImagePath(slides: PreviewSlide[], aspectRatio: AspectRatios, fontColor: string, title: string, imagePath: string) {\r\n\t\tlet slideBackground = {\r\n\t\t\tpath: imagePath,\r\n\t\t};\r\n\r\n\t\tthis.exportFile(slides, aspectRatio, fontColor, title, slideBackground);\r\n\t}\r\n\r\n\tpublic static exportWithImageData(slides: PreviewSlide[], aspectRatio: AspectRatios, fontColor: string, title: string, imageAsBase64: string) {\r\n\t\tlet slideBackground = {\r\n\t\t\tdata: imageAsBase64,\r\n\t\t};\r\n\r\n\t\tthis.exportFile(slides, aspectRatio, fontColor, title, slideBackground);\r\n\t}\r\n\r\n\tprivate static mapEncodingToSpecialCharacter(symbol: string) {\r\n\t\tswitch (symbol) {\r\n\t\t\tcase \"amp\":\r\n\t\t\t\treturn \"&\";\r\n\t\t\tcase \"lt\":\r\n\t\t\t\treturn \"<\";\r\n\t\t\tcase \"gt\":\r\n\t\t\t\treturn \">\";\r\n\t\t\tcase \"#039\":\r\n\t\t\t\treturn \"'\";\r\n\t\t\tcase \"nbsp\":\r\n\t\t\t\treturn \" \";\r\n\t\t\tdefault:\r\n\t\t\t\treturn symbol;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static generateLineContent(\r\n\t\tline: SlideLine,\r\n\t\tlineContent: PptxGenJS.TextProps[],\r\n\t\tfontColor: string,\r\n\t\tblockQuoteFlag: boolean,\r\n\t\torderedListCount: number,\r\n\t\tblockTagType: string\r\n\t) {\r\n\t\tline.lineChars.forEach((lineChar, index) => {\r\n\t\t\tconst bulletChar = String.fromCharCode(8226);\r\n\t\t\tconst tabChar = String.fromCharCode(9);\r\n\t\t\tlet textOptions: PptxGenJS.TextPropsOptions = {\r\n\t\t\t\tcolor: fontColor,\r\n\t\t\t};\r\n\t\t\tlet cleanedText = lineChar.char.replace(/&([^;]+);/g, (m, c) => this.mapEncodingToSpecialCharacter(c));\r\n\r\n\t\t\tif (lineChar.backgroundColor) textOptions.fill = { color: lineChar.backgroundColor };\r\n\t\t\tif (lineChar.fontFamily) textOptions.fontFace = lineChar.fontFamily;\r\n\t\t\tif (lineChar.isBold || blockTagType === \"h1\" || blockTagType === \"h2\") textOptions.bold = true;\r\n\t\t\tif (lineChar.isItalics || blockQuoteFlag) textOptions.italic = true;\r\n\t\t\tif (lineChar.isUnderlined) textOptions.underline = true;\r\n\t\t\tif (lineChar.backgroundColor) textOptions.color = lineChar.backgroundColor.replace(\"#\", \"\");\r\n\t\t\tif (line.isUnorderedList && index === 0) {\r\n\t\t\t\tlet bullet = bulletChar + tabChar;\r\n\t\t\t\tlineContent.push({ text: bullet, options: { color: fontColor } });\r\n\t\t\t}\r\n\t\t\tif (line.isOrderedList && index === 0) {\r\n\t\t\t\tlet num = orderedListCount + \".\" + tabChar;\r\n\t\t\t\tlineContent.push({ text: num, options: { color: fontColor } });\r\n\t\t\t\torderedListCount++;\r\n\t\t\t}\r\n\r\n\t\t\tif (blockTagType === \"h1\") {\r\n\t\t\t\ttextOptions.fontSize = 68;\r\n\t\t\t} else if (blockTagType === \"h2\") {\r\n\t\t\t\ttextOptions.fontSize = 56;\r\n\t\t\t} else {\r\n\t\t\t\ttextOptions.fontSize = 42;\r\n\t\t\t}\r\n\r\n\t\t\tlineContent.push({ text: cleanedText, options: textOptions });\r\n\r\n\t\t\tif (index === line.lineChars.length - 1) {\r\n\t\t\t\tif (line.isOrderedList || line.isUnorderedList) {\r\n\t\t\t\t\tlineContent.push({ text: \"\\n\", options: textOptions });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn lineContent;\r\n\t}\r\n\r\n\tprivate static addTextToSlide(presentation: PptxGenJS, previewSlides: PreviewSlide[], fontColor: string) {\r\n\t\tpreviewSlides.forEach((previewSlide) => {\r\n\t\t\tconst lineWidth = 8.81;\r\n\t\t\tconst lineHeight = 2.68;\r\n\t\t\tlet xPosition = \"5%\";\r\n\t\t\tlet yPosition = \"25%\";\r\n\r\n\t\t\tlet blockQuoteFlag = false;\r\n\t\t\tlet orderedListCount = 1;\r\n\t\t\tlet slide = presentation.addSlide({ masterName: \"MASTER_SLIDE\", sectionTitle: \"Test\" });\r\n\t\t\tlet lineContent: PptxGenJS.TextProps[] = [];\r\n\t\t\tlet lineOptions: PptxGenJS.TextPropsOptions = {\r\n\t\t\t\tx: xPosition,\r\n\t\t\t\ty: yPosition,\r\n\t\t\t\tw: lineWidth,\r\n\t\t\t\th: lineHeight,\r\n\t\t\t};\r\n\r\n\t\t\tpreviewSlide.lines.forEach((line) => {\r\n\t\t\t\tif (line.isBlockQuote) {\r\n\t\t\t\t\tblockQuoteFlag = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet blockTagType = line.blockTag ?? \"p\";\r\n\t\t\t\tlineContent = this.generateLineContent(line, lineContent, fontColor, blockQuoteFlag, orderedListCount, blockTagType);\r\n\r\n\t\t\t\tif (line.isOrderedList) {\r\n\t\t\t\t\torderedListCount++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (line.textAlignment) lineOptions.align = line.textAlignment;\r\n\t\t\t});\r\n\t\t\tslide.addText(lineContent, lineOptions);\r\n\t\t});\r\n\t\treturn presentation;\r\n\t}\r\n\r\n\tpublic static exportFile(previewSlides: PreviewSlide[], aspectRatio: AspectRatios, fontColor: string, title: string, slideBackground: any) {\r\n\t\tvar presentation = new PptxGenJS();\r\n\t\tpresentation.layout = aspectRatio === \"16x9\" ? \"LAYOUT_16x9\" : \"LAYOUT_4x3\";\r\n\t\tpresentation.defineSlideMaster({\r\n\t\t\ttitle: \"MASTER_SLIDE\",\r\n\t\t\tbackground: slideBackground,\r\n\t\t});\r\n\t\tpresentation = this.addTextToSlide(presentation, previewSlides, fontColor);\r\n\t\tpresentation.writeFile(title);\r\n\t}\r\n}\r\n","var _clipPath, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgOneColumn(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0.0 0.0 48.0 48.0\",\n fill: \"none\",\n stroke: \"none\",\n strokeLinecap: \"square\",\n strokeMiterlimit: 10,\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _clipPath || (_clipPath = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"p.0\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m0 0l48.0 0l0 48.0l-48.0 0l0 -48.0z\",\n clipRule: \"nonzero\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#p.0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m0 0l48.0 0l0 48.0l-48.0 0z\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.968504 4.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.968504 4.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.968504 12.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.968504 12.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.968504 20.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.968504 20.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.968504 28.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.968504 28.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.968504 36.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.968504 36.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.968504 44.0l44.062996 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.968504 44.0l44.062996 0\",\n fillRule: \"evenodd\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOneColumn);\nexport default __webpack_public_path__ + \"static/media/oneColumn.112115e9.svg\";\nexport { ForwardRef as ReactComponent };","import { BuilderAsset } from \"../entities/BuilderAsset\";\r\nimport { BuilderAssetService } from \"../services/BuilderAssetService\";\r\nimport { PreviewSlide } from \"../pages/builder/editor/PreviewSlide\";\r\nimport { ServerResponse } from \"../services/server/OldWebClient\";\r\nimport { PresentationExporter } from \"../pages/builder/configuration/PresentationExporter\";\r\nimport BackgroundImages from \"../resources/BackgroundImages.json\";\r\nimport { BuilderPreferences } from \"../entities/BuilderPreferences\";\r\nimport BackgroundImage from \"../entities/BackgroundImage\";\r\n\r\nconst images: BackgroundImage[] = BackgroundImages as any;\r\n\r\nexport const exportSlides = async (asset: BuilderAsset, previewSlides: PreviewSlide[], preferences: BuilderPreferences) => {\r\n\tconst handleExport = async () => {\r\n\t\tconst presentationTitle = asset.name;\r\n\t\tlet preferredAspectRatio = asset.slideExporterAspectRatio;\r\n\r\n\t\tif (!preferredAspectRatio) {\r\n\t\t\tpreferredAspectRatio = \"16x9\";\r\n\t\t}\r\n\t\tlet fontColor = getFontColor().substring(1);\r\n\r\n\t\tif (asset.customSlideBackgroundImagePath) {\r\n\t\t\tlet response = await BuilderAssetService.getCustomBackgroundImageForDownload(asset.id);\r\n\r\n\t\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\t\tPresentationExporter.exportWithImageData(previewSlides, preferredAspectRatio, fontColor, presentationTitle, response.message);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tPresentationExporter.exportWithImagePath(previewSlides, preferredAspectRatio, fontColor, presentationTitle, getImageFullRes());\r\n\t\t}\r\n\t};\r\n\r\n\tconst getImageFullRes = () => {\r\n\t\tconst backgroundImage = getStockBackgroundImage();\r\n\r\n\t\tif (asset.slideExporterAspectRatio === \"4x3\") {\r\n\t\t\treturn backgroundImage.standardImagePath;\r\n\t\t}\r\n\t\treturn backgroundImage.widescreenImagePath;\r\n\t};\r\n\r\n\tconst getStockBackgroundImage = () => {\r\n\t\tconst { slideExporterSelectedGalleryImageId } = preferences;\r\n\t\tconst selectedImage = images.find((image) => image.id === slideExporterSelectedGalleryImageId);\r\n\t\treturn selectedImage ? selectedImage : images[0];\r\n\t};\r\n\r\n\tconst getFontColor = () => {\r\n\t\tconst { slideExporterSelectedGalleryImageId } = preferences;\r\n\t\tif (asset.customSlideBackgroundImagePath) {\r\n\t\t\treturn \"#FFFFFF\";\r\n\t\t}\r\n\r\n\t\tconst selectedImage = images.find((image) => image.id === slideExporterSelectedGalleryImageId);\r\n\t\tconst backgroundImage = selectedImage ? selectedImage : images[0];\r\n\r\n\t\treturn backgroundImage.fontColor;\r\n\t};\r\n\thandleExport();\r\n};\r\n","var _clipPath, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTwoColumns(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0.0 0.0 48.0 48.0\",\n fill: \"none\",\n stroke: \"none\",\n strokeLinecap: \"square\",\n strokeMiterlimit: 10,\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _clipPath || (_clipPath = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"p.0\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m0 0l48.0 0l0 48.0l-48.0 0l0 -48.0z\",\n clipRule: \"nonzero\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#p.0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m0 0l48.0 0l0 48.0l-48.0 0z\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m2.312336 3.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m2.312336 3.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m26.312336 3.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m26.312336 3.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m2.312336 11.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m2.312336 11.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m26.312336 11.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m26.312336 11.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m2.312336 19.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m2.312336 19.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m26.312336 19.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m26.312336 19.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m2.312336 27.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m2.312336 27.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m26.312336 27.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m26.312336 27.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m2.312336 35.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m2.312336 35.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m26.312336 35.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m26.312336 35.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m2.312336 43.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m2.312336 43.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m26.312336 43.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m26.312336 43.687664l20.251968 0\",\n fillRule: \"evenodd\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTwoColumns);\nexport default __webpack_public_path__ + \"static/media/twoColumns.f7ddaf66.svg\";\nexport { ForwardRef as ReactComponent };","var _clipPath, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgThreeColumns(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0.0 0.0 48.0 48.0\",\n fill: \"none\",\n stroke: \"none\",\n strokeLinecap: \"square\",\n strokeMiterlimit: 10,\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _clipPath || (_clipPath = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"p.0\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m0 0l48.0 0l0 48.0l-48.0 0l0 -48.0z\",\n clipRule: \"nonzero\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#p.0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m0 0l48.0 0l0 48.0l-48.0 0z\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.2440945 3.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.2440945 3.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m17.244095 3.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m17.244095 3.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m33.244095 3.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m33.244095 3.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.2440945 11.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.2440945 11.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m17.244095 11.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m17.244095 11.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m33.244095 11.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m33.244095 11.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.2440945 19.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.2440945 19.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m17.244095 19.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m17.244095 19.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m33.244095 19.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m33.244095 19.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.2440945 27.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.2440945 27.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m17.244095 27.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m17.244095 27.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m33.244095 27.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m33.244095 27.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.2440945 35.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.2440945 35.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m17.244095 35.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m17.244095 35.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m33.244095 35.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m33.244095 35.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m1.2440945 43.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m1.2440945 43.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m17.244095 43.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m17.244095 43.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000000\",\n fillOpacity: 0,\n d: \"m33.244095 43.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000000\",\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"butt\",\n d: \"m33.244095 43.6875l13.51181 0\",\n fillRule: \"evenodd\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgThreeColumns);\nexport default __webpack_public_path__ + \"static/media/threeColumns.67e10542.svg\";\nexport { ForwardRef as ReactComponent };","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAfZJREFUSInVlb9qVEEUxn/nzIWw4J81jY3RdGIhRETSiIk2voAgKIKFCDa7+waaJ7hZ2SaQIooPoEU6JQZTCkZJqRCx3YCSQgI781kkFzTk3t0btvGDKebcM/f3nRlmDvzvMoA8z5shhOfA+YrcFeBbq9X6UAfgAO7+CHgAzJUNSdPAQrfbvVMbAJwYNd/MXuZ5PlsXUEeNEMKbXq93YawAMzNJOpiejTGuLi0tnR62LhsVkFK6Lumpu98qYnt7e9eAt2MBHPx4GvhRxCQ1xwHYAnZGNVILYGb3JTUkTZXldLvdZ0esU0ppo9PpvKsCbElqAMtmNrLjQu6eer3exSrAjqQpMyPGeCbLspmU0ldgEdhKKb0GTpnZb3ffMLPbg8FgG2i6+7yZ5ZLOjXTIWZbNSFozs5/APUmzIYRFYM7MOjHGTXdfc/cFM5tn//bvVzIKYDAYbJrZTXe/JOkxQIyxA9yQ9BG4UmquTgWSMDMkfS4qAHAv93mcp6KWSitIKTXcfRcgxrj4t0tJDyU1Dzs/HE8p/araoqsxxrshhMvuPg2sFx/KtqSIH7xZa+12+1MpwN0D8AV4Jen9UTlmtt1qtVYqTA495JPAk4qLts5+pytV0dG+DwGVaXtYQgbQ7/dfTE5OGtU9+R+Z2e7ExMTyMY2NT38An46+/fkTEN4AAAAASUVORK5CYII=\"","import React from \"react\";\r\n\r\nimport { AppBar, Toolbar, IconButton, Typography, Grid, Paper, Hidden, Input, List, MenuItem, ListItemText, ListItemAvatar, makeStyles } from \"@material-ui/core\";\r\n\r\nimport ArrowBackIos from \"@material-ui/icons/ArrowBackIos\";\r\nimport PresentToAllIcon from \"@material-ui/icons/PresentToAll\";\r\nimport CloudDownloadIcon from \"@material-ui/icons/CloudDownload\";\r\nimport PrintIcon from \"@material-ui/icons/Print\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport FavoriteBorder from \"@material-ui/icons/FavoriteBorder\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\nimport OnlineIcon from \"@material-ui/icons/CheckCircleOutline\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport StarIcon from \"@material-ui/icons/Star\";\r\nimport OfflineIcon from \"@material-ui/icons/CheckCircle\";\r\nimport PDFIcon from \"@material-ui/icons/PictureAsPdf\";\r\nimport DescriptionIcon from \"@material-ui/icons/Description\";\r\nimport PresentSlidesIcon from \"@material-ui/icons/Panorama\";\r\n\r\nimport { UserAvatar } from \"../../../components/UserAvatar\";\r\nimport { BuilderAsset } from \"../../../entities/BuilderAsset\";\r\nimport { TelemetryService } from \"../../../services/TelemetryService\";\r\nimport { BuilderAssetService } from \"../../../services/BuilderAssetService\";\r\nimport { ServerResponse } from \"../../../services/server/OldWebClient\";\r\nimport { ExportHtml } from \"../../../utilities/ExportHtml\";\r\nimport { EventTracking, OfflineActionLocation, PrintActions } from \"../../../utilities/Tracking/EventTracking\";\r\n\r\nimport { DesktopBuilderAppSelection } from \"../drawer/apps/DesktopBuilderAppSelection\";\r\nimport { TextToSpeechPlayer } from \"../editor/texttospeech/TextToSpeechPlayer\";\r\nimport { CKEditor } from \"../editor/ckeditor/CKEditor\";\r\nimport { useEditor } from \"../editor/useEditor\";\r\nimport { useBuilderDrawer } from \"../drawer/useBuilderDrawer\";\r\nimport { useOfflineAssets } from \"../../offline/useOfflineAssets\";\r\nimport { BuilderAppBarAction, useBuilder } from \"../useBuilder\";\r\nimport { DropDownButton } from \"../../../components/DropDownButton\";\r\nimport { exportSlides } from \"../../../utilities/ExportSlides\";\r\nimport classNames from \"classnames\";\r\nimport { useState } from \"react\";\r\nimport { ReactComponent as OneColumn } from \"../../../resources/oneColumn.svg\";\r\nimport { ReactComponent as TwoColumns } from \"../../../resources/twoColumns.svg\";\r\nimport { ReactComponent as ThreeColumns } from \"../../../resources/threeColumns.svg\";\r\nimport PPTIcon from \"../../../resources/file-ppt.png\";\r\nimport { UserAgent } from \"../../../utilities/UserAgent\";\r\n\r\nconst drawerWidth = 350;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\troot: {\r\n\t\tbackground: \"#efefef\",\r\n\t\theight: \"100vh\",\r\n\t\toverflow: \"hidden\",\r\n\t\tflexGrow: 1,\r\n\t},\r\n\tgrow: {\r\n\t\tflex: 1,\r\n\t},\r\n\tappBar: {\r\n\t\tcolor: \"#6b6b6b\",\r\n\t\tbackground: \"#FFFFFF\",\r\n\t\tboxShadow: \"unset\",\r\n\t\tzIndex: theme.zIndex.drawer + 1,\r\n\t\ttransition: theme.transitions.create([\"margin\", \"width\"], {\r\n\t\t\teasing: theme.transitions.easing.sharp,\r\n\t\t\tduration: theme.transitions.duration.leavingScreen,\r\n\t\t}),\r\n\t},\r\n\tappBarShift: {\r\n\t\twidth: `calc(100% - ${drawerWidth}px)`,\r\n\t\ttransition: theme.transitions.create([\"margin\", \"width\"], {\r\n\t\t\teasing: theme.transitions.easing.easeOut,\r\n\t\t\tduration: theme.transitions.duration.enteringScreen,\r\n\t\t}),\r\n\t\tmarginRight: drawerWidth,\r\n\t},\r\n\ttoolbar: theme.mixins.toolbar,\r\n\tuserIcon: {\r\n\t\tbackground: \"#2196f3\",\r\n\t\twidth: \"52px\",\r\n\t\tfloat: \"right\",\r\n\t},\r\n\tdrawerButtonSlidesTitle: {\r\n\t\tbackground: \"#666\",\r\n\t\tcolor: \"#FFF\",\r\n\t\tpadding: 10,\r\n\t\ttextAlign: \"left\",\r\n\t\tposition: \"fixed\",\r\n\t\tbottom: 0,\r\n\t\tfontSize: 17,\r\n\t\tzIndex: 1,\r\n\t\tborderRadius: \"0\",\r\n\t\ttextTransform: \"none\",\r\n\t\twidth: 300,\r\n\t\t\"&:hover\": {\r\n\t\t\tbackground: \"#666666d9\",\r\n\t\t},\r\n\t},\r\n\tdrawerButtonExploreTitle: {\r\n\t\tbackground: \"#666\",\r\n\t\tcolor: \"#FFF\",\r\n\t\ttextAlign: \"left\",\r\n\t\tposition: \"fixed\",\r\n\t\tbottom: 0,\r\n\t\tright: 0,\r\n\t\tfontSize: 17,\r\n\t\tborderRadius: \"0\",\r\n\t\tpadding: 10,\r\n\t\ttextTransform: \"none\",\r\n\t\twidth: 410,\r\n\t\t\"&:hover\": {\r\n\t\t\tbackground: \"#666666d9\",\r\n\t\t},\r\n\t},\r\n\teditorContainer: {\r\n\t\theight: `calc(100vh - ${theme.mixins.toolbar.minHeight}px - 30px)`,\r\n\t},\r\n\tmainPaper: {\r\n\t\theight: \"100%\",\r\n\t\tmarginTop: 10,\r\n\t\tmarginBottom: 10,\r\n\t\tposition: \"relative\",\r\n\t\twidth: 750,\r\n\t},\r\n\teditorWrapper: {\r\n\t\theight: \"95%\",\r\n\t},\r\n\teditor: {\r\n\t\theight: \"100%\",\r\n\t},\r\n\tmainToolbar: {\r\n\t\tpadding: \"0 14px\",\r\n\t},\r\n\tcloseIcon: {\r\n\t\tfloat: \"right\",\r\n\t},\r\n\ttitle: {\r\n\t\tmaxWidth: \"539px\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t\toverflow: \"hidden\",\r\n\t\tcursor: \"pointer\",\r\n\t\twhiteSpace: \"nowrap\",\r\n\t},\r\n\tdescription: {\r\n\t\tmaxWidth: \"539px\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t\toverflow: \"hidden\",\r\n\t\twhiteSpace: \"nowrap\",\r\n\t},\r\n\tprintGrid: {\r\n\t\twidth: 300,\r\n\t},\r\n\tmenuIcon: {\r\n\t\tcolor: \"rgba(0, 0, 0, 0.54)\",\r\n\t},\r\n\tcolumns: {\r\n\t\tborder: \"1px solid rgba(0, 0, 0, 0.24)\",\r\n\t\tborderRadius: \"5%\",\r\n\t\tpadding: 5,\r\n\t\twebkitBoxShadow: \"0px 0px 7px 3px rgba(0,0,0,0.1)\",\r\n\t\tMozBoxShadow: \"0px 0px 7px 3px rgba(0,0,0,0.1)\",\r\n\t\tboxShadow: \"0px 0px 7px 3px rgba(0,0,0,0.1)\",\r\n\t\t\"&:hover\": {\r\n\t\t\ttransform: \"translateY(-5px) scale(1.01) translateZ(0)\",\r\n\t\t\tcursor: \"pointer\",\r\n\t\t},\r\n\t\tfilter: \"contrast(0)\",\r\n\t},\r\n}));\r\n\r\nconst currentLocation = \"Navigation Desktop\";\r\n\r\nexport function DesktopView() {\r\n\tconst builder = useBuilder();\r\n\tconst { builderAsset, user, preferences } = builder;\r\n\tconst classes = useStyles();\r\n\tconst builderDrawer = useBuilderDrawer();\r\n\tconst editor = useEditor();\r\n\tconst { onlineMode, setAssetOfflineMode } = useOfflineAssets();\r\n\r\n\tconst hasSlides = editor.slides.length !== 0;\r\n\tconst asset = builderAsset;\r\n\r\n\tconst [assetTitle, setAssetTitle] = useState(asset.name);\r\n\tconst [editingTitleInToolbar, setEditingTitleInToolbar] = React.useState(false);\r\n\r\n\tconst onStopEditingTitle = () => {\r\n\t\tsetEditingTitleInToolbar(false);\r\n\t\tsetAssetTitle(asset.name);\r\n\t};\r\n\r\n\tconst onClickAssetTitle = () => {\r\n\t\tif (!onlineMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetEditingTitleInToolbar(true);\r\n\t\tsetAssetTitle(assetTitle !== asset.name ? asset.name : assetTitle);\r\n\t};\r\n\r\n\tconst onDownloadAssetAsPdf = () => {\r\n\t\tBuilderAssetService.downloadAsPdf(asset);\r\n\r\n\t\tlet now = new Date().toString();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_downloadpdf\", now);\r\n\t\tEventTracking.Builder.onDownloadSermonAsPdf(currentLocation);\r\n\t};\r\n\r\n\tconst onDownloadAssetAsDocx = () => {\r\n\t\tBuilderAssetService.downloadAsDocx(asset);\r\n\t\tEventTracking.Builder.onDownloadSermonAsDocx(currentLocation);\r\n\t};\r\n\r\n\tconst onDownloadSlidePresentation = () => {\r\n\t\texportSlides(builderAsset, editor.slides, preferences);\r\n\r\n\t\tlet now = new Date().toString();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_slideexport\", now);\r\n\t\tEventTracking.Builder.onExportSlides(currentLocation);\r\n\t};\r\n\r\n\tconst onPrintAsset = (columns: number, action: PrintActions) => {\r\n\t\tEventTracking.Builder.onPrint(action, currentLocation);\r\n\t\tlet now = new Date();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_print\", now.toString());\r\n\t\tconst html = editor.getHtml();\r\n\t\tExportHtml.print(html, columns);\r\n\t};\r\n\r\n\tconst onSaveAssetTitle = async () => {\r\n\t\tconst asset: BuilderAsset = { ...builderAsset, name: assetTitle };\r\n\t\tlet response = await BuilderAssetService.save(asset);\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tbuilder.setBuilderAsset(response.data);\r\n\t\t} else {\r\n\t\t\tbuilder.setAlert(\"Could not update title\");\r\n\t\t}\r\n\t\tsetEditingTitleInToolbar(false);\r\n\t};\r\n\r\n\tconst toggleOfflineAsset = async (location: OfflineActionLocation) => {\r\n\t\tconst response = await setAssetOfflineMode(builderAsset.id, !builderAsset.offlineMode, location);\r\n\t\tif (response) {\r\n\t\t\tbuilder.setBuilderAsset(response);\r\n\t\t\tbuilder.setAlert(response.offlineMode ? \"Available offline\" : \"No longer available offline\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst toggleStar = async () => {\r\n\t\tconst updatedAsset: BuilderAsset = { ...builderAsset, isStarred: !builderAsset.isStarred };\r\n\t\tlet response = await BuilderAssetService.save(updatedAsset);\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tbuilder.setBuilderAsset(response.data);\r\n\t\t\tbuilder.setAlert(response.data.isStarred ? \"Star Added\" : \"Star Removed\");\r\n\t\t} else {\r\n\t\t\tbuilder.setAlert(\"Could not update Starred\");\r\n\t\t}\r\n\t\tsetEditingTitleInToolbar(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t builder.handleAppBarAction(BuilderAppBarAction.GoBack, currentLocation)}\r\n\t\t\t\t\t\t\tcolor=\"inherit\"\r\n\t\t\t\t\t\t\taria-label=\"Menu\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{editingTitleInToolbar ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tawait onSaveAssetTitle();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Title\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={assetTitle}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => setAssetTitle(e.target.value)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"aria-label\": \"Name\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t await onSaveAssetTitle()} className={classes.closeIcon}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{asset.name}{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t- Editing Template\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDescription:{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{asset.templateDescription.length > 0 ? asset.templateDescription : \"No Description\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{!asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t 1230 ? 8 : undefined,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{onlineMode\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? editor.saveInProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"Saving...\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: editor.lastEdit\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: editor.saveInProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"Saving...\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: editor.lastEdit + \" - Offline Mode\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{!onlineMode && }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{onlineMode && builderAsset.offlineMode && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t toggleOfflineAsset(\"App Bar Icon (Builder)\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{onlineMode && !builderAsset.offlineMode && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t toggleOfflineAsset(\"App Bar Icon (Builder)\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tdisplayBody={\r\n\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t{!asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuilder.handleAppBarAction(BuilderAppBarAction.SaveAsTemplate, currentLocation)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSave as template\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{/* builder.handleAppBarAction(BuilderAppBarAction.Share, currentLocation)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tShare\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t toggleOfflineAsset(\"File Dropdown (Builder)\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tOffline {builderAsset.offlineMode ? \"Disable\" : \"Enable\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{builderAsset.isStarred ? \"Remove\" : \"Add\"} Star\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{!asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tdisplayBody={\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t builder.handleAppBarAction(BuilderAppBarAction.Present, currentLocation)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tPresent Sermon\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t builder.toggleSlideExportDialog(currentLocation)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={!hasSlides}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tPresent Slides\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tdisplayBody={\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tDownload as PDF\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tDownload as Docx\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"powerpoint\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tDownload slide presentation\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tdisplayBody={\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t onPrintAsset(1, \"Quick Print\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tQuick Print\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{UserAgent.getBrowser().name !== \"Safari\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tPrint with columns\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t onPrintAsset(1, \"Single Column\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t onPrintAsset(2, \"Two Column\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t onPrintAsset(3, \"Three Column\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{user && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport SettingsIcon from \"@material-ui/icons/Settings\";\r\nimport React from \"react\";\r\nimport InfiniteScroll from \"react-infinite-scroller\";\r\nimport { SupportedTranslations } from \"../../../../src/entities/BibleTranslation\";\r\nimport { BuilderPreferences } from \"../../../../src/entities/BuilderPreferences\";\r\nimport { BibleVerseSearchItem, SearchService, SearchServiceHelper } from \"../../../../src/services/SearchService\";\r\nimport { TelemetryService } from \"../../../../src/services/TelemetryService\";\r\nimport { EventTracking, SearchEntity } from \"../../../../src/utilities/Tracking/EventTracking\";\r\nimport { DrawerContent } from \"../../../entities/DrawerContent\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles, ListSubheader, IconButton, Divider, Tooltip, TextField, InputAdornment, Button, CircularProgress, Typography, List, ListItemText, Hidden } from \"@material-ui/core\";\r\nimport axios, { CancelTokenStatic, CancelTokenSource } from \"axios\";\r\n\r\nconst useStyles = makeStyles((theme) =>({\r\n\troot: {},\r\n\ttoolbar: theme.mixins.toolbar,\r\n\ttitle: {\r\n\t\tpaddingTop: 10,\r\n\t\tpaddingBottom: 7,\r\n\t\ttextAlign: \"left\",\r\n\t\tfontSize: 22,\r\n\t},\r\n\tsubtitle: {\r\n\t\tpaddingTop: theme.spacing(1),\r\n\t\ttextAlign: \"left\",\r\n\t\tfontSize: 15,\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t},\r\n\tcloseIcon: {\r\n\t\tfloat: \"right\",\r\n\t},\r\n\tsearchBar: {\r\n\t\tminHeight: \"48px\",\r\n\t\tmaxHeight: \"48px\",\r\n\t\twidth: \"95%\",\r\n\t\tbackgroundColor: \"#fff\",\r\n\t\tborderRadius: \"0\",\r\n\t\tmargin: \"0 auto\",\r\n\t\tmarginTop: 10,\r\n\t},\r\n\tinputSearchText: {\r\n\t\tpadding: \"15px\",\r\n\t},\r\n\tplaceHolderIcon: {\r\n\t\tmarginTop: \"30px\",\r\n\t\twidth: \"50px\",\r\n\t\theight: \"50px\",\r\n\t\tcolor: \"#CCC\",\r\n\t},\r\n\tplaceHolderText: {\r\n\t\tfontFamily: \"Roboto, Helvetica\",\r\n\t\tfontSize: \"16px\",\r\n\t\tmarginTop: \"12px\",\r\n\t\tcolor: \"#5f6368\",\r\n\t\ttextAlign: \"center\",\r\n\t},\r\n\temptyState: {\r\n\t\tbackground: \"#efefef\",\r\n\t\theight: \"100%\",\r\n\t},\r\n\tsearchWrapper: {\r\n\t\tdisplay: \"flex\",\r\n\t\tbackground: \"#efefef\",\r\n\t\tminHeight: 60,\r\n\t},\r\n\tloading: {\r\n\t\tmarginTop: theme.spacing(4),\r\n\t\tmarginBottom: theme.spacing(1),\r\n\t\tmarginLeft: \"auto\",\r\n\t\tmarginRight: \"auto\",\r\n\t\tdisplay: \"block\",\r\n\t},\r\n\tsearchResults: {\r\n\t\tpaddingBottom: 100,\r\n\t\toverflowY: \"auto\",\r\n\t},\r\n\tsearchResultsAmp: {\r\n\t\tpaddingBottom: 165,\r\n\t\toverflowY: \"auto\",\r\n\t},\r\n\tbibleCopyright: {\r\n\t\tpadding: 5,\r\n\t\tpaddingLeft: 16,\r\n\t\tpaddingRight: 16,\r\n\t\t\"& a\": {\r\n\t\t\tcolor: theme.palette.primary.main,\r\n\t\t},\r\n\t\tposition: \"fixed\",\r\n\t\tbottom: 0,\r\n\t\tbackgroundColor: \"white\",\r\n\t\tborderTop: \"1px solid #efefef\",\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tpadding: \"0 8px\",\r\n\t\t\t\"& .copyright\": {\r\n\t\t\t\tfontSize: 11,\r\n\t\t\t\tlineHeight: \"15px\",\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tcopyIcon: {\r\n\t\tdisplay: \"none\",\r\n\t\tright: 0,\r\n\t\ttop: \"30%\",\r\n\t\t\"&:hover\": {\r\n\t\t\tdisplay: \"block\",\r\n\t\t},\r\n\t},\r\n\tresult: {\r\n\t\twhiteSpace: \"normal\",\r\n\t\theight: \"auto\",\r\n\t\t\"&:hover\": {\r\n\t\t\t\"&+div\": {\r\n\t\t\t\tdisplay: \"block\",\r\n\t\t\t},\r\n\t\t},\r\n\t\tpadding: \"5px 10px\",\r\n\t\t\"& sup\": {\r\n\t\t\tverticalAlign: \"baseline\",\r\n\t\t\tposition: \"relative\",\r\n\t\t\ttop: \"-0.2em\",\r\n\t\t\tcolor: \"#000\",\r\n\t\t\tfontVariantNumeric: \"diagonal-fractions\",\r\n\t\t},\r\n\t},\r\n\tnoVerseNumbers: {\r\n\t\t\"& sup\": {\r\n\t\t\tdisplay: \"none\",\r\n\t\t},\r\n\t},\r\n\tformControl: {\r\n\t\tmargin: theme.spacing(1),\r\n\t\tminWidth: 120,\r\n\t},\r\n\tcopyInProgress: {\r\n\t\tmargin: theme.spacing(1),\r\n\t},\r\n\tstarIcon: {\r\n\t\twidth: 13,\r\n\t\theight: 13,\r\n\t},\r\n\tverticalText: {\r\n\t\ttransform: \"rotate(-90deg)\",\r\n\t\twidth: \"90px\",\r\n\t\ttransformOrigin: \"45% 85%\",\r\n\t\ttextAlign: \"center\",\r\n\t\tlineHeight: \"52px\",\r\n\t},\r\n\tgrow: {\r\n\t\tflex: 1,\r\n\t},\r\n\tsettingsIcon: {\r\n\t\tfloat: \"right\",\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: \"rgb(145, 145, 145)\",\r\n\t\t},\r\n\t},\r\n\trelatedButtons: {\r\n\t\tdisplay: \"flex\",\r\n\t\tjustifyContent: \"flex-end\",\r\n\t\tbackgroundColor: \"#efefef\",\r\n\t\tpaddingRight: 5,\r\n\t\tminHeight: 35,\r\n\t},\r\n\tscriptureActionButtons: {\r\n\t\tdisplay: \"flex\",\r\n\t\tpaddingBottom: 7,\r\n\t\tpaddingLeft: 5,\r\n\t},\r\n\tactionButtons: {\r\n\t\tfontSize: 13,\r\n\t\ttextTransform: \"capitalize\",\r\n\t},\r\n\tnoSup: {\r\n\t\tdisplay: \"none\",\r\n\t},\r\n}));\r\n\r\ninterface Props{\r\n\tonDrawerToggle: (open: boolean) => void;\r\n\tonSettingsDialogToggle: () => void;\r\n\tonCopyVerse: (verseContent: string) => void;\r\n\tonBibleVerseSelected: (scriptureReference: string) => void;\r\n\tpreferences: BuilderPreferences;\r\n\tonRelatedSearch: (type: DrawerContent, queryText: string) => void;\r\n\tonPreferenceChange: (preference: BuilderPreferences) => void;\r\n}\r\n\r\ntype PropsWithClasses = Props & { classes: ReturnType };\r\n\r\ninterface State {\r\n\tqueryText: string;\r\n\tbibleVerseSearchResult?: BibleVerseSearchItem[];\r\n\ttotalBibleVerseSearchResultCount: number;\r\n\tbibleVerseSearchServerError?: string;\r\n\tonCopyInProgress: boolean;\r\n\topen: boolean;\r\n\tisValidScriptureSearch: boolean;\r\n\tisChapterSearch: boolean;\r\n\tsearchTimeOut?: any;\r\n\tqueriedBibleTranslationId?: string;\r\n}\r\nconst currentLocation = \"Bible Drawer Interaction\"\r\n\r\nclass BibleSearchComponent extends React.Component {\r\n\tcancellationTokenFactory: CancelTokenStatic;\r\n cancellationToken: CancelTokenSource;\r\n\r\n\tconstructor(props: PropsWithClasses) {\r\n\t\tsuper(props);\r\n\t\t\r\n\t\tthis.cancellationTokenFactory = axios.CancelToken;\r\n this.cancellationToken = this.cancellationTokenFactory.source();\r\n\r\n\t\tthis.state = {\r\n\t\t\tqueryText: \"\",\r\n\t\t\ttotalBibleVerseSearchResultCount: 0,\r\n\t\t\tonCopyInProgress: false,\r\n\t\t\topen: false,\r\n\t\t\tisValidScriptureSearch: false,\r\n\t\t\tisChapterSearch: false,\r\n\t\t\tqueriedBibleTranslationId: this.props.preferences.bibleTranslationId,\r\n\t\t};\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevsProps: Props) {\r\n\t\tif (this.state.queriedBibleTranslationId !== prevsProps.preferences.bibleTranslationId) {\r\n\t\t\tthis.setState({ queriedBibleTranslationId: prevsProps.preferences.bibleTranslationId }, this.startSearch);\r\n\t\t}\r\n\t}\r\n\r\n\tstartSearch() {\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\ttotalBibleVerseSearchResultCount: 0,\r\n\t\t\t\tbibleVerseSearchResult: undefined,\r\n\t\t\t\tbibleVerseSearchServerError: undefined,\r\n\t\t\t},\r\n\t\t\tthis.searchBible\r\n\t\t);\r\n\t\t// We want to capture that the user searched something without spamming our server each keypress\r\n\t\tif (this.state.queryText.length === 1) {\r\n\t\t\tlet now = new Date();\r\n\t\t\tTelemetryService.updateContactField(\"sc_cloud_explorer\", now.toString());\r\n\t\t}\r\n\t}\r\n\r\n\tasync searchBible() {\r\n\t\tconst skip = this.state.bibleVerseSearchResult ? this.state.bibleVerseSearchResult.length : 0;\r\n\t\tconst take = 10;\r\n \r\n\t\tif (skip === 0) {\r\n this.cancellationToken.cancel('Canceled By User');\r\n this.cancellationToken = this.cancellationTokenFactory.source()\r\n }\r\n\r\n\t\tconst result = await SearchService.findBibleVerses(\r\n\t\t\tthis.state.queryText,\r\n\t\t\tthis.props.preferences.bibleTranslationId,\r\n\t\t\tskip,\r\n\t\t\ttake,\r\n\t\t\tthis.cancellationToken\r\n\t\t);\r\n\r\n\t\tlet bibleVerseSearchResult = this.state.bibleVerseSearchResult ? this.state.bibleVerseSearchResult : [];\r\n\r\n\t\tfor (let i = 0; i < result.results.length; i++) {\r\n\t\t\tbibleVerseSearchResult.push(result.results[i]);\r\n\t\t}\r\n\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tbibleVerseSearchResult,\r\n\t\t\t\ttotalBibleVerseSearchResultCount: result.totalCount,\r\n\t\t\t\tisValidScriptureSearch: result.isValidScriptureSearch,\r\n\t\t\t\tisChapterSearch: result.isChapter,\r\n\t\t\t},\r\n\t\t\t() => EventTracking.Builder.onSearch(SearchEntity.Bible, currentLocation)\r\n\t\t);\r\n\t}\r\n\r\n\tasync onCopyVerse(selectedVerse: BibleVerseSearchItem) {\r\n\t\tlet { bibleSearchCopySetting } = this.props.preferences;\r\n\t\tlet formattedVerse = null;\r\n\r\n\t\tif (bibleSearchCopySetting === \"all\") {\r\n\r\n\t\t\tformattedVerse = `${this.correctVerseRefInText(selectedVerse)}\\n${selectedVerse.title} - ${this.props.preferences.bibleTranslationId}`;\r\n\t\t} else if (bibleSearchCopySetting === \"numbers\") {\r\n\t\t\tformattedVerse = `${this.correctVerseRefInText(selectedVerse)}\\n${selectedVerse.title} - ${this.props.preferences.bibleTranslationId}`;\r\n\t\t\tformattedVerse = SearchServiceHelper.removeTranslationNotes(formattedVerse);\r\n\t\t} else {\r\n\t\t\tformattedVerse = `${selectedVerse.description}\\n${selectedVerse.title} - ${this.props.preferences.bibleTranslationId}`;\r\n\t\t\tformattedVerse = SearchServiceHelper.removeVerseNumbers(formattedVerse);\r\n\t\t\tformattedVerse = SearchServiceHelper.removeTranslationNotes(formattedVerse);\r\n\t\t}\r\n\t\tformattedVerse = formattedVerse.replace(\" \", \"\");\r\n\t\tformattedVerse = formattedVerse.replace(/<(?:.|\\n)*?>/gm, \"\");\r\n\t\tthis.props.onCopyVerse(formattedVerse);\r\n\t\tEventTracking.Builder.onCopy(SearchEntity.Bible, currentLocation);\r\n\t}\r\n\r\n\tcorrectVerseRefInText(bibleVerseObj: BibleVerseSearchItem) {\r\n\t\tlet formattedVerse = \"\";\r\n\t\tlet selectedVerse = bibleVerseObj.description;\r\n\t\tif (selectedVerse.includes(\"\")) {\r\n\t\t\tformattedVerse = selectedVerse.replace(//g, \"(\");\r\n\t\t\tformattedVerse = formattedVerse.replace(/<\\/sup>/g, \")\");\r\n\t\t\tif(this.props.preferences.bibleSearchCopySetting === \"all\"){\r\n\t\t\t\tconst footnoteStartRegex = //g;\r\n\t\t\t\tconst footnoteEndRegex = /<\\/footnote>/g;\r\n\t\t\t\tformattedVerse = formattedVerse.replace(footnoteStartRegex, \" (Note- \");\r\n\t\t\t\tformattedVerse = formattedVerse.replace(footnoteEndRegex, \")\");\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet verseNumber = bibleVerseObj.title.split(\":\")[1];\r\n\t\t\tlet formattedVerseNumber = verseNumber ? `(${verseNumber}) ` : \"\";\r\n\t\t\tformattedVerse = formattedVerseNumber + selectedVerse;\r\n\t\t}\r\n\t\treturn formattedVerse;\r\n\t}\r\n\r\n\thighlightText(text: string, match: string) {\r\n\t\tif (!text) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tif (!match) {\r\n\t\t\treturn text;\r\n\t\t}\r\n\r\n\t\t// Escape regex characters before passing into a regex\r\n\t\tmatch = match\r\n\t\t\t.trim()\r\n\t\t\t.replace(/ /gi, \"|\")\r\n\t\t\t.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\n\t\tconst regexp = new RegExp(\"(\" + match + \")\", \"gi\");\r\n\t\treturn text.replace(regexp, '$1');\r\n\t}\r\n\r\n\tonDrawerToggle = (open: boolean) => {\r\n\t\tthis.setState({ open }, () => this.props.onDrawerToggle(open));\r\n\t};\r\n\r\n\tshowHideVerseTextToggled = () => {\r\n\t\tthis.props.onPreferenceChange({\r\n\t\t\t...this.props.preferences,\r\n\t\t\tbibleSearchShowVerseNumbers: this.props.preferences.bibleSearchShowVerseNumbers ? false : true,\r\n\t\t});\r\n\t};\r\n\r\n\tdelaySearch = (e: any) => {\r\n\t\tif (this.state.searchTimeOut) {\r\n\t\t\tclearTimeout(this.state.searchTimeOut);\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tqueryText: e.target.value,\r\n\t\t\tsearchTimeOut: setTimeout(() => {\r\n\t\t\t\tthis.startSearch();\r\n\t\t\t}, 1000),\r\n\t\t});\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst classes = this.props.classes;\r\n\t\tconst bibleResult = this.state.bibleVerseSearchResult;\r\n\r\n\t\tconst bibleTranslation = SupportedTranslations.find((t) => t.id === this.props.preferences.bibleTranslationId!);\r\n\t\tconst bibleCopyright = bibleTranslation && bibleResult && bibleResult.length > 0 ? bibleTranslation.copyrightHtml : undefined;\r\n\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tSearch Bible\r\n\t\t\t\t\t\t this.onDrawerToggle(false)} className={classes.closeIcon}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t this.props.onSettingsDialogToggle()}>\r\n\t\t\t\t\t\t\tBible Settings\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t this.props.onSettingsDialogToggle()} className={classes.settingsIcon}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t\t\tstyle: { height: 48 },\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tvalue={this.state.queryText}\r\n\t\t\t\t\t\t\tonChange={(e) => this.delaySearch(e)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{this.state.queryText.length > 0 && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t this.props.onRelatedSearch(DrawerContent.Sermon, this.state.queryText)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tRelated Sermons\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t this.props.onRelatedSearch(DrawerContent.Illustration, this.state.queryText)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tRelated Illustration\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{!this.state.queryText &&
}\r\n\t\t\t\t\t\t{!this.state.bibleVerseSearchResult &&\r\n\t\t\t\t\t\t\tthis.state.bibleVerseSearchServerError === undefined &&\r\n\t\t\t\t\t\t\tthis.state.queryText.length > 0 && (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tLoading Bible Verses\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{this.state.bibleVerseSearchResult &&\r\n\t\t\t\t\t\t\tthis.state.bibleVerseSearchResult.length > 0 &&\r\n\t\t\t\t\t\t\tthis.state.bibleVerseSearchServerError === undefined &&\r\n\t\t\t\t\t\t\tthis.state.queryText.length > 0 && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t this.searchBible()}\r\n\t\t\t\t\t\t\t\t\t\thasMore={this.state.totalBibleVerseSearchResultCount > this.state.bibleVerseSearchResult.length}\r\n\t\t\t\t\t\t\t\t\t\tuseWindow={false}\r\n\t\t\t\t\t\t\t\t\t\tloader={\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tLoading Bible Verses\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{this.state.bibleVerseSearchResult.map((bibleVerse) => {\r\n\t\t\t\t\t\t\t\t\t\t\tlet { bibleSearchViewSetting } = this.props.preferences;\r\n\t\t\t\t\t\t\t\t\t\t\tlet displayContent = bibleVerse.description;\r\n\t\t\t\t\t\t\t\t\t\t\tif (bibleSearchViewSetting !== \"all\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplayContent = SearchServiceHelper.removeTranslationNotes(bibleVerse.description);\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst footnoteStartRegex = //g;\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst footnoteEndRegex = /<\\/footnote>/g;\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplayContent = displayContent.replace(footnoteStartRegex, \" (Note- \");\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplayContent = displayContent.replace(footnoteEndRegex, \")\");\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tlet displayedVerseText = this.highlightText(displayContent, this.state.queryText);\r\n\t\t\t\t\t\t\t\t\t\t\tif (bibleSearchViewSetting !== \"text\" && !displayedVerseText.includes(\"\")) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tlet verseNumber = bibleVerse.title.split(\":\")[1];\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplayedVerseText = `${verseNumber} ${displayedVerseText}`;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t this.onCopyVerse(bibleVerse)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCopy to clipboard\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!this.state.isChapterSearch && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.onBibleVerseSelected(bibleVerse.scriptureReference);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tEventTracking.Builder.contentDrawerOpen(SearchEntity.Bible, currentLocation);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tView full chapter\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{bibleCopyright && (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t this.props.onSettingsDialogToggle()}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\tChange Bible translation\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{this.state.bibleVerseSearchResult &&\r\n\t\t\t\t\t\t\tthis.state.bibleVerseSearchResult.length === 0 &&\r\n\t\t\t\t\t\t\tthis.state.bibleVerseSearchServerError === undefined && (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tNo Bible Verses Found\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{this.state.bibleVerseSearchServerError !== undefined && (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{this.state.bibleVerseSearchServerError}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport function BibleSearch(props:Props){\r\n\tconst classes = useStyles();\r\n\treturn ;\r\n}","export type BibleSearchSetting = \"all\" | \"numbers\" | \"text\";\r\n\r\nexport interface DropDown {\r\n\tid: string;\r\n\tname: string;\r\n}\r\n\r\nexport const BibleSearchSettingsOptions: DropDown[] = [\r\n\t{\r\n\t\tid: \"all\",\r\n\t\tname: \"Include verse numbers and notes\",\r\n\t},\r\n\t{\r\n\t\tid: \"numbers\",\r\n\t\tname: \"Include verse numbers\",\r\n\t},\r\n\t{\r\n\t\tid: \"text\",\r\n\t\tname: \"Scripture text only\",\r\n\t},\r\n];\r\n","import React, { useState } from \"react\";\r\n\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControl, InputLabel, makeStyles, MenuItem, Select, Tooltip } from \"@material-ui/core\";\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\n\r\nimport { SupportedTranslations } from \"../../../../../src/entities/BibleTranslation\";\r\nimport { BibleSearchSetting, BibleSearchSettingsOptions } from \"../../../../../src/entities/BibleSearchSettings\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tmobileSpacing: {\r\n\t\t[theme.breakpoints.down(\"xs\")]: {\r\n\t\t\tmarginTop: \"2em\",\r\n\t\t},\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\topen: boolean;\r\n\tonClose: () => void;\r\n\tonSaveSettings: (selectedTranslationId: string, selectedCopySetting: BibleSearchSetting, selectedViewSetting: BibleSearchSetting) => void;\r\n\tselectedTranslationId: string;\r\n\tselectedCopySetting: BibleSearchSetting;\r\n\tselectedViewSetting: BibleSearchSetting;\r\n}\r\nexport interface State {\r\n\tselectedTranslationId: string;\r\n\tselectedCopySetting: BibleSearchSetting;\r\n\tselectedViewSetting: BibleSearchSetting;\r\n}\r\n\r\nexport function BibleSettingsDialog(props:Props) {\r\n\tconst [selectedTranslationId, setSelectedTranslationId] = useState(props.selectedTranslationId)\r\n\tconst [selectedCopySetting, setSelectedCopySetting] = useState(props.selectedCopySetting)\r\n\tconst [selectedViewSetting, setSelectedViewSetting] = useState(props.selectedViewSetting)\r\n\tconst classes = useStyles();\r\n\r\n\tconst saveSettings = (event: React.FormEvent) => {\r\n\t\tevent.preventDefault();\r\n\t\tprops.onSaveSettings(selectedTranslationId, selectedCopySetting, selectedViewSetting);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\tSettings\r\n\t\t\t
saveSettings(e)}>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tBible Translation \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tsetSelectedTranslationId(event.target.value as string)}\r\n\t\t\t\t\t\t\tclassName={classes.mobileSpacing}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{SupportedTranslations.map((translation) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{translation.name}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCopy and Paste Options \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setSelectedCopySetting(event.target.value as BibleSearchSetting)}\r\n\t\t\t\t\t\t\tclassName={classes.mobileSpacing}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{BibleSearchSettingsOptions.map((option) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{option.name}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tView Options \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tsetSelectedViewSetting(event.target.value as BibleSearchSetting)}\r\n\t\t\t\t\t\t\tclassName={classes.mobileSpacing}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{BibleSearchSettingsOptions.map((option) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{option.name}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{selectedCopySetting !== selectedViewSetting && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tPlease note: Your \"Copy and Paste Options\" and \"View Options\" don't match. Visible verses may not match verses copied\r\n\t\t\t\t\t\t\tto your clipboard.\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}","import React, { useState, useEffect, useRef } from \"react\";\r\n\r\nimport {\r\n\tListSubheader,\r\n\tIconButton,\r\n\tDivider,\r\n\tTypography,\r\n\tToolbar,\r\n\tInput,\r\n\tButton,\r\n\tFormHelperText,\r\n\tCircularProgress,\r\n\tSwitch,\r\n\tTheme,\r\n\tmakeStyles\r\n} from \"@material-ui/core\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport CalendarToday from \"@material-ui/icons/CalendarToday\";\r\n\r\nimport { BuilderAsset } from \"../../../../src/entities/BuilderAsset\";\r\nimport { ServerResponse } from \"../../../services/server/OldWebClient\";\r\nimport classNames from \"classnames\";\r\nimport { BuilderAssetService } from \"../../../../src/services/BuilderAssetService\";\r\nimport StarIcon from \"@material-ui/icons/Star\";\r\nimport StarBorderIcon from \"@material-ui/icons/StarBorder\";\r\nimport OfflineIcon from \"@material-ui/icons/CheckCircle\";\r\nimport OnlineIcon from \"@material-ui/icons/CheckCircleOutline\";\r\n\r\nimport { useOfflineAssets } from \"../../offline/useOfflineAssets\";\r\nimport { useBuilder } from \"../useBuilder\";\r\nimport { FieldValidationError, ValidationHelper } from \"../../../services/server/ServerResponses\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport DateHelper from \"../../../utilities/DateHelper\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n\troot: {},\r\n\ttoolbar: theme.mixins.toolbar,\r\n\ttitle: {\r\n\t\tpaddingTop: 10,\r\n\t\tpaddingBottom: 7,\r\n\t\ttextAlign: \"left\",\r\n\t\tfontSize: 22,\r\n\t},\r\n\tsubtitle: {\r\n\t\tpaddingTop: theme.spacing(1),\r\n\t\ttextAlign: \"left\",\r\n\t\tfontSize: 19,\r\n\t},\r\n\tcloseIcon: {\r\n\t\tfloat: \"right\",\r\n\t},\r\n\tsearchBar: {\r\n\t\tminHeight: \"48px\",\r\n\t\tmaxHeight: \"48px\",\r\n\t\twidth: \"95%\",\r\n\t\tbackgroundColor: \"transparent\",\r\n\t\tborderRadius: \"0\",\r\n\t\tmargin: \"0 auto\",\r\n\t\tmarginTop: 10,\r\n\t},\r\n\tinputSearchText: {\r\n\t\tpadding: \"15px\",\r\n\t},\r\n\tplaceHolderIcon: {\r\n\t\tmarginTop: \"30px\",\r\n\t\twidth: \"50px\",\r\n\t\theight: \"50px\",\r\n\t\tcolor: \"#CCC\",\r\n\t},\r\n\tplaceHolderText: {\r\n\t\tfontFamily: \"Roboto, Helvetica\",\r\n\t\tfontSize: \"16px\",\r\n\t\tmarginTop: \"12px\",\r\n\t\tcolor: \"#5f6368\",\r\n\t\ttextAlign: \"center\",\r\n\t},\r\n\tloading: {\r\n\t\tmarginTop: theme.spacing(4),\r\n\t\tmarginBottom: theme.spacing(1),\r\n\t\tmarginLeft: \"auto\",\r\n\t\tmarginRight: \"auto\",\r\n\t\tdisplay: \"block\",\r\n\t},\r\n\tsearchResults: {\r\n\t\toverflowY: \"auto\",\r\n\t},\r\n\tbibleCopyright: {\r\n\t\tpadding: 5,\r\n\t\tpaddingLeft: 16,\r\n\t\tpaddingRight: 16,\r\n\t\t\"& a\": {\r\n\t\t\tcolor: theme.palette.primary.main,\r\n\t\t},\r\n\t},\r\n\tcopyIcon: {\r\n\t\tdisplay: \"none\",\r\n\t\tright: 0,\r\n\t\ttop: \"30%\",\r\n\t\t\"&:hover\": {\r\n\t\t\tdisplay: \"block\",\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"lg\")]: {\r\n\t\t\tdisplay: \"block\",\r\n\t\t},\r\n\t},\r\n\tresult: {\r\n\t\twhiteSpace: \"normal\",\r\n\t\theight: \"auto\",\r\n\t\t\"&:hover\": {\r\n\t\t\t\"&+div\": {\r\n\t\t\t\tdisplay: \"block\",\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tformControl: {\r\n\t\tmargin: theme.spacing(1),\r\n\t\tminWidth: 120,\r\n\t},\r\n\tcopyInProgress: {\r\n\t\tmargin: theme.spacing(1),\r\n\t},\r\n\tstarIcon: {\r\n\t\twidth: 13,\r\n\t\theight: 13,\r\n\t},\r\n\tchevronLeft: {\r\n\t\tmarginRight: \"2px\",\r\n\t\twidth: \"48px\",\r\n\t\theight: \"48px\",\r\n\t\tcolor: \"#FFF\",\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: \"rgb(145, 145, 145)\",\r\n\t\t},\r\n\t},\r\n\tverticalText: {\r\n\t\ttransform: \"rotate(-90deg)\",\r\n\t\twidth: \"90px\",\r\n\t\ttransformOrigin: \"45% 85%\",\r\n\t\ttextAlign: \"center\",\r\n\t\tlineHeight: \"52px\",\r\n\t},\r\n\tgrow: {\r\n\t\tflex: 1,\r\n\t},\r\n\tinfoContainer: {\r\n\t\tfontFamily: \"Roboto, Helvetica\",\r\n\t\tfontSize: \"13px\",\r\n\t\tcolor: \"#202124\",\r\n\t\tpadding: \"0 0 0 24px\",\r\n\t},\r\n\tinlineHolder: {\r\n\t\tfloat: \"right\",\r\n\t},\r\n\tinlineIcon: {\r\n\t\tcolor: \"rgb(143, 143, 143)\",\r\n\t\tfontSize: \"16px\",\r\n\t\tverticalAlign: \"text-bottom\",\r\n\t\tfloat: \"right\",\r\n\t\tmarginRight: \"6px\",\r\n\t\tcursor: \"pointer\",\r\n\t},\r\n\tinfoRow: {\r\n\t\tlineHeight: \"20px\",\r\n\t\tpadding: \"6px 0\",\r\n\t\tdisplay: \"flex\",\r\n\t},\r\n\tinfoProp: {\r\n\t\tflex: \"0 0 100px\",\r\n\t\tcolor: \"#5f6368\",\r\n\t},\r\n\tinfoValue: {\r\n\t\tboxSizing: \"border-box\",\r\n\t\tflex: \"1 1 auto\",\r\n\t\toverflow: \"hidden\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t\tfontWeight: \"bolder\",\r\n\t},\r\n\tdrawerInfoContent: {\r\n\t\tpadding: \"0 6px 0 6px\",\r\n\t},\r\n\tinfoClickable: {\r\n\t\tcursor: \"pointer\",\r\n\t\tcolor: \"#1967d2\",\r\n\t},\r\n\teditInput: {\r\n\t\tfontSize: \"12px\",\r\n\t\twidth: \"244px\",\r\n\t\tmarginBottom: \"4px\",\r\n\t},\r\n\teditActionsContainer: {\r\n\t\ttextAlign: \"right\",\r\n\t\tpaddingRight: \"16px\",\r\n\t},\r\n\tdateInput: {\r\n\t\t\"& div:first-of-type\": {\r\n\t\t\t\"& div:first-of-type\": {\r\n\t\t\t\tfontSize: \"12px\",\r\n\t\t\t\tlineHeight: \"4px\",\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tdrawerTitle: {\r\n\t\tmaxWidth: \"86&\",\r\n\t\toverflow: \"hidden\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tonDrawerToggle: (open: boolean) => void;\r\n\tasset?: BuilderAsset;\r\n}\r\n\r\ninterface EditState {\r\n\tpreachDate: Date | null;\r\n\tlocation: string;\r\n\tscriptures: string;\r\n\tname: string;\r\n\ttemplateDescription?: string;\r\n}\r\n\r\nexport function DetailsContent(props: Props) {\r\n\tconst { asset, onDrawerToggle } = props;\r\n\tconst classes = useStyles();\r\n\tconst [inEditMode, setInEditMode] = useState(false);\r\n\tconst [errors, setErrors] = useState([]);\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [editingTitleInDrawer, setEditingTitleInDrawer] = useState(false);\r\n\tconst [showCalendar, setShowCalendar] = useState(false);\r\n\tconst [editState, setEditState] = useState();\r\n\tconst [editStateUnsaved, setEditStateUnsaved] = useState();\r\n\r\n\tconst { setAssetOfflineMode } = useOfflineAssets();\r\n\tconst { setBuilderAsset } = useBuilder();\r\n\tconst calendarRef = useRef(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (asset) {\r\n\t\t\tsetEditState({\r\n\t\t\t\tlocation: asset.locationPreached,\r\n\t\t\t\tpreachDate: asset.datePreached ?? null,\r\n\t\t\t\tscriptures: asset.scripture,\r\n\t\t\t\tname: asset.name,\r\n\t\t\t\ttemplateDescription: asset.templateDescription,\r\n\t\t\t});\r\n\t\t\tsetEditStateUnsaved({\r\n\t\t\t\tlocation: asset.locationPreached,\r\n\t\t\t\tpreachDate: asset.datePreached ?? null,\r\n\t\t\t\tscriptures: asset.scripture,\r\n\t\t\t\tname: asset.name,\r\n\t\t\t\ttemplateDescription: asset.templateDescription,\r\n\t\t\t});\r\n\t\t}\r\n\t}, [asset]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (editStateUnsaved && asset) {\r\n\t\t\tif (editStateUnsaved.name !== asset.name) {\r\n\t\t\t\tconst updatedEditState: EditState = {\r\n\t\t\t\t\t...editStateUnsaved,\r\n\t\t\t\t\tname: asset.name,\r\n\t\t\t\t};\r\n\t\t\t\tsetEditStateUnsaved(updatedEditState);\r\n\t\t\t}\r\n\t\t}\r\n\t}, [asset]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst showCalendarCard = setTimeout(function () {\r\n\t\t\tcalendarRef.current.setState({ calendarShow: true });\r\n\t\t}, 100);\r\n\t\tif (!showCalendar) {\r\n\t\t\tclearTimeout(showCalendarCard);\r\n\t\t}\r\n\t}, [showCalendar]);\r\n\r\n\tconst handleDrawerToggle = (open: boolean) => {\r\n\t\tonDrawerToggle(open);\r\n\t};\r\n\r\n\tconst handleEditClose = () => {\r\n\t\tif (!inEditMode) {\r\n\t\t\tsetInEditMode(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (editState) {\r\n\t\t\tsetInEditMode(false);\r\n\t\t\tsetEditStateUnsaved({\r\n\t\t\t\tlocation: editState.location,\r\n\t\t\t\tpreachDate: editState.preachDate,\r\n\t\t\t\tscriptures: editState.scriptures,\r\n\t\t\t\tname: editState.name,\r\n\t\t\t\ttemplateDescription: editState.templateDescription,\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleSaveAsset = async (e: React.FormEvent) => {\r\n\t\te.preventDefault();\r\n\t\tsave();\r\n\t};\r\n\r\n\tconst toggleStar = () => {\r\n\t\tif (asset) {\r\n\t\t\tsave(!asset.isStarred);\r\n\t\t}\r\n\t};\r\n\r\n\tconst save = async (starChangedTo?: boolean) => {\r\n\t\tsetIsSaving(true);\r\n\r\n\t\tlet templateDescription = \"\";\r\n\r\n\t\tif (editStateUnsaved!.templateDescription) {\r\n\t\t\ttemplateDescription = editStateUnsaved!.templateDescription!;\r\n\t\t}\r\n\r\n\t\tconst updatedAsset: BuilderAsset = {\r\n\t\t\t...asset!,\r\n\t\t\tlocationPreached: editStateUnsaved!.location,\r\n\t\t\tscripture: editStateUnsaved!.scriptures,\r\n\t\t\tdatePreached: editStateUnsaved!.preachDate ?? undefined,\r\n\t\t\tisStarred: starChangedTo !== undefined ? starChangedTo : asset!.isStarred,\r\n\t\t\tname: editStateUnsaved!.name,\r\n\t\t\ttemplateDescription: templateDescription,\r\n\t\t};\r\n\r\n\t\tlet response = await BuilderAssetService.save(updatedAsset);\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tsetIsSaving(false);\r\n\t\t\tsetInEditMode(false);\r\n\t\t\tsetEditingTitleInDrawer(false);\r\n\r\n\t\t\tconst updatedAsset = response.data;\r\n\t\t\tsetEditState({\r\n\t\t\t\tlocation: updatedAsset.locationPreached,\r\n\t\t\t\tpreachDate: updatedAsset.datePreached ?? null,\r\n\t\t\t\tscriptures: updatedAsset.scripture,\r\n\t\t\t\tname: updatedAsset.name,\r\n\t\t\t\ttemplateDescription: updatedAsset.templateDescription,\r\n\t\t\t});\r\n\t\t\tsetEditStateUnsaved({\r\n\t\t\t\tlocation: updatedAsset.locationPreached,\r\n\t\t\t\tpreachDate: updatedAsset.datePreached ?? null,\r\n\t\t\t\tscriptures: updatedAsset.scripture,\r\n\t\t\t\tname: updatedAsset.name,\r\n\t\t\t\ttemplateDescription: updatedAsset.templateDescription,\r\n\t\t\t});\r\n\t\t\tsetBuilderAsset(updatedAsset);\r\n\r\n\t\t\t// BAD, better check these values, they can be null\r\n\r\n\t\t\t// if (editStateUnsaved!.scriptures.length !== editState!.scriptures.length) {\r\n\t\t\t// EventTracking.Builder.onSaveAsset(EventTracking.Builder.EntityDetails.Scripture);\r\n\t\t\t// }\r\n\t\t\t// else if (editStateUnsaved!.location.length !== editState!.location.length) {\r\n\t\t\t// EventTracking.Builder.onSaveAsset(EventTracking.Builder.EntityDetails.Location);\r\n\t\t\t// }\r\n\r\n\t\t\t// if (editStateUnsaved!.preachDate && editState!.preachDate) {\r\n\t\t\t// const detaildate = editState!.preachDate!.setHours(0, 0, 0, 0);\r\n\t\t\t// const altereddate = editStateUnsaved!.preachDate!.setHours(0, 0, 0, 0);\r\n\t\t\t// if (detaildate !== altereddate) {\r\n\t\t\t// EventTracking.Builder.onSaveAsset(EventTracking.Builder.EntityDetails.PreachDate);\r\n\t\t\t// }\r\n\t\t\t// }\r\n\t\t\t// else if (editState!.preachDate && !editStateUnsaved!.preachDate) {\r\n\t\t\t// EventTracking.Builder.onSaveAsset(EventTracking.Builder.EntityDetails.PreachDate);\r\n\t\t\t// }\r\n\t\t\t// else if (!editState!.preachDate && editStateUnsaved!.preachDate) {\r\n\t\t\t// EventTracking.Builder.onSaveAsset(EventTracking.Builder.EntityDetails.PreachDate);\r\n\t\t\t// }\r\n\t\t} else if (ServerResponse.isModelValidation(response)) {\r\n\t\t\tsetErrors(response.errors);\r\n\t\t\tsetIsSaving(false);\r\n\t\t} else if (ServerResponse.isError(response)) {\r\n\t\t\tsetIsSaving(false);\r\n\t\t}\r\n\t};\r\n\r\n\t// const onChangeDate = (date: Date) => {\r\n\t// \tif (editStateUnsaved) {\r\n\t// \t\tsetEditStateUnsaved({ ...editStateUnsaved, preachDate: date });\r\n\t// \t\tsetShowCalendar(false);\r\n\t// \t}\r\n\t// };\r\n\r\n\t// const setUndefinedState = () => {\r\n\t// \tif (editStateUnsaved) {\r\n\t// \t\tsetEditStateUnsaved({ ...editStateUnsaved, preachDate: undefined });\r\n\t// \t\tsetShowCalendar(false);\r\n\t// \t}\r\n\t// };\r\n\r\n\tconst onAddPreachDate = (e: any) => {\r\n\t\te.preventDefault();\r\n\t\tif (editStateUnsaved) {\r\n\t\t\tsetEditStateUnsaved({ ...editStateUnsaved });\r\n\t\t\tsetShowCalendar(true);\r\n\t\t}\r\n\t};\r\n\r\n\tconst toggleOfflineAsset = async (location: \"Drawer Toggle (Builder)\" | \"Drawer Icon (Builder)\") => {\r\n\t\tif (!asset) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetIsSaving(true);\r\n\t\tconst response = await setAssetOfflineMode(asset.id, !asset.offlineMode, location);\r\n\t\tif (response) {\r\n\t\t\tsetBuilderAsset(response);\r\n\t\t}\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tif (isSaving) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tSaving Details...\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{editingTitleInDrawer ? (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tif (e.keyCode === 13) {\r\n\t\t\t\t\t\t\t\t\t\t\tsave();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonChange={(e: any) =>\r\n\t\t\t\t\t\t\t\t\t\teditStateUnsaved ? setEditStateUnsaved({ ...editStateUnsaved, name: e.currentTarget.value }) : null\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\t\t\t\t\"aria-label\": \"Name\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t{ValidationHelper.isFieldInError(errors, \"Name\") && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t save()} className={classes.closeIcon}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetEditingTitleInDrawer(false);\r\n\t\t\t\t\t\t\t\t\tsetEditStateUnsaved({ ...editStateUnsaved!, name: asset!.name });\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tclassName={classes.closeIcon}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t setEditingTitleInDrawer(true)}>\r\n\t\t\t\t\t\t\t\t{asset!.name}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t handleDrawerToggle(false)} className={classes.closeIcon}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t{asset && (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{asset.offlineMode ? \"Offline Enabled\" : \"Offline Disabled\"}\r\n\t\t\t\t\t\t\t toggleOfflineAsset(\"Drawer Toggle (Builder)\")} checked={asset.offlineMode} />\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{inEditMode ? \"Edit Details\" : \"Details\"}\r\n\t\t\t\t\t\t\t{!inEditMode && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{!inEditMode && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\tTitle\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{asset.offlineMode ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t toggleOfflineAsset(\"Drawer Icon (Builder)\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classes.inlineIcon}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t toggleOfflineAsset(\"Drawer Icon (Builder)\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classes.inlineIcon}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
toggleStar()}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{asset.isStarred ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
setInEditMode(true)}>\r\n\t\t\t\t\t\t\t\t\t\t\t{asset.name}\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
Description
\r\n\t\t\t\t\t\t\t\t\t\t\t
setInEditMode(true)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{asset.templateDescription}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t{!asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
Preach Date
\r\n\t\t\t\t\t\t\t\t\t\t\t\t setInEditMode(true)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{asset.datePreached ? DateHelper.buildDateFormat(asset.datePreached) : \"Not Set\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
Location
\r\n\t\t\t\t\t\t\t\t\t\t\t\t setInEditMode(true)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{asset.locationPreached}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
Scriptures
\r\n\t\t\t\t\t\t\t\t\t\t\t\t setInEditMode(true)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{asset.scripture}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{inEditMode && (\r\n\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\teditStateUnsaved ? setEditStateUnsaved({ ...editStateUnsaved, name: e.currentTarget.value }) : null\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"aria-label\": \"Name\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t{ValidationHelper.isFieldInError(errors, \"Name\") && (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\teditStateUnsaved\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? setEditStateUnsaved({ ...editStateUnsaved, templateDescription: e.currentTarget.value })\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"aria-label\": \"TemplateDescription\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ValidationHelper.isFieldInError(errors, \"TemplateDescription\") && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{!asset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t editStateUnsaved && setEditStateUnsaved({...editStateUnsaved, preachDate: date ? new Date(date.setHours(0,0,0,0)) : null})}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tendAdornment: \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle: { fontSize: 12 },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: editStateUnsaved?.preachDate?.toLocaleDateString([], { weekday: 'short', year: 'numeric', month: 'long', day: 'numeric' }) ?? \"\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\teditStateUnsaved\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? setEditStateUnsaved({ ...editStateUnsaved, location: e.currentTarget.value })\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"aria-label\": \"Location\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ValidationHelper.isFieldInError(errors, \"LocationPreached\") && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\teditStateUnsaved\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? setEditStateUnsaved({ ...editStateUnsaved, scriptures: e.currentTarget.value })\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"aria-label\": \"Scripture\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ValidationHelper.isFieldInError(errors, \"ScriptureReferences\") && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
Modified
\r\n\t\t\t\t\t\t\t\t\t
{DateHelper.buildDateFormat(asset.dateModified)}
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
Access
\r\n\t\t\t\t\t\t\t\t\t
{DateHelper.buildDateFormat(asset.dateAccessed)}
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
Created
\r\n\t\t\t\t\t\t\t\t\t
{DateHelper.buildDateFormat(asset.dateCreated)}
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{inEditMode && (\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","\r\nexport const StringHelper = {\r\n toTitleCase: (str: string) => {\r\n // https://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript\r\n let i, j, lowers, uppers;\r\n str = str.replace(/([^\\W_]+[^\\s-]*) */g, function (txt: string) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n\r\n // Certain minor words should be left lowercase unless \r\n // they are the first or last words in the string\r\n lowers = ['A', 'An', 'The', 'And', 'But', 'Or', 'For', 'Nor', 'As', 'At',\r\n 'By', 'For', 'From', 'In', 'Into', 'Near', 'Of', 'On', 'Onto', 'To', 'With'];\r\n for (i = 0, j = lowers.length; i < j; i++) {\r\n str = str.replace(new RegExp('\\\\s' + lowers[i] + '\\\\s', 'g'),\r\n function (txt: string) {\r\n return txt.toLowerCase();\r\n });\r\n }\r\n\r\n // Certain words such as initialisms or acronyms should be left uppercase\r\n uppers = ['Ii', 'Iii', 'Iv'];\r\n for (i = 0, j = uppers.length; i < j; i++) {\r\n str = str.replace(new RegExp('\\\\b' + uppers[i] + '\\\\b', 'g'), uppers[i].toUpperCase());\r\n }\r\n return str;\r\n },\r\n\r\n toShortenSentence: (str: string, maxStringLength: number) => {\r\n if (str.trim() === \"\") {\r\n return str;\r\n }\r\n let max = maxStringLength - 3; // going to add ... on the end\r\n let sentenceExtraSpaces = str.length > maxStringLength + 50 ? str.substring(0, maxStringLength + 50) : str;\r\n let sentence = sentenceExtraSpaces.replace(/ +(?= )/g, '');\r\n let words = sentence.split(\" \");\r\n let shorterSentence = \"\";\r\n words.forEach((word, index) => {\r\n if (shorterSentence.length + word.length <= max) {\r\n shorterSentence += \" \" + word;\r\n }\r\n });\r\n return shorterSentence.trim() + \"...\";\r\n },\r\n\r\n removeHTML: (str: string) => {\r\n return str.replace(/<(?:.|\\n)*?>/gm, ' ')\r\n },\r\n\r\n highlightText: (text: string, match: string) =>{\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n if (!match) {\r\n return text;\r\n }\r\n\r\n // Escape regex characters before passing into a regex\r\n match = match.trim().replace(/ /gi, '|').replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n};\r\n\r\nexport default StringHelper;","import * as React from 'react';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport StarHalfIcon from '@material-ui/icons/StarHalf';\r\n\r\nexport const RatingHelper = {\r\n convertToStars: (rating: number, id: string) => {\r\n let stars:JSX.Element[] = [];\r\n //const { classes } = this.props;\r\n if (rating >= 1) {\r\n stars.push();\r\n }\r\n if (rating >= 2) {\r\n stars.push();\r\n }\r\n if (rating >= 3) {\r\n stars.push();\r\n }\r\n if (rating >= 4) {\r\n stars.push();\r\n }\r\n let ratingStr = rating.toString();\r\n if (ratingStr.substring(ratingStr.length, ratingStr.length - 1) === '5') {\r\n stars.push();\r\n }\r\n\r\n return stars;\r\n }\r\n};\r\nexport default RatingHelper;","import React from 'react';\r\n\r\nimport NoIcon from '@material-ui/icons/NotInterested'\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\nimport classNames from 'classnames';\r\nimport { SermonGeniusSearchItem } from '../../../../services/GeniusSearchService';\r\nimport { EventTracking, SearchEntity } from '../../../../utilities/Tracking/EventTracking';\r\nimport StringHelper from \"../../../../utilities/StringHelper\";\r\nimport RatingHelper from \"../../../../utilities/RatingHelper\"\r\nimport { List, ListItem, ListItemText, Tooltip, Typography, Button, Divider, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n scriptureActionButtons: {\r\n display: 'flex',\r\n paddingBottom: 7,\r\n paddingLeft: 5\r\n },\r\n actionButtons: {\r\n fontSize: 13,\r\n textTransform: 'capitalize'\r\n },\r\n result: {\r\n padding: '0 16px',\r\n whiteSpace: 'normal',\r\n height: 'auto',\r\n '&:hover': {\r\n '&+div': {\r\n display: 'block'\r\n }\r\n }\r\n },\r\n}));\r\n\r\ninterface Props {\r\n buttonText: string;\r\n disabled?: boolean;\r\n results: SermonGeniusSearchItem[];\r\n selected: (id: string) => void;\r\n copy: (searchItem: SermonGeniusSearchItem) => void;\r\n remove?: (id: string) => void;\r\n}\r\n\r\nexport function SermonGeniusResultsList(props:Props){\r\n const {buttonText, disabled, results, selected, copy, remove} = props;\r\n const classes = useStyles();\r\n const showFull = (r:SermonGeniusSearchItem) => {\r\n r.id !== undefined ? selected(r.id) : selected(r.scriptureReference!);\r\n EventTracking.Builder.contentDrawerOpen(SearchEntity.Genius, \"Genius Drawer Interaction\");\r\n }\r\n\r\n return (\r\n \r\n { results.slice(0, 5).map((r: SermonGeniusSearchItem) => {\r\n return (\r\n \r\n \r\n \r\n \r\n { r.id !== undefined && remove !== undefined\r\n &&\r\n \r\n \r\n remove(r.id!) }\r\n disabled={disabled}>\r\n \r\n \r\n \r\n \r\n }\r\n \r\n )}\r\n secondary={(\r\n <>\r\n { r.rating !==undefined && r.id !== undefined\r\n &&\r\n \r\n {r.contributor} | {RatingHelper.convertToStars(r.rating, r.id)}\r\n \r\n }\r\n \r\n \r\n )}\r\n />\r\n
\r\n \r\n showFull(r)}\r\n >\r\n { buttonText } \r\n \r\n
\r\n \r\n \r\n
\r\n )}\r\n )}\r\n
\r\n )\r\n}","import React from 'react';\r\n\r\nimport SolidIcon from '@material-ui/icons/Brightness1';\r\nimport { Button, Grid, ListItem, ListItemIcon, List, Typography, ListItemText, makeStyles } from '@material-ui/core';\r\nimport { AddAssetAction } from '../../../../entities/AddAssetAction';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n toolbar: theme.mixins.toolbar,\r\n subtitle: {\r\n paddingTop: theme.spacing(1),\r\n textAlign: 'center',\r\n paddingBottom: 10,\r\n fontSize: 19\r\n },\r\n circleText: {\r\n padding: '21px',\r\n textAlign: 'center',\r\n fontWeight: 500,\r\n color: \"white\",\r\n fontSize: 30,\r\n },\r\n '@keyframes geniusPulse': {\r\n \"0%\": {\r\n transform: 'scale(0.95)',\r\n boxShadow: '0 0 0 0 rgba(52, 172, 224, 0.7)',\r\n },\r\n '70%': {\r\n transform: 'scale(1)',\r\n boxShadow: '0 0 0 10px rgba(52, 172, 224, 0)',\r\n },\r\n '100%': {\r\n transform: 'scale(0.95)',\r\n boxShadow: '0 0 0 0 rgba(52, 172, 224, 0)'\r\n }\r\n },\r\n '@keyframes analyzerPulse': {\r\n \"0%\": {\r\n transform: 'scale(0.95)',\r\n boxShadow: '0 0 0 0 rgba(21, 77, 88, 0.7)',\r\n },\r\n '70%': {\r\n transform: 'scale(1)',\r\n boxShadow: '0 0 0 10px rgba(21, 77, 88, 0)',\r\n },\r\n '100%': {\r\n transform: 'scale(0.95)',\r\n boxShadow: '0 0 0 0 rgba(21, 77, 88, 0)'\r\n }\r\n }\r\n}));\r\n\r\ninterface Props {\r\n title:string;\r\n listText: string[];\r\n upgradeAction: AddAssetAction;\r\n upgradePath: string;\r\n color: string;\r\n displayNumber: number;\r\n}\r\n\r\nexport function UnpaidDrawer(props:Props) {\r\n const { title,listText, upgradeAction, upgradePath, color, displayNumber} = props;\r\n const classes = useStyles();\r\n const upSellUrl = `https://www.sermonmaker.net/upgrade-now/?upgradePath=${upgradePath}&upgradeAction=${upgradeAction}`;\r\n\r\n const onUpsellOpen = () => {\r\n window.location.assign(upSellUrl);\r\n }\r\n\r\n const geniusTextBlock = Discover {displayNumber} preaching ideas to make your sermon stronger, activate now to unlock;\r\n const analyzerTextBlock = Make your sermon even better with {displayNumber} preaching suggestion{displayNumber > 1 ? 's' : ''}, activate now to unlock;\r\n \r\n return (\r\n \r\n \r\n Activate {title}\r\n \r\n \r\n {upgradePath === \"Genius\" ? geniusTextBlock : analyzerTextBlock}\r\n \r\n \r\n
\r\n {displayNumber}\r\n
\r\n
\r\n \r\n \r\n { listText.map( (li, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {li}\r\n \r\n )}\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}","import { WebClient } from './server/WebClient';\r\n\r\nexport interface SermonGeniusSearchItem {\r\n id?: string;\r\n title: string;\r\n contributor?: string;\r\n description: string;\r\n rating?: number;\r\n scriptureReference?: string,\r\n summary?: string\r\n}\r\n\r\nexport interface GeniusSearchRequest {\r\n title: string,\r\n keywords?: string[];\r\n scriptureRefs?: string[];\r\n translationId?: string;\r\n}\r\n\r\n\r\nexport const GeniusSearchService = {\r\n findBibleVerses: (request: GeniusSearchRequest) => WebClient.Post.Unvalidated(`/api/GeniusSearch/FindBibleVerses`, request),\r\n findSermonIllustrations: (request: GeniusSearchRequest) => WebClient.Post.Unvalidated( `api/GeniusSearch/FindSermonIllustrations`, request),\r\n findSermons: (request: GeniusSearchRequest) => WebClient.Post.Unvalidated(`api/GeniusSearch/FindSermons`, request),\r\n blockSermonIllustration: (sermonIllustrationId:string) => WebClient.Post.Unvalidated(`api/GeniusSearch/BlockSermonIllustration`, { Id: sermonIllustrationId }),\r\n blockSermon: (sermonId:string) => WebClient.Post.Unvalidated(`api/GeniusSearch/BlockSermon`, {Id: sermonId})\r\n}","export interface ScriptureReference {\r\n\tbookName: string;\r\n\tchapterStart: number;\r\n\tchapterEnd: number | null;\r\n\tverseStart: number | null;\r\n\tverseEnd: number | null;\r\n}\r\n\r\nexport const ScriptureReferenceParser = {\r\n\tparse: (text: string) => {\r\n\t\tlet verseRegex = \"\\\\d{1,3}(?::\\\\d{1,3})?(?:\\\\s?(?:[-&]\\\\s?(?:\\\\d{1,3}:)?\\\\d+))*\";\r\n\r\n\t\tconst scriptureRegex =\r\n\t\t\t\"(?:Genesis|1 Kings|2 Kings|1 Timothy|2 Timothy|1 Peter|2 Peter|1 Samuel|2 Samuel|1 John|2 John|3 John|1 Chronicles|2 Chronicles|1 Corinthians|2 Corinthians|1 Thessalonians|2 Thessalonians|I Kings|II Kings|I Timothy|II Timothy|I Peter|II Peter|I Samuel|II Samuel|I John|II John|III John|I Chronicles|II Chronicles|I Corinthians|II Corinthians|I Thessalonians|Thessalonians|Exodus|Leviticus|Numbers|Deuteronomy|Joshua|Judges|Ruth|Ezra|Nehemiah|Esther|Job|Psalms?|Proverbs?|Ecclesiastes|Songs? of Solomon|Song of Songs|Isaiah|Jeremiah|Lamentations|Ezekiel|Daniel|Hosea|Joel|Amos|Obadiah|Jonah|Micah|Nahum|Habakkuk|Zephaniah|Haggai|Zechariah|Malachi|Matt|Matthew|Mark|Luke|John|Acts?|Acts of the Apostles|Romans|Galatians|Ephesians|Phil+ippians|Colossians|Titus|Philemon|Hebrews|James|Jude|Revelations?)\\\\s\" +\r\n\t\t\tverseRegex;\r\n\r\n\t\tconst matchedScriptureReferences = text.match(new RegExp(scriptureRegex, \"gi\"));\r\n\r\n\t\treturn matchedScriptureReferences ? matchedScriptureReferences : [];\r\n\t},\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport { Button, Grid, ListItem, Typography, ListSubheader, Accordion, AccordionSummary, CircularProgress, Divider, makeStyles} from '@material-ui/core';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport { SermonGeniusResultsList } from './components/sermonGeniusResultsList';\r\nimport { UnpaidDrawer } from './components/unpaidDrawer';\r\n\r\nimport { BuilderPreferences } from '../../../entities/BuilderPreferences';\r\nimport { BuilderAsset } from '../../../entities/BuilderAsset';\r\nimport { SermonGeniusSearchItem, GeniusSearchService, GeniusSearchRequest } from '../../../../src/services/GeniusSearchService';\r\nimport { SearchService } from '../../../services/SearchService';\r\nimport { EventTracking, SearchEntity } from '../../../../src/utilities/Tracking/EventTracking';\r\nimport KeyWordParser from \"../../../utilities/KeyWordParser\"\r\nimport { AddAssetAction } from '../../../entities/AddAssetAction';\r\nimport { useAuthenticatedUser } from '../../../utilities/useAuthenticatedUser';\r\nimport { useBuilderDrawer } from './useBuilderDrawer';\r\nimport { ScriptureReferenceParser } from '../../../utilities/ScriptureReferenceParser';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n title: {\r\n paddingTop: 10,\r\n paddingBottom: 7,\r\n textAlign: 'left',\r\n fontSize: 22\r\n },\r\n subtitle: {\r\n paddingTop: theme.spacing(0),\r\n textAlign: 'center',\r\n paddingBottom: 10,\r\n fontSize: 19\r\n },\r\n closeIcon: {\r\n float: 'right'\r\n },\r\n placeHolderIcon: {\r\n marginTop: \"30px\",\r\n width: \"50px\",\r\n height: \"50px\",\r\n color: \"#CCC\"\r\n },\r\n placeHolderText: {\r\n fontFamily: \"Roboto, Helvetica\",\r\n fontSize: \"16px\",\r\n marginTop: \"12px\",\r\n color: \"#5f6368\",\r\n textAlign: 'center'\r\n },\r\n panel: {\r\n boxShadow: 'none',\r\n margin: 0\r\n },\r\n panelSummary: {\r\n color: '#fff',\r\n textSize: '15px',\r\n },\r\n illustrationTitle: {\r\n color: '#fff',\r\n border: '1px solid #fff',\r\n backgroundColor: '#961617',\r\n padding: '0 24px',\r\n margin: 0\r\n },\r\n sermonTitle: {\r\n color: '#fff',\r\n border: '1px solid #fff',\r\n backgroundColor: '#f26321',\r\n padding: '0 24px',\r\n margin: 0\r\n },\r\n bibleTitle: {\r\n color: '#fff',\r\n border: '1px solid #fff',\r\n backgroundColor: '#027172',\r\n padding: '0 24px',\r\n margin: 0\r\n },\r\n}));\r\n\r\ninterface Props {\r\n asset: BuilderAsset;\r\n lastSearched: string;\r\n onDrawerToggle: (open: boolean) => void;\r\n geniusSearchResults: (verses:SermonGeniusSearchItem[], illustrations:SermonGeniusSearchItem[], sermons:SermonGeniusSearchItem[], translationId:string) => void;\r\n geniusSearchCounter?: Date;\r\n removeSermonResult: (id:string) => void;\r\n removeIllustrationResult: (id:string) => void;\r\n onCopyVerse: (verseContent: string) => void;\r\n onBibleVerseSelected: (scriptureReference: string) => void;\r\n preferences: BuilderPreferences;\r\n onIllustrationSelected: (id: string) => void;\r\n onCopyIllustration: (sermonContent: string) => void;\r\n onSermonSelected: (id: string) => void;\r\n onCopySermon: (sermonContent: string) => void;\r\n verses: SermonGeniusSearchItem[];\r\n illustrations: SermonGeniusSearchItem[];\r\n sermons: SermonGeniusSearchItem[];\r\n onError: (message:string) => void;\r\n translationId?: string;\r\n}\r\n\r\nconst currentLocation = \"Genius Drawer Interaction\"\r\n\r\nexport function GeniusSearch(props:Props) {\r\n const classes = useStyles();\r\n const drawerContext = useBuilderDrawer();\r\n const {asset, sermons, illustrations, verses, preferences} = props;\r\n const user = useAuthenticatedUser();\r\n\r\n const [illustrationServerFailed, setIllustrationServerFailed] = useState(false);\r\n const [sermonServerFailed, setSermonServerFailed] = useState(false);\r\n const [bibleVerseServerFailed, setBibleVerseServerFailed] = useState(false);\r\n const [disabled, setDisabled] = useState(false);\r\n const [canRefresh, setCanRefresh] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [loadingText, setLoadingText] = useState(\"\");\r\n const [open, setOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n drawerContext.dismissGeniusBadge();\r\n if (user.makerSubscription){\r\n if( sermons.length === 0 || illustrations.length === 0 || verses.length === 0 ) {\r\n searchGenius();\r\n }\r\n }\r\n }, [sermons, illustrations, verses]);\r\n\r\n useEffect(() => {\r\n if (props.translationId !== props.preferences.bibleTranslationId && user.makerSubscription)\r\n setCanRefresh(true);\r\n }, [props.translationId, props.preferences])\r\n\r\n useEffect(() => {\r\n if(props.asset && props.geniusSearchCounter && user.makerSubscription)\r\n if(props.asset.dateModified.getTime() > props.geniusSearchCounter.getTime() && !canRefresh)\r\n setCanRefresh(true);\r\n }, [props.asset, props.geniusSearchCounter])\r\n\r\n const updateLoadingText = (text:string, time:number) => setTimeout(() => setLoadingText(text), time);\r\n\r\n const onDrawerToggle = (open: boolean) => {setOpen(open); props.onDrawerToggle(open)}\r\n\r\n const searchGenius = async() => {\r\n\r\n if (!asset) return;\r\n\r\n displayLoadingState();\r\n\r\n const title = asset.name;\r\n const keywords = await getKeywords(asset.text);\r\n const scriptureRefs = await getScriptureRefs(asset.text);\r\n const translationId = preferences.bibleTranslationId;\r\n\r\n const request:GeniusSearchRequest = {\r\n title: title, \r\n keywords: keywords, \r\n scriptureRefs: scriptureRefs, \r\n translationId: translationId\r\n };\r\n \r\n const responses = await Promise.all([\r\n GeniusSearchService.findBibleVerses(request),\r\n GeniusSearchService.findSermonIllustrations(request),\r\n GeniusSearchService.findSermons(request)\r\n ]);\r\n \r\n const [searchVerseResult, searchSermonIllustrationResult, searchSermonResult] = responses\r\n\r\n let verseResults: SermonGeniusSearchItem[] = [];\r\n\r\n if(searchVerseResult.error){\r\n setBibleVerseServerFailed(true);\r\n setCanRefresh(true);\r\n }\r\n if(searchVerseResult.success){\r\n verseResults = searchVerseResult.data;\r\n setBibleVerseServerFailed(false);\r\n }\r\n \r\n let sermonIllustrationResults: SermonGeniusSearchItem[] = [];\r\n\r\n if(searchSermonIllustrationResult.error){\r\n setIllustrationServerFailed(true);\r\n setCanRefresh(true);\r\n }\r\n if(searchSermonIllustrationResult.success) {\r\n sermonIllustrationResults = searchSermonIllustrationResult.data;\r\n setIllustrationServerFailed(false);\r\n }\r\n\r\n let sermonResults: SermonGeniusSearchItem[] = [];\r\n\r\n if(searchSermonResult.error){\r\n setSermonServerFailed(true);\r\n setCanRefresh(true);\r\n }\r\n if (searchSermonResult.success){\r\n sermonResults = searchSermonResult.data;\r\n setSermonServerFailed(false);\r\n }\r\n \r\n props.geniusSearchResults(verseResults, sermonIllustrationResults, sermonResults, translationId ? translationId : \"NIV\" );\r\n }\r\n\r\n const getKeywords = async(text:string) => {\r\n if (text.length === 0){\r\n return;\r\n }\r\n \r\n const stopWords = [\"god\", \"jesus\", \"bible\"]\r\n const foundKeywords = await KeyWordParser.parseKeywords(text, stopWords);\r\n\r\n return foundKeywords;\r\n }\r\n\r\n const getScriptureRefs = async(text:string) => {\r\n if (text.length === 0){\r\n return;\r\n }\r\n\r\n return ScriptureReferenceParser.parse(text)\r\n }\r\n\r\n const displayLoadingState = () => {\r\n setLoading(true);\r\n setLoadingText(\"Searching 31,102 Bible Verses\");\r\n updateLoadingText(\"Searching 181,667 Sermons\", 1500);\r\n updateLoadingText(\"Searching 49,363 illustrations\", 3000);\r\n setTimeout(() => {\r\n setLoading(false)\r\n setCanRefresh(false)\r\n }, 4500);\r\n }\r\n\r\n const removeSermonResult = async (id: string) => {\r\n setDisabled(true);\r\n const response = await GeniusSearchService.blockSermon(id);\r\n setDisabled(false);\r\n \r\n if(response.error) return props.onError('Remove Sermon failed. Please try again.');\r\n\r\n props.removeSermonResult(id);\r\n }\r\n\r\n const removeSermonIllustrationResult = async(id: string) => {\r\n setDisabled(true); \r\n const response = await GeniusSearchService.blockSermonIllustration(id);\r\n setDisabled(false);\r\n\r\n if(response.error) return props.onError('Remove Sermon Illustration failed. Please try again.');\r\n\r\n props.removeIllustrationResult(id)\r\n }\r\n\r\n // Bible Search Functions\r\n const onCopyVerse = async(selectedVerse: SermonGeniusSearchItem) => {\r\n // We don't want any verse numbers or the encaspulating html to be on the editor. \r\n let formattedVerse = `${selectedVerse.description.replace(/\\d+<\\/sup>/g, '')}\\n${selectedVerse.title} - ${props.preferences.bibleTranslationId}`;\r\n props.onCopyVerse(formattedVerse);\r\n EventTracking.Builder.onCopy(SearchEntity.Genius, currentLocation);\r\n }\r\n\r\n // Sermon Search functions\r\n const onCopySermon = async(selectedSermon: SermonGeniusSearchItem) => {\r\n let sermon = await SearchService.getSermon(selectedSermon.id!);\r\n let bodyNoHtml = sermon.body.replace(/<\\/p>/g, \"\\n\\n\").replace(/<(?:.|\\n)*?>/gm, '');\r\n props.onCopySermon(bodyNoHtml);\r\n EventTracking.Builder.onCopy(SearchEntity.Genius, currentLocation);\r\n }\r\n\r\n \r\n const onCopyIllustration = async(selectedIllustration: SermonGeniusSearchItem) => {\r\n let illustration = await SearchService.getIllustration(selectedIllustration.id!);\r\n let illustrationText = illustration.body.replace(/<\\/p>/g, \"\\n\").replace(/<(?:.|\\n)*?>/gm, '');\r\n props.onCopyIllustration(illustrationText);\r\n EventTracking.Builder.onCopy(SearchEntity.Genius, currentLocation);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n Sermon Genius\r\n onDrawerToggle(false)} className={classes.closeIcon}>\r\n \r\n \r\n \r\n \r\n { loading\r\n ? \r\n : !user.makerSubscription\r\n ? \r\n : \r\n <>\r\n \r\n { canRefresh\r\n ?\r\n \r\n :\r\n <>\r\n \r\n \r\n { props.lastSearched }\r\n \r\n \r\n } \r\n \r\n \r\n \r\n
\r\n \r\n }>\r\n Related Bible Verses ({ verses.length })\r\n \r\n { bibleVerseServerFailed\r\n ? \r\n : \r\n }\r\n\r\n \r\n \r\n\r\n\r\n \r\n }>\r\n Suggested Sermons ({ sermons.length > 5 ? 5 : sermons.length })\r\n \r\n { sermonServerFailed\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n\r\n \r\n }>\r\n Suggested Illustrations ({ illustrations.length > 5 ? 5 : illustrations.length })\r\n \r\n { illustrationServerFailed\r\n ? \r\n : \r\n }\r\n \r\n
\r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nfunction ServerFailed(props:{ message: string }) {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n
\r\n \r\n {props.message}\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nfunction LoadingState(props:{loadingText: string}){\r\n return (\r\n
\r\n \r\n
\r\n \r\n { props.loadingText }\r\n \r\n
\r\n )\r\n}","import React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\n\r\nimport { SearchService, IllustrationSearchItem } from '../../../../src/services/SearchService';\r\nimport { TelemetryService } from '../../../../src/services/TelemetryService';\r\n\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport { EventTracking, SearchEntity } from '../../../../src/utilities/Tracking/EventTracking';\r\nimport classNames from 'classnames';\r\nimport RatingHelper from '../../../utilities/RatingHelper';\r\nimport StringHelper from '../../../utilities/StringHelper';\r\nimport { ListSubheader, IconButton, Divider, TextField, InputAdornment, CircularProgress, Typography, List, MenuItem, ListItemText, makeStyles } from '@material-ui/core';\r\nimport axios, { CancelTokenStatic, CancelTokenSource } from 'axios';\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n ({\r\n root: {\r\n },\r\n toolbar: theme.mixins.toolbar,\r\n title: {\r\n paddingTop: 10,\r\n paddingBottom: 7,\r\n textAlign: 'left',\r\n fontSize: 22\r\n },\r\n subtitle: {\r\n paddingTop: theme.spacing(0),\r\n textAlign: 'left',\r\n fontSize: 19\r\n },\r\n closeIcon: {\r\n float: 'right'\r\n },\r\n searchBar: {\r\n minHeight: '48px',\r\n maxHeight: '48px',\r\n width: \"95%\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"0\",\r\n margin: '0 auto',\r\n marginTop: 10\r\n },\r\n emptyState: {\r\n background: '#efefef',\r\n height: '100%'\r\n },\r\n searchWrapper: {\r\n display: 'flex',\r\n background: '#efefef',\r\n minHeight: 70\r\n },\r\n inputSearchText: {\r\n padding: '15px'\r\n },\r\n placeHolderIcon: {\r\n marginTop: \"30px\",\r\n width: \"50px\",\r\n height: \"50px\",\r\n color: \"#CCC\"\r\n },\r\n placeHolderText: {\r\n fontFamily: \"Roboto, Helvetica\",\r\n fontSize: \"16px\",\r\n marginTop: \"12px\",\r\n color: \"#5f6368\",\r\n textAlign: 'center'\r\n },\r\n loading: {\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(1),\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n display: 'block'\r\n },\r\n searchResults: {\r\n overflowY: 'auto'\r\n },\r\n bibleCopyright: {\r\n padding: 5,\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n '& a': {\r\n color: theme.palette.primary.main\r\n }\r\n },\r\n copyIcon: {\r\n display: 'none',\r\n right: 0,\r\n top: '30%',\r\n '&:hover': {\r\n display: 'block'\r\n },\r\n },\r\n result: {\r\n whiteSpace: 'normal',\r\n height: 'auto',\r\n '&:hover': {\r\n '&+div': {\r\n display: 'block'\r\n }\r\n }\r\n },\r\n formControl: {\r\n margin: theme.spacing(0),\r\n minWidth: 120,\r\n },\r\n copyInProgress: {\r\n margin: theme.spacing()\r\n },\r\n chevronLeft: {\r\n marginRight: \"2px\",\r\n width: \"48px\",\r\n height: \"48px\",\r\n color: \"#FFF\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgb(145, 145, 145)\"\r\n }\r\n },\r\n verticalText: {\r\n transform: \"rotate(-90deg)\",\r\n width: \"90px\",\r\n transformOrigin: \"45% 85%\",\r\n textAlign: \"center\",\r\n lineHeight: \"52px\"\r\n },\r\n grow: {\r\n flex: 1\r\n }\r\n }));\r\n\r\ninterface Props {\r\n onDrawerToggle: (open: boolean) => void;\r\n onIllustrationSelected: (id: string) => void;\r\n onCopyIllustration: (sermonContent: string) => void;\r\n presetSearchText?: string;\r\n}\r\n\r\ntype PropsWithClasses = Props & { classes: ReturnType };\r\n\r\ninterface State {\r\n queryText: string;\r\n illustrationSearchResult?: IllustrationSearchItem[];\r\n totalIllustrationSearchResultCount: number;\r\n illustrationSearchServerError?: string;\r\n onCopyInProgress: boolean;\r\n open: boolean;\r\n}\r\n\r\nconst currentLocation = \"Illustration Drawer Interaction\"\r\n\r\nclass IllustrationSearchClassComponent extends React.Component {\r\n cancellationTokenFactory: CancelTokenStatic;\r\n cancellationToken: CancelTokenSource;\r\n\r\n constructor(props: PropsWithClasses) {\r\n super(props);\r\n\r\n this.cancellationTokenFactory = axios.CancelToken;\r\n this.cancellationToken = this.cancellationTokenFactory.source();\r\n\r\n this.state = {\r\n queryText: props.presetSearchText ? props.presetSearchText : '',\r\n totalIllustrationSearchResultCount: 0,\r\n onCopyInProgress: false,\r\n open: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.queryText.length > 0) {\r\n this.startSearch();\r\n }\r\n }\r\n\r\n startSearch() {\r\n this.setState({\r\n totalIllustrationSearchResultCount: 0,\r\n illustrationSearchResult: undefined,\r\n illustrationSearchServerError: undefined,\r\n }, this.searchIllustrations);\r\n // We want to capture that the user searched something without spamming our server each keypress\r\n if (this.state.queryText.length === 1) {\r\n let now = new Date();\r\n TelemetryService.updateContactField(\"sc_cloud_explorer\", now.toString());\r\n }\r\n }\r\n async searchIllustrations() {\r\n const skip = this.state.illustrationSearchResult ? this.state.illustrationSearchResult.length : 0;\r\n const take = 10;\r\n\r\n if (skip === 0) {\r\n this.cancellationToken.cancel('Canceled By User');\r\n this.cancellationToken = this.cancellationTokenFactory.source()\r\n }\r\n\r\n const result = await SearchService.findIllustrations(this.state.queryText, skip, take, this.cancellationToken);\r\n\r\n let illustrationSearchResult = this.state.illustrationSearchResult ? this.state.illustrationSearchResult : [];\r\n\r\n for (let i = 0; i < result.results.length; i++) {\r\n illustrationSearchResult.push(result.results[i]);\r\n }\r\n\r\n this.setState({ illustrationSearchResult, totalIllustrationSearchResultCount: result.totalCount }, () => EventTracking.Builder.onSearch(SearchEntity.Illustration, currentLocation));\r\n }\r\n\r\n async onCopyIllustration(selectedIllustration: IllustrationSearchItem) {\r\n this.setState({ onCopyInProgress: true });\r\n let illustration = await SearchService.getIllustration(selectedIllustration.id);\r\n let illustrationText = illustration.body.replace(/<\\/p>/g, \"\\n\").replace(/<(?:.|\\n)*?>/gm, '');\r\n this.props.onCopyIllustration(illustrationText);\r\n this.setState({ onCopyInProgress: false });\r\n EventTracking.Builder.onCopy(SearchEntity.Illustration, currentLocation);\r\n }\r\n\r\n onDrawerToggle = (open: boolean) => {\r\n this.setState({ open }, () => this.props.onDrawerToggle(open));\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n <>\r\n \r\n \r\n Search Illustrations\r\n this.onDrawerToggle(false)} className={classes.closeIcon}>\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n ),\r\n style: { height: 48 }\r\n }}\r\n value={this.state.queryText}\r\n onChange={(e) => { this.setState({ queryText: e.target.value }, this.startSearch); }}\r\n />\r\n
\r\n \r\n {!this.state.queryText\r\n &&\r\n
\r\n }\r\n {!this.state.illustrationSearchResult && this.state.queryText.length > 0 &&\r\n
\r\n
\r\n \r\n Loading Illustrations\r\n \r\n
\r\n }\r\n\r\n {this.state.illustrationSearchResult && this.state.illustrationSearchResult.length > 0 && this.state.queryText.length > 0 &&\r\n \r\n this.searchIllustrations()}\r\n hasMore={this.state.totalIllustrationSearchResultCount > this.state.illustrationSearchResult.length}\r\n useWindow={false}\r\n loader={
\r\n
\r\n \r\n Loading Illustrations\r\n \r\n
}\r\n >\r\n {this.state.illustrationSearchResult.map(illustration => {\r\n return (\r\n \r\n {\r\n this.props.onIllustrationSelected(illustration.id);\r\n EventTracking.Builder.contentDrawerOpen(SearchEntity.Illustration, currentLocation);\r\n }}\r\n className={classes.result}\r\n >\r\n \r\n )}\r\n secondary={(\r\n <>\r\n {illustration.contributor} | {RatingHelper.convertToStars(illustration.rating, illustration.id)}\r\n \r\n \r\n )}\r\n />\r\n {/* \r\n {\r\n this.state.onCopyInProgress\r\n ?\r\n \r\n \r\n \r\n :\r\n \r\n this.onCopyIllustration(illustration)}>\r\n \r\n \r\n \r\n }\r\n */}\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n }\r\n\r\n {this.state.illustrationSearchResult && this.state.illustrationSearchResult.length === 0 &&\r\n
\r\n
\r\n No Illustrations Found\r\n
\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport function IllustrationSearch(props: Props) {\r\n const classes = useStyles();\r\n return ;\r\n}\r\n","import React from 'react';\r\n\r\nimport { SermonSearchItem, SearchService } from '../../../../src/services/SearchService';\r\nimport { TelemetryService } from '../../../../src/services/TelemetryService';\r\nimport {ListSubheader,IconButton, Divider, List, CircularProgress, Typography, MenuItem, ListItemText, TextField, InputAdornment, makeStyles} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport { EventTracking, SearchEntity } from '../../../../src/utilities/Tracking/EventTracking';\r\nimport classNames from 'classnames';\r\nimport RatingHelper from '../../../utilities/RatingHelper';\r\nimport StringHelper from '../../../utilities/StringHelper';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport axios, { CancelTokenSource, CancelTokenStatic } from 'axios';\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n ({\r\n root: {\r\n },\r\n toolbar: theme.mixins.toolbar,\r\n title: {\r\n paddingTop: 10,\r\n paddingBottom: 7,\r\n textAlign: 'left',\r\n fontSize: 22\r\n },\r\n subtitle: {\r\n paddingTop: theme.spacing(),\r\n textAlign: 'left',\r\n fontSize: 19\r\n },\r\n closeIcon: {\r\n float: 'right'\r\n },\r\n searchBar: {\r\n minHeight: '48px',\r\n maxHeight: '48px',\r\n width: \"95%\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"0\",\r\n margin: '0 auto',\r\n marginTop: 10\r\n },\r\n emptyState: {\r\n background: '#efefef',\r\n height: '100%'\r\n },\r\n searchWrapper: {\r\n display: 'flex',\r\n background: '#efefef',\r\n minHeight: 70\r\n },\r\n inputSearchText: {\r\n padding: '15px'\r\n },\r\n placeHolderIcon: {\r\n marginTop: \"30px\",\r\n width: \"50px\",\r\n height: \"50px\",\r\n color: \"#CCC\"\r\n },\r\n placeHolderText: {\r\n fontFamily: \"Roboto, Helvetica\",\r\n fontSize: \"16px\",\r\n marginTop: \"12px\",\r\n color: \"#5f6368\",\r\n textAlign: 'center'\r\n },\r\n loading: {\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(1),\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n display: 'block'\r\n },\r\n searchResults: {\r\n overflowY: 'auto'\r\n },\r\n bibleCopyright: {\r\n padding: 5,\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n '& a': {\r\n color: theme.palette.primary.main\r\n }\r\n },\r\n copyIcon: {\r\n display: 'none',\r\n right: 0,\r\n top: '30%',\r\n '&:hover': {\r\n display: 'block'\r\n }\r\n },\r\n result: {\r\n whiteSpace: 'normal',\r\n height: 'auto',\r\n '&:hover': {\r\n '&+div': {\r\n display: 'block'\r\n }\r\n }\r\n },\r\n copyInProgress: {\r\n margin: theme.spacing()\r\n },\r\n starIcon: {\r\n width: 13,\r\n height: 13\r\n },\r\n verticalText: {\r\n transform: \"rotate(-90deg)\",\r\n width: \"90px\",\r\n transformOrigin: \"45% 85%\",\r\n textAlign: \"center\",\r\n lineHeight: \"52px\"\r\n },\r\n grow: {\r\n flex: 1\r\n },\r\n }));\r\n\r\ninterface Props {\r\n onDrawerToggle: (open: boolean) => void;\r\n onSermonSelected: (id: string) => void;\r\n onCopySermon: (sermonContent: string) => void;\r\n presetSearchText?: string;\r\n}\r\n\r\ntype PropsWithClasses = Props & { classes: ReturnType };\r\n\r\ninterface State {\r\n queryText: string;\r\n sermonSearchResult?: SermonSearchItem[];\r\n totalSermonSearchResultCount: number;\r\n sermonSearchServerError?: string;\r\n onCopyInProgress: boolean;\r\n open: boolean;\r\n}\r\n\r\nconst currentLocation = \"Sermon Drawer Interaction\"\r\n\r\nclass SermonSearchClassComponent extends React.Component {\r\n cancellationTokenFactory: CancelTokenStatic;\r\n cancellationToken: CancelTokenSource;\r\n\r\n constructor(props: PropsWithClasses) {\r\n super(props);\r\n\r\n this.cancellationTokenFactory = axios.CancelToken;\r\n this.cancellationToken = this.cancellationTokenFactory.source();\r\n\r\n this.state = {\r\n queryText: props.presetSearchText ? props.presetSearchText : '',\r\n totalSermonSearchResultCount: 0,\r\n onCopyInProgress: false,\r\n open: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.queryText.length > 0) {\r\n this.startSearch();\r\n }\r\n }\r\n\r\n startSearch() {\r\n this.setState({\r\n totalSermonSearchResultCount: 0,\r\n sermonSearchResult: undefined,\r\n sermonSearchServerError: undefined,\r\n }, this.searchSermons);\r\n // We want to capture that the user searched something without spamming our server each keypress\r\n if (this.state.queryText.length === 1) {\r\n let now = new Date();\r\n TelemetryService.updateContactField(\"sc_cloud_explorer\", now.toString());\r\n }\r\n }\r\n\r\n async searchSermons() {\r\n const skip = this.state.sermonSearchResult ? this.state.sermonSearchResult.length : 0;\r\n const take = 10;\r\n\r\n if (skip === 0) {\r\n this.cancellationToken.cancel('Canceled By User');\r\n this.cancellationToken = this.cancellationTokenFactory.source()\r\n }\r\n\r\n const result = await SearchService.findSermons(this.state.queryText, 'english', skip, take, this.cancellationToken);\r\n\r\n let sermonSearchResult = this.state.sermonSearchResult ? this.state.sermonSearchResult : [];\r\n\r\n for (let i = 0; i < result.results.length; i++) {\r\n sermonSearchResult.push(result.results[i]);\r\n }\r\n\r\n this.setState({ sermonSearchResult, totalSermonSearchResultCount: result.totalCount }, () => EventTracking.Builder.onSearch(SearchEntity.Sermon, currentLocation));\r\n }\r\n\r\n async onCopySermon(selectedSermon: SermonSearchItem) {\r\n this.setState({ onCopyInProgress: true });\r\n let sermon = await SearchService.getSermon(selectedSermon.id);\r\n let bodyNoHtml = sermon.body.replace(/<\\/p>/g, \"\\n\\n\").replace(/<(?:.|\\n)*?>/gm, '');\r\n this.props.onCopySermon(bodyNoHtml);\r\n this.setState({ onCopyInProgress: false });\r\n EventTracking.Builder.onCopy(SearchEntity.Sermon, currentLocation);\r\n }\r\n\r\n onDrawerToggle = (open: boolean) => {\r\n this.setState({ open }, () => this.props.onDrawerToggle(open));\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n <>\r\n \r\n \r\n Search Sermons\r\n this.onDrawerToggle(false)} className={classes.closeIcon}>\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n ),\r\n style: { height: 48 }\r\n }}\r\n value={this.state.queryText}\r\n onChange={(e) => { this.setState({ queryText: e.target.value }, this.startSearch); }}\r\n />\r\n
\r\n \r\n {\r\n !this.state.queryText\r\n &&\r\n
\r\n }\r\n {!this.state.sermonSearchResult && this.state.queryText.length > 0 &&\r\n
\r\n
\r\n \r\n Loading Sermons\r\n \r\n
\r\n }\r\n\r\n {this.state.sermonSearchResult && this.state.sermonSearchResult.length > 0 && this.state.queryText.length > 0 &&\r\n \r\n this.searchSermons()}\r\n hasMore={this.state.totalSermonSearchResultCount > this.state.sermonSearchResult.length}\r\n useWindow={false}\r\n loader={
\r\n
\r\n \r\n Loading Sermons\r\n \r\n
}\r\n >\r\n {this.state.sermonSearchResult.map(sermon => {\r\n return (\r\n \r\n {\r\n this.props.onSermonSelected(sermon.id);\r\n EventTracking.Builder.contentDrawerOpen(SearchEntity.Sermon, currentLocation);\r\n }}\r\n className={classes.result}\r\n >\r\n \r\n )}\r\n secondary={(\r\n <>\r\n {sermon.contributor} | {RatingHelper.convertToStars(sermon.rating, sermon.id)}\r\n \r\n \r\n )}\r\n />\r\n {/* \r\n {\r\n this.state.onCopyInProgress\r\n ?\r\n \r\n :\r\n \r\n this.onCopySermon(sermon)}>\r\n \r\n \r\n \r\n }\r\n */}\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n }\r\n {this.state.sermonSearchResult && this.state.sermonSearchResult.length === 0 &&\r\n
\r\n
\r\n No Sermons Found\r\n
\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport function SermonSearch(props: Props){\r\n const classes = useStyles();\r\n\r\n return \r\n}\r\n","import { SvgIcon } from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nfunction SvgGoogleIcon(props: any) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgGoogleIcon;\r\n","import axios from \"axios\";\r\nimport BackgroundImages from \"../../resources/BackgroundImages.json\";\r\nimport { AspectRatios } from \"../../entities/AspectRatios\";\r\n\r\nexport interface GoogleSlidesApiResponse {\r\n\terror: any;\r\n\tpresentationId: string;\r\n}\r\n\r\nexport default class GoogleSlidesHelperService {\r\n\tstatic async PostToGoogleApi(url: string, data: any, headers: any) {\r\n\t\ttry {\r\n\t\t\tconst response = await axios(url, {\r\n\t\t\t\tmethod: \"post\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\t\t\treturn response;\r\n\t\t} catch (ex) {\r\n\t\t\tconst exception = ex as { message: string}\r\n\t\t\treturn {\r\n\t\t\t\tstatus: 400,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tmessage: exception.message,\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tstatic getDefaultBackgroundImageUrlById(aspectRatio: AspectRatios, id: number) {\r\n\t\tconst images: { id: number; standardImageS3Path: string; widescreenImageS3Path: string; }[] = BackgroundImages as any;\r\n\t\tconst selectedImage = images.find(i => i.id === id) ?? images[0];\r\n\r\n\t\tif (aspectRatio === \"4x3\") {\r\n\t\t\treturn selectedImage.standardImageS3Path;\r\n\t\t}\r\n\t\treturn selectedImage.widescreenImageS3Path;\r\n\t}\r\n\r\n\tstatic determineFontSize(length: number) {\r\n\t\tif (length < 252) {\r\n\t\t\treturn 36;\r\n\t\t}\r\n\t\tif (length > 252 && length < 500) {\r\n\t\t\treturn 25;\r\n\t\t}\r\n\t\tif (length > 500 && length < 750) {\r\n\t\t\treturn 20;\r\n\t\t}\r\n\t\tif (length > 750 && length < 1000) {\r\n\t\t\treturn 18;\r\n\t\t}\r\n\t\tif (length > 750 && length < 1000) {\r\n\t\t\treturn 16;\r\n\t\t} else {\r\n\t\t\treturn 14;\r\n\t\t}\r\n\t}\r\n}\r\n","import { GoogleSlidesApiConfig } from \"../entities/AppConfig\";\r\n\r\ninterface GoogleAuthService {\r\n state?: string;\r\n urlConfig: UrlConfig;\r\n}\r\n\r\ninterface UrlConfig {\r\n clientId: string;\r\n redirectUrl: string;\r\n scope: string;\r\n}\r\n\r\nclass GoogleAuthService {\r\n constructor(api: string, state: string, config: GoogleSlidesApiConfig) {\r\n this.state = state ? state : undefined;\r\n\r\n if(api === \"slides\") {\r\n this.urlConfig = {\r\n clientId: config.clientId,\r\n redirectUrl: config.oAuthRedirectUrl,\r\n scope: config.scope,\r\n };\r\n }\r\n }\r\n\r\n authServiceRedirect() {\r\n if(!this.urlConfig) return;\r\n let authUri = this.generateGoogleAuthRedirectUri();\r\n window.open(authUri, '_blank');\r\n }\r\n\r\n //discovery url- https://www.googleapis.com/discovery/v1/apis/slides/v1/rest\r\n //oauth docs- https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow#oauth-2.0-endpoints\r\n generateGoogleAuthRedirectUri() {\r\n let oauthBaseUrl = 'https://accounts.google.com/o/oauth2/v2/auth';\r\n let client_id = this.urlConfig.clientId;\r\n let redirect_uri = this.urlConfig.redirectUrl;\r\n let scope = this.urlConfig.scope;\r\n\r\n //NOTE: state query param can be used to persist any nec info during redirects\r\n return encodeURI(`${oauthBaseUrl}?scope=${scope}&include_granted_scopes=true&response_type=token&redirect_uri=${redirect_uri}&client_id=${client_id}${this.state && `&state=${this.state}`}`);\r\n }\r\n}\r\n\r\nexport default GoogleAuthService;","import RgbColor from \"../../entities/RgbColor\";\r\n\r\nexport default class GoogleSlidesJsonGenerationService {\r\n\tstatic createSlide(slideId: string) {\r\n\t\treturn {\r\n\t\t\tcreateSlide: {\r\n\t\t\t\tobjectId: slideId,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic createShape(shapeId: string, pageId: string, type: string, height: number, width: number) {\r\n\t\treturn {\r\n\t\t\tcreateShape: {\r\n\t\t\t\tobjectId: shapeId,\r\n\t\t\t\telementProperties: {\r\n\t\t\t\t\tpageObjectId: pageId,\r\n\t\t\t\t\tsize: {\r\n\t\t\t\t\t\twidth: {\r\n\t\t\t\t\t\t\tmagnitude: width,\r\n\t\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\theight: {\r\n\t\t\t\t\t\t\tmagnitude: height,\r\n\t\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttransform: {\r\n\t\t\t\t\t\tscaleX: 1,\r\n\t\t\t\t\t\tscaleY: 1,\r\n\t\t\t\t\t\tshearX: 0,\r\n\t\t\t\t\t\tshearY: 0,\r\n\t\t\t\t\t\ttranslateX: 36,\r\n\t\t\t\t\t\ttranslateY: 1,\r\n\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tshapeType: type,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic createImage(imgId: string, pageId: string, imageUrl: string) {\r\n\t\treturn {\r\n\t\t\tcreateImage: {\r\n\t\t\t\tobjectId: imgId,\r\n\t\t\t\telementProperties: {\r\n\t\t\t\t\tpageObjectId: pageId,\r\n\t\t\t\t},\r\n\t\t\t\turl: imageUrl,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic createUpdateTextBackgroundRequest(textBoxId: string, endIndex: number, startIndex: number, backgroundColor: RgbColor) {\r\n\t\tconst convertToOnesScale = 0.003921568627451;\r\n\t\treturn {\r\n\t\t\tupdateTextStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tbackgroundColor: {\r\n\t\t\t\t\t\topaqueColor: {\r\n\t\t\t\t\t\t\trgbColor: {\r\n\t\t\t\t\t\t\t\tred: backgroundColor.r * convertToOnesScale,\r\n\t\t\t\t\t\t\t\tgreen: backgroundColor.g * convertToOnesScale,\r\n\t\t\t\t\t\t\t\tblue: backgroundColor.b * convertToOnesScale,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\tstartIndex,\r\n\t\t\t\t\tendIndex: endIndex + 1,\r\n\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"backgroundColor\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic createUpdateFontFamilyRequest(textBoxId: string, endIndex: number, startIndex: number, fontFamily: string) {\r\n\t\treturn {\r\n\t\t\tupdateTextStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tfontFamily,\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\tstartIndex,\r\n\t\t\t\t\tendIndex: endIndex + 1,\r\n\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"fontFamily\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic createListMarkerRequest(textBoxId: string, endIndex: number, startIndex: number, type: \"ordered\" | \"unordered\") {\r\n\t\treturn {\r\n\t\t\tcreateParagraphBullets: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\tstartIndex,\r\n\t\t\t\t\tendIndex: endIndex + 1,\r\n\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t},\r\n\t\t\t\tbulletPreset: type === \"ordered\" ? \"NUMBERED_DIGIT_NESTED\" : \"BULLET_DISC_CIRCLE_SQUARE\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic centerTextVerticle(textBoxId: string) {\r\n\t\treturn {\r\n\t\t\tupdateShapeProperties: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tshapeProperties: {\r\n\t\t\t\t\tcontentAlignment: \"MIDDLE\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"contentAlignment\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic centerTextHorizontal(textBoxId: string) {\r\n\t\treturn {\r\n\t\t\tupdateParagraphStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\talignment: \"CENTER\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"alignment\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic changeFontColor(textBoxId: string, color: string) {\r\n\t\tconst whiteFont = {\r\n\t\t\tred: 1,\r\n\t\t\tgreen: 1,\r\n\t\t\tblue: 1,\r\n\t\t};\r\n\t\tconst blackFont = {\r\n\t\t\tred: 0,\r\n\t\t\tgreen: 0,\r\n\t\t\tblue: 0,\r\n\t\t};\r\n\r\n\t\treturn {\r\n\t\t\tupdateTextStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tforegroundColor: {\r\n\t\t\t\t\t\topaqueColor: {\r\n\t\t\t\t\t\t\trgbColor: color === \"white\" ? whiteFont : blackFont,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\ttype: \"ALL\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"foregroundColor\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic changeFontSize(textBoxId: string, endIndex: number | undefined, startIndex: number | undefined, magnitude: number) {\r\n\t\tif (startIndex !== undefined && endIndex !== undefined) {\r\n\t\t\treturn {\r\n\t\t\t\tupdateTextStyle: {\r\n\t\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\tfontSize: {\r\n\t\t\t\t\t\t\tmagnitude: magnitude,\r\n\t\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttextRange: {\r\n\t\t\t\t\t\tstartIndex,\r\n\t\t\t\t\t\tendIndex: endIndex + 1,\r\n\t\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfields: \"fontSize\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tupdateTextStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tfontSize: {\r\n\t\t\t\t\t\tmagnitude: magnitude,\r\n\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\ttype: \"ALL\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"fontSize\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic makeFontBold(textBoxId: string, startIndex: number, endIndex: number) {\r\n\t\treturn {\r\n\t\t\tupdateTextStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tbold: true,\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\tstartIndex,\r\n\t\t\t\t\tendIndex: endIndex + 1,\r\n\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"bold\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic makeFontItalics(textBoxId: string, startIndex: number, endIndex: number) {\r\n\t\treturn {\r\n\t\t\tupdateTextStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\titalic: true,\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\tstartIndex,\r\n\t\t\t\t\tendIndex: endIndex + 1,\r\n\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"italic\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic makeFontUnderlined(textBoxId: string, startIndex: number, endIndex: number) {\r\n\t\treturn {\r\n\t\t\tupdateTextStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tunderline: true,\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\tstartIndex,\r\n\t\t\t\t\tendIndex: endIndex + 1,\r\n\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"underline\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic makeTextIndented(textBoxId: string, startIndex: number | undefined, endIndex: number | undefined, magnitude: number) {\r\n\t\tif (startIndex === undefined || endIndex === undefined) {\r\n\t\t\treturn {\r\n\t\t\t\tupdateParagraphStyle: {\r\n\t\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\tindentStart: {\r\n\t\t\t\t\t\t\tmagnitude,\r\n\t\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttextRange: {\r\n\t\t\t\t\t\ttype: \"ALL\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfields: \"indentStart\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tupdateParagraphStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tindentStart: {\r\n\t\t\t\t\t\tmagnitude,\r\n\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\tstartIndex,\r\n\t\t\t\t\tendIndex,\r\n\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"indentStart\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic makeTextFirstLineIndented(textBoxId: string, startIndex: number | undefined, endIndex: number | undefined, magnitude: number) {\r\n\t\tif (startIndex === undefined || endIndex === undefined) {\r\n\t\t\treturn {\r\n\t\t\t\tupdateParagraphStyle: {\r\n\t\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\tindentStart: {\r\n\t\t\t\t\t\t\tmagnitude,\r\n\t\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttextRange: {\r\n\t\t\t\t\t\ttype: \"ALL\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfields: \"indentStart\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tupdateParagraphStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tindentFirstLine: {\r\n\t\t\t\t\t\tmagnitude,\r\n\t\t\t\t\t\tunit: \"PT\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\tstartIndex,\r\n\t\t\t\t\tendIndex,\r\n\t\t\t\t\ttype: \"FIXED_RANGE\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"indentFirstLine\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic makeTextAligned(textBoxId: string, alignment: string) {\r\n\t\treturn {\r\n\t\t\tupdateParagraphStyle: {\r\n\t\t\t\tobjectId: textBoxId,\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\talignment,\r\n\t\t\t\t},\r\n\t\t\t\ttextRange: {\r\n\t\t\t\t\ttype: \"ALL\",\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"alignment\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic sendElementToBack(objectIds: string[]) {\r\n\t\treturn {\r\n\t\t\tupdatePageElementsZOrder: {\r\n\t\t\t\tpageElementObjectIds: [...objectIds],\r\n\t\t\t\toperation: \"SEND_TO_BACK\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic insertImageAsStretchedBackground(pageId: string, imageUrl: string) {\r\n\t\treturn {\r\n\t\t\tupdatePageProperties: {\r\n\t\t\t\tobjectId: pageId,\r\n\t\t\t\tpageProperties: {\r\n\t\t\t\t\tpageBackgroundFill: {\r\n\t\t\t\t\t\tstretchedPictureFill: {\r\n\t\t\t\t\t\t\tcontentUrl: imageUrl,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tfields: \"pageBackgroundFill.stretchedPictureFill.contentUrl\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic insertText(text: string, containerId: string) {\r\n\t\treturn {\r\n\t\t\tinsertText: {\r\n\t\t\t\tobjectId: containerId,\r\n\t\t\t\ttext: text,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deleteTitlePage() {\r\n\t\treturn {\r\n\t\t\tdeleteObject: {\r\n\t\t\t\tobjectId: \"p\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n}\r\n","import StyleIndex from \"../../entities/GoogleSlidesStyleIndex\";\r\n\r\nexport default class GoogleSlidesStyleIndexHelperMethods {\r\n\tstatic getStyleEndIndexes(indexes: number[]) {\r\n\t\tlet endIndexes: number[] = [];\r\n\t\tfor (let x = 0; x < indexes.length; x++) {\r\n\t\t\tlet nextIndexIsNotNextSequentially = indexes[x] !== indexes[x + 1] + 1;\r\n\t\t\tif (nextIndexIsNotNextSequentially) {\r\n\t\t\t\tendIndexes.push(indexes[x]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn endIndexes;\r\n\t}\r\n\r\n\tstatic getStyleStartIndexes(indexes: number[]) {\r\n\t\tlet startIndexes: number[] = [];\r\n\t\tfor (let x = 0; x < indexes.length; x++) {\r\n\t\t\tlet currentIndexIsNotNextSequentially = indexes[x] + 1 !== indexes[x - 1];\r\n\r\n\t\t\tif (x === 0) {\r\n\t\t\t\tstartIndexes.push(indexes[x]);\r\n\t\t\t} else if (currentIndexIsNotNextSequentially) {\r\n\t\t\t\tstartIndexes.push(indexes[x]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn startIndexes;\r\n\t}\r\n\r\n\tstatic getFontFamilyStartIndexes(indexes: StyleIndex[]) {\r\n\t\tlet startIndexes: StyleIndex[] = [];\r\n\t\tfor (let x = 0; x < indexes.length; x++) {\r\n\t\t\tif (indexes[x + 1] == null) {\r\n\t\t\t\tstartIndexes.push(indexes[x]);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet nextIndexIsNotNextSequentially = indexes[x].index !== indexes[x + 1].index + 1;\r\n\t\t\tlet nextFontFamilyIsDiff = indexes[x].fontFamily !== indexes[x + 1].fontFamily;\r\n\t\t\tif (nextIndexIsNotNextSequentially || nextFontFamilyIsDiff) {\r\n\t\t\t\tstartIndexes.push(indexes[x]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn startIndexes;\r\n\t}\r\n\r\n\tstatic getFontFamilyEndIndexes(indexes: StyleIndex[]) {\r\n\t\tlet endIndexes: StyleIndex[] = [];\r\n\t\tfor (let x = 0; x < indexes.length; x++) {\r\n\t\t\tif (x === 0) {\r\n\t\t\t\tendIndexes.push(indexes[x]);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet prevIndexNumberIsNotNextSequentially = indexes[x - 1].index !== indexes[x].index + 1;\r\n\t\t\tlet prevFontFamilyIsDiffFromCurrent = indexes[x - 1].fontFamily !== indexes[x].fontFamily;\r\n\t\t\tif (prevIndexNumberIsNotNextSequentially || prevFontFamilyIsDiffFromCurrent) {\r\n\t\t\t\tendIndexes.push(indexes[x]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn endIndexes;\r\n\t}\r\n\r\n\tstatic getFontSizeStartIndexes(indexes: StyleIndex[]) {\r\n\t\tlet startIndexes: StyleIndex[] = [];\r\n\t\tfor (let x = 0; x < indexes.length; x++) {\r\n\t\t\tif (indexes[x + 1] == null) {\r\n\t\t\t\tstartIndexes.push(indexes[x]);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet nextIndexIsNotNextSequentially = indexes[x].index !== indexes[x + 1].index + 1;\r\n\t\t\tlet nextFontSizeIsDiff = indexes[x].fontSize !== indexes[x + 1].fontSize;\r\n\t\t\tif (nextIndexIsNotNextSequentially || nextFontSizeIsDiff) {\r\n\t\t\t\tstartIndexes.push(indexes[x]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn startIndexes;\r\n\t}\r\n\r\n\tstatic getFontSizeEndIndexes(indexes: StyleIndex[]) {\r\n\t\tlet endIndexes: StyleIndex[] = [];\r\n\t\tfor (let x = 0; x < indexes.length; x++) {\r\n\t\t\tif (x === 0) {\r\n\t\t\t\tendIndexes.push(indexes[x]);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet prevIndexNumberIsNotNextSequentially = indexes[x - 1].index !== indexes[x].index + 1;\r\n\t\t\tlet prevFontSizeIsDiffFromCurrent = indexes[x - 1].fontSize !== indexes[x].fontSize;\r\n\t\t\tif (prevIndexNumberIsNotNextSequentially || prevFontSizeIsDiffFromCurrent) {\r\n\t\t\t\tendIndexes.push(indexes[x]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn endIndexes;\r\n\t}\r\n\r\n\tstatic getTextBackgroundColorStartIndexes(indexes: StyleIndex[]) {\r\n\t\tlet startIndexes: StyleIndex[] = [];\r\n\t\tfor (let x = 0; x < indexes.length; x++) {\r\n\t\t\tif (indexes[x + 1] == null) {\r\n\t\t\t\tstartIndexes.push(indexes[x]);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet nextIndexIsNotNextSequentially = indexes[x].index !== indexes[x + 1].index + 1;\r\n\t\t\tlet nextBackgroundColorIsDiff = indexes[x].backgroundColor !== indexes[x + 1].backgroundColor;\r\n\t\t\tif (nextIndexIsNotNextSequentially || nextBackgroundColorIsDiff) {\r\n\t\t\t\tstartIndexes.push(indexes[x]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn startIndexes;\r\n\t}\r\n\r\n\tstatic getTextBackgroundColorEndIndexes(indexes: StyleIndex[]) {\r\n\t\tlet endIndexes: StyleIndex[] = [];\r\n\t\tfor (let x = 0; x < indexes.length; x++) {\r\n\t\t\tif (x === 0) {\r\n\t\t\t\tendIndexes.push(indexes[x]);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet prevIndexNumberIsNotNextSequentially = indexes[x - 1].index !== indexes[x].index + 1;\r\n\t\t\tlet prevBgColorIsDiffFromCurrent = indexes[x - 1].backgroundColor !== indexes[x].backgroundColor;\r\n\t\t\tif (prevIndexNumberIsNotNextSequentially || prevBgColorIsDiffFromCurrent) {\r\n\t\t\t\tendIndexes.push(indexes[x]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn endIndexes;\r\n\t}\r\n}\r\n","export const SlideExportsHelper = {\r\n\thexToRgb: (hex: string) => {\r\n\t\tlet result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n\t\treturn result\r\n\t\t\t? {\r\n\t\t\t\t\tr: parseInt(result[1], 16),\r\n\t\t\t\t\tg: parseInt(result[2], 16),\r\n\t\t\t\t\tb: parseInt(result[3], 16),\r\n\t\t\t }\r\n\t\t\t: null;\r\n\t},\r\n\tgetNewGuid: () => {\r\n\t\treturn \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\r\n\t\t\tlet r = (Math.random() * 16) | 0,\r\n\t\t\t\tv = c === \"x\" ? r : (r & 0x3) | 0x8;\r\n\t\t\treturn v.toString(16);\r\n\t\t});\r\n\t}\r\n}\r\n","import StyleIndex from \"../../entities/GoogleSlidesStyleIndex\";\r\nimport { PreviewSlide, SlideLine } from \"../../pages/builder/editor/PreviewSlide\";\r\nimport GoogleSlidesJsonGenerationService from \"./GoogleSlidesJsonGenerationService\";\r\nimport GoogleSlidesStyleIndexHelperMethods from \"./GoogleSlidesStyleIndexHelperMethods\";\r\nimport { SlideExportsHelper } from \"../../utilities/SlideExportsHelper\";\r\nimport RgbColor from \"../../entities/RgbColor\";\r\n\r\ninterface PersistentApplicationState {\r\n\tassetId: string;\r\n\tbackgroundImagePath: string;\r\n\tfontColor: string;\r\n}\r\n\r\nexport default class GoogleSlidesRequestBuilder {\r\n\tstatic createUpdateTextBackgroundRequests(textBoxId: string, endIndexes: StyleIndex[], startIndexes: StyleIndex[]) {\r\n\t\tlet updateTextBackgroundReqs: any[] = [];\r\n\t\tlet numIndexPairs = endIndexes.length;\r\n\r\n\t\tfor (let x = 0; x < numIndexPairs; x++) {\r\n\t\t\tlet currentEndIndex = endIndexes[x];\r\n\t\t\tlet currentStartIndex = startIndexes[x];\r\n\t\t\tif (\r\n\t\t\t\tcurrentEndIndex.backgroundColor &&\r\n\t\t\t\tcurrentStartIndex.backgroundColor &&\r\n\t\t\t\tcurrentEndIndex.backgroundColor === currentStartIndex.backgroundColor\r\n\t\t\t) {\r\n\t\t\t\tlet updateTextBackgroundReq = GoogleSlidesJsonGenerationService.createUpdateTextBackgroundRequest(\r\n\t\t\t\t\ttextBoxId,\r\n\t\t\t\t\tcurrentEndIndex.index,\r\n\t\t\t\t\tcurrentStartIndex.index,\r\n\t\t\t\t\tcurrentEndIndex.backgroundColor\r\n\t\t\t\t);\r\n\t\t\t\tupdateTextBackgroundReqs.push(updateTextBackgroundReq);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(\"index backgroundColor style mismatch\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn updateTextBackgroundReqs;\r\n\t}\r\n\r\n\tstatic createUpdateFontFamilyRequests(textBoxId: string, endIndexes: StyleIndex[], startIndexes: StyleIndex[]) {\r\n\t\tlet fontFamilyReqs: any[] = [];\r\n\t\tlet numIndexPairs = endIndexes.length;\r\n\r\n\t\tfor (let x = 0; x < numIndexPairs; x++) {\r\n\t\t\tlet currentEndIndex = endIndexes[x];\r\n\t\t\tlet currentStartIndex = startIndexes[x];\r\n\t\t\tif (currentEndIndex.fontFamily && currentStartIndex.fontFamily && currentEndIndex.fontFamily === currentStartIndex.fontFamily) {\r\n\t\t\t\tlet fontFamilyReq = GoogleSlidesJsonGenerationService.createUpdateFontFamilyRequest(\r\n\t\t\t\t\ttextBoxId,\r\n\t\t\t\t\tcurrentEndIndex.index,\r\n\t\t\t\t\tcurrentStartIndex.index,\r\n\t\t\t\t\tcurrentEndIndex.fontFamily\r\n\t\t\t\t);\r\n\t\t\t\tfontFamilyReqs.push(fontFamilyReq);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn fontFamilyReqs;\r\n\t}\r\n\r\n\tstatic createUpdateFontStyleRequests(textBoxId: string, endIndexes: number[], startIndexes: number[], type: \"bold\" | \"italics\" | \"underlined\") {\r\n\t\tlet updateFontStyleReqs: any[] = [];\r\n\t\tlet numIndexPairs = endIndexes.length;\r\n\r\n\t\tfor (let x = 0; x < numIndexPairs; x++) {\r\n\t\t\tlet currentEndIndex = endIndexes[x];\r\n\t\t\tlet currentStartIndex = startIndexes[x];\r\n\t\t\tlet updateFontStyleReq = null;\r\n\r\n\t\t\tif (type === \"bold\") {\r\n\t\t\t\tupdateFontStyleReq = GoogleSlidesJsonGenerationService.makeFontBold(textBoxId, currentEndIndex, currentStartIndex);\r\n\t\t\t} else if (type === \"italics\") {\r\n\t\t\t\tupdateFontStyleReq = GoogleSlidesJsonGenerationService.makeFontItalics(textBoxId, currentEndIndex, currentStartIndex);\r\n\t\t\t} else if (type === \"underlined\") {\r\n\t\t\t\tupdateFontStyleReq = GoogleSlidesJsonGenerationService.makeFontUnderlined(textBoxId, currentEndIndex, currentStartIndex);\r\n\t\t\t}\r\n\r\n\t\t\tupdateFontStyleReqs.push(updateFontStyleReq);\r\n\t\t}\r\n\r\n\t\treturn updateFontStyleReqs;\r\n\t}\r\n\r\n\tstatic createBlockQuoteRequest(textBoxId: string, endIndex: number, startIndex: number, indentAmount: number) {\r\n\t\tlet reqs: any[] = [];\r\n\r\n\t\tlet makeQuoteTextItalics = GoogleSlidesJsonGenerationService.makeFontItalics(textBoxId, startIndex, endIndex);\r\n\t\treqs.push(makeQuoteTextItalics);\r\n\r\n\t\tlet makeQuoteTextIndented = GoogleSlidesJsonGenerationService.makeTextIndented(textBoxId, startIndex, endIndex, indentAmount);\r\n\t\treqs.push(makeQuoteTextIndented);\r\n\r\n\t\tlet makeFirstQuoteTextLineIndented = GoogleSlidesJsonGenerationService.makeTextFirstLineIndented(\r\n\t\t\ttextBoxId,\r\n\t\t\tstartIndex,\r\n\t\t\tendIndex,\r\n\t\t\tindentAmount\r\n\t\t);\r\n\t\treqs.push(makeFirstQuoteTextLineIndented);\r\n\r\n\t\treturn reqs;\r\n\t}\r\n\r\n\tstatic createUpdateFontSizeRequests(textBoxId: string, endIndexes: StyleIndex[], startIndexes: StyleIndex[]) {\r\n\t\tlet fontSizeReqs: any[] = [];\r\n\t\tlet numIndexPairs = endIndexes.length;\r\n\r\n\t\tfor (let x = 0; x < numIndexPairs; x++) {\r\n\t\t\tlet currentEndIndex = endIndexes[x];\r\n\t\t\tlet currentStartIndex = startIndexes[x];\r\n\t\t\tif (currentEndIndex.fontSize && currentStartIndex.fontSize && currentEndIndex.fontSize === currentStartIndex.fontSize) {\r\n\t\t\t\tlet fontSizeReq = GoogleSlidesJsonGenerationService.changeFontSize(\r\n\t\t\t\t\ttextBoxId,\r\n\t\t\t\t\tcurrentEndIndex.index,\r\n\t\t\t\t\tcurrentStartIndex.index,\r\n\t\t\t\t\tcurrentEndIndex.fontSize\r\n\t\t\t\t);\r\n\t\t\t\tfontSizeReqs.push(fontSizeReq);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(\"index fontSize style mismatch\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn fontSizeReqs;\r\n\t}\r\n\r\n\tstatic getTextUpdateBoldRequests(boldIndexes: number[], textBoxId: string) {\r\n\t\tlet boldEndIndexes = GoogleSlidesStyleIndexHelperMethods.getStyleEndIndexes(boldIndexes);\r\n\t\tlet boldStartIndexes = GoogleSlidesStyleIndexHelperMethods.getStyleStartIndexes(boldIndexes);\r\n\t\tlet makeFontBoldReqs = this.createUpdateFontStyleRequests(textBoxId, boldEndIndexes, boldStartIndexes, \"bold\");\r\n\t\treturn makeFontBoldReqs;\r\n\t}\r\n\r\n\tstatic getTextUpdateItalicsRequests(italicsIndexes: number[], textBoxId: string) {\r\n\t\tlet italicsEndIndexes = GoogleSlidesStyleIndexHelperMethods.getStyleEndIndexes(italicsIndexes);\r\n\t\tlet italicsStartIndexes = GoogleSlidesStyleIndexHelperMethods.getStyleStartIndexes(italicsIndexes);\r\n\t\tlet makeFontItalicsReqs = this.createUpdateFontStyleRequests(textBoxId, italicsEndIndexes, italicsStartIndexes, \"italics\");\r\n\t\treturn makeFontItalicsReqs;\r\n\t}\r\n\r\n\tstatic getTextUpdateUnderlinedRequests(underlinedIndexes: number[], textBoxId: string) {\r\n\t\tlet underlinedEndIndexes = GoogleSlidesStyleIndexHelperMethods.getStyleEndIndexes(underlinedIndexes);\r\n\t\tlet underlinedStartIndexes = GoogleSlidesStyleIndexHelperMethods.getStyleStartIndexes(underlinedIndexes);\r\n\t\tlet makeFontUnderlinedReqs = this.createUpdateFontStyleRequests(textBoxId, underlinedEndIndexes, underlinedStartIndexes, \"underlined\");\r\n\t\treturn makeFontUnderlinedReqs;\r\n\t}\r\n\r\n\tstatic getTextUpdateFontFamilyRequests(fontFamilyIndexes: StyleIndex[], textBoxId: string) {\r\n\t\tlet fontFamilyStartIndexes = GoogleSlidesStyleIndexHelperMethods.getFontFamilyStartIndexes(fontFamilyIndexes);\r\n\t\tlet fontFamilyEndIndexes = GoogleSlidesStyleIndexHelperMethods.getFontFamilyEndIndexes(fontFamilyIndexes);\r\n\t\tlet makeFontFamilyReqs = this.createUpdateFontFamilyRequests(textBoxId, fontFamilyEndIndexes, fontFamilyStartIndexes);\r\n\t\treturn makeFontFamilyReqs;\r\n\t}\r\n\r\n\tstatic getTextUpdateFontSizeRequests(fontSizeIndexes: StyleIndex[], textBoxId: string) {\r\n\t\tlet fontSizeStartIndexes = GoogleSlidesStyleIndexHelperMethods.getFontSizeStartIndexes(fontSizeIndexes);\r\n\t\tlet fontSizeEndIndexes = GoogleSlidesStyleIndexHelperMethods.getFontSizeEndIndexes(fontSizeIndexes);\r\n\t\tlet makeFontSizeReqs = this.createUpdateFontSizeRequests(textBoxId, fontSizeEndIndexes, fontSizeStartIndexes);\r\n\t\treturn makeFontSizeReqs;\r\n\t}\r\n\r\n\tstatic getTextUpdateBackgroundColorRequests(backgroundColorIndexes: StyleIndex[], textBoxId: string) {\r\n\t\tlet textBackgroundColorEndIndexes = GoogleSlidesStyleIndexHelperMethods.getTextBackgroundColorEndIndexes(backgroundColorIndexes);\r\n\t\tlet textBackgroundColorStartIndexes = GoogleSlidesStyleIndexHelperMethods.getTextBackgroundColorStartIndexes(backgroundColorIndexes);\r\n\t\tlet makeUpdateTextBackgroundColorReqs = this.createUpdateTextBackgroundRequests(\r\n\t\t\ttextBoxId,\r\n\t\t\ttextBackgroundColorEndIndexes,\r\n\t\t\ttextBackgroundColorStartIndexes\r\n\t\t);\r\n\t\treturn makeUpdateTextBackgroundColorReqs;\r\n\t}\r\n\r\n\tstatic getCreateListRequests(slide: PreviewSlide, textBoxId: string) {\r\n\t\tlet reqs: any[] = [];\r\n\r\n\t\tslide.lines.forEach((line) => {\r\n\t\t\tlet lastIndex = line.lineChars.length - 1;\r\n\t\t\tlet lastChar = line.lineChars[lastIndex];\r\n\t\t\tlet firstChar = line.lineChars[0];\r\n\r\n\t\t\tif (line.isOrderedList) {\r\n\t\t\t\tif (firstChar.indexInContent !== undefined && lastChar.indexInContent !== undefined) {\r\n\t\t\t\t\tlet makeOrderedListRequest = GoogleSlidesJsonGenerationService.createListMarkerRequest(\r\n\t\t\t\t\t\ttextBoxId,\r\n\t\t\t\t\t\tlastChar.indexInContent,\r\n\t\t\t\t\t\tfirstChar.indexInContent,\r\n\t\t\t\t\t\t\"ordered\"\r\n\t\t\t\t\t);\r\n\t\t\t\t\treqs.push(makeOrderedListRequest);\r\n\t\t\t\t}\r\n\t\t\t} else if (line.isUnorderedList) {\r\n\t\t\t\tif (firstChar.indexInContent !== undefined && lastChar.indexInContent !== undefined) {\r\n\t\t\t\t\tlet makeUnorderedListRequest = GoogleSlidesJsonGenerationService.createListMarkerRequest(\r\n\t\t\t\t\t\ttextBoxId,\r\n\t\t\t\t\t\tlastChar.indexInContent!,\r\n\t\t\t\t\t\tfirstChar.indexInContent,\r\n\t\t\t\t\t\t\"unordered\"\r\n\t\t\t\t\t);\r\n\t\t\t\t\treqs.push(makeUnorderedListRequest);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (reqs.length > 0) {\r\n\t\t\tlet indentBulletsRequest = GoogleSlidesJsonGenerationService.makeTextFirstLineIndented(textBoxId, undefined, undefined, 40);\r\n\t\t\treqs.push(indentBulletsRequest);\r\n\t\t}\r\n\r\n\t\treturn reqs;\r\n\t}\r\n\r\n\tstatic getCreateBlockQuoteRequests(slide: PreviewSlide, textBoxId: string) {\r\n\t\tlet reqs: any[] = [];\r\n\r\n\t\tslide.lines.forEach((line, index) => {\r\n\t\t\tif (line.isBlockQuote) {\r\n\t\t\t\tlet firstChar = line.lineChars[0];\r\n\t\t\t\tlet lastIndex = line.lineChars.length - 1;\r\n\t\t\t\tlet lastChar = line.lineChars[lastIndex];\r\n\t\t\t\tif (firstChar.indexInContent !== undefined && lastChar.indexInContent !== undefined) {\r\n\t\t\t\t\tlet makeBlockQuoteRequest = this.createBlockQuoteRequest(\r\n\t\t\t\t\t\ttextBoxId,\r\n\t\t\t\t\t\tlastChar.indexInContent + index,\r\n\t\t\t\t\t\tfirstChar.indexInContent + index,\r\n\t\t\t\t\t\t40\r\n\t\t\t\t\t);\r\n\t\t\t\t\treqs = reqs.concat(makeBlockQuoteRequest);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn reqs;\r\n\t}\r\n\r\n\tstatic makeParagraphIndented(textBoxId: string, startIndex: number | undefined, endIndex: number | undefined, magnitude: number) {\r\n\t\tlet reqs: any = [];\r\n\r\n\t\tlet indentParagraphText = GoogleSlidesJsonGenerationService.makeTextIndented(textBoxId, startIndex, endIndex, magnitude);\r\n\t\treqs.push(indentParagraphText);\r\n\r\n\t\tlet indentFirstLineText = GoogleSlidesJsonGenerationService.makeTextFirstLineIndented(textBoxId, startIndex, endIndex, magnitude);\r\n\t\treqs.push(indentFirstLineText);\r\n\r\n\t\treturn reqs;\r\n\t}\r\n\r\n\tstatic createTextRequestsWithNewLines(insertTextReqs: any[], line: SlideLine, textBoxId: string) {\r\n\t\tlet lineText = line.lineChars.map((lineChar) => lineChar.char).join(\"\");\r\n\t\tlet insertTextReq = GoogleSlidesJsonGenerationService.insertText(lineText + \"\\n\", textBoxId);\r\n\t\tinsertTextReqs.unshift(insertTextReq);\r\n\t}\r\n\r\n\tstatic insertNewLineAndCorrectIndexes(lines: SlideLine[]) {\r\n\t\tlet charCount = 0;\r\n\t\tlines.forEach((line) => {\r\n\t\t\tline.lineChars = line.lineChars.concat([\r\n\t\t\t\t{\r\n\t\t\t\t\tchar: \"\\n\",\r\n\t\t\t\t\tindexInContent: line.lineChars.length,\r\n\t\t\t\t\tisBold: false,\r\n\t\t\t\t\tisItalics: false,\r\n\t\t\t\t\tisUnderlined: false,\r\n\t\t\t\t\tfontFamily: \"Arial\",\r\n\t\t\t\t},\r\n\t\t\t]);\r\n\r\n\t\t\tline.lineChars.forEach((lineChar) => {\r\n\t\t\t\tlineChar.indexInContent = charCount;\r\n\t\t\t\tcharCount++;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn lines;\r\n\t}\r\n\r\n\tstatic getSlideContentLength(lines: SlideLine[]) {\r\n\t\tlet result = 0;\r\n\t\tlines.forEach((line) => {\r\n\t\t\tresult += line.lineChars.length;\r\n\t\t});\r\n\t\treturn result - 1;\r\n\t}\r\n\r\n\tstatic generateUpdateRequestBody(slides: PreviewSlide[], persistentApplicationState: PersistentApplicationState, assetBaseUrl: string) {\r\n\t\tconst max_slide_height = 405;\r\n\t\tconst max_slide_width = 650;\r\n\t\tlet backgroundImagePath = assetBaseUrl + persistentApplicationState!.backgroundImagePath;\r\n\t\tlet requests: any[] = [];\r\n\r\n\t\trequests.push(GoogleSlidesJsonGenerationService.deleteTitlePage());\r\n\r\n\t\tslides.forEach((slide) => {\r\n\t\t\tlet fontSize = 42;\r\n\r\n\t\t\tlet slideId = SlideExportsHelper.getNewGuid();\r\n\t\t\trequests.push(GoogleSlidesJsonGenerationService.createSlide(slideId));\r\n\r\n\t\t\tlet textBoxId = SlideExportsHelper.getNewGuid();\r\n\t\t\trequests.push(GoogleSlidesJsonGenerationService.createShape(textBoxId, slideId, \"TEXT_BOX\", max_slide_height, max_slide_width));\r\n\r\n\t\t\tlet insertTextReqs: any[] = [];\r\n\t\t\tslide.lines.forEach((line) => this.createTextRequestsWithNewLines(insertTextReqs, line, textBoxId));\r\n\t\t\trequests = requests.concat(insertTextReqs);\r\n\r\n\t\t\tlet numLines = slide.lines.length;\r\n\t\t\tlet boldIndexes = [];\r\n\t\t\tlet italicsIndexes = [];\r\n\t\t\tlet underlinedIndexes = [];\r\n\t\t\tlet fontFamilyIndexes = [];\r\n\t\t\tlet fontSizeIndexes: StyleIndex[] = [];\r\n\t\t\tlet backgroundColorIndexes = [];\r\n\r\n\t\t\tslide.lines = this.insertNewLineAndCorrectIndexes(slide.lines);\r\n\r\n\t\t\t//becuase of the way google slides inserts the text, we need to loop backwards over the lines and characters\r\n\t\t\tlet currentCharIndex = this.getSlideContentLength(slide.lines);\r\n\t\t\tfor (let i = numLines; i > 0; i--) {\r\n\t\t\t\tlet currentLine = slide.lines[i - 1];\r\n\t\t\t\tlet lineLength = currentLine.lineChars.length;\r\n\r\n\t\t\t\tfor (let j = lineLength; j > 0; j--) {\r\n\t\t\t\t\tlet currentChar = currentLine.lineChars[j - 1];\r\n\r\n\t\t\t\t\tif (currentChar.isBold || currentLine.blockTag === \"h1\" || currentLine.blockTag === \"h2\") {\r\n\t\t\t\t\t\tboldIndexes.push(currentCharIndex);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (currentChar.isItalics) {\r\n\t\t\t\t\t\titalicsIndexes.push(currentCharIndex);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (currentChar.isUnderlined) {\r\n\t\t\t\t\t\tunderlinedIndexes.push(currentCharIndex);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (currentChar.fontFamily !== undefined) {\r\n\t\t\t\t\t\tfontFamilyIndexes.push({ index: currentCharIndex, fontFamily: currentChar.fontFamily });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (currentLine.blockTag === \"h1\") {\r\n\t\t\t\t\t\tfontSizeIndexes.push({ index: currentCharIndex, fontSize: 72 });\r\n\t\t\t\t\t} else if (currentLine.blockTag === \"h2\") {\r\n\t\t\t\t\t\tfontSizeIndexes.push({ index: currentCharIndex, fontSize: 58 });\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfontSizeIndexes.push({ index: currentCharIndex, fontSize: 42 });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (currentChar.backgroundColor !== undefined) {\r\n\t\t\t\t\t\tlet backgroundColor = SlideExportsHelper.hexToRgb(currentChar.backgroundColor) as RgbColor;\r\n\t\t\t\t\t\tbackgroundColorIndexes.push({ index: currentCharIndex, backgroundColor });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentCharIndex--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\trequests.push(GoogleSlidesJsonGenerationService.centerTextVerticle(textBoxId));\r\n\t\t\trequests = requests.concat(this.makeParagraphIndented(textBoxId, undefined, undefined, 20));\r\n\t\t\trequests.push(GoogleSlidesJsonGenerationService.changeFontSize(textBoxId, undefined, undefined, fontSize!));\r\n\t\t\trequests.push(GoogleSlidesJsonGenerationService.insertImageAsStretchedBackground(slideId, backgroundImagePath));\r\n\t\t\tif (persistentApplicationState!.fontColor.toLowerCase() === \"white\") {\r\n\t\t\t\trequests.push(GoogleSlidesJsonGenerationService.changeFontColor(textBoxId, persistentApplicationState!.fontColor));\r\n\t\t\t}\r\n\r\n\t\t\tlet makeFontFamilyReqs = this.getTextUpdateFontFamilyRequests(fontFamilyIndexes, textBoxId);\r\n\t\t\trequests = requests.concat(makeFontFamilyReqs);\r\n\r\n\t\t\tlet makeFontBoldReqs = this.getTextUpdateBoldRequests(boldIndexes, textBoxId);\r\n\t\t\trequests = requests.concat(makeFontBoldReqs);\r\n\r\n\t\t\tlet makeFontItalicsReqs = this.getTextUpdateItalicsRequests(italicsIndexes, textBoxId);\r\n\t\t\trequests = requests.concat(makeFontItalicsReqs);\r\n\r\n\t\t\tlet makeFontUnderlinedReqs = this.getTextUpdateUnderlinedRequests(underlinedIndexes, textBoxId);\r\n\t\t\trequests = requests.concat(makeFontUnderlinedReqs);\r\n\r\n\t\t\tlet makeFontSizeReqs = this.getTextUpdateFontSizeRequests(fontSizeIndexes, textBoxId);\r\n\t\t\trequests = requests.concat(makeFontSizeReqs);\r\n\r\n\t\t\tlet makeUpdateTextBackgroundColorReqs = this.getTextUpdateBackgroundColorRequests(backgroundColorIndexes, textBoxId);\r\n\t\t\trequests = requests.concat(makeUpdateTextBackgroundColorReqs);\r\n\r\n\t\t\tlet hasListStyle = slide.lines.filter((line) => line.isOrderedList || line.isUnorderedList).length > 0;\r\n\t\t\tif (hasListStyle) {\r\n\t\t\t\tlet createListReqs = this.getCreateListRequests(slide, textBoxId);\r\n\t\t\t\trequests = requests.concat(createListReqs);\r\n\t\t\t}\r\n\r\n\t\t\tlet hasBlockQuoteStyle = slide.lines.filter((line) => line.isBlockQuote).length > 0;\r\n\t\t\tif (hasBlockQuoteStyle) {\r\n\t\t\t\tlet createBlockQuoteReqs = this.getCreateBlockQuoteRequests(slide, textBoxId);\r\n\t\t\t\trequests = requests.concat(createBlockQuoteReqs);\r\n\t\t\t}\r\n\r\n\t\t\tlet alignmentStyle = slide.lines.filter((line) => line.textAlignment)[0];\r\n\t\t\tif (alignmentStyle) {\r\n\t\t\t\tlet alignment = \"START\";\r\n\t\t\t\tif (alignmentStyle.textAlignment === \"left\") {\r\n\t\t\t\t\talignment = \"START\";\r\n\t\t\t\t}\r\n\t\t\t\tif (alignmentStyle.textAlignment === \"right\") {\r\n\t\t\t\t\talignment = \"END\";\r\n\t\t\t\t}\r\n\t\t\t\tif (alignmentStyle.textAlignment === \"center\") {\r\n\t\t\t\t\talignment = \"CENTER\";\r\n\t\t\t\t}\r\n\t\t\t\tif (alignmentStyle.textAlignment === \"justify\") {\r\n\t\t\t\t\talignment = \"JUSTIFIED\";\r\n\t\t\t\t}\r\n\t\t\t\tlet createAlignmentReq = GoogleSlidesJsonGenerationService.makeTextAligned(textBoxId, alignment);\r\n\t\t\t\trequests.push(createAlignmentReq);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn { requests };\r\n\t}\r\n}\r\n","import React from \"react\";\r\nimport { ServerResponse } from \"../services/server/OldWebClient\";\r\nimport { BuilderAssetService } from \"../services/BuilderAssetService\";\r\nimport GoogleAuthService from \"../services/GoogleAuthService\";\r\nimport AppConfig, { GoogleSlidesApiConfig } from \"../entities/AppConfig\";\r\nimport GoogleSlidesHelperService from \"../services/GoogleSlides/GoogleSlidesHelperService\";\r\nimport { ServerFailed } from \"./errors/serverFailed\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { EditorHelper } from \"./builder/editor/EditorHelper\";\r\nimport { PreviewSlide } from \"./builder/editor/PreviewSlide\";\r\nimport GoogleSlidesRequestBuilder from \"../services/GoogleSlides/GoogleSlidesRequestBuilder\";\r\nimport { LoadingPage } from \"../components/LoadingPage\";\r\n\r\ninterface Props extends RouteComponentProps<{}> {\r\n\tconfig: AppConfig;\r\n}\r\n\r\ninterface State {\r\n\terrorMessage?: string;\r\n}\r\n\r\ninterface PersistentApplicationState {\r\n\tassetId: string;\r\n\tbackgroundImagePath: string;\r\n\tfontColor: string;\r\n}\r\n\r\nexport class GoogleSlidesOAuthLandingPage extends React.Component {\r\n\tconstructor(props: Props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\terrorMessage: undefined,\r\n\t\t};\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tif (this.props.location.hash) {\r\n\t\t\tthis.redirectToGoogleSlides();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic exportSlides(id: string, image: string, color: string, config: GoogleSlidesApiConfig) {\r\n\t\tlet googleAuth = new GoogleAuthService(\"slides\", `assetId ${id} backgroundImagePath ${image} fontColor ${color}`, config);\r\n\t\tgoogleAuth.authServiceRedirect();\r\n\t}\r\n\r\n\tgetHashParams() {\r\n\t\tconst urlHashRegex = /([^&=]+)=([^&]*)/g;\r\n\r\n\t\tlet match;\r\n\t\tlet hashParams: any = {};\r\n\t\tlet { location } = this.props;\r\n\r\n\t\twhile ((match = urlHashRegex.exec(location.hash.substr(1))) !== null) {\r\n\t\t\thashParams[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);\r\n\t\t}\r\n\r\n\t\treturn hashParams;\r\n\t}\r\n\r\n\tgetAccessToken() {\r\n\t\tlet hashParams = this.getHashParams();\r\n\r\n\t\tif (Object.keys(hashParams).length > 0 && hashParams[\"error\"] !== \"access_denied\" && hashParams[\"access_token\"] != null) {\r\n\t\t\treturn hashParams[\"access_token\"];\r\n\t\t} else {\r\n\t\t\tthis.setState({ errorMessage: \"Error: issue authenticating with Google. Please try again later.\" });\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tgetPersistentStateObject(params: string) {\r\n\t\tlet splitParams = params.split(\" \");\r\n\t\tlet stateObj: PersistentApplicationState = {\r\n\t\t\tassetId: \"\",\r\n\t\t\tbackgroundImagePath: GoogleSlidesHelperService.getDefaultBackgroundImageUrlById(\"16x9\", 1),\r\n\t\t\tfontColor: \"white\",\r\n\t\t};\r\n\r\n\t\tfor (let index = 0; index < splitParams.length; index++) {\r\n\t\t\tif (index % 2 === 0) {\r\n\t\t\t\tlet property = splitParams[index];\r\n\t\t\t\tlet value = splitParams[index + 1];\r\n\r\n\t\t\t\tif (property === \"assetId\") {\r\n\t\t\t\t\tstateObj.assetId = value;\r\n\t\t\t\t}\r\n\t\t\t\tif (property === \"backgroundImagePath\" && value !== \"null\") {\r\n\t\t\t\t\tstateObj.backgroundImagePath = value;\r\n\t\t\t\t}\r\n\t\t\t\tif (property === \"fontColor\" && value !== \"null\") {\r\n\t\t\t\t\tstateObj.fontColor = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stateObj;\r\n\t}\r\n\r\n\tgetPreviewSlidesFromEditorHtml(html: string) {\r\n\t\tlet editorSlides = EditorHelper.getEditorSlides(html);\r\n\t\tlet previewSlides = EditorHelper.getPreviewSlides(editorSlides);\r\n\t\treturn previewSlides;\r\n\t}\r\n\r\n\tasync getEditorData(assetId: string) {\r\n\t\tlet res = await BuilderAssetService.accessAsset(assetId);\r\n\r\n\t\tif (ServerResponse.isError(res)) {\r\n\t\t\tif (res.statusCode === 404) {\r\n\t\t\t\tthis.setState({ errorMessage: `404 Error: AssetId: ${assetId} not found.` });\r\n\t\t\t} else if (res.statusCode === 500) {\r\n\t\t\t\tthis.setState({ errorMessage: `500 Error: There was an issue with the server. Please try again later.` });\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({ errorMessage: res.message });\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t} else if (ServerResponse.isModelValidation(res)) {\r\n\t\t\tthis.setState({ errorMessage: \"Error: There was an issue accessing the asset.\" });\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (res.data !== null) {\r\n\t\t\treturn res.data;\r\n\t\t} else {\r\n\t\t\tthis.setState({ errorMessage: \"No data returned from the server!\" });\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tasync createGoogleSlides(appState: PersistentApplicationState) {\r\n\t\tlet editorData = await this.getEditorData(appState.assetId);\r\n\t\tif (editorData === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet previewSlides = this.getPreviewSlidesFromEditorHtml(editorData.text);\r\n\t\tlet title = editorData.name;\r\n\r\n\t\tlet presentationId = await this.createPresentation(title);\r\n\t\tif (presentationId === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tpresentationId = await this.addSlidesToPresentation(previewSlides, presentationId, appState);\r\n\t\treturn presentationId;\r\n\t}\r\n\r\n\tasync createPresentation(title: string) {\r\n\t\tlet header = { Authorization: `Bearer ${this.getAccessToken()}` };\r\n\t\tlet body = { title };\r\n\t\tlet config = this.props.config.googleSlidesApi;\r\n\t\tlet res = await GoogleSlidesHelperService.PostToGoogleApi(config.apiUrl, body, header);\r\n\t\tif (res.data.error) {\r\n\t\t\tthis.setState({ errorMessage: res.data.error.message });\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn res.data.presentationId as string;\r\n\t}\r\n\r\n\tasync addSlidesToPresentation(slides: PreviewSlide[], presentationId: string, persistentApplicationState: PersistentApplicationState) {\r\n\t\tlet { config } = this.props;\r\n\t\tlet header = { Authorization: `Bearer ${this.getAccessToken()}`, Pragma: \"no-cache\" };\r\n\t\tlet body = GoogleSlidesRequestBuilder.generateUpdateRequestBody(slides, persistentApplicationState, config.assetBaseUrl);\r\n\t\tlet res = await GoogleSlidesHelperService.PostToGoogleApi(`${config.googleSlidesApi.apiUrl}/${presentationId}:batchUpdate`, body, header);\r\n\t\tif (res.data.error) {\r\n\t\t\tthis.setState({ errorMessage: res.data.error.message });\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn res.data.presentationId as string;\r\n\t}\r\n\r\n\tasync redirectToGoogleSlides() {\r\n\t\tlet hashParams = this.getHashParams();\r\n\t\tlet config = this.props.config.googleSlidesApi;\r\n\r\n\t\tif (Object.keys(hashParams).length > 0 && hashParams[\"error\"] !== \"access_denied\" && hashParams[\"state\"] != null) {\r\n\t\t\tlet appState = this.getPersistentStateObject(hashParams[\"state\"]);\r\n\t\t\tlet exportedPresentationId = await this.createGoogleSlides(appState);\r\n\t\t\tif (exportedPresentationId != null) {\r\n\t\t\t\twindow.location.href = `${config.presentationUrl.replace(\"{id}\", exportedPresentationId!)}`;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.setState({ errorMessage: \"Error: issue authenticating with Google. Please try again later.\" });\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet { errorMessage } = this.state;\r\n\t\t\r\n\t\tif(!errorMessage) \r\n\t\t\treturn \r\n\t\t\t\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n","import {\r\n\tButton,\r\n\tmakeStyles,\r\n\tDialog,\r\n\tDialogActions,\r\n\tDialogContent,\r\n\tDialogTitle,\r\n\tFormControl,\r\n\tInputLabel,\r\n\tMenuItem,\r\n\tSelect,\r\n} from \"@material-ui/core\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport SvgGoogleIcon from \"../../../../components/SvgGoogleIcon\";\r\nimport { GoogleSlidesApiConfig } from \"../../../../entities/AppConfig\";\r\nimport { AspectRatios } from \"../../../../entities/AspectRatios\";\r\nimport { BuilderAssetService } from \"../../../../services/BuilderAssetService\";\r\nimport GoogleSlidesHelperService from \"../../../../services/GoogleSlides/GoogleSlidesHelperService\";\r\nimport { ServerResponse } from \"../../../../services/server/OldWebClient\";\r\nimport { GoogleSlidesOAuthLandingPage } from \"../../../GoogleSlidesOAuthLandingPage\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tpaper: {\r\n\t\tmaxWidth: 340,\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tmargin: 12,\r\n\t\t},\r\n\t},\r\n\tformSelect: {\r\n\t\tminWidth: \"90%\",\r\n\t\tmargin: \"5px\",\r\n\t\tmarginLeft: \"0px\",\r\n\t},\r\n\tformControlOverride: {\r\n\t\tminWidth: \"90%\",\r\n\t\tmargin: \"5px\",\r\n\t},\r\n\tmodalCancelButton: {\r\n\t\tcolor: \"#2196f3\",\r\n\t},\r\n\tmodalTitle: {\r\n\t\tfontSize: \"22px\",\r\n\t\tmarginTop: \"10px\",\r\n\t\tmarginBottom: \"20px\",\r\n\t\tmarginLeft: \"5px\",\r\n\t\tfontWeight: 500,\r\n\t},\r\n\tselectFontLabel: {\r\n\t\tfontSize: \"21px\",\r\n\t},\r\n\tgoogleSignInButton: {\r\n\t\t\"&:active\": {\r\n\t\t\tbackgroundColor: \"#EEE\",\r\n\t\t},\r\n\t\t\"&:hover\": {\r\n\t\t\toutline: \"none\",\r\n\t\t\tboxShadow: \"0 0 3px 3px rgba(66,133,244,.3)\",\r\n\t\t},\r\n\t\tfontFamily: \"Roboto\",\r\n\t\tcolor: \"#898989\",\r\n\t\tpaddingLeft: \"8px\",\r\n\t\tpaddingRight: \"8px\",\r\n\t\theight: \"40px\",\r\n\t\ttextTransform: \"none\",\r\n\t\tdisplay: \"flex\",\r\n\t\tjustifyContent: \"center\",\r\n\t\talignItems: \"center\",\r\n\t\tborder: \"none\",\r\n\t\tbackground: \"#ffffff\",\r\n\t\tfontSize: \"18px\",\r\n\t},\r\n\tgoogleSignInIcon: {\r\n\t\tmarginRight: \"12px\",\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tconfig: GoogleSlidesApiConfig;\r\n\thasCustomImage: boolean;\r\n\tassetId: string;\r\n\topen: boolean;\r\n\thandleClose: () => void;\r\n\timageAspectRatio: \"16x9\" | \"4x3\";\r\n\tdefaultImageId: number;\r\n\tcustomSlideBackgroundImagePath?: string;\r\n}\r\n\r\ntype FontColorOptions = \"white\" | \"black\";\r\n\r\nexport function ExportSlidesModal(props:Props) {\r\n\tconst [fontColor, setFontColor] = useState(\"white\")\r\n\tconst [signedCustomImageUrl, setSignedCustomImageUrl] = useState();\r\n\tconst [errorMessage, setErrorMessage] = useState();\r\n\tconst classes = useStyles();\r\n\r\n\tuseEffect(() => {\r\n\t\tasync function handleCustomImage(){\r\n\t\t\tconst signedUrl = await getBackgroundImageUrl(props.assetId)\r\n\t\t\tsetSignedCustomImageUrl(signedUrl);\r\n\t\t}\r\n\r\n\t\tif(props.hasCustomImage)\r\n\t\t\thandleCustomImage();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [])\r\n\r\n\tconst getBackgroundImageUrl = async (id: string) => {\r\n\t\tlet res = await BuilderAssetService.getPublicUrlForCustomSlideImage(id);\r\n\t\tif (ServerResponse.isError(res)) {\r\n\t\t\treturn GoogleSlidesHelperService.getDefaultBackgroundImageUrlById(\"16x9\", 1);\r\n\t\t} else {\r\n\t\t\treturn res.data.customSlideBackgroundImagePath;\r\n\t\t}\r\n\t};\r\n\r\n\tconst exportToGoogleSlides = async () => {\r\n\t\tconst { defaultImageId, imageAspectRatio } = props;\r\n\t\tvar backgroundImage = null;\r\n\r\n\t\tif (props.hasCustomImage) {\r\n\t\t\tif (signedCustomImageUrl) {\r\n\t\t\t\tbackgroundImage = signedCustomImageUrl;\r\n\t\t\t} else if (props.customSlideBackgroundImagePath) {\r\n\t\t\t\tbackgroundImage = props.customSlideBackgroundImagePath;\r\n\t\t\t} else {\r\n\t\t\t\tsetErrorMessage(`Error: could not get custom image url for export.`);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tbackgroundImage = GoogleSlidesHelperService.getDefaultBackgroundImageUrlById(imageAspectRatio, defaultImageId);\r\n\t\t}\r\n\r\n\t\tGoogleSlidesOAuthLandingPage.exportSlides(props.assetId, backgroundImage ?? \"\", fontColor, props.config);\r\n\t\tprops.handleClose();\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\tPresent Slides\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tSelect Font Color\r\n\t\t\t\t\t\r\n\t\t\t\t\t setFontColor(e.target.value as FontColorOptions)}\r\n\t\t\t\t\t\tclassName={classes.formSelect}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tDark\r\n\t\t\t\t\t\tLight\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{errorMessage &&
{errorMessage}
}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import { Grid } from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nexport function HorizontalCentered(props: React.PropsWithChildren<{}>){\r\n return \r\n {props.children}\r\n \r\n}","import { Grid } from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nexport function VerticalCenter(props: React.PropsWithChildren<{}>){\r\n return \r\n \r\n {props.children}\r\n \r\n \r\n}","import React, { useMemo, useState } from \"react\";\r\nimport { makeStyles, Dialog, DialogTitle, DialogContent, FormControl, Tooltip, InputLabel, Select, MenuItem, Typography, Hidden, GridList, GridListTile, Grid, Button, DialogActions, CircularProgress } from \"@material-ui/core\";\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\nimport UploadIcon from \"@material-ui/icons/CloudUploadOutlined\";\r\n\r\nimport classNames from \"classnames\";\r\n\r\nimport BackgroundImages from \"../../../../resources/BackgroundImages.json\";\r\nimport { BuilderAssetService, SaveCustomSlideBackgroundImageRequest } from \"../../../../services/BuilderAssetService\";\r\nimport { BuilderAsset } from \"../../../../entities/BuilderAsset\";\r\nimport { AspectRatios } from \"../../../../entities/AspectRatios\";\r\nimport { LoadingPage } from \"../../../../components/LoadingPage\";\r\nimport { HorizontalCentered } from \"../../../../components/HorizontalCentered\";\r\nimport { VerticalCenter } from \"../../../../components/VerticalCenter\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tfillParent: {\r\n\t\twidth: \"100%\",\r\n\t\theight: \"100%\",\r\n\t},\r\n\tgridList: {\r\n\t\tflexWrap: \"nowrap\",\r\n\t\t// Promote the list into his own layer on Chrome. This cost memory but helps keeping high FPS.\r\n\t\ttransform: \"translateZ(0)\",\r\n\t\toverflowX: \"scroll\",\r\n\t},\r\n\timageSelection: {\r\n\t\tmarginTop: 10,\r\n\t\tdisplay: \"flex\",\r\n\t\tflexWrap: \"wrap\",\r\n\t\toverflow: \"hidden\",\r\n\t\tbackgroundColor: theme.palette.background.paper,\r\n\t},\r\n\tgridTileImage: {\r\n\t\tmargin: 3,\r\n\t\t\"&:hover\": {\r\n\t\t\t\"& img\": {\r\n\t\t\t\tfilter: \"blur(1px) contrast(80%)\",\r\n\t\t\t\ttransition: \"all 0.2s ease 0s\",\r\n\t\t\t\tMozTransition: \"all 0.2s ease 0s\",\r\n\t\t\t\tWebkitTransition: \"all 0.2s ease 0s\",\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tselected: {\r\n\t\tborder: \"2px solid #2196f3\",\r\n\t},\r\n\tuploadImageContainer: {\r\n\t\theight: \"100%\",\r\n\t\tbackgroundColor: \"#f7f7f7\",\r\n\t\t\"&:hover\": {\r\n\t\t\t\"& svg\": {\r\n\t\t\t\tcolor: \"#2196f3\",\r\n\t\t\t},\r\n\t\t\t\"& p\": {\r\n\t\t\t\tcolor: \"#2196f3\",\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tuploadInput: {\r\n\t\tdisplay: \"none\",\r\n\t},\r\n\tuploadButton: {\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.04)\",\r\n\t\t},\r\n\t},\r\n\tuploadIcon: {\r\n\t\tcolor: \"rgba(0, 0, 0, 0.68)\",\r\n\t\tfontSize: 30,\r\n\t},\r\n\tcustomImage: {\r\n\t\tmargin: 5,\r\n\t\tmaxHeight: 275,\r\n\t},\r\n\tremoveImageButton: {\r\n\t\tcolor: theme.palette.error.main,\r\n\t},\r\n}));\r\n\r\nconst images: { id: number; standardImageThumbnailPath: string; widescreenImageThumbnailPath: string; name: string }[] = BackgroundImages as any;\r\n\r\nconst slideAspectRatios = [\r\n\t{\r\n\t\tid: \"16x9\",\r\n\t\tname: \"16 x 9\",\r\n\t},\r\n\t{\r\n\t\tid: \"4x3\",\r\n\t\tname: \"4 x 3\",\r\n\t},\r\n];\r\n\r\ninterface Props {\r\n\topen: boolean;\r\n\tpreferredAspectRatio: AspectRatios;\r\n\tpreferredImageId: number;\r\n\thasPreferredCustomImage: boolean;\r\n\tonClose: () => void;\r\n\tonSave: (selectedAspectRatio: AspectRatios, selectedImageId: number, uploadedCustomImage: boolean) => void;\r\n\tonCustomBackgroundSave: (asset: BuilderAsset, customImageAddedClient64Base: string, customImageAddedClientMimeType: string) => void;\r\n\tid: string;\r\n\tbackgroundImageAspectRatio?: string;\r\n\tcustomSlideBackgroundImagePath?: string;\r\n\tonDeleteCustomSave: () => void;\r\n\tcustomImageBase64Content?: string;\r\n}\r\n\r\nexport function SlideSettingsDialog(props:Props){\r\n\tconst classes = useStyles();\r\n\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst [selectedAspectRatioId, setSelectedAspectRatioId] = useState(props.preferredAspectRatio);\r\n\tconst [selectedImageId, setSelectedImageId] = useState(props.preferredImageId);\r\n\tconst [hasPreferredCustomImage, setHasPreferredCustomImage] = useState(props.hasPreferredCustomImage);\r\n\tconst imageFullPath = useMemo(() => `${props.customSlideBackgroundImagePath}`, [props.customSlideBackgroundImagePath]);\r\n\r\n\tconst saveSettings = (event: React.FormEvent) => {\r\n\t\tsetLoading(true);\r\n\t\tevent.preventDefault();\r\n\t\tprops.onSave(selectedAspectRatioId, selectedImageId, hasPreferredCustomImage);\r\n\t\tsetLoading(false);\r\n\t};\r\n\r\n\tconst onFileChange = (event: React.ChangeEvent) => {\r\n\t\tlet file = event.target.files && event.target.files[0];\r\n\t\tif (file) {\r\n\t\t\thandleFileUpload(file);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleFileUpload = (file: File) => {\r\n\t\tconst reader = new FileReader();\r\n\t\treader.readAsDataURL(file);\r\n\r\n\t\treader.onload = async () => {\r\n\t\t\tconst result = reader.result;\r\n\t\t\tif (result) {\r\n\t\t\t\t// result type changes based on which read function was used\r\n\t\t\t\tconst selectedCustomImage = result as string;\r\n\t\t\t\t\r\n\t\t\t\tlet fileName = \"master-background\";\r\n\t\t\t\tlet uploadedFileNameSplit = file.name.split(\".\");\r\n\t\t\t\tlet extension = uploadedFileNameSplit[uploadedFileNameSplit.length - 1];\r\n\t\t\t\tfileName = fileName + `-${+new Date()}.${extension}`;\r\n\t\t\t\t\r\n\t\t\t\tsetLoading(true);\r\n\t\t\t\tlet uploadUrlResponse = await BuilderAssetService.generatePowerPointUploadUrl(props.id, fileName);\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t\t\r\n\t\t\t\t// What error we want to throw?\r\n\t\t\t\tif (uploadUrlResponse.error) return;\r\n\t\t\t\tsetLoading(true);\r\n\t\t\t\tlet uploadResponse = await BuilderAssetService.uploadSourceImage(\r\n\t\t\t\t\tuploadUrlResponse.data.url,\r\n\t\t\t\t\tfile,\r\n\t\t\t\t\t(uploadProgressPercentage) => null\r\n\t\t\t\t\t);\r\n\t\t\t\tsetLoading(false);\r\n\r\n\t\t\t\t// What error we want to throw?\r\n\t\t\t\tif (uploadResponse.error) return;\r\n\r\n\t\t\t\tlet request: SaveCustomSlideBackgroundImageRequest = {\r\n\t\t\t\t\tfileContents: selectedCustomImage,\r\n\t\t\t\t\tid: props.id,\r\n\t\t\t\t};\r\n\t\t\t\tsetLoading(true);\r\n\t\t\t\tlet response = await BuilderAssetService.saveSlideExporterCustomBackgroundImage(request);\r\n\t\t\t\tsetLoading(false);\r\n\r\n\t\t\t\tif (response.success) {\r\n\t\t\t\t\tprops.onCustomBackgroundSave(response.data, selectedCustomImage, file.type);\r\n\t\t\t\t\treturn setHasPreferredCustomImage(true);\r\n\t\t\t\t} \r\n\t\t\t};\r\n\t\t};\r\n\t};\r\n\r\n\tconst onRemoveImage = async () => {\r\n\t\tsetLoading(true);\r\n\t\tawait BuilderAssetService.removeCustomSlideBackgroundImageUrl(props.id);\r\n\t\tprops.onDeleteCustomSave();\r\n\t\tsetHasPreferredCustomImage(false);\r\n\t\tsetLoading(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\tSlide Settings\r\n\t\t\t
saveSettings(e)}>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tAspect Ratio \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setSelectedAspectRatioId(event.target.value as AspectRatios)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{slideAspectRatios.map((aspectRatio, index) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{aspectRatio.name}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{selectedAspectRatioId === \"16x9\" && !hasPreferredCustomImage && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\tSelect A Background Image\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{ loading\r\n\t\t\t\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{images.map((image) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t setSelectedImageId(image.id)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDoubleClick={() => props.onSave(selectedAspectRatioId, image.id, hasPreferredCustomImage)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclasses.gridTileImage,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\timage.id === selectedImageId ? classes.selected : null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{image.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{ loading\r\n\t\t\t\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{images.map((image) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t setSelectedImageId(image.id)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDoubleClick={() => props.onSave(selectedAspectRatioId, image.id, hasPreferredCustomImage)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclasses.gridTileImage,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\timage.id === selectedImageId ? classes.selected : null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{image.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{selectedAspectRatioId === \"4x3\" && !hasPreferredCustomImage && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\tSelect A Background Image\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{ loading\r\n\t\t\t\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{images.map((image) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t setSelectedImageId(image.id)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDoubleClick={() => props.onSave(selectedAspectRatioId, image.id, hasPreferredCustomImage)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclasses.gridTileImage,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\timage.id === selectedImageId ? classes.selected : null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{image.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{ loading\r\n\t\t\t\t\t\t\t\t\t\t?\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{images.map((image) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t setSelectedImageId(image.id)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDoubleClick={() => props.onSave(selectedAspectRatioId, image.id, hasPreferredCustomImage)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclasses.gridTileImage,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\timage.id === selectedImageId ? classes.selected : null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{image.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{hasPreferredCustomImage && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSelected Background Image\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\ninterface UploadImageTileProps {\r\n\tonFileChange: (event: React.ChangeEvent) => void;\r\n}\r\n\r\nfunction UploadImageTile(props: UploadImageTileProps){\r\n\tconst classes = useStyles()\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t props.onFileChange(e)} type=\"file\" accept=\"image/*\" />\r\n\t\t\r\n\t)\r\n}","import React from \"react\";\r\n\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport SettingsIcon from \"@material-ui/icons/Settings\";\r\nimport { Grid, IconButton, makeStyles, Paper, Typography } from \"@material-ui/core\";\r\nimport { AspectRatios } from \"../../../entities/AspectRatios\";\r\nimport { PreviewSlide, SlideLineChar } from \"./PreviewSlide\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tbackgroundCard: {\r\n\t\twidth: \"90%\",\r\n\t\tmarginLeft: \"auto\",\r\n\t\tmarginRight: \"auto\",\r\n\t\tmarginTop: theme.spacing(1),\r\n\t\tmarginBottom: theme.spacing(1),\r\n\t\tpaddingTop: theme.spacing(1),\r\n\t\tpaddingBottom: theme.spacing(1),\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t},\r\n\tpaper: {\r\n\t\twidth: \"296px\",\r\n\t\tbackgroundSize: \"100%\",\r\n\t\tmargin: \"0 auto\",\r\n\t\twordWrap: \"break-word\",\r\n\t\toverflow: \"hidden\",\r\n\t\t\"&:hover\": {\r\n\t\t\t\"& button\": {\r\n\t\t\t\topacity: 1,\r\n\t\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tfillParent: {\r\n\t\twidth: \"100%\",\r\n\t\theight: \"100%\",\r\n\t},\r\n\ticonButton: {\r\n\t\topacity: 0.4,\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\tpadding: \"7px\",\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: \"rgba(0, 0, 0, 0.5)\",\r\n\t\t},\r\n\t},\r\n\tdeleteSlideButton: {\r\n\t\tright: \"10px\",\r\n\t\tbottom: \"10px\",\r\n\t\tposition: \"absolute\",\r\n\t\tdisplay: \"flex\",\r\n\t},\r\n\tgridItem: {\r\n\t\tpadding: \"10px\",\r\n\t\twhiteSpace: \"initial\",\r\n\t\tuserSelect: \"none\",\r\n\t\toverflowY: \"hidden\",\r\n\t},\r\n\timageTitle: {\r\n\t\ttextAlign: \"center\",\r\n\t\tmarginTop: 3,\r\n\t},\r\n\tslidePreviewText4x3Small: {\r\n\t\tfontSize: 8,\r\n\t\tpadding: 16,\r\n\t},\r\n\tslidePreviewText16x9Small: {\r\n\t\tfontSize: 5.5,\r\n\t\tpadding: 18,\r\n\t},\r\n\tslidePreviewText4x3Medium: {\r\n\t\tfontSize: 13.8,\r\n\t\tpadding: 24,\r\n\t},\r\n\tslidePreviewText16x9Medium: {\r\n\t\tfontSize: 12,\r\n\t\tpadding: 19,\r\n\t},\r\n\tslidePreviewText4x3Large: {\r\n\t\tfontSize: 22,\r\n\t\tpadding: 23,\r\n\t},\r\n\tslidePreviewText16x9Large: {\r\n\t\tfontSize: 20,\r\n\t\tpadding: 12,\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tkey: number;\r\n\tindex: number;\r\n\tslideExporterAspectRatio: AspectRatios;\r\n\tpreviewSlide: PreviewSlide;\r\n\tonRemovePreviewSlide: (slide: PreviewSlide) => void;\r\n\tgetImageThumbnail: () => string;\r\n\tgetFontColor: () => string;\r\n\tonSettingsDialogToggle: () => void;\r\n}\r\n\r\nexport function DisplaySlide(props: Props) {\r\n\tlet { key, index, slideExporterAspectRatio, previewSlide } = props;\r\n\tlet { onRemovePreviewSlide, getImageThumbnail, getFontColor, onSettingsDialogToggle } = props;\r\n\tconst classes = useStyles();\r\n\tconst addSurroundingTag = (html: string, tagName: string, style?: string) => {\r\n\t\treturn `<${tagName}${style !== undefined ? ` style=\"${style}\"` : \"\"}>${html}`;\r\n\t};\r\n\r\n\tconst generateLineCharacterHtml = (lineChars: SlideLineChar[]) => {\r\n\t\tlet lineHtml = \"\";\r\n\t\tlineChars.forEach((lineChar) => {\r\n\t\t\tlet characterHtml = lineChar.char;\r\n\t\t\tif (characterHtml === \"\\n\") {\r\n\t\t\t\tlineHtml += \"
\";\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (lineChar.isBold) {\r\n\t\t\t\tcharacterHtml = addSurroundingTag(characterHtml, \"b\");\r\n\t\t\t}\r\n\t\t\tif (lineChar.isItalics) {\r\n\t\t\t\tcharacterHtml = addSurroundingTag(characterHtml, \"i\");\r\n\t\t\t}\r\n\t\t\tif (lineChar.isUnderlined) {\r\n\t\t\t\tcharacterHtml = addSurroundingTag(characterHtml, \"u\");\r\n\t\t\t}\r\n\t\t\tif (lineChar.backgroundColor !== undefined) {\r\n\t\t\t\tcharacterHtml = addSurroundingTag(characterHtml, \"span\", `background-color:${lineChar.backgroundColor};`);\r\n\t\t\t}\r\n\t\t\tif (lineChar.fontFamily !== undefined) {\r\n\t\t\t\tcharacterHtml = addSurroundingTag(characterHtml, \"span\", `font-family:${lineChar.fontFamily};`);\r\n\t\t\t}\r\n\t\t\tif (lineChar.fontSize !== undefined) {\r\n\t\t\t\tcharacterHtml = addSurroundingTag(characterHtml, \"span\", `font-size:${lineChar.fontSize};`);\r\n\t\t\t}\r\n\r\n\t\t\tlineHtml += characterHtml;\r\n\t\t});\r\n\r\n\t\treturn lineHtml;\r\n\t};\r\n\r\n\tconst generateSlideLineHtml = () => {\r\n\t\tlet blockType = \"p\";\r\n\t\tlet containsList = false;\r\n\t\tlet listType = null;\r\n\t\tlet alignment = \"\";\r\n\t\tlet slideLinesHtml = previewSlide.lines.map((slideLine) => {\r\n\t\t\tlet lineHtml = generateLineCharacterHtml(slideLine.lineChars);\r\n\r\n\t\t\tif (slideLine.blockTag !== undefined) {\r\n\t\t\t\tblockType = slideLine.blockTag;\r\n\t\t\t}\r\n\r\n\t\t\tif (slideLine.textAlignment) {\r\n\t\t\t\talignment = slideLine.textAlignment;\r\n\t\t\t}\r\n\r\n\t\t\tif (slideLine.isUnorderedList || slideLine.isOrderedList) {\r\n\t\t\t\tlineHtml = `
  • ${lineHtml}
  • `;\r\n\t\t\t\tcontainsList = true;\r\n\t\t\t\tlistType = slideLine.isOrderedList ? \"ol\" : \"ul\";\r\n\t\t\t\tblockType = \"span\";\r\n\t\t\t}\r\n\r\n\t\t\tif (slideLine.isBlockQuote) {\r\n\t\t\t\tlineHtml = `
    ${lineHtml}
    `;\r\n\t\t\t\tblockType = \"span\";\r\n\t\t\t}\r\n\r\n\t\t\treturn lineHtml;\r\n\t\t});\r\n\r\n\t\tif (containsList) {\r\n\t\t\tlet listLineIndexes: number[] = [];\r\n\t\t\tslideLinesHtml.forEach((slideLineHtml, index) => {\r\n\t\t\t\tlet slideIsListBullet = slideLineHtml.indexOf(\"
  • \") !== -1;\r\n\t\t\t\tif (slideIsListBullet) {\r\n\t\t\t\t\tlistLineIndexes.push(index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tslideLinesHtml.splice(listLineIndexes[0], 0, listType === \"ol\" ? `
      ` : `
        `);\r\n\t\t\tslideLinesHtml.splice(listLineIndexes[listLineIndexes.length - 1] + 2, 0, listType === \"ol\" ? \"
    \" : \"\");\r\n\t\t}\r\n\r\n\t\tlet blockStyles = `color:${getFontColor()};`;\r\n\t\tif (alignment) {\r\n\t\t\tblockStyles += `text-align:${alignment};`;\r\n\t\t}\r\n\t\tlet result = addSurroundingTag(slideLinesHtml.join(\"\"), blockType, blockStyles);\r\n\t\treturn result;\r\n\t};\r\n\r\n\treturn (\r\n\t\t
  • \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t onSettingsDialogToggle()}\r\n\t\t\t\t\t\t\tstyle={{ color: getFontColor() }}\r\n\t\t\t\t\t\t\tcolor=\"inherit\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t onRemovePreviewSlide(previewSlide)}\r\n\t\t\t\t\t\t\tstyle={{ color: getFontColor() }}\r\n\t\t\t\t\t\t\tcolor=\"inherit\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t onSettingsDialogToggle()}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{
    }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t Slide {index + 1}\r\n\t\t\t
    \r\n\t\t
  • \r\n\t);\r\n}","import { Divider, IconButton, List, ListItem, ListItemText, ListSubheader, makeStyles, Tooltip, Typography } from \"@material-ui/core\";\r\n\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport SettingsIcon from \"@material-ui/icons/Settings\";\r\nimport classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { TelemetryService } from \"../../../../src/services/TelemetryService\";\r\nimport { EventTracking } from \"../../../../src/utilities/Tracking/EventTracking\";\r\nimport BackgroundImages from \"../../../resources/BackgroundImages.json\";\r\nimport { BuilderAssetService } from \"../../../services/BuilderAssetService\";\r\nimport { ServerResponse } from \"../../../services/server/OldWebClient\";\r\nimport { useEditor } from \"../editor/useEditor\";\r\nimport { ExportSlidesModal } from \"./components/exportSlidesModal\";\r\nimport { useBuilder } from \"../useBuilder\";\r\nimport { useBuilderDrawer } from \"./useBuilderDrawer\";\r\nimport { SlideSettingsDialog } from \"./components/slideSettingsDialog\";\r\nimport { AspectRatios } from \"../../../entities/AspectRatios\";\r\nimport { BuilderPreferences } from \"../../../entities/BuilderPreferences\";\r\nimport { BuilderAsset } from \"../../../entities/BuilderAsset\";\r\nimport { DisplaySlide } from \"../editor/DisplaySlide\";\r\nimport { exportSlides } from \"../../../utilities/ExportSlides\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\ttoolbar: theme.mixins.toolbar,\r\n\ttitle: {\r\n\t\tpaddingTop: 10,\r\n\t\tpaddingBottom: 7,\r\n\t\ttextAlign: \"left\",\r\n\t\tfontSize: 22,\r\n\t},\r\n\tsubtitle: {\r\n\t\tpaddingTop: theme.spacing(0),\r\n\t\ttextAlign: \"left\",\r\n\t\tfontSize: 15,\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t},\r\n\tcloseIcon: {\r\n\t\tfloat: \"right\",\r\n\t},\r\n\tlist: {\r\n\t\tmarginBottom: \"4px\",\r\n\t\tposition: \"relative\",\r\n\t\toverflowX: \"hidden\",\r\n\t},\r\n\tplaceHolderTextContainer: {\r\n\t\tbackground: \"#efefef\",\r\n\t\theight: \"100%\",\r\n\t\tpadding: \"17px\",\r\n\t},\r\n\tplaceHolderText: {\r\n\t\tfontFamily: \"Roboto, Helvetica\",\r\n\t\tfontSize: \"15px\",\r\n\t\tcolor: \"#5f6368\",\r\n\t\tpaddingTop: \"17px\",\r\n\t},\r\n\tsettingsIcon: {\r\n\t\tfloat: \"right\",\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: \"rgb(145, 145, 145)\",\r\n\t\t},\r\n\t},\r\n\tbottomBtnList: {\r\n\t\tmarginTop: \"auto\",\r\n\t\tdisplay: \"flex\",\r\n\t\t[theme.breakpoints.down(\"xs\")]: {\r\n\t\t\tpaddingBottom: \"20px\",\r\n\t\t},\r\n\t},\r\n\tbottomBtnListItem: {\r\n\t\ttextAlign: \"center\",\r\n\t},\r\n\tnoPadding: {\r\n\t\tpaddingRight: \"0px !important\",\r\n\t},\r\n}));\r\n\r\ninterface BackgroundImage {\r\n\tid: number;\r\n\tstandardImagePath: string;\r\n\tstandardImageThumbnailPath: string;\r\n\twidescreenImagePath: string;\r\n\twidescreenImageThumbnailPath: string;\r\n\tname: string;\r\n\tfontColor: string;\r\n}\r\n\r\nconst images: BackgroundImage[] = BackgroundImages as any;\r\nconst currentLocation = \"Slide Drawer Interaction\";\r\n\r\nexport const slideAspectRatios = [\r\n\t{\r\n\t\tid: \"16x9\",\r\n\t\tname: \"16 x 9\",\r\n\t},\r\n\t{\r\n\t\tid: \"4x3\",\r\n\t\tname: \"4 x 3\",\r\n\t},\r\n];\r\n\r\nexport function SlidesContent() {\r\n\tconst [exportModalOpen, setExportModalOpen] = React.useState(false);\r\n\tconst [settingsDialogOpen, setSettingsDialogOpen] = React.useState(false);\r\n\tconst classes = useStyles()\r\n\tconst editor = useEditor();\r\n\tconst builder = useBuilder();\r\n\tconst builderDrawer = useBuilderDrawer();\r\n\r\n\tconst exportToPresentation = async () => {\r\n\t\texportSlides(builder.builderAsset, editor.slides, builder.preferences);\r\n\t\tlet now = new Date();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_slideexport\", now.toString());\r\n\t\tEventTracking.Builder.onExportSlides(currentLocation);\r\n\t};\r\n\r\n\tconst handlePresentClick = () => {\r\n\t\tEventTracking.Builder.onPresentSlides(currentLocation);\r\n\t\tsetExportModalOpen(true);\r\n\t};\r\n\r\n\tconst getImageThumbnail = () => {\r\n\t\tconst customImageBase64Content = builder.customImageBase64Content;\r\n\t\tconst { customSlideBackgroundImageUrl, slideExporterAspectRatio } = builder.builderAsset;\r\n\r\n\t\tif (customImageBase64Content) {\r\n\t\t\treturn customImageBase64Content;\r\n\t\t} else if (customSlideBackgroundImageUrl) {\r\n\t\t\treturn customSlideBackgroundImageUrl;\r\n\t\t} else {\r\n\t\t\tconst backgroundImage = getStockBackgroundImage();\r\n\t\t\tif (slideExporterAspectRatio === \"4x3\") {\r\n\t\t\t\treturn backgroundImage.standardImageThumbnailPath;\r\n\t\t\t}\r\n\r\n\t\t\treturn backgroundImage.widescreenImageThumbnailPath;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getStockBackgroundImage = () => {\r\n\t\tconst { slideExporterSelectedGalleryImageId } = builder.preferences;\r\n\t\tconst selectedImage = images.find((image) => image.id === slideExporterSelectedGalleryImageId);\r\n\t\treturn selectedImage ? selectedImage : images[0];\r\n\t};\r\n\r\n\tconst getFontColor = () => {\r\n\t\tconst { builderAsset, customImageBase64Content, preferences } = builder;\r\n\t\tif (builderAsset.customSlideBackgroundImageUrl || customImageBase64Content) {\r\n\t\t\treturn \"#FFFFFF\";\r\n\t\t}\r\n\r\n\t\tconst selectedImage = images.find((image) => image.id === preferences.slideExporterSelectedGalleryImageId);\r\n\t\tconst backgroundImage = selectedImage ? selectedImage : images[0];\r\n\r\n\t\treturn backgroundImage.fontColor;\r\n\t};\r\n\r\n\tconst onClose = () => {\r\n\t\tEventTracking.Builder.onCloseMainDrawerFromX();\r\n\t\tbuilderDrawer.onMainDrawerChange(false);\r\n\t};\r\n\r\n\tconst onSettingsDialogToggle = () => {\r\n\t\tsetSettingsDialogOpen(!settingsDialogOpen);\r\n\t\tif (!settingsDialogOpen) {\r\n\t\t\tEventTracking.Builder.onOpenSettings(currentLocation);\r\n\t\t}\r\n\t};\r\n\r\n\tconst saveSlidesSettings = async (preferredAspectRatio: AspectRatios, preferredImageId: number, uploadedCustomImage: boolean) => {\r\n\t\tsetSettingsDialogOpen(false);\r\n\t\tlet preferences: BuilderPreferences = {\r\n\t\t\t...builder.preferences,\r\n\t\t\tslideExporterSelectedGalleryImageId: preferredImageId,\r\n\t\t};\r\n\r\n\t\tbuilder.savePreferences(preferences);\r\n\r\n\t\tconst asset = builder.builderAsset;\r\n\r\n\t\tif (preferredAspectRatio !== asset.slideExporterAspectRatio) {\r\n\t\t\tif (preferredAspectRatio === \"16x9\") {\r\n\t\t\t\tEventTracking.Builder.onPreferencesChanges(\"Slides\", \"Aspect Ratio - 16x9\");\r\n\t\t\t} else {\r\n\t\t\t\tEventTracking.Builder.onPreferencesChanges(\"Slides\", \"Aspect Ratio - 4x3\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasUploadedSlideImage) {\r\n\t\t\tEventTracking.Builder.onPreferencesChanges(\"Slides\", \"Image Uploaded\");\r\n\t\t}\r\n\r\n\t\tlet response = await BuilderAssetService.saveSlideAspectRatio(asset.id, preferredAspectRatio);\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tbuilder.setBuilderAsset({\r\n\t\t\t\t...asset,\r\n\t\t\t\tslideExporterAspectRatio: preferredAspectRatio,\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tbuilder.setAlert(\"Failed to update slide preferences.\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst onDeleteCustomBackgroundImage = () => {\r\n\t\tbuilder.setBuilderAsset({\r\n\t\t\t...builder.builderAsset,\r\n\t\t\tcustomSlideBackgroundImagePath: undefined,\r\n\t\t\tcustomSlideBackgroundImageUrl: undefined,\r\n\t\t});\r\n\t\tbuilder.setCustomImageBase64Content(\"\");\r\n\t};\r\n\r\n\tconst onSlidePreferenceChange = (asset: BuilderAsset, customImageAddedClient64Base: string, customImageAddedClientMimeType: string) => {\r\n\t\tbuilder.setBuilderAsset({\r\n\t\t\t...builder.builderAsset,\r\n\t\t\tslideExporterAspectRatio: asset.slideExporterAspectRatio,\r\n\t\t\tcustomSlideBackgroundImagePath: asset.customSlideBackgroundImagePath,\r\n\t\t});\r\n\r\n\t\tbuilder.setCustomImageBase64Content(customImageAddedClient64Base);\r\n\t};\r\n\r\n\tconst { slideExporterSelectedGalleryImageId } = builder.preferences;\r\n\tconst hasUploadedSlideImage = builder.builderAsset.customSlideBackgroundImagePath ? true : undefined;\r\n\tlet preferredAspectRatio = builder.builderAsset.slideExporterAspectRatio;\r\n\tif (!preferredAspectRatio) {\r\n\t\tpreferredAspectRatio = \"16x9\";\r\n\t}\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tSlide Preview\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t onSettingsDialogToggle()}>\r\n\t\t\t\t\t\tPresentation Settings\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t onSettingsDialogToggle()} className={classes.settingsIcon}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{editor.slides.length > 0 && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{editor.slides.map((slide, index) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t builder.showShareDialog(true, currentLocation)} className={classes.bottomBtnListItem}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\t\t\t\t{editor.slides.length === 0 && (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tBuilding a slide deck from your sermon has never been easier!\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tIn the sermon editor, highlight any section and click ADD SLIDE in the bubble appearing above the text.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAfter adding slides, click the gear icon above to change the background image and aspect ratio.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tOnce your slide deck is ready, click the blue Download button below to download your file.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAlternatively, click the blue Present button below to export your presentation to Google Slides (Note:\r\n\t\t\t\t\t\t\tGoogle account required).\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tNeed more help?{\" \"}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tLearn more\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\t\t\t\t{exportModalOpen && (\r\n\t\t\t\t\t setExportModalOpen(false)}\r\n\t\t\t\t\t\tassetId={builder.builderAsset.id}\r\n\t\t\t\t\t\thasCustomImage={builder.builderAsset.customSlideBackgroundImagePath != null}\r\n\t\t\t\t\t\tdefaultImageId={slideExporterSelectedGalleryImageId!}\r\n\t\t\t\t\t\timageAspectRatio={preferredAspectRatio}\r\n\t\t\t\t\t\tcustomSlideBackgroundImagePath={builder.builderAsset.customSlideBackgroundImagePath}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t setSettingsDialogOpen(false)}\r\n\t\t\t\t\tonSave={saveSlidesSettings}\r\n\t\t\t\t\tpreferredImageId={slideExporterSelectedGalleryImageId!}\r\n\t\t\t\t\tpreferredAspectRatio={builder.builderAsset.slideExporterAspectRatio ? builder.builderAsset.slideExporterAspectRatio : \"16x9\"}\r\n\t\t\t\t\tbackgroundImageAspectRatio={builder.builderAsset.slideExporterAspectRatio}\r\n\t\t\t\t\tonDeleteCustomSave={onDeleteCustomBackgroundImage}\r\n\t\t\t\t\tonCustomBackgroundSave={onSlidePreferenceChange}\r\n\t\t\t\t\thasPreferredCustomImage={hasUploadedSlideImage !== undefined}\r\n\t\t\t\t\tcustomSlideBackgroundImagePath={builder.builderAsset.customSlideBackgroundImageUrl}\r\n\t\t\t\t\tcustomImageBase64Content={builder.customImageBase64Content}\r\n\t\t\t\t/>\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, List, ListItem, ListItemSecondaryAction, ListItemText } from \"@material-ui/core\";\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\n\r\nimport DateHelper from '../../../../utilities/DateHelper';\r\nimport { useBuilder } from '../../useBuilder';\r\nimport { AssetWritingLogService } from '../../../../services/AssetWritingLogService';\r\nimport {AssetWritingLogs} from '../../../../entities/AssetWritingLogs';\r\nimport { EventTracking } from '../../../../utilities/Tracking/EventTracking';\r\n\r\ninterface Props {\r\n showDialog: boolean;\r\n closeDialog: () => void;\r\n}\r\n\r\nexport function WritingLogDialog(props:Props) {\r\n const builder = useBuilder();\r\n\r\n const [writingLogs, setWritingLogs] = useState({ writingLogs: [], id: '', totalTime: 0})\r\n const { showDialog, closeDialog } = props\r\n const [disabled, setDisabled] = useState(false)\r\n \r\n useEffect(() => {\r\n setWritingLogs(builder.writingLogs);\r\n }, [builder])\r\n\r\n const handleRemoveWritingLog = async(id:string) => {\r\n setDisabled(true);\r\n await AssetWritingLogService.deleteAssetWritingLog(id);\r\n EventTracking.Builder.onDeleteWritingLogs(\"Analyzer Drawer Interaction\")\r\n setDisabled(false)\r\n\r\n builder.refreshWritingLog();\r\n builder.setAlert(\"Writing log deleted\")\r\n }\r\n\r\n return (\r\n \r\n Writing Logs\r\n \r\n { writingLogs.totalTime > 0\r\n &&\r\n \r\n { writingLogs.writingLogs.map( (log, index) => {\r\n return (\r\n \r\n {DateHelper.buildDateFormat(new Date(log.logDate))} - {DateHelper.timeFromSeconds(log.logTimeInSeconds)}\r\n \r\n handleRemoveWritingLog(log.id,)} >\r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React from 'react';\r\nimport { TextAnalysis } from '../../../../utilities/sermonAnalyzer/SermonAnalyzer';\r\n\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport SolidIcon from '@material-ui/icons/Brightness1';\r\nimport { ExpansionPanel, ExpansionPanelSummary, ListItem, Tooltip, ListItemText, Typography, makeStyles } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n panel: {\r\n boxShadow: 'none',\r\n margin: 0,\r\n paddingLeft: 0,\r\n },\r\n panelSummary: {\r\n color: \"#000000de\",\r\n textSize: '1rem',\r\n },\r\n expandIcon: {\r\n color: \"#000000de\",\r\n textSize: '15px',\r\n },\r\n categoryTitle: {\r\n color: \"#000\",\r\n fontWeight: 500,\r\n fontSize: \"0.9rem\",\r\n }\r\n}));\r\n\r\ninterface Props {\r\n suggestions: TextAnalysis[];\r\n bulletColor: string;\r\n category: string;\r\n}\r\n\r\nexport function AnalyzerTextSuggestionsPanel(props:Props) {\r\n const {suggestions, bulletColor, category} = props;\r\n const classes = useStyles();\r\n\r\n return(\r\n \r\n }>\r\n {category} ({suggestions.length})\r\n \r\n { suggestions.map( (suggestion, index) => \r\n \r\n \r\n \r\n \r\n \r\n {suggestion.title}:\r\n \r\n \r\n { suggestion.displayText } \r\n \r\n } />\r\n \r\n )}\r\n \r\n )\r\n}","import React, { useState } from 'react';\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControl, FormControlLabel, FormGroup, FormLabel, InputLabel, makeStyles, MenuItem, Select, Switch, Tooltip } from \"@material-ui/core\";\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\nimport { WordsPerMinute } from '../sermonAnalyzer';\r\nimport { useBuilder } from '../../useBuilder';\r\nimport { useEditor } from '../../editor/useEditor';\r\nimport { BuilderPreferences } from '../../../../entities/BuilderPreferences';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n mobileSpacing: {\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginTop: \"2em !important\",\r\n },\r\n },\r\n}));\r\n\r\ninterface Props {\r\n openSettings: boolean;\r\n currentWordsPerMinute: number;\r\n closeSettingsDialog: () => void;\r\n setWordsPerMinute: (value:number) => void;\r\n}\r\n\r\nexport function AnalyzerSettingsDialog(props:Props) {\r\n const builder = useBuilder();\r\n const editor = useEditor();\r\n const classes = useStyles();\r\n \r\n const {openSettings, currentWordsPerMinute, closeSettingsDialog, setWordsPerMinute } = props;\r\n const {hideConsecutiveSentences, hideFleschReadingEase, hideParagraphLength, hidePassiveVoice, \r\n hideScriptureSaturation, hideSentenceLength,hideSubheadingDistribution, hideTransitionalWords} = builder.preferences;\r\n\r\n const [ consecutiveSentences, setConsecutiveSentences ] = useState(hideConsecutiveSentences)\r\n const [ fleschReadingEase, setFleschReadingEase ] = useState(hideFleschReadingEase)\r\n const [ paragraphLength, setParagraphLength ] = useState(hideParagraphLength)\r\n const [ passiveVoice, setPassiveVoice ] = useState(hidePassiveVoice)\r\n const [ scriptureSaturation, setScriptureSaturation ] = useState(hideScriptureSaturation)\r\n const [ sentenceLength, setSentenceLength ] = useState(hideSentenceLength)\r\n const [ subheadingDistribution, setSubheadingDistribution ] = useState(hideSubheadingDistribution)\r\n const [ transitionalWords, setTransitionalWords ] = useState(hideTransitionalWords)\r\n\r\n const toggleConsecutiveSentences = () => setConsecutiveSentences(!consecutiveSentences);\r\n const toggleFleschReadingEase = () => setFleschReadingEase(!fleschReadingEase);\r\n const toggleParagraphLength = () => setParagraphLength(!paragraphLength);\r\n const togglePassiveVoice = () => setPassiveVoice(!passiveVoice);\r\n const toggleScriptureSaturation= () => setScriptureSaturation(!scriptureSaturation);\r\n const toggleSentenceLength = () => setSentenceLength(!sentenceLength);\r\n const toggleSubheadingDistribution = () => setSubheadingDistribution(!subheadingDistribution);\r\n const toggleTransitionalWords = () => setTransitionalWords(!transitionalWords);\r\n\r\n const onSaveSettings = () => {\r\n let updatedPreferences:BuilderPreferences = { ...builder.preferences };\r\n updatedPreferences.hideConsecutiveSentences = consecutiveSentences;\r\n updatedPreferences.hideFleschReadingEase = fleschReadingEase;\r\n updatedPreferences.hideParagraphLength = paragraphLength;\r\n updatedPreferences.hidePassiveVoice = passiveVoice;\r\n updatedPreferences.hideScriptureSaturation = scriptureSaturation;\r\n updatedPreferences.hideSentenceLength = sentenceLength;\r\n updatedPreferences.hideSubheadingDistribution = subheadingDistribution;\r\n updatedPreferences.hideTransitionalWords = transitionalWords;\r\n builder.savePreferences(updatedPreferences);\r\n editor.updateAnalyzerResults();\r\n closeSettingsDialog();\r\n }\r\n\r\n return (\r\n \r\n Sermon Analyzer Settings\r\n \r\n \r\n \r\n \r\n Preaching Speed \r\n \r\n\t\t\t\t\r\n \r\n \r\n \r\n \r\n \r\n Text Improvements: \r\n \r\n \r\n \r\n \r\n }\r\n label=\"Consecutive Sentences\"\r\n />\r\n }\r\n label=\"Flesch Reading Ease\"\r\n />\r\n }\r\n label=\"Paragraph Length\"\r\n />\r\n }\r\n label=\"Passive Voice\"\r\n />\r\n \r\n \r\n\r\n }\r\n label=\"Scripture Saturation\"\r\n />\r\n }\r\n label=\"Sentence Length\"\r\n />\r\n }\r\n label=\"Subheading Distribution\"\r\n />\r\n }\r\n label=\"Transitional Words\"\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React, { useState } from \"react\";\r\n\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\n\r\nimport { Button, Divider, Grid, IconButton, ListSubheader, makeStyles, Paper, Tooltip, Typography } from \"@material-ui/core\";\r\n\r\nimport { UnpaidDrawer } from './components/unpaidDrawer';\r\nimport { WritingLogDialog } from './components/writingLogDialog';\r\nimport { AnalyzerTextSuggestionsPanel } from './components/analyzerTextSuggestionsPanel';\r\nimport { AnalyzerSettingsDialog } from './components/analyzerSettingsDialog';\r\n\r\nimport DateHelper from \"../../../utilities/DateHelper\";\r\nimport { useEditor } from '../editor/useEditor';\r\nimport { useBuilder } from '../useBuilder';\r\nimport { EventTracking } from \"../../../utilities/Tracking/EventTracking\";\r\nimport { AddAssetAction } from \"../../../entities/AddAssetAction\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n title: {\r\n paddingTop: 10,\r\n paddingBottom: 7,\r\n textAlign: 'left',\r\n fontSize: 22\r\n },\r\n subtitle: {\r\n paddingBottom: 10,\r\n fontSize: 20,\r\n color: \"#8c8d8f\",\r\n },\r\n dividerLine: {\r\n margin: '5px',\r\n backgroundColor: '#d6d6d6',\r\n height: 2\r\n },\r\n closeIcon: {\r\n float: 'right'\r\n },\r\n settingsTitle: {\r\n paddingTop: theme.spacing(0),\r\n textAlign: \"left\",\r\n fontSize: 15,\r\n textOverflow: \"ellipsis\",\r\n },\r\n settingsIcon: {\r\n float: 'right',\r\n \"&:hover\": {\r\n backgroundColor: \"rgb(145, 145, 145)\"\r\n }\r\n },\r\n textAnalysis: {\r\n paddingBottom: 5,\r\n },\r\n textAnalysisResults: {\r\n color: \"#000\", \r\n fontWeight: 500, \r\n fontSize: '0.9rem' \r\n },\r\n cardHeader: {\r\n paddingTop: 10,\r\n paddingBottom: 7,\r\n paddingLeft: 24,\r\n textAlign: \"left\",\r\n },\r\n cardContent: {\r\n paddingLeft: 24,\r\n textAlign: \"left\",\r\n marginBottom: 10,\r\n },\r\n actionButtons: {\r\n fontSize: 13,\r\n textTransform: 'capitalize'\r\n },\r\n}));\r\n\r\nexport const WordsPerMinute = {\r\n Slow: 70,\r\n Average: 90,\r\n Fast: 110,\r\n}\r\n\r\ninterface Props {\r\n onDrawerToggle: (open: boolean) => void;\r\n};\r\n\r\nexport function SermonAnalyzer(props: Props) {\r\n const { onDrawerToggle } = props\r\n const classes = useStyles();\r\n\r\n const editor = useEditor();\r\n const builder = useBuilder();\r\n const { wordCount, characterCount, improvements, goodResults, keywords, gradeLevel } = editor;\r\n const { builderAsset: { category }, user, writingLogs } = builder;\r\n \r\n const [wordsPerMinute, setWordsPerMinute] = useState(WordsPerMinute.Average);\r\n\r\n const [, setOpen] = useState(false);\r\n const [openAnalyzerSettings, setOpenAnalyzerSettings] = useState(false);\r\n const [openWritingLogs, setOpenWritingLogs] = useState(false)\r\n\r\n const setDrawerToggle = (open: boolean) => {\r\n setOpen(open);\r\n onDrawerToggle(open);\r\n };\r\n\r\n const onToggleWritingLogDialog = () => {\r\n if(!openAnalyzerSettings){\r\n EventTracking.Builder.onOpenWritingLogs(\"Analyzer Drawer Interaction\")\r\n }\r\n setOpenWritingLogs(!openWritingLogs);\r\n }\r\n \r\n const onToggleSettingsDialog = () => {\r\n if(!openAnalyzerSettings){\r\n EventTracking.Builder.onOpenSettings(\"Analyzer Drawer Interaction\")\r\n }\r\n setOpenAnalyzerSettings(!openAnalyzerSettings);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n Sermon Analyzer\r\n setDrawerToggle(false)} className={classes.closeIcon}>\r\n \r\n \r\n \r\n \r\n\r\n { \r\n user && !user.makerSubscription\r\n &&\r\n = 100 ? improvements.length : 0}\r\n />\r\n }\r\n\r\n {\r\n user && user.makerSubscription\r\n &&\r\n <>\r\n \r\n \r\n Customize Analyzer\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n { \r\n category === \"Manuscript\"\r\n && \r\n <>\r\n \r\n
    \r\n Preaching Time\r\n
    \r\n
    \r\n {Math.round(wordCount / wordsPerMinute)} Min\r\n
    \r\n
    \r\n \r\n \r\n }\r\n\r\n { \r\n writingLogs.totalTime > 0\r\n &&\r\n <>\r\n \r\n
    \r\n Writing Time\r\n
    \r\n
    \r\n {DateHelper.timeFromSeconds(writingLogs.totalTime)}\r\n {\r\n writingLogs.writingLogs.slice(0, 3).map((log, index) => {\r\n return {DateHelper.buildDateFormat(new Date(log.logDate))} - {DateHelper.timeFromSeconds(log.logTimeInSeconds)}\r\n })\r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n }\r\n\r\n \r\n
    \r\n Text Analysis\r\n
    \r\n
    \r\n \r\n Words: {wordCount}\r\n \r\n \r\n Characters: {characterCount}\r\n \r\n \r\n Education Level: \r\n \r\n {gradeLevel}\r\n \r\n \r\n \r\n Keywords: { keywords.join(\", \")}\r\n \r\n
    \r\n
    \r\n\r\n { \r\n wordCount >= 100\r\n &&\r\n <>\r\n \r\n \r\n
    \r\n Text Improvements\r\n
    \r\n
    \r\n {\r\n improvements.length > 0\r\n &&\r\n \r\n }\r\n\r\n {\r\n goodResults.length > 0\r\n &&\r\n \r\n }\r\n
    \r\n
    \r\n \r\n }\r\n
    \r\n
    \r\n \r\n }\r\n { openWritingLogs\r\n &&\r\n \r\n }\r\n { openAnalyzerSettings\r\n &&\r\n \r\n }\r\n \r\n )\r\n};","import { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface SubmitFeedbackRequest {\r\n assetId: string;\r\n mode: AssistantMode;\r\n topics: string | undefined;\r\n scriptureReferences: string | undefined;\r\n assistantResponse: string;\r\n feedback: string | undefined;\r\n thumbsUp: boolean | undefined;\r\n}\r\n\r\nexport interface SubmitFeedbackResponse {\r\n success: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nexport enum AssistantMode { \r\n GetStarted = 1,\r\n FeelingStuck = 2,\r\n Analyze = 3,\r\n}\r\n\r\nexport const AssistantService = {\r\n submitFeedback: (request: SubmitFeedbackRequest) => WebClient.Post.Validated(\"api/Assistant/SubmitFeedback\", request),\r\n}\r\n","import {\r\n\tBox,\r\n\tButton, Collapse, Divider,\r\n\tGrid,\r\n\tIconButton,\r\n\tLink,\r\n\tTextField,\r\n\tTypography,\r\n} from \"@material-ui/core\";\r\nimport ThumbUpIcon from \"@material-ui/icons/ThumbUp\";\r\nimport ThumbDownIcon from \"@material-ui/icons/ThumbDown\";\r\nimport React, { useState } from \"react\";\r\nimport { SubmitFeedbackResponse } from \"../../../../services/AssistantService\";\r\n\r\nexport interface Props {\r\n\tresponse: string;\r\n\tresponseComplete: boolean;\r\n\tonSubmit: (feedback?: string, thumbsUp?: boolean) => Promise;\r\n}\r\n\r\nexport function AssistantResponse(props: Props) {\r\n\tconst { response, responseComplete, onSubmit } = props;\r\n\r\n\tconst [feedback, setFeedback] = useState();\r\n\tconst [thumbsUp, setThumbsUp] = useState();\r\n\tconst [feedbackSubmitted, setFeedbackSubmitted] = useState(false);\r\n\tconst [feedbackAccepted, setFeedbackAccepted] = useState(false);\r\n\tconst [feedbackError, setFeedbackError] = useState();\r\n\r\n\tconst feedbackDisabled = feedbackSubmitted || (feedback === undefined && thumbsUp === undefined);\r\n\r\n\tconst updateThumbsUp = (value: boolean) => {\r\n\t\tif (thumbsUp === value) setThumbsUp(undefined);\r\n\t\telse setThumbsUp(value);\r\n\t}\r\n\r\n\tconst submit = async () => {\r\n\t\tsetFeedbackSubmitted(true);\r\n\t\tlet response = await onSubmit(feedback, thumbsUp);\r\n\t\tsetFeedbackAccepted(response.success);\r\n\r\n\t\tif (!response.success) {\r\n\t\t\tsetFeedbackSubmitted(false);\r\n\t\t\tsetFeedbackError(response.errorMessage);\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{response.split(\"\\n\").map((line, index) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{line}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t setFeedback(e.target.value)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t updateThumbsUp(true)}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t updateThumbsUp(false)}\r\n\t\t\t\t\t\t\t\t\t\tstyle={{marginRight: 12}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tShare Feedback\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tUSAGE NOTICE\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSuggestions are generated using AI technology, use with caution. Always fact-check any claims, quotes, or reference to historical facts. Report a problem\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t);\r\n}\r\n","import {\r\n\tButton,\r\n\tInputAdornment, TextField,\r\n\tTypography,\r\n} from \"@material-ui/core\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport React, { useState } from \"react\";\r\nimport { useBuilder } from \"../../useBuilder\";\r\n\r\nexport function AssistantGetStarted(props: {\r\n\tonSubmit: (assetId: string, topics: string, scriptureReferences: string) => void;\r\n}) {\r\n\tconst { onSubmit } = props;\r\n\tconst builder = useBuilder();\r\n\r\n\tconst [topics, setTopics] = useState(\"\");\r\n\tconst [topicError, setTopicError] = useState();\r\n\tconst [scriptureReferences, setScriptureReferences] = useState(\"\");\r\n\tconst [scriptureError, setScriptureError] = useState();\r\n\r\n\tconst submit = () => {\r\n\t\tif (topics.length === 0) {\r\n\t\t\tsetTopicError(\"You must enter at least one topic\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tsetTopicError(undefined);\r\n\t\t}\r\n\r\n\t\tif (scriptureReferences.length === 0) {\r\n\t\t\tsetScriptureError(\"You must enter at least one scripture\");\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\tsetScriptureError(undefined);\r\n\t\t}\r\n\r\n\t\tonSubmit(builder.builderAsset.id, topics, scriptureReferences);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\tNeed help getting started? Enter a Topic and Scripture to get fresh ideas and a preaching plan.\r\n\t\t\t\r\n\r\n\t\t\t setTopics(e.target.value)}\r\n\t\t\t\terror={topicError !== undefined}\r\n\t\t\t\thelperText={topicError}\r\n\t\t\t\tstyle={{ width: \"100%\" }}\r\n\t\t\t\tInputProps={{\r\n\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\tbackgroundColor: \"white\",\r\n\t\t\t\t\t\tmarginTop: 5,\r\n\t\t\t\t\t\tmarginBottom: 5,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstartAdornment: (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t),\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\r\n\t\t\t setScriptureReferences(e.target.value)}\r\n\t\t\t\terror={scriptureError !== undefined}\r\n\t\t\t\thelperText={scriptureError}\r\n\t\t\t\tstyle={{ width: \"100%\" }}\r\n\t\t\t\tInputProps={{\r\n\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\tbackgroundColor: \"white\",\r\n\t\t\t\t\t\tmarginTop: 5,\r\n\t\t\t\t\t\tmarginBottom: 5,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstartAdornment: (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t),\r\n\t\t\t\t}} \r\n\t\t\t/>\r\n\r\n\t\t\t\r\n\t\t\t\tGet ideas for your sermon\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import { Button, Typography } from \"@material-ui/core\";\r\nimport React, { useMemo} from \"react\";\r\nimport { useBuilder } from \"../../useBuilder\";\r\n\r\nexport function AssistantFeelingStuck(props: {\r\n\tonSubmit: (assetId: string) => void;\r\n}) {\r\n\tconst { onSubmit } = props;\r\n\tconst builder = useBuilder();\r\n\r\n\tconst wordCount = useMemo(() => builder.builderAsset.text.replace(/<[^>]*>/g, \" \").replace(/\\s+/g, \" \").trim().split(\" \").length, [builder.builderAsset.text])\r\n\tconst disabled = wordCount < 100;\r\n\tconst buttonText = disabled ? \"100 words required\" : \"Get ideas for my sermon\";\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\tGenerate ideas and suggestions for your sermon.\r\n\t\t\t\r\n\t\t\t onSubmit(builder.builderAsset.id)}\r\n\t\t\t\tvariant=\"contained\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tstyle={{ marginTop: 10, marginBottom: 15 }}\r\n\t\t\t>\r\n\t\t\t\t{buttonText}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import { Button, Typography } from \"@material-ui/core\";\r\nimport React, { useMemo } from \"react\";\r\nimport { useBuilder } from \"../../useBuilder\";\r\n\r\nexport function AssistantAnalyze(props: {\r\n\tonSubmit: (assetId: string) => void;\r\n}) {\r\n\tconst { onSubmit } = props;\r\n\tconst builder = useBuilder();\r\n\r\n\tconst wordCount = useMemo(() => builder.builderAsset.text.replace(/<[^>]*>/g, \" \").replace(/\\s+/g, \" \").trim().split(\" \").length, [builder.builderAsset.text])\r\n\tconst disabled = wordCount < 1000;\r\n\tconst buttonText = disabled ? \"1000 words required\" : \"Get ideas for my sermon\";\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\tAnalyze your completed sermon for tone, structure, and more. You'll get new ideas, small tweaks, and helpful suggestions to make it even better.\r\n\t\t\t\r\n\t\t\t onSubmit(builder.builderAsset.id)}\r\n\t\t\t\tvariant=\"contained\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tstyle={{ marginTop: 10, marginBottom: 15 }}\r\n\t\t\t>\r\n\t\t\t\t{buttonText}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import {\r\n Accordion,\r\n\tAccordionDetails, AccordionSummary, Box, Button,\r\n\tDivider,\r\n\tListItem, ListSubheader, Snackbar,\r\n\tTypography,\r\n makeStyles,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { ExpandMore } from \"@material-ui/icons\";\r\nimport { HubConnection } from \"@microsoft/signalr\";\r\nimport { AssistantResponse } from \"./assistantResponse\";\r\nimport { AssistantMode, AssistantService, SubmitFeedbackRequest, SubmitFeedbackResponse } from \"../../../../services/AssistantService\";\r\nimport { Alert } from \"@material-ui/lab\";\r\nimport { AssistantGetStarted } from \"./assistantGetStarted\";\r\nimport { AssistantFeelingStuck } from \"./assistantFeelingStuck\";\r\nimport { AssistantAnalyze } from \"./assistantAnalyze\";\r\n\r\nexport const DrawerAccordion = withStyles({\r\n\troot: {\r\n\t\tmargin: 0,\r\n\t\tcolor: \"white\",\r\n\t\t\"&$expanded\": {\r\n\t\t\tmargin: 0,\r\n\t\t},\r\n\t},\r\n\texpanded: {},\r\n})(Accordion);\r\n\r\nexport const DrawerSummary = withStyles({\r\n\troot: {\r\n\t\tminHeight: 56,\r\n\t\t\"&:hover\": {\r\n\t\t\tcursor: \"pointer\",\r\n\t\t},\r\n\t\t\"&$expanded\": {\r\n\t\t\tminHeight: 56,\r\n\t\t},\r\n\t},\r\n\tcontent: {\r\n\t\t\"&$expanded\": {\r\n\t\t\tmargin: \"12px 0\",\r\n\t\t},\r\n\t},\r\n\texpanded: {},\r\n})(AccordionSummary);\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n\tpromptDetails: {\r\n\t\tbackgroundColor: \"#EFEFEF\",\r\n\t\tdisplay: \"block\",\r\n\t},\r\n\tresponseDetails: {\r\n\t\tdisplay: \"flex\",\r\n\t\tpadding: 0,\r\n\t},\r\n}));\r\n\r\ninterface FeedbackArgs {\r\n assetId: string;\r\n topics?: string;\r\n scriptureReferences?: string;\r\n}\r\n\r\nexport function AssistantSection(props: {\r\n sectionMode: AssistantMode;\r\n\texpand: boolean;\r\n\tonExpand: () => void;\r\n\thubConnection: HubConnection;\r\n\tresetConnection: () => void;\r\n}) {\r\n\tconst { sectionMode, expand, onExpand, hubConnection, resetConnection } = props;\r\n\tconst classes = useStyles();\r\n const responseEndRef = useRef(null);\r\n\r\n\tconst [mode, setMode] = useState<\"prompt\" | \"response\">(\"prompt\");\r\n\tconst [response, setResponse] = useState(\"\");\r\n\tconst [responseStream, setResponseStream] = useState>();\r\n\tconst [responseComplete, setResponseComplete] = useState(false);\r\n const [cancelled, setCancelled] = useState(false);\r\n const finishedGenerating = responseComplete || cancelled;\r\n\r\n const [alertOpen, setAlertOpen] = useState(false);\r\n\tconst [alertMessage, setAlertMessage] = useState(\"\");\r\n const [feedbackArgs, setFeedbackArgs] = useState();\r\n\r\n let title = \"\";\r\n let sectionColor = \"\";\r\n if (sectionMode === AssistantMode.GetStarted) {\r\n title = \"Need help getting started?\"\r\n sectionColor = \"#5081FF\";\r\n } else if (sectionMode === AssistantMode.FeelingStuck) {\r\n title = \"Feeling stuck & need ideas?\"\r\n sectionColor = \"#4067CA\";\r\n } else if (sectionMode === AssistantMode.Analyze) {\r\n title = \"Sermon done? Let's analyze it.\"\r\n sectionColor = \"#3250A0\";\r\n }\r\n\r\n const scrollToBottom = () => responseEndRef.current?.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n\r\n useEffect(() => {\r\n scrollToBottom();\r\n }, [response])\r\n\r\n\tconst reset = () => {\r\n setResponse(\"\");\r\n setResponseComplete(false);\r\n\t\tsetMode(\"prompt\");\r\n\r\n if (cancelled) {\r\n responseStream?.dispose();\r\n setResponseStream(undefined);\r\n }\r\n\r\n setCancelled(false);\r\n\t};\r\n\r\n const cancelGeneration = () => {\r\n setCancelled(true);\r\n responseStream?.dispose();\r\n setResponseStream(undefined);\r\n resetConnection();\r\n }\r\n\r\n\tconst triggerGeneration = (methodName: string, assetId: string, topics?: string, scriptureReferences?: string) => {\r\n const methodArgs: FeedbackArgs = {assetId, topics, scriptureReferences}\r\n setFeedbackArgs(methodArgs);\r\n\r\n\t\tconst r = hubConnection\r\n\t\t\t.stream(methodName, methodArgs)\r\n\t\t\t.subscribe({\r\n\t\t\t\tnext: (message) => {\r\n\t\t\t\t\tsetResponse((r) => r += message);\r\n\t\t\t\t},\r\n\t\t\t\tcomplete: () => {\r\n\t\t\t\t\tsetResponseStream(undefined);\r\n\t\t\t\t\tsetResponseComplete(true);\r\n setTimeout(() => scrollToBottom(), 1000);\r\n\t\t\t\t},\r\n\t\t\t\terror: (err) => {\r\n\t\t\t\t\tif (err.message) {\r\n\t\t\t\t\t\tconst parts = err.message.split(\"Exception: \");\r\n\t\t\t\t\t\tsetResponse((r) => r + parts[1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tsetResponse(\"An unknown error has occurred\")\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetResponseStream(undefined);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\tsetResponseStream(r);\r\n setMode(\"response\");\r\n\t};\r\n\r\n const triggerAlert = (message: string) => {\r\n\t\tsetAlertMessage(message);\r\n\t\tsetAlertOpen(true);\r\n\t\tsetTimeout(() => setAlertOpen(false), 3000);\r\n\t}\r\n\r\n const submitFeedback = async (feedback: string | undefined, thumbsUp: boolean | undefined): Promise => {\r\n const request: SubmitFeedbackRequest = {\r\n\t\t\tassetId: feedbackArgs!.assetId,\r\n\t\t\tmode: sectionMode,\r\n\t\t\ttopics: feedbackArgs!.topics,\r\n\t\t\tscriptureReferences: feedbackArgs!.scriptureReferences,\r\n\t\t\tassistantResponse: response,\r\n\t\t\tfeedback,\r\n\t\t\tthumbsUp,\r\n\t\t}\r\n\r\n\t\tconst feedbackResponse = await AssistantService.submitFeedback(request);\r\n\t\tif (feedbackResponse.error) {\r\n return { success: false, errorMessage: feedbackResponse.message };\r\n\t\t} else {\r\n\t\t\treturn { success: true }\r\n\t\t}\r\n }\r\n\r\n\treturn (\r\n\t\t<>\r\n \r\n \r\n }\r\n style={{ backgroundColor: sectionColor }}\r\n >\r\n {title}\r\n \r\n\r\n {expand && mode === \"response\" && (\r\n \r\n {finishedGenerating && \r\n <>\r\n {\r\n navigator.clipboard.writeText(response);\r\n triggerAlert(\"Copied to clipboard!\");\r\n }}\r\n color=\"primary\"\r\n style={{ fontSize: 12, paddingBottom: 0 }}\r\n >\r\n Copy To Clipboard\r\n \r\n \r\n Start Over\r\n \r\n \r\n }\r\n {!finishedGenerating &&\r\n \r\n Stop generating\r\n \r\n }\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n \r\n {mode === \"prompt\" && (\r\n <>\r\n {sectionMode === AssistantMode.GetStarted &&\r\n triggerGeneration(\"GenerateSermonIdeas\", assetId, topics, scriptureReferences)} />\r\n }\r\n {sectionMode === AssistantMode.FeelingStuck &&\r\n triggerGeneration(\"GenerateSermonSuggestions\", assetId)} />\r\n }\r\n {sectionMode === AssistantMode.Analyze &&\r\n triggerGeneration(\"GenerateSermonAnalysis\", assetId)} />\r\n }\r\n \r\n )}\r\n\r\n {mode === \"response\" &&\r\n \r\n }\r\n \r\n \r\n\r\n \r\n
    \r\n \r\n \r\n \r\n {alertMessage}\r\n \r\n \r\n \r\n\t);\r\n}\r\n","import {\r\n\tBackdrop,\r\n\tBox,\r\n\tCircularProgress,\r\n\tDivider,\r\n\tIconButton,\r\n\tList,\r\n\tListItem,\r\n\tListSubheader,\r\n\tmakeStyles,\r\n\tTypography,\r\n} from \"@material-ui/core\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\n\r\nimport { EventTracking } from \"../../../../src/utilities/Tracking/EventTracking\";\r\nimport { useBuilderDrawer } from \"./useBuilderDrawer\";\r\nimport { HubConnection, HubConnectionBuilder } from \"@microsoft/signalr\";\r\nimport { AssistantSection } from \"./components/assistantSection\";\r\nimport { AssistantMode } from \"../../../services/AssistantService\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n\ttitle: {\r\n\t\tpadding: \"10px 16px 7px 16px\",\r\n\t\ttextAlign: \"left\",\r\n\t\tfontSize: 22,\r\n\t\tbackgroundColor: \"white\",\r\n\t},\r\n\tsubtitle: {\r\n\t\tfontSize: 12,\r\n\t\tpaddingTop: 10,\r\n\t\tpaddingBottom: 10,\r\n\t\ttextAlign: \"center\",\r\n\t},\r\n\tcloseIcon: {\r\n\t\tfloat: \"right\",\r\n\t},\r\n}));\r\n\r\nexport function Assistant() {\r\n\tconst classes = useStyles();\r\n\tconst builderDrawer = useBuilderDrawer();\r\n\r\n\tconst [expandedSection, setExpandedSection] = useState<\"getStarted\" | \"feelingStuck\" | \"analyze\">();\r\n\tconst [suggestions, setSuggestions] = useState();\r\n\r\n\tconst [hubConnection, setHubConnection] = useState(null);\r\n\r\n\tconst hubConnectionReady = hubConnection !== null && hubConnection.state === \"Connected\";\r\n\r\n\tuseEffect(() => {\r\n\t\tconst connection = new HubConnectionBuilder().withUrl(\"/ai-chat\").withAutomaticReconnect().build();\r\n\t\tconnection.on(\"Message\", (message: string) => {\r\n\t\t\tconsole.log(message);\r\n\t\t});\r\n\t\tsetHubConnection(connection);\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (hubConnection)\r\n\t\t\thubConnection.start()\r\n\t\t\t\t.then(() => console.log(\"Connection started!\"))\r\n\t\t\t\t.catch((err) => console.log(err));\r\n\r\n\t\treturn () => {\r\n\t\t\tif (hubConnection)\r\n\t\t\t\thubConnection.stop()\r\n\t\t\t\t\t.then(() => console.log(\"Connection stopped!\"))\r\n\t\t\t\t\t.catch((err) => console.log(err));\r\n\t\t};\r\n\t}, [hubConnection]);\r\n\r\n\tconst resetConnection = async () => {\r\n\t\tif (hubConnection) {\r\n\t\t\ttry {\r\n\t\t\t\tawait hubConnection.stop();\r\n\t\t\t\tawait hubConnection.start();\r\n\t\t\t\tconsole.log(\"Connection reset!\");\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.log(err);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleSectionClick = (section: \"getStarted\" | \"feelingStuck\" | \"analyze\"): void => {\r\n\t\tif (expandedSection === section) setExpandedSection(undefined);\r\n\t\telse setExpandedSection(section);\r\n\t};\r\n\r\n\tconst onClose = () => {\r\n\t\tEventTracking.Builder.onCloseMainDrawerFromX();\r\n\t\tbuilderDrawer.onMainDrawerChange(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tAI Assistant\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{hubConnectionReady && \r\n\t\t\t\t\t\tHelp to research & prepare your sermon\r\n\t\t\t\t\t}\r\n\t\t\t\t\t{!hubConnectionReady &&\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tConnecting...\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t handleSectionClick(\"getStarted\")}\r\n\t\t\t\t\thubConnection={hubConnection!}\r\n\t\t\t\t\tresetConnection={resetConnection}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t handleSectionClick(\"feelingStuck\")}\r\n\t\t\t\t\thubConnection={hubConnection!}\r\n\t\t\t\t\tresetConnection={resetConnection}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t handleSectionClick(\"analyze\")}\r\n\t\t\t\t\thubConnection={hubConnection!}\r\n\t\t\t\t\tresetConnection={resetConnection}\r\n\t\t\t\t/>\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\n\r\n","\r\nimport classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { BibleSearchSetting } from \"../../../entities/BibleSearchSettings\";\r\nimport { BuilderPreferences } from \"../../../entities/BuilderPreferences\";\r\nimport { DrawerContent } from \"../../../entities/DrawerContent\";\r\nimport { SermonGeniusSearchItem } from \"../../../services/GeniusSearchService\";\r\nimport DateHelper from \"../../../utilities/DateHelper\";\r\nimport { EventTracking } from \"../../../utilities/Tracking/EventTracking\";\r\nimport { useEditor } from \"../editor/useEditor\";\r\nimport { useBuilder } from \"../useBuilder\";\r\nimport { BibleSearch } from \"./bibleSearch\";\r\nimport { BibleSettingsDialog } from \"./components/bibleSettingsDialog\";\r\nimport { DetailsContent } from \"./detailsContent\";\r\nimport { GeniusSearch } from \"./geniusSearch\";\r\nimport {IllustrationSearch} from \"./illustrationSearch\";\r\nimport {SermonSearch} from \"./sermonSearch\";\r\nimport { SlidesContent } from \"./slidesContent\";\r\nimport { SermonAnalyzer } from \"./sermonAnalyzer\";\r\nimport { useBuilderDrawer } from \"./useBuilderDrawer\";\r\nimport { Drawer, makeStyles } from \"@material-ui/core\";\r\nimport { useIsMobile } from \"../../../components/Mui3WidthProvider\";\r\nimport { Assistant } from \"./assistant\";\r\n\r\nconst drawerWidth = 350;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\ttoolbar: theme.mixins.toolbar,\r\n\tdrawer: {\r\n\t\twidth: drawerWidth,\r\n\t\tflexShrink: 0,\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\twidth: \"90%\",\r\n\t\t},\r\n\t},\r\n\tdrawerOpen: {\r\n\t\t[theme.breakpoints.up(\"md\")]: {\r\n\t\t\twidth: drawerWidth,\r\n\t\t\ttransition: theme.transitions.create(\"width\", {\r\n\t\t\t\teasing: theme.transitions.easing.sharp,\r\n\t\t\t\tduration: theme.transitions.duration.enteringScreen,\r\n\t\t\t}),\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\twidth: \"90%\",\r\n\t\t},\r\n\t},\r\n\tdrawerClose: {\r\n\t\t[theme.breakpoints.up(\"md\")]: {\r\n\t\t\twidth: drawerWidth,\r\n\t\t\ttransition: theme.transitions.create(\"width\", {\r\n\t\t\t\teasing: theme.transitions.easing.sharp,\r\n\t\t\t\tduration: theme.transitions.duration.leavingScreen,\r\n\t\t\t}),\r\n\t\t\toverflowX: \"hidden\",\r\n\t\t},\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\topen: boolean;\r\n\tonDrawerToggle: (open: boolean, contentType?: DrawerContent) => void;\r\n\tcontentType?: DrawerContent;\r\n}\r\n\r\nexport function MainDrawer(props: Props) {\r\n\tconst { open: propsOpen } = props;\r\n\tconst editor = useEditor();\r\n\tconst builder = useBuilder();\r\n\tconst builderDrawer = useBuilderDrawer();\r\n\tconst { drawerContent } = builderDrawer;\r\n\tconst classes = useStyles();\r\n\tconst isMobile = useIsMobile();\r\n\r\n\tconst [lastSearch, setLastSearch] = React.useState(\"\");\r\n\tconst [presetSearchText, setPresetSearchText] = React.useState();\r\n\tconst [geniusSearchCounter, setGeniusSearchCounter] = React.useState();\r\n\tconst [translationId, setTranslationId] = React.useState();\r\n\t\r\n\tconst [bibleVerseSearchResult, setBibleVerseSearchResult] = React.useState([]);\r\n\tconst [illustrationSearchResult, setIllustrationSearchResult] = React.useState([]);\r\n\tconst [sermonSearchResult, setSermonSearchResult] = React.useState([]);\r\n\r\n\tconst [settingsDialogOpen, setSettingsDialogOpen] = React.useState(false);\r\n\tconst [open, setOpen] = React.useState(false);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tsetInterval(() => {\r\n\t\t\tif (geniusSearchCounter) {\r\n\t\t\t\tsetLastSearch(`Updated < ${DateHelper.timeSinceDate(geniusSearchCounter)}`);\r\n\t\t\t}\r\n\t\t}, 1000);\r\n\t}, [geniusSearchCounter, setLastSearch]);\r\n\r\n\t// Allow parent changing open on props to update local open state\r\n\tReact.useEffect(() => {\r\n\t\tsetOpen(propsOpen);\r\n\t}, [propsOpen]);\r\n\r\n\t// When drawer content is opened, the editor format bubble needs to be hidden since it's calculated postion will be wrong\r\n\tReact.useEffect(() => {\r\n\t\tif (open) {\r\n\t\t\teditor.hideFormatBubble();\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [open]);\r\n\r\n\tconst updateGeniusResults = (\r\n\t\tverses: SermonGeniusSearchItem[],\r\n\t\tillustrations: SermonGeniusSearchItem[],\r\n\t\tsermons: SermonGeniusSearchItem[],\r\n\t\ttranslationId: string\r\n\t) => {\r\n\t\tconst updatedSearchDate = new Date();\r\n\t\tsetBibleVerseSearchResult(verses);\r\n\t\tsetIllustrationSearchResult(illustrations);\r\n\t\tsetSermonSearchResult(sermons);\r\n\t\tsetGeniusSearchCounter(updatedSearchDate);\r\n\t\tsetLastSearch(`Updated < ${DateHelper.timeSinceDate(updatedSearchDate)}`);\r\n\t\tsetTranslationId(translationId);\r\n\t};\r\n\r\n\tconst removeSermonResult = (id: string) => {\r\n\t\tconst updatedSermons = sermonSearchResult.filter((s) => s.id !== id);\r\n\t\tsetSermonSearchResult(updatedSermons);\r\n\t};\r\n\r\n\tconst removeIllustrationResult = (id: string) => {\r\n\t\tconst updatedIllustrations = illustrationSearchResult.filter((i) => i.id !== id);\r\n\t\tsetIllustrationSearchResult(updatedIllustrations);\r\n\t};\r\n\r\n\tconst saveExploreSettings = (selectedTranslationId: string, selectedCopySetting: BibleSearchSetting, selectedViewSetting: BibleSearchSetting) => {\r\n\t\tsetSettingsDialogOpen(false);\r\n\r\n\t\tlet preferences: BuilderPreferences = {\r\n\t\t\t...builder.preferences,\r\n\t\t\tbibleTranslationId: selectedTranslationId,\r\n\t\t\tbibleSearchCopySetting: selectedCopySetting,\r\n\t\t\tbibleSearchViewSetting: selectedViewSetting,\r\n\t\t};\r\n\t\tbuilder.savePreferences(preferences);\r\n\t};\r\n\r\n\tconst onDrawerToggle = (open: boolean) => {\r\n\t\tprops.onDrawerToggle(open);\r\n\t\tif (!open) {\r\n\t\t\tEventTracking.Builder.onCloseMainDrawerFromX();\r\n\t\t}\r\n\t};\r\n\r\n\tconst onRelatedSearch = (type: DrawerContent, queryText: string) => {\r\n\t\tif (type === DrawerContent.Illustration || type === DrawerContent.Sermon) {\r\n\t\t\tsetPresetSearchText(queryText);\r\n\t\t\t// This used to be in a setState callback before the hooks refactor\r\n\t\t\tprops.onDrawerToggle(true, type);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t{drawerContent === DrawerContent.Analyzer && }\r\n\t\t\t\t{drawerContent === DrawerContent.Slides && }\r\n\t\t\t\t{drawerContent === DrawerContent.Assistant && }\r\n\t\t\t\t{drawerContent === DrawerContent.Genius && \r\n\t\t\t\t\t builder.copyToClipboard(verseContent, \"Verse\")}\r\n\t\t\t\t\t\tonBibleVerseSelected={(selectedScriptureReference) =>\r\n\t\t\t\t\t\t\tbuilder.handleContentDetailSelection({ type: \"Bible Verse\", selectedScriptureReference })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tpreferences={builder.preferences}\r\n\t\t\t\t\t\tonIllustrationSelected={(selectedIllustrationId) =>\r\n\t\t\t\t\t\t\tbuilder.handleContentDetailSelection({ type: \"Illustration\", selectedIllustrationId })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tonCopyIllustration={(illustrationContent) => builder.copyToClipboard(illustrationContent, \"Illustration\")}\r\n\t\t\t\t\t\tonSermonSelected={(selectedSermonId) => builder.handleContentDetailSelection({ type: \"Sermon\", selectedSermonId })}\r\n\t\t\t\t\t\tonCopySermon={(sermonContent) => builder.copyToClipboard(sermonContent, \"Sermon\")}\r\n\t\t\t\t\t\tverses={bibleVerseSearchResult}\r\n\t\t\t\t\t\tillustrations={illustrationSearchResult}\r\n\t\t\t\t\t\tsermons={sermonSearchResult}\r\n\t\t\t\t\t\tonError={builder.setAlert}\r\n\t\t\t\t\t\ttranslationId={translationId}\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t\t{drawerContent === DrawerContent.Details &&\t\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t{drawerContent === DrawerContent.Illustration &&\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\tbuilder.handleContentDetailSelection({ type: \"Illustration\", selectedIllustrationId })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tonCopyIllustration={(illustrationContent) => builder.copyToClipboard(illustrationContent, \"Illustration\")}\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t\t{drawerContent === DrawerContent.Sermon &&\r\n\t\t\t\t\t builder.handleContentDetailSelection({ type: \"Sermon\", selectedSermonId })}\r\n\t\t\t\t\t\tonCopySermon={(sermonContent) => builder.copyToClipboard(sermonContent, \"Sermon\")}\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t\t{drawerContent === DrawerContent.Bible &&\r\n\t\t\t\t\t builder.copyToClipboard(verseContent, \"Verse\")}\r\n\t\t\t\t\t\tonBibleVerseSelected={(selectedScriptureReference) =>\r\n\t\t\t\t\t\t\tbuilder.handleContentDetailSelection({ type: \"Bible Verse\", selectedScriptureReference })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tpreferences={builder.preferences}\r\n\t\t\t\t\t\tonSettingsDialogToggle={() => {\r\n\t\t\t\t\t\t\tsetSettingsDialogOpen(!settingsDialogOpen);\r\n\t\t\t\t\t\t\tif (!settingsDialogOpen) {\r\n\t\t\t\t\t\t\t\tEventTracking.Builder.onOpenSettings(\"Bible Drawer Interaction\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t setSettingsDialogOpen(false)}\r\n\t\t\t\tselectedTranslationId={builder.preferences.bibleTranslationId!}\r\n\t\t\t\tselectedCopySetting={builder.preferences.bibleSearchCopySetting!}\r\n\t\t\t\tselectedViewSetting={builder.preferences.bibleSearchViewSetting!}\r\n\t\t\t\tonSaveSettings={saveExploreSettings}\r\n\t\t\t/>\r\n\t\t\r\n\t);\r\n}","import React from \"react\";\r\n\r\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\r\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\r\nimport { makeStyles, IconButton, Drawer, List, ListItem } from \"@material-ui/core\";\r\n\r\nimport { BuilderAppIconListItems } from \"./BuilderAppIconListItems\";\r\nimport { useOfflineAssets } from '../../../offline/useOfflineAssets'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tfab: {\r\n\t\tposition: \"absolute\",\r\n\t\tbottom: theme.spacing(7),\r\n\t\tright: 0,\r\n\t\tborderRadius: \"50%\",\r\n\t\tpadding: 10,\r\n\t\tbackgroundColor: \"white\",\r\n\t\tboxShadow: \"rgba(60, 64, 67, 0.3) 0px 1px 1px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px\",\r\n\t},\r\n\tandroidIconsDrawer: {\r\n\t\tmarginTop: \"auto\",\r\n\t\tmarginBottom: \"auto\",\r\n\t\tpaddingTop: \"71px\",\r\n\t\tpaddingBottom: \"71px\",\r\n\t\toverflowY: \"scroll\",\r\n\t},\r\n\tiosIconsDrawer: {\r\n\t\tmarginTop: \"auto\",\r\n\t\tmarginBottom: \"auto\",\r\n\t\tpaddingTop: \"71px\",\r\n\t\tpaddingBottom: \"71px\",\r\n\t\toverflowY: \"scroll\",\r\n\t\t[theme.breakpoints.down(\"xs\")]: {\r\n\t\t\tpaddingTop: \"111px\",\r\n\t\t},\r\n\t},\r\n\tcloseDrawerFab: {\r\n\t\tborderRadius: \"50%\",\r\n\t\tpadding: 10,\r\n\t\tbackgroundColor: \"white\",\r\n\t\tboxShadow: \"rgba(60, 64, 67, 0.3) 0px 1px 1px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px\",\r\n\t},\r\n\tlistItem: {\r\n\t\tpaddingRight: theme.spacing(1),\r\n\t\tpaddingLeft: theme.spacing(1),\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tisDrawerOpen: boolean;\r\n\tsetIsDrawerOpen: (open: boolean) => void;\r\n\tisIos: boolean;\r\n}\r\n\r\nexport function MobileBuilderAppSelection(props: Props) {\r\n\tconst classes = useStyles();\r\n\tconst drawerType = props.isIos ? classes.iosIconsDrawer : classes.androidIconsDrawer;\r\n const {onlineMode} = useOfflineAssets()\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{ onlineMode &&\r\n\t\t\t\t props.setIsDrawerOpen(true)} disabled={!onlineMode}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t props.setIsDrawerOpen(false)}\r\n\t\t\t\tPaperProps={{ style: { zIndex: \"unset\" } }}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{props.isDrawerOpen && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t props.setIsDrawerOpen(false)} disabled={!onlineMode}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import React from \"react\";\r\n\r\nimport { CKEditor } from \"../editor/ckeditor/CKEditor\";\r\nimport { TextToSpeechPlayer } from \"../editor/texttospeech/TextToSpeechPlayer\";\r\nimport { useOfflineAssets } from \"../../offline/useOfflineAssets\";\r\nimport { AppBar, Paper, makeStyles } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\teditorToolBar: {\r\n\t\tposition: \"absolute\",\r\n\t\ttop: 70,\r\n\t\tzIndex: theme.zIndex.drawer + 1,\r\n\t},\r\n\tbuilder: {\r\n\t\tposition: \"absolute\",\r\n\t\tright: 0,\r\n\t\tleft: 0,\r\n\t\ttop: 110,\r\n\t\tbottom: 0,\r\n\t\toverflowY: \"hidden\",\r\n\t},\r\n\tcontent: {\r\n\t\tflexGrow: 1,\r\n\t\tpaddingRight: theme.spacing(4),\r\n\t\ttransition: theme.transitions.create(\"margin\", {\r\n\t\t\teasing: theme.transitions.easing.sharp,\r\n\t\t\tduration: theme.transitions.duration.leavingScreen,\r\n\t\t}),\r\n\t\tmarginRight: -48,\r\n\t},\r\n\tcontentShift: {\r\n\t\ttransition: theme.transitions.create(\"margin\", {\r\n\t\t\teasing: theme.transitions.easing.easeOut,\r\n\t\t\tduration: theme.transitions.duration.enteringScreen,\r\n\t\t}),\r\n\t\tmarginRight: 0,\r\n\t},\r\n\teditor: {\r\n\t\theight: \"100%\",\r\n\t},\r\n}));\r\n\r\nexport interface Props {\r\n\tisMobileIconsDrawerOpen: boolean;\r\n}\r\n\r\nexport function IOSBuilderView(props: Props) {\r\n\tconst { onlineMode } = useOfflineAssets();\r\n\tconst classes = useStyles();\r\n\tconst [keyboardActive, setKeyboardActive] = React.useState(false);\r\n\tconst [show, setShow] = React.useState(false);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tfunction onResize() {\r\n\t\t\tsetKeyboardActive(!keyboardActive);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener(\"resize\", onResize);\r\n\t\tlet body = document.getElementsByTagName(\"body\")[0];\r\n\t\tbody.style.position = \"fixed\";\r\n\t\tbody.style.overflow = \"hidden\";\r\n\t\tbody.style.top = \"0\";\r\n\t\tbody.style.bottom = \"0\";\r\n\t\tbody.style.right = \"0\";\r\n\t\tbody.style.left = \"0\";\r\n\r\n\t\tsetShow(true);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"resize\", onResize);\r\n\r\n\t\t\tlet body = document.getElementsByTagName(\"body\")[0];\r\n\t\t\tbody.style.position = \"unset\";\r\n\t\t\tbody.style.overflow = \"unset\";\r\n\t\t\tbody.style.top = \"unset\";\r\n\t\t\tbody.style.bottom = \"unset\";\r\n\t\t\tbody.style.right = \"unset\";\r\n\t\t\tbody.style.left = \"unset\";\r\n\t\t};\r\n\t}, [keyboardActive]);\r\n\r\n\t// The body style must be updated before rendering\r\n\tif (!show) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t\t setTimeout(() => window.scrollTo(0, 0), 150)} elevation={2}>\r\n\t\t\t\t setKeyboardActive(true)}\r\n\t\t\t\t\tonBlur={() => setKeyboardActive(false)}\r\n\t\t\t\t\tstyle={{ paddingBottom: keyboardActive ? \"10000px\" : undefined, paddingRight: props.isMobileIconsDrawerOpen && onlineMode ? 60 : 28 }}\r\n\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import React from \"react\";\r\n\r\nimport { CKEditor } from \"../editor/ckeditor/CKEditor\";\r\nimport { TextToSpeechPlayer } from \"../editor/texttospeech/TextToSpeechPlayer\";\r\nimport { useOfflineAssets } from \"../../offline/useOfflineAssets\";\r\nimport { Paper, AppBar, makeStyles } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tcontent: {\r\n\t\tmarginTop: \"69px\",\r\n\t\ttop: theme.mixins.toolbar.height,\r\n\t\theight: \"calc(100vh - 40px - 69px)\",\r\n\t\toverflow: \"scroll\",\r\n\t\tflexGrow: 1,\r\n\t\t[theme.breakpoints.down(\"sm\")]: {\r\n\t\t\tborderRight: \"1px solid #80808024\",\r\n\t\t},\r\n\t},\r\n\tappBarBottom: {\r\n\t\ttop: \"auto\",\r\n\t\tbottom: \"0px\",\r\n\t},\r\n\tbuilder: {\r\n\t\theight: `calc(100vh - 69px)`,\r\n\t\twidth: \"100%\",\r\n\t\tmargin: \"0 auto\",\r\n\t},\r\n\teditorWrapper: {\r\n\t\theight: \"100%\",\r\n\t},\r\n\teditor: {\r\n\t\theight: \"100%\",\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tisMobileIconsDrawerOpen: boolean;\r\n}\r\n\r\nexport function AndroidBuilderView(props: Props) {\r\n\tconst classes = useStyles();\r\n\tconst { onlineMode } = useOfflineAssets();\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import React, { useState } from \"react\";\r\n\r\nimport {\r\n\tAppBar,\r\n\tIconButton,\r\n\tToolbar,\r\n\tTypography,\r\n\tDrawer,\r\n\tList,\r\n\tListItem,\r\n\tListItemIcon,\r\n\tListItemText,\r\n\tListItemSecondaryAction,\r\n\tPaper,\r\n\tSlide,\r\n\tmakeStyles,\r\n} from \"@material-ui/core\";\r\n\r\nimport CloudOffIcon from \"@material-ui/icons/CheckCircle\";\r\nimport CloudOnIcon from \"@material-ui/icons/CheckCircleOutline\";\r\nimport ArrowBackIos from \"@material-ui/icons/ArrowBackIos\";\r\nimport ArrowForwardIos from \"@material-ui/icons/ArrowForwardIos\";\r\nimport PresentToAllIcon from \"@material-ui/icons/PresentToAll\";\r\nimport MoreVertIcon from \"@material-ui/icons/MoreVert\";\r\nimport PDFIcon from \"@material-ui/icons/PictureAsPdf\";\r\nimport DescriptionIcon from '@material-ui/icons/Description';\r\nimport PresentSlidesIcon from \"@material-ui/icons/Panorama\";\r\nimport CloudDownloadIcon from \"@material-ui/icons/CloudDownload\";\r\nimport PrintIcon from \"@material-ui/icons/Print\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport StarIcon from \"@material-ui/icons/Star\";\r\nimport OfflineIcon from \"@material-ui/icons/CheckCircle\";\r\nimport SaveIcon from \"@material-ui/icons/FavoriteBorder\";\r\nimport { useEditor } from \"../editor/useEditor\";\r\nimport { ExportHtml } from \"../../../utilities/ExportHtml\";\r\nimport { EventTracking, OfflineActionLocation, PrintActions } from \"../../../utilities/Tracking/EventTracking\";\r\nimport { TelemetryService } from \"../../../services/TelemetryService\";\r\nimport { BuilderAppBarAction, useBuilder } from \"../useBuilder\";\r\nimport { MobileBuilderAppSelection } from \"../drawer/apps/MobileBuilderAppSelection\";\r\nimport { IOSBuilderView } from \"./IOSBuilderView\";\r\nimport { AndroidBuilderView } from \"./AndroidBuilderView\";\r\nimport { useOfflineAssets } from \"../../offline/useOfflineAssets\";\r\nimport { BuilderAsset } from \"../../../entities/BuilderAsset\";\r\nimport { BuilderAssetService } from \"../../../services/BuilderAssetService\";\r\nimport { ServerResponse } from \"../../../services/server/OldWebClient\";\r\nimport { exportSlides } from \"../../../utilities/ExportSlides\";\r\nimport { ReactComponent as OneColumn } from \"../../../resources/oneColumn.svg\";\r\nimport { ReactComponent as TwoColumns } from \"../../../resources/twoColumns.svg\";\r\nimport { ReactComponent as ThreeColumns } from \"../../../resources/threeColumns.svg\";\r\nimport PPTIcon from \"../../../resources/file-ppt.png\";\r\nimport { UserAgent } from \"../../../utilities/UserAgent\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tappBar: {\r\n\t\tcolor: \"#6b6b6b\",\r\n\t\tbackground: \"#FFFFFF\",\r\n\t\tzIndex: theme.zIndex.drawer + 1,\r\n\t\tboxShadow: \"unset\",\r\n\t},\r\n\ttoolBar: {\r\n\t\tflex: 1,\r\n\t\talignItems: \"flex-start\",\r\n\t\tmarginTop: \"15px\",\r\n\t},\r\n\ttitle: {\r\n\t\twhiteSpace: \"nowrap\",\r\n\t\toverflow: \"hidden\",\r\n\t\twidth: \"100%\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t},\r\n\tdescription: {\r\n\t\twhiteSpace: \"nowrap\",\r\n\t\toverflow: \"hidden\",\r\n\t\twidth: \"100%\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t},\r\n\tdrawer: {\r\n\t\tmaxWidth: \"100%\",\r\n\t\toverflow: \"hidden\",\r\n\t\ttransform: \"scaleY(1)\",\r\n\t\ttransformOrigin: \"top\",\r\n\t\ttransition: \"transform 0.26s ease\",\r\n\t},\r\n\tdrawerIcons: {\r\n\t\tcolor: \"rgba(0, 0, 0, 0.54)\",\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\ttype: \"ios\" | \"android\";\r\n}\r\nconst currentLocation = \"Navigation Mobile\";\r\n\r\nexport function MobileLayout(props: React.PropsWithChildren) {\r\n\tconst builder = useBuilder();\r\n\tconst { builderAsset, preferences } = builder;\r\n\tconst classes = useStyles();\r\n\tconst editor = useEditor();\r\n\tconst [moreOptionsDrawerIsOpen, setMoreOptionsDrawerIsOpen] = useState(false);\r\n\tconst [isMobileIconsDrawerOpen, setIsMobileIconsDrawerOpen] = useState(false);\r\n\tconst [expandFile, setExpandFile] = useState(false);\r\n\tconst [expandDownload, setExpandDownLoad] = useState(false);\r\n\tconst [expandPresent, setExpandPresent] = useState(false);\r\n\tconst [expandPrint, setExpandPrint] = useState(false);\r\n\tconst [showMainMenu, setShowMainMenu] = useState(true);\r\n\tconst { onlineMode, setAssetOfflineMode } = useOfflineAssets();\r\n\tconst hasSlides = editor.slides.length !== 0;\r\n\r\n\tconst onDownloadSlidePresentation = () => {\r\n\t\texportSlides(builderAsset, editor.slides, preferences);\r\n\t\tlet now = new Date();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_slideexport\", now.toString());\r\n\t\tEventTracking.Builder.onExportSlides(currentLocation);\r\n\t};\r\n\r\n\tconst onDownloadAssetAsPdf = () => {\r\n\t\tBuilderAssetService.downloadAsPdf(builderAsset);\r\n\t\tEventTracking.Builder.onDownloadSermonAsPdf(currentLocation);\r\n\t\tlet now = new Date();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_downloadpdf\", now.toString());\r\n\t};\r\n\r\n\tconst onDownloadAssetAsDocx = () => {\r\n\t\tBuilderAssetService.downloadAsDocx(builderAsset);\r\n\t\tEventTracking.Builder.onDownloadSermonAsDocx(currentLocation);\r\n\t};\r\n\r\n\tconst onPrintAsset = (columns: number, action: PrintActions) => {\r\n\t\tEventTracking.Builder.onPrint(action, currentLocation);\r\n\t\tconst html = editor.getHtml();\r\n\t\tExportHtml.print(html, columns);\r\n\t\tlet now = new Date();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_print\", now.toString());\r\n\t};\r\n\r\n\tconst toggleOfflineAsset = async (location: OfflineActionLocation) => {\r\n\t\tconst response = await setAssetOfflineMode(builderAsset.id, !builderAsset.offlineMode, location);\r\n\t\tif (response) {\r\n\t\t\tbuilder.setBuilderAsset(response);\r\n\t\t\tsetMoreOptionsDrawerIsOpen(false);\r\n\t\t\tbuilder.setAlert(response.offlineMode ? \"Available offline\" : \"No longer available offline\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst toggleStar = async () => {\r\n\t\tconst updatedAsset: BuilderAsset = { ...builderAsset, isStarred: !builderAsset.isStarred };\r\n\t\tlet response = await BuilderAssetService.save(updatedAsset);\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tbuilder.setBuilderAsset(response.data);\r\n\t\t\tsetMoreOptionsDrawerIsOpen(false);\r\n\t\t\tbuilder.setAlert(response.data.isStarred ? \"Star Added\" : \"Star Removed\");\r\n\t\t} else {\r\n\t\t\tbuilder.setAlert(\"Could not update Starred\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst toggleFileDrawer = () => {\r\n\t\tsetShowMainMenu(!showMainMenu);\r\n\t\tsetExpandFile(!expandFile);\r\n\t};\r\n\r\n\tconst togglePrintDrawer = () => {\r\n\t\tsetShowMainMenu(!showMainMenu);\r\n\t\tsetExpandPrint(!expandPrint);\r\n\t};\r\n\r\n\tconst toggleDownloadDrawer = () => {\r\n\t\tsetShowMainMenu(!showMainMenu);\r\n\t\tsetExpandDownLoad(!expandDownload);\r\n\t};\r\n\r\n\tconst togglePresentDrawer = () => {\r\n\t\tsetShowMainMenu(!showMainMenu);\r\n\t\tsetExpandPresent(!expandPresent);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t builder.handleAppBarAction(BuilderAppBarAction.GoBack, currentLocation)}\r\n\t\t\t\t\t\tcolor=\"inherit\"\r\n\t\t\t\t\t\taria-label=\"Menu\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{builderAsset.name}{\" \"}\r\n\t\t\t\t\t\t\t{builderAsset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t- Editing Template\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{!builderAsset.isTemplate ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{onlineMode\r\n\t\t\t\t\t\t\t\t\t\t? editor.saveInProgress\r\n\t\t\t\t\t\t\t\t\t\t\t? \"Saving...\"\r\n\t\t\t\t\t\t\t\t\t\t\t: editor.lastEdit\r\n\t\t\t\t\t\t\t\t\t\t: editor.saveInProgress\r\n\t\t\t\t\t\t\t\t\t\t? \"Saving...\"\r\n\t\t\t\t\t\t\t\t\t\t: editor.lastEdit + \" - Offline Mode\"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{onlineMode ? (\r\n\t\t\t\t\t\t\t\t\tbuilderAsset.offlineMode ? (\r\n\t\t\t\t\t\t\t\t\t\t toggleOfflineAsset(\"App Bar Icon Mobile (Builder)\")}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t toggleOfflineAsset(\"App Bar Icon Mobile (Builder)\")}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tDescription: {builderAsset.templateDescription.length > 0 ? builderAsset.templateDescription : \"No Description\"}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t setMoreOptionsDrawerIsOpen(true)}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t{props.type === \"ios\" ? (\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\t {\r\n\t\t\t\t\tsetMoreOptionsDrawerIsOpen(false);\r\n\t\t\t\t}}\r\n\t\t\t\tclassName={classes.drawer}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\t\t{showMainMenu && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{expandFile && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!builderAsset.isTemplate && (\r\n\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tonlineMode && builder.handleAppBarAction(BuilderAppBarAction.SaveAsTemplate, currentLocation)\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={!onlineMode}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t toggleOfflineAsset(\"3 Dots Mobile (Builder)\")}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{expandPresent && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t builder.handleAppBarAction(BuilderAppBarAction.Present, currentLocation)}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t builder.toggleSlideExportDialog(currentLocation)} disabled={!hasSlides}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{expandDownload && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\"powerpoint\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{expandPrint && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t onPrintAsset(1, \"Quick Print\")}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{UserAgent.getBrowser().name !== \"Safari\" && (\r\n\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t onPrintAsset(1, \"Single Column\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t onPrintAsset(2, \"Two Column\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t onPrintAsset(3, \"Three Column\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import classNames from \"classnames\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { UserAgent } from \"../../../utilities/UserAgent\";\r\nimport { DesktopView } from \"../views/DesktopBuilderView\";\r\nimport { MainDrawer } from \"../drawer/mainDrawer\";\r\nimport { BuilderDrawerContext } from \"../drawer/useBuilderDrawer\";\r\nimport { DrawerContent, toDrawerContent } from \"../../../entities/DrawerContent\";\r\nimport { EventTracking } from \"../../../utilities/Tracking/EventTracking\";\r\nimport { useBuilder } from \"../useBuilder\";\r\nimport { useEditor } from \"../editor/useEditor\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport { MobileLayout } from \"./MobileLayout\";\r\nimport {useOfflineAssets} from '../../offline/useOfflineAssets';\r\nimport { useLocation } from \"react-router\";\r\nimport { useIsMobile } from \"../../../components/Mui3WidthProvider\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\n\r\nconst drawerWidth = 350;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tmoveableContent: {\r\n\t\tdisplay: \"flex\",\r\n\t\tflexGrow: 1,\r\n\t\t[theme.breakpoints.up(\"md\")]: {\r\n\t\t\ttransition: theme.transitions.create(\"margin\", {\r\n\t\t\t\teasing: theme.transitions.easing.sharp,\r\n\t\t\t\tduration: theme.transitions.duration.leavingScreen,\r\n\t\t\t}),\r\n\t\t\tmarginRight: 0,\r\n\t\t},\r\n\t},\r\n\tmoveableContentShift: {\r\n\t\t[theme.breakpoints.up(\"md\")]: {\r\n\t\t\ttransition: theme.transitions.create(\"margin\", {\r\n\t\t\t\teasing: theme.transitions.easing.easeOut,\r\n\t\t\t\tduration: theme.transitions.duration.enteringScreen,\r\n\t\t\t}),\r\n\t\t\tmarginRight: drawerWidth,\r\n\t\t},\r\n\t},\r\n}));\r\n\r\nconst getStoredDrawerOpenState = (preview:boolean, isMobile:boolean): boolean => {\r\n\tif(preview){\r\n\t\treturn !isMobile;\r\n\t}\r\n\r\n\tconst drawerStatus = localStorage.getItem(\"drawerStatus\");\r\n\treturn drawerStatus ? drawerStatus === \"1\" : false;\r\n};\r\n\r\nconst getStoredDrawerContent = (preview:boolean): DrawerContent => {\r\n\tif(preview){\r\n\t\treturn DrawerContent.Slides;\r\n\t}\r\n\tconst drawerContent = localStorage.getItem(\"drawerType\");\r\n\treturn drawerContent ? toDrawerContent(drawerContent) : DrawerContent.Details;\r\n};\r\n\r\nconst geniusBadgeDismisalCheck = (assetId: string) => {\r\n\tconst hideBadgeKey = `sermonGeniusBadge-${assetId}`;\r\n\treturn localStorage.getItem(hideBadgeKey) != null;\r\n};\r\n\r\ninterface Props {\r\n\tonCloseContentDrawer: () => void;\r\n}\r\n\r\nexport function Builder(props: Props) {\r\n\tconst { builderAsset } = useBuilder();\r\n\tconst { wordCount } = useEditor();\r\n\tconst { onlineMode: online } = useOfflineAssets();\r\n\tconst location = useLocation();\r\n\tconst isPreview = location.pathname.includes('builderpreview');\r\n\tconst isMobile = useIsMobile();\r\n\tconst classes = useStyles();\r\n\r\n\tconst [drawerOpen, setMainDrawerOpen] = useState(getStoredDrawerOpenState(isPreview, isMobile));\r\n\tconst [drawerContent, setMainDrawerContent] = useState(getStoredDrawerContent(isPreview));\r\n\r\n\tconst [geniusBadgeDismissed, setGeniusBadgeDismissed] = useState(geniusBadgeDismisalCheck(builderAsset.id));\r\n\tconst [showGeniusBadge, setShowGeniusBadge] = useState(!geniusBadgeDismissed);\r\n\r\n\tuseEffect(() => window.localStorage.setItem(\"drawerStatus\", drawerOpen ? \"1\" : \"0\"), [drawerOpen]);\r\n\tuseEffect(() => window.localStorage.setItem(\"drawerType\", drawerContent), [drawerContent]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!geniusBadgeDismissed) {\r\n\t\t\tsetShowGeniusBadge(wordCount > 100);\r\n\t\t} else {\r\n\t\t\tsetShowGeniusBadge(false);\r\n\t\t}\r\n\t}, [wordCount, geniusBadgeDismissed]);\r\n\r\n\tconst dismissGeniusBadge = () => {\r\n\t\tconst hideBadgeKey = `sermonGeniusBadge-${builderAsset.id}`;\r\n\t\tlocalStorage.setItem(hideBadgeKey, JSON.stringify(true));\r\n\t\tsetGeniusBadgeDismissed(true);\r\n\t};\r\n\r\n\tconst onMainDrawerChange = (open: boolean, contentType?: DrawerContent) => {\r\n\t\tsetMainDrawerOpen(open);\r\n\r\n\t\tif (open) {\r\n\t\t\tprops.onCloseContentDrawer();\r\n\t\t\tif (contentType) {\r\n\t\t\t\tEventTracking.Builder.onDrawerOpen(contentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (contentType) {\r\n\t\t\tsetMainDrawerContent(contentType);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n}\r\n\r\nfunction BuilderView() {\r\n\tconst [iOS] = useState(UserAgent.iOS());\r\n\r\n\tif (iOS) {\r\n\t\treturn ;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import React, { useState, useEffect, useMemo } from \"react\";\r\nimport { RouteComponentProps } from \"react-router\";\r\n\r\nimport { ServerFailed } from \"../errors/serverFailed\";\r\nimport { PageNotFound } from \"../errors/pageNotFound\";\r\n\r\nimport { ServerResponse } from \"../../services/server/OldWebClient\";\r\nimport { BuilderAssetService, SaveBuilderAssetRequest } from \"../../../src/services/BuilderAssetService\";\r\nimport { BuilderPreferenceService } from \"../../../src/services/BuilderPreferenceService\";\r\nimport { TelemetryService } from \"../../../src/services/TelemetryService\";\r\nimport { ShareService } from \"../../services/ShareService\";\r\nimport { AssetWritingLogService } from \"../../services/AssetWritingLogService\";\r\n\r\nimport { BuilderActionLocations, EventTracking } from \"../../../src/utilities/Tracking/EventTracking\";\r\n\r\nimport { BuilderAsset } from \"../../../src/entities/BuilderAsset\";\r\nimport { ApplicationUser } from \"../../../src/entities/ApplicationUser\";\r\nimport AppConfig from \"../../../src/entities/AppConfig\";\r\nimport { BuilderPreferences } from \"../../../src/entities/BuilderPreferences\";\r\nimport {AssetWritingLogs} from \"../../entities/AssetWritingLogs\";\r\n\r\nimport { ContentDrawer } from \"./drawer/contentDrawer\";\r\nimport BuilderSnackbar from \"./editor/BuilderSnackbar\";\r\nimport EditorContext from \"./editor/EditorContext\";\r\nimport { ShareDialog } from \"../../components/ShareDialog/ShareDialog\";\r\nimport { SharingDialog } from \"../../components/SharingDialog/SharingDialog\";\r\nimport { SaveAsTemplateDialog } from \"../../components/SaveAsTemplateDialog\";\r\n\r\nimport { BuilderAppBarAction, BuilderContext, SelectedContent } from \"./useBuilder\";\r\nimport { Builder } from \"./views/Builder\";\r\nimport { UserAgent } from \"../../utilities/UserAgent\";\r\nimport { useOfflineAssets } from \"../offline/useOfflineAssets\";\r\nimport { ExportSlidesModal } from './drawer/components/exportSlidesModal';\r\nimport { FieldValidationError } from \"../../services/server/ServerResponses\";\r\nimport { AddAssetAction } from \"../../entities/AddAssetAction\";\r\nimport { CircularProgress, Typography, Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button } from \"@material-ui/core\";\r\n\r\ninterface Props extends RouteComponentProps<{ id: string }> {\r\n\tuser: ApplicationUser | null;\r\n\tconfig: AppConfig;\r\n\tsermonAsset?: BuilderAsset;\r\n}\r\n\r\nconst defaultPreferences: BuilderPreferences = {\r\n\tbibleTranslationId: \"NIV\",\r\n\tbibleSearchCopySetting: \"all\",\r\n\tbibleSearchViewSetting: \"all\",\r\n\tbuilderExploreDrawerOpen: true,\r\n\tbuilderSlidesDrawerOpen: true,\r\n\thasUploadedSlideImage: false,\r\n\tslideExporterSelectedGalleryImageId: 1,\r\n\tbibleSearchShowVerseNumbers: false,\r\n\thideConsecutiveSentences: false,\r\n\thideFleschReadingEase: false,\r\n\thideParagraphLength: false,\r\n\thidePassiveVoice: false,\r\n\thideScriptureSaturation: false,\r\n\thideSentenceLength: false,\r\n\thideSubheadingDistribution: false,\r\n\thideTransitionalWords: false,\r\n\ttextToSpeechSpeed: 1,\r\n\ttextToSpeechVoice: \"en-US-BenjaminRUS\",\r\n};\r\n\r\nexport function BuilderHome(props: Props) {\r\n\tconst { onlineMode, offlineBuilderAssets } = useOfflineAssets();\r\n\tconst { user, config, match, history, sermonAsset } = props;\r\n\r\n\tconst [selectedAsset, setSelectedAsset] = useState();\r\n\tconst [loading, setLoading] = useState(true);\r\n\tconst [serverFailed, setServerFailed] = useState(false);\r\n\tconst [pageNotFound, setPageNotFound] = useState(false);\r\n\tconst [snackbarOpen, setSnackbarOpen] = useState(false);\r\n\tconst [showExportSlides, setShowExportSlides] = useState(false);\r\n\tconst [snackbarMessage, setSnackbarMessage] = useState(\"\");\r\n\tconst [selectedSermonId, setSelectedSermonId] = useState(undefined);\r\n\tconst [selectedIllustrationId, setSelectedIllustrationId] = useState(undefined);\r\n\tconst [selectedScriptureReference, setSelectedScriptureReference] = useState(undefined);\r\n\tconst [preferences, setPreferences] = useState(defaultPreferences);\r\n\tconst [contentDrawerOpen, setContentDrawerOpen] = useState(false);\r\n\tconst [openShareDialog, setOpenShareDialog] = useState(false);\r\n\tconst [openSaveAsTemplateDialog, setOpenSaveAsTemplateDialog] = useState(false);\r\n\tconst activeMakerSubscription = useMemo(() => user !== null && user.makerSubscription !== undefined, [user]);\r\n\tconst [openUnshareNonPaidDialog, setOpenUnshareNonPaidDialog] = useState(false);\r\n\tconst [shareDialogFromSlides, setShareDialogFromSlides] = useState(false);\r\n\tconst [openNewSharingDialog, setOpenNewSharingDialog] = useState(false);\r\n\tconst [fieldErrors, setFieldErrors] = useState([]);\r\n\tconst [writingLogs, setWritingLogs] = useState({ writingLogs: [], id: \"\", totalTime: 0 });\r\n\tconst [customImageAddedClient64Base, setCustomImageAddedClient64Base] = useState(undefined);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (onlineMode) {\r\n\t\t\tmountComponent();\r\n\t\t} else {\r\n\t\t\tmountOfflineComponent();\r\n\t\t}\r\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tconst mountComponent = async () => {\r\n\t\tdocument.title = \"Sermon Maker - Builder\";\r\n\t\tconst builderAssetId = match.params.id;\r\n\r\n\t\tif(sermonAsset){\r\n\t\t\tsetSelectedAsset(sermonAsset);\r\n\t\t\tsetLoading(false);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst builderAssetResponse = await BuilderAssetService.accessAsset(builderAssetId);\r\n\t\t\tif (ServerResponse.isError(builderAssetResponse)) {\r\n\t\t\t\tif (builderAssetResponse.statusCode === 404) {\r\n\t\t\t\t\tsetPageNotFound(true);\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t}\r\n\t\t\t\tif (builderAssetResponse.statusCode === 500) {\r\n\t\t\t\t\tsetServerFailed(true);\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t} else if (ServerResponse.isModelValidation(builderAssetResponse)) {\r\n\t\t\t\tsetServerFailed(true);\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet builderAsset = builderAssetResponse.data;\r\n\r\n\t\t\tsetSelectedAsset(builderAsset);\r\n\t\t\tsetLoading(false);\r\n\r\n\t\t\tdocument.title = `${builderAsset.name}`;\r\n\t\t} catch {\r\n\t\t\tsetPageNotFound(true);\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet preferencesRequest = await BuilderPreferenceService.getPreferences();\r\n\t\t\tconst writingLogs = await AssetWritingLogService.getAssetWritingLogs(builderAssetId);\r\n\r\n\t\t\tif (ServerResponse.isSuccess(preferencesRequest)) {\r\n\t\t\t\tlet preferences = preferencesRequest.data;\r\n\r\n\t\t\t\tif (preferences.slideExporterSelectedGalleryImageId == null) {\r\n\t\t\t\t\tpreferences.slideExporterSelectedGalleryImageId = 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetPreferences(preferences);\r\n\t\t\t} else if (ServerResponse.isError(preferencesRequest)) {\r\n\t\t\t\tsetBuilderAlert(\"Loading your preferences failed.\");\r\n\t\t\t}\r\n\r\n\t\t\tif (ServerResponse.isSuccess(writingLogs)) {\r\n\t\t\t\tlet logs = writingLogs.data;\r\n\r\n\t\t\t\tif (logs.totalTime !== 0) {\r\n\t\t\t\t\tsetWritingLogs(logs);\r\n\t\t\t\t}\r\n\t\t\t} else if (ServerResponse.isError(writingLogs)) {\r\n\t\t\t\tsetBuilderAlert(\"Writing Logs not available\");\r\n\t\t\t}\r\n\t\t} catch {\r\n\t\t\t// Use default preferences\r\n\t\t}\r\n\r\n\t\tlet now = new Date();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_builder\", now.toString());\r\n\t};\r\n\r\n\tconst mountOfflineComponent = () => {\r\n\t\tdocument.title = \"Sermon Maker - Builder\";\r\n\t\tconst builderAssetId = match.params.id;\r\n\r\n\t\tconst foundLocalAsset = offlineBuilderAssets.find((a) => a.id === builderAssetId);\r\n\t\tsetLoading(false);\r\n\r\n\t\tif (foundLocalAsset === undefined) {\r\n\t\t\tsetPageNotFound(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetSelectedAsset(foundLocalAsset);\r\n\t\tdocument.title = `${foundLocalAsset.name}`;\r\n\t};\r\n\r\n\tconst copyToClipboard = (text: string, nameOfThingCopied: string) => {\r\n\t\tif (!navigator.clipboard) {\r\n\t\t\tsetBuilderAlert(\"Error: It appears your web browser does not support copying.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tnavigator.clipboard.writeText(text);\r\n\t\t\tnotifyClipboardCopy(nameOfThingCopied);\r\n\t\t} catch (err) {\r\n\t\t\tsetBuilderAlert(\"Error: \" + err);\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tconst notifyClipboardCopy = (nameOfThingCopied: string) => {\r\n\t\tlet pasteButton = document.getElementById(\"pasteButton\");\r\n\t\tif (pasteButton) {\r\n\t\t\tpasteButton.classList.add(\"pasteActive\");\r\n\t\t}\r\n\t\tsetBuilderAlert(`${nameOfThingCopied} copied to clipboard`);\r\n\t};\r\n\r\n\tconst closeContentDrawer = () => {\r\n\t\tsetSelectedSermonId(undefined);\r\n\t\tsetSelectedIllustrationId(undefined);\r\n\t\tsetSelectedScriptureReference(undefined);\r\n\t};\r\n\r\n\tconst onSavePreferences = (updatedPreferences: BuilderPreferences) => {\r\n\t\tif (updatedPreferences.slideExporterSelectedGalleryImageId !== preferences.slideExporterSelectedGalleryImageId) {\r\n\t\t\tEventTracking.Builder.onPreferencesChanges(\"Slides\", `Background ${updatedPreferences.slideExporterSelectedGalleryImageId}`);\r\n\t\t}\r\n\r\n\t\tif (updatedPreferences.bibleTranslationId !== preferences.bibleTranslationId) {\r\n\t\t\tEventTracking.Builder.onPreferencesChanges(\"Slides\", `Bible Translation - ${updatedPreferences.bibleTranslationId}`);\r\n\t\t}\r\n\t\tsetPreferences(updatedPreferences);\r\n\t\tBuilderPreferenceService.savePreferences(updatedPreferences);\r\n\t};\r\n\r\n\tconst onRefreshWritingLog = async () => {\r\n\t\tconst asset = selectedAsset;\r\n\t\tif (asset) {\r\n\t\t\tlet result = await AssetWritingLogService.getAssetWritingLogs(asset.id);\r\n\t\t\tif (ServerResponse.isSuccess(result)) {\r\n\t\t\t\tlet logs = result.data;\r\n\r\n\t\t\t\tif (logs.totalTime !== 0) {\r\n\t\t\t\t\tsetWritingLogs(logs);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst onPresent = (location:BuilderActionLocations) => {\r\n\t\tconst asset = selectedAsset;\r\n\t\tif (asset) {\r\n\t\t\tEventTracking.Builder.onPresentSermon(location)\r\n\t\t\thistory.push(`/present/${asset.id}`);\r\n\t\t}\r\n\t};\r\n\r\n\tconst onGoBack = () => {\r\n\t\tif (props.location.state) {\r\n\t\t\thistory.goBack();\r\n\t\t} else {\r\n\t\t\thistory.push(\"/\");\r\n\t\t}\r\n\t};\r\n\r\n\t// const toggleShareBuilderAsset = async (isShared: boolean) => {\r\n\t// \tif (!selectedAsset) {\r\n\t// \t\treturn;\r\n\t// \t}\r\n\r\n\t// \tif (selectedAsset.shareId && !activeMakerSubscription && !isShared) {\r\n\t// \t\tsetOpenUnshareNonPaidDialog(true);\r\n\t// \t\treturn;\r\n\t// \t}\r\n\t// \tconst item = selectedAsset;\r\n\r\n\t// \tif (activeMakerSubscription) {\r\n\t// \t\tif (!item.shareId || isShared) {\r\n\t// \t\t\tawait share(item);\r\n\t// \t\t\tsetOpenShareDialog(true);\r\n\t// \t\t} else {\r\n\t// \t\t\tawait unshare(item);\r\n\t// \t\t}\r\n\t// \t} else {\r\n\t// \t\twindow.location.assign(`https://www.sermonmaker.net/upgrade-now/?upgradePath=share&upgradeAction=${AddAssetAction.ShareAsset}`);\r\n\t// \t}\r\n\t// };\r\n\r\n\t// const share = async (item: BuilderAsset) => {\r\n\t// \tlet shareResponse = await ShareService.share(item.id);\r\n\r\n\t// \tif (ServerResponse.isSuccess(shareResponse)) {\r\n\t// \t\tlet oldItem = selectedAsset;\r\n\r\n\t// \t\tif (oldItem) {\r\n\t// \t\t\toldItem.shareId = shareResponse.data.shareId;\r\n\t// \t\t\toldItem.isShared = shareResponse.data.isShared;\r\n\t// \t\t}\r\n\t// \t} else if (ServerResponse.isError(shareResponse)) {\r\n\t// \t\tsetBuilderAlert(\"Toggling share was unsuccessful. Please try again.\");\r\n\t// \t} else {\r\n\t// \t\tsetBuilderAlert(\"An unknown error occurred. Please try again.\");\r\n\t// \t}\r\n\t// };\r\n\r\n\tconst unshare = async (item: BuilderAsset) => {\r\n\t\tlet shareResponse = await ShareService.unshare(item.id);\r\n\r\n\t\tif (ServerResponse.isSuccess(shareResponse)) {\r\n\t\t\tlet oldItem = selectedAsset;\r\n\r\n\t\t\tif (oldItem) {\r\n\t\t\t\toldItem.shareId = shareResponse.data.shareId;\r\n\t\t\t\toldItem.isShared = shareResponse.data.isShared;\r\n\t\t\t}\r\n\t\t} else if (ServerResponse.isError(shareResponse)) {\r\n\t\t\tsetBuilderAlert(\"Toggling share was unsuccessful. Please try again.\");\r\n\t\t} else {\r\n\t\t\tsetBuilderAlert(\"An unknown error occurred. Please try again.\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleShare = (isSlides: boolean, location:BuilderActionLocations) => {\r\n\t\tEventTracking.Builder.onShare(location);\r\n\t\tif (activeMakerSubscription) {\r\n\t\t\tif (!isSlides && selectedAsset) {\r\n\t\t\t\tsetOpenNewSharingDialog(true);\r\n\t\t\t} else {\r\n\t\t\t\tsetOpenShareDialog(true);\r\n\t\t\t\tsetShareDialogFromSlides(isSlides);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\twindow.location.assign(`https://www.sermonmaker.net/upgrade-now/?upgradePath=share&upgradeAction=${AddAssetAction.ShareAsset}`);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleCustomTemplate = (location:BuilderActionLocations) => {\r\n\t\tEventTracking.Builder.onCustomTemplate(location);\r\n\t\tif (activeMakerSubscription) {\r\n\t\t\tsetOpenSaveAsTemplateDialog(!openSaveAsTemplateDialog);\r\n\t\t} else {\r\n\t\t\twindow.location.assign(\r\n\t\t\t\t`https://www.sermonmaker.net/upgrade-now/?upgradePath=CustomTemplate&upgradeAction=${AddAssetAction.CreateCustomTemplate}`\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateAsset = (isShared: boolean, shareId: string) => {\r\n\t\tsetSelectedAsset({\r\n\t\t\t...selectedAsset!,\r\n\t\t\tshareId: shareId,\r\n\t\t\tisShared: isShared,\r\n\t\t});\r\n\t};\r\n\r\n\tconst onConfirmUnshareNonPaid = async (e: React.FormEvent) => {\r\n\t\te.preventDefault();\r\n\r\n\t\tif (!selectedAsset) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetOpenUnshareNonPaidDialog(false);\r\n\t\tawait unshare(selectedAsset);\r\n\t};\r\n\r\n\tconst onSaveAsTemplateConfirm = async (title: string, desciption?: string) => {\r\n\t\tif (selectedAsset) {\r\n\t\t\tconst asset = await BuilderAssetService.get(selectedAsset!.id);\r\n\r\n\t\t\tif (ServerResponse.isSuccess(asset)) {\r\n\t\t\t\tlet request: SaveBuilderAssetRequest = {\r\n\t\t\t\t\tparentId: asset.data.parentId,\r\n\t\t\t\t\tname: title,\r\n\t\t\t\t\tisStarred: asset.data.isStarred,\r\n\t\t\t\t\tdateAccessed: new Date(),\r\n\t\t\t\t\tcategory: asset.data.category,\r\n\t\t\t\t\ttext: asset.data.text,\r\n\t\t\t\t\tslideCount: asset.data.slideCount,\r\n\t\t\t\t\tisTemplate: true,\r\n\t\t\t\t\ttemplateDescription: desciption ? desciption : \"\",\r\n\t\t\t\t\tslideExporterAspectRatio: asset.data.slideExporterAspectRatio,\r\n\t\t\t\t\tcustomSlideBackgroundImagePath: asset.data.customSlideBackgroundImagePath,\r\n\t\t\t\t\tofflineMode: false,\r\n\t\t\t\t\tlastModifiedFormFactor: UserAgent.getFormFactor(),\r\n\t\t\t\t\tlastModifiedOnOperatingSystem: UserAgent.getOperatingSystem(),\r\n\t\t\t\t};\r\n\t\t\t\tlet response = await BuilderAssetService.saveTemplate(request);\r\n\t\t\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\t\t\tsetOpenSaveAsTemplateDialog(false);\r\n\t\t\t\t\tsetBuilderAlert(\"Template created and can be found in your library\");\r\n\t\t\t\t} else if (ServerResponse.isModelValidation(response)) {\r\n\t\t\t\t\tsetFieldErrors(response.errors);\r\n\t\t\t\t} else if (ServerResponse.isError(response)) {\r\n\t\t\t\t\tsetOpenSaveAsTemplateDialog(false);\r\n\t\t\t\t\tsetBuilderAlert(\"Error: Server error, please try again later.\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleAppBarAction = (action: BuilderAppBarAction, location:BuilderActionLocations) => {\r\n\t\tswitch (action) {\r\n\t\t\tcase BuilderAppBarAction.GoBack:\r\n\t\t\t\treturn onGoBack();\r\n\t\t\tcase BuilderAppBarAction.Present:\r\n\t\t\t\treturn onPresent(location);\r\n\t\t\tcase BuilderAppBarAction.SaveAsTemplate:\r\n\t\t\t\treturn handleCustomTemplate(location);\r\n\t\t\tcase BuilderAppBarAction.Share:\r\n\t\t\t\treturn handleShare(false, location);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleContentDetailSelection = (selectedContent: SelectedContent) => {\r\n\t\tif (selectedContent.type === \"Bible Verse\") {\r\n\t\t\tsetContentDrawerOpen(!contentDrawerOpen);\r\n\t\t\tsetSelectedScriptureReference(selectedContent.selectedScriptureReference);\r\n\t\t} else if (selectedContent.type === \"Illustration\") {\r\n\t\t\tsetContentDrawerOpen(!contentDrawerOpen);\r\n\t\t\tsetSelectedIllustrationId(selectedContent.selectedIllustrationId);\r\n\t\t} else {\r\n\t\t\tsetContentDrawerOpen(!contentDrawerOpen);\r\n\t\t\tsetSelectedSermonId(selectedContent.selectedSermonId);\r\n\t\t}\r\n\t};\r\n\r\n\tconst setBuilderAlert = (message: string) => {\r\n\t\tsetSnackbarMessage(message);\r\n\t\tsetSnackbarOpen(true);\r\n\t};\r\n\r\n\tconst onSlideExport = (location:BuilderActionLocations) => {\r\n\t\tsetShowExportSlides(!showExportSlides);\r\n\t\tEventTracking.Builder.onPresentSlides(location);\r\n\t}\r\n\r\n\tif (pageNotFound) {\r\n\t\treturn ;\r\n\t}\r\n\tif (serverFailed) {\r\n\t\treturn ;\r\n\t}\r\n\r\n\tconst builderAsset = selectedAsset;\r\n\r\n\tif (loading || !builderAsset) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tLoading...\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t setSelectedAsset(a),\r\n\t\t\t\tpreferences,\r\n\t\t\t\tsavePreferences: onSavePreferences,\r\n\t\t\t\tcustomImageBase64Content: customImageAddedClient64Base,\r\n\t\t\t\tsetCustomImageBase64Content: (content) => setCustomImageAddedClient64Base(content),\r\n\t\t\t\thandleAppBarAction: handleAppBarAction,\r\n\t\t\t\thandleContentDetailSelection: handleContentDetailSelection,\r\n\t\t\t\tcopyToClipboard: (content, type) => copyToClipboard(content, type),\r\n\t\t\t\tshowShareDialog: handleShare,\r\n\t\t\t\tsetAlert: setBuilderAlert,\r\n\t\t\t\tappConfig: config,\r\n\t\t\t\tuser: user,\r\n\t\t\t\twritingLogs: writingLogs,\r\n\t\t\t\trefreshWritingLog: onRefreshWritingLog,\r\n\t\t\t\ttoggleSlideExportDialog: onSlideExport,\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{(selectedSermonId || selectedIllustrationId || selectedScriptureReference) && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{selectedAsset && openShareDialog && user && (\r\n\t\t\t\t\t setOpenShareDialog(false)}\r\n\t\t\t\t\t\tisOpen={openShareDialog}\r\n\t\t\t\t\t\tonShareChangeSuccess={(id, isShared, shareId) => updateAsset(isShared, shareId)}\r\n\t\t\t\t\t\tonError={setBuilderAlert}\r\n\t\t\t\t\t\tid={selectedAsset.id}\r\n\t\t\t\t\t\tshareFromSlides={shareDialogFromSlides}\r\n\t\t\t\t\t\tonGiveMessage={setBuilderAlert}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t{selectedAsset && openNewSharingDialog && user && (\r\n\t\t\t\t\t setOpenNewSharingDialog(false)}\r\n\t\t\t\t\t\tisOpen={openNewSharingDialog}\r\n\t\t\t\t\t\tonError={setBuilderAlert}\r\n\t\t\t\t\t\tid={selectedAsset.id}\r\n\t\t\t\t\t\tonGiveMessage={setBuilderAlert}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t{selectedAsset && openSaveAsTemplateDialog && user && (\r\n\t\t\t\t\t setOpenSaveAsTemplateDialog(false)}\r\n\t\t\t\t\t\tisOpen={openSaveAsTemplateDialog}\r\n\t\t\t\t\t\tonSave={onSaveAsTemplateConfirm}\r\n\t\t\t\t\t\terrors={fieldErrors}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t{selectedAsset && (\r\n\t\t\t\t\t setOpenUnshareNonPaidDialog(false)}\r\n\t\t\t\t\t\taria-labelledby=\"unshare-form-dialog-title\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    ) => onConfirmUnshareNonPaid(e)}>\r\n\t\t\t\t\t\t\tConfirm Unshare\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tAs a free user, once you stop sharing this resource, you will not be able to share it again unless you upgrade\r\n\t\t\t\t\t\t\t\t\tyour account. Still want to stop sharing?\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{ showExportSlides &&\r\n\t\t\t\t\t setShowExportSlides(!showExportSlides)}\r\n\t\t\t\t\tassetId={builderAsset.id}\r\n\t\t\t\t\thasCustomImage={builderAsset.customSlideBackgroundImagePath != null}\r\n\t\t\t\t\tdefaultImageId={preferences.slideExporterSelectedGalleryImageId!}\r\n\t\t\t\t\timageAspectRatio={builderAsset.slideExporterAspectRatio ?? \"16x9\"}\r\n\t\t\t\t\tcustomSlideBackgroundImagePath={builderAsset.customSlideBackgroundImagePath}\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t\t setSnackbarOpen(false)} />\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n}","\r\nexport enum ToolbarLocation {\r\n Top = 'Top',\r\n Bottom = 'Bottom'\r\n}\r\n\r\nexport function toToolbarLocation(toolbarLocationValue: string) {\r\n switch(toolbarLocationValue){\r\n case \"Top\": return ToolbarLocation.Top;\r\n case \"Bottom\": return ToolbarLocation.Bottom;\r\n default: return ToolbarLocation.Bottom;\r\n }\r\n}\r\n\r\nexport enum TimeMode {\r\n Clock = 'Clock',\r\n CountDown = 'Count Down',\r\n CountUp = 'Count Up',\r\n None = 'None'\r\n}\r\n\r\nexport default interface PresenterPreferences {\r\n countdownTime: number;\r\n fontSize: number;\r\n timeMode: TimeMode;\r\n timerEnabled: boolean;\r\n toolbarLocation: ToolbarLocation;\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nexport function PresenterClock() {\r\n\tconst [currentTime, setCurrentTime] = useState(new Date());\r\n\r\n\tuseEffect(() => {\r\n\t\tlet clockInterval = setInterval(() => setCurrentTime(new Date()), 1000);\r\n\r\n\t\treturn function cleanup() {\r\n\t\t\tclearInterval(clockInterval);\r\n\t\t};\r\n\t}, [currentTime]);\r\n\r\n\tconst deliverTime = () => {\r\n\t\treturn currentTime.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" });\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{deliverTime()}\r\n\t\t\r\n\t);\r\n}","import { useRef, useEffect } from \"react\";\r\n\r\nexport function usePrevious(value: any) {\r\n\tconst ref = useRef();\r\n\tuseEffect(() => {\r\n\t\tref.current = value;\r\n\t});\r\n\treturn ref.current;\r\n}\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport PlayIcon from \"@material-ui/icons/PlayArrow\";\r\nimport PauseIcon from \"@material-ui/icons/Pause\";\r\nimport SettingsIcon from \"@material-ui/icons/Settings\";\r\n\r\nimport { PresenterClock } from \"./PresenterClock\";\r\nimport { GTag } from \"../../utilities/Tracking/GoogleAnalytics\";\r\nimport { ToolbarLocation, TimeMode } from \"../../entities/PresenterPreferences\";\r\nimport { usePrevious } from \"../../utilities/UsePreviousHook\";\r\nimport { Grid, Paper, IconButton, Typography, LinearProgress, makeStyles } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tpresenterToolBarWrapper: {\r\n\t\tposition: \"fixed\",\r\n\t\twidth: \"400px\",\r\n\t\tmarginLeft: \"-200px\",\r\n\t\tleft: \"50%\",\r\n\t},\r\n\tpresenterToolBarBottom: {\r\n\t\tbottom: 0,\r\n\t},\r\n\tpresenterToolBarTop: {\r\n\t\ttop: 0,\r\n\t},\r\n\tpresenterToolBar: {\r\n\t\t[theme.breakpoints.up(\"sm\")]: {\r\n\t\t\tmargin: theme.spacing(2),\r\n\t\t},\r\n\t\tbackgroundColor: \"rgba(0, 0, 0, 0.85)\",\r\n\t\tcolor: \"white\",\r\n\t},\r\n\tpresenterToolBarDetails: {\r\n\t\tpadding: 5,\r\n\t},\r\n\ttimeDisplay: {\r\n\t\tpaddingLeft: theme.spacing(2),\r\n\t\tpaddingRight: theme.spacing(2),\r\n\t},\r\n\ttimerProgressBar: {\r\n\t\tbackgroundColor: \"rgba(0, 0, 0, 0.0)\",\r\n\t}\r\n}));\r\n\r\nexport interface Props{\r\n\tbarLocation: ToolbarLocation;\r\n\ttimeMode: string;\r\n\ttimeLimit: number;\r\n\ttoggleDrawer: () => void;\r\n}\r\n\r\nexport interface State {\r\n\ttimeMode: string;\r\n\ttimeLimit: number;\r\n\ttimerStartSecond: number;\r\n\ttimerStartTime?: Date;\r\n\ttimerDisplaySecond: number;\r\n\ttimerProgressPercent: number;\r\n}\r\n\r\nexport function PresenterToolBar(props: Props) {\r\n\tconst [timeMode, setTimeMode] = useState(props.timeMode);\r\n\tconst [timeLimit, setTimeLimit] = useState(props.timeLimit);\r\n\tconst [timerStartSecond, setTimerStartSecond] = useState(props.timeLimit * 60);\r\n\tconst [timerDisplaySecond, setTimerDisplaySecond] = useState(props.timeLimit * 60);\r\n\tconst [timerProgressPercent, setTimerProgressPercent] = useState(0);\r\n\tconst [isTimerOn, setIsTimerOn] = useState(false);\r\n\r\n\tconst prevTimeMode = usePrevious(timeMode);\r\n\tconst prevTimeLimit = usePrevious(timeLimit);\r\n\r\n\tconst timerIntervalRef = useRef();\r\n\tconst timerStartTimeRef = useRef();\r\n\r\n\tconst classes = useStyles();\r\n\tconst barStyling = `${classes.presenterToolBarWrapper} ${\r\n\t\tprops.barLocation === ToolbarLocation.Top ? classes.presenterToolBarTop : classes.presenterToolBarBottom\r\n\t}`;\r\n\r\n\tuseEffect(() => {\r\n\t\tif (props.timeMode !== timeMode || (props.timeMode === TimeMode.CountDown && props.timeLimit !== timeLimit)) {\r\n\t\t\tsetTimeMode(props.timeMode);\r\n\t\t\tsetTimeLimit(props.timeLimit);\r\n\t\t}\r\n\t}, [props.timeMode, timeMode, props.timeLimit, timeLimit]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (prevTimeMode !== props.timeMode || (prevTimeMode === TimeMode.CountDown && prevTimeLimit !== props.timeLimit)) {\r\n\t\t\tupdateSettings(props.timeMode, props.timeLimit);\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [prevTimeLimit, prevTimeMode, props.timeLimit, props.timeMode]);\r\n\r\n\tconst onStartTimer = () => {\r\n\t\tsetIsTimerOn(true);\r\n\t\tclearInterval(timerIntervalRef.current!);\r\n\t\ttimerStartTimeRef.current = new Date();\r\n\r\n\t\tconst intervalId = setInterval(() => {\r\n\t\t\tconst timeElapsedInSeconds = calculateTimerElapsedDurationInSeconds();\r\n\t\t\tconst displaySeconds =\r\n\t\t\t\ttimeMode === TimeMode.CountDown ? timerStartSecond - timeElapsedInSeconds : timerStartSecond + timeElapsedInSeconds;\r\n\t\t\tconst progressPercent = timeMode === TimeMode.CountDown ? getTimerProgressPercent(timeLimit, displaySeconds) : 0;\r\n\t\t\tsetTimerDisplaySecond(displaySeconds);\r\n\t\t\tsetTimerProgressPercent(progressPercent);\r\n\t\t}, 1000);\r\n\t\ttimerIntervalRef.current = intervalId;\r\n\t\tGTag.event(\"Timer Interaction\", { event_category: \"Presenter\", event_label: \"Started\" });\r\n\t};\r\n\r\n\tconst onPauseTimer = () => {\r\n\t\tsetIsTimerOn(false);\r\n\t\tGTag.event(\"Timer Interaction\", { event_category: \"Presenter\", event_label: \"Paused\" });\r\n\t\tclearInterval(timerIntervalRef.current!);\r\n\t\tsetTimerStartSecond(timerDisplaySecond);\r\n\t};\r\n\r\n\tconst calculateTimerElapsedDurationInSeconds = (): number => {\r\n\t\tif (timerStartTimeRef.current !== undefined) {\r\n\t\t\treturn Math.trunc(Math.abs((new Date().getTime() - timerStartTimeRef.current.getTime()) / 1000));\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getTimerProgressPercent = (timeLimit: number, timerDisplaySecond: number) => {\r\n\t\treturn Math.ceil(((timeLimit * 60 - timerDisplaySecond) / (timeLimit * 60)) * 100 * 100) / 100;\r\n\t};\r\n\r\n\tconst updateSettings = (timeMode: string, timeLimit: number) => {\r\n\t\tonPauseTimer();\r\n\t\tsetTimeMode(timeMode);\r\n\t\tsetTimeLimit(timeLimit);\r\n\t\tsetTimerStartSecond(timeMode === TimeMode.CountDown ? timeLimit * 60 : 0);\r\n\t\tsetTimerDisplaySecond(timeMode === TimeMode.CountDown ? timeLimit * 60 : 0);\r\n\t\tsetTimerProgressPercent(0);\r\n\t};\r\n\r\n\tconst displayTimer = (seconds: number): string => {\r\n\t\tlet isNegative: boolean = seconds < 0;\r\n\t\tlet sec = Math.abs(seconds);\r\n\t\tconst minutes = Math.floor(sec / 60);\r\n\t\tconst remainderSeconds = sec % 60;\r\n\t\tconst displayMinutes = minutes < 10 ? `0${minutes}` : `${minutes}`;\r\n\t\tconst displaySeconds = remainderSeconds < 10 ? `0${remainderSeconds}` : `${remainderSeconds}`;\r\n\r\n\t\treturn `${isNegative ? \"-\" : \"\"}${displayMinutes}:${displaySeconds}`;\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tisTimerOn ? onPauseTimer() : onStartTimer();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdisabled={timeMode === TimeMode.Clock}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{isTimerOn ? : }\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{timeMode !== TimeMode.Clock && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{displayTimer(timerDisplaySecond)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{timeMode === TimeMode.Clock && }\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t{timeMode === TimeMode.CountDown && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport { AppBar, Toolbar, IconButton, Hidden, Typography, Grid, Popover, makeStyles } from \"@material-ui/core\";\r\nimport ZoomInIcon from \"@material-ui/icons/ZoomIn\";\r\nimport ArrowBack from \"@material-ui/icons/ArrowBackIos\";\r\nimport AddIcon from \"@material-ui/icons/Add\";\r\nimport RemoveIcon from \"@material-ui/icons/Remove\";\r\n\r\nimport { UserAvatar } from \"../../components/UserAvatar\";\r\nimport { ApplicationUser } from \"../../entities/ApplicationUser\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tcontainer: {\r\n\t\tbackground: \"#efefef\",\r\n\t},\r\n\tappBar: {\r\n\t\tcolor: \"#6b6b6b\",\r\n\t\tbackground: \"#FFFFFF\",\r\n\t\tboxShadow: \"unset\",\r\n\t\tpaddingTop: \"4px\",\r\n\t},\r\n\tgrow: {\r\n\t\tflex: 1,\r\n\t},\r\n\tfontSizingWrapper: {\r\n\t\tdisplay: \"flex\",\r\n\t\tpadding: \"7px 15px\",\r\n\t},\r\n\tfontPrecentage: {\r\n\t\tpadding: \"5px 10px\",\r\n\t\tfontWeight: \"bolder\",\r\n\t},\r\n\tbuttonIcon: {\r\n\t\tpadding: 5,\r\n\t},\r\n\ttitle: {\r\n\t\twhiteSpace: \"nowrap\",\r\n\t\toverflow: \"hidden\",\r\n\t\twidth: \"100%\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t},\r\n\ttimerIcon: {\r\n\t\tcolor: \"#FFF\",\r\n\t\tfontSize: 25,\r\n\t\tpaddingTop: 3,\r\n\t},\r\n\tpopOverContainer: {\r\n\t\tpaddingRight: 15,\r\n\t\theight: \"40px\",\r\n\t},\r\n\tmr15: {\r\n\t\tmarginRight: 15,\r\n\t},\r\n\thiddenTitleContainerMdUp: {\r\n\t\tflexGrow: 1,\r\n\t\twidth: \"50%\",\r\n\t},\r\n\thiddenTitleContainerMdDown: {\r\n\t\tflexGrow: 1,\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tonSignOut: () => void;\r\n\tonSignIn: (user: ApplicationUser) => void;\r\n\tsetAnchorElFont: (anchorElFont: HTMLElement | undefined) => void;\r\n\tincreaseFontSize: (e: React.MouseEvent) => void;\r\n\tdecreaseFontSize: (e: React.MouseEvent) => void;\r\n\tonGoBack: () => void;\r\n\tuser: ApplicationUser;\r\n\ttitle: string;\r\n\tanchorElFont: HTMLElement | undefined;\r\n\tfontSize: number;\r\n}\r\n\r\nexport function PresenterAppBar(props: Props) {\r\n\tconst { title, anchorElFont, fontSize } = props;\r\n\tconst { setAnchorElFont, decreaseFontSize, increaseFontSize, onGoBack } = props;\r\n\tconst classes = useStyles();\r\n\r\n\tconst getFontSizeAsPercent = (fontSize: number) => {\r\n\t\treturn `${Math.floor((fontSize / 20) * 100)}%`;\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t setAnchorElFont(e.currentTarget)} color=\"inherit\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setAnchorElFont(undefined)}\r\n\t\t\t\t\t\t\tanchorOrigin={{\r\n\t\t\t\t\t\t\t\tvertical: \"bottom\",\r\n\t\t\t\t\t\t\t\thorizontal: \"center\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\ttransformOrigin={{\r\n\t\t\t\t\t\t\t\tvertical: \"top\",\r\n\t\t\t\t\t\t\t\thorizontal: \"center\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t decreaseFontSize(e)}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{getFontSizeAsPercent(fontSize)}\r\n\t\t\t\t\t\t\t\t increaseFontSize(e)}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import { WebClient } from \"./server/WebClient\";\r\nimport PresenterPreferences from '../../src/entities/PresenterPreferences';\r\n\r\nexport const PresenterPreferencesService = {\r\n get: () => WebClient.Get('api/PresenterPreferences/GetPresenterPreferences'), \r\n save: (preferences: PresenterPreferences) => WebClient.Post.Validated(`api/PresenterPreferences/SavePresenterPreferences/`, preferences)\r\n}","import React from \"react\";\r\nimport { RouteComponentProps } from \"react-router\";\r\n\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport ReplayIcon from \"@material-ui/icons/Replay\";\r\nimport TimerIcon from \"@material-ui/icons/Timer\";\r\n\r\nimport { PresenterToolBar } from \"./PresenterToolBar\";\r\nimport { PageNotFound } from \"../errors/pageNotFound\";\r\nimport { ServerFailed } from \"../errors/serverFailed\";\r\n\r\nimport { BuilderAssetService } from \"../../services/BuilderAssetService\";\r\nimport { ServerResponse } from \"../../services/server/OldWebClient\";\r\nimport { PresenterAppBar } from \"./PresenterAppBar\";\r\n\r\nimport PresenterPreferences, { TimeMode, ToolbarLocation, toToolbarLocation } from \"../../entities/PresenterPreferences\";\r\nimport { PresenterPreferencesService } from \"../../services/PresenterPreferencesService\";\r\nimport { ApplicationUser } from \"../../entities/ApplicationUser\";\r\nimport AppConfig from \"../../entities/AppConfig\";\r\nimport { TelemetryService } from \"../../services/TelemetryService\";\r\nimport { useAppConfig } from \"../../utilities/useAppConfig\";\r\nimport { useUser } from \"../../utilities/useUser\";\r\nimport { useAuthenticatedUser } from \"../../utilities/useAuthenticatedUser\";\r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { useOfflineAssets } from \"../offline/useOfflineAssets\";\r\nimport { useLocalStorage } from \"../../utilities/useLocalStorage\";\r\nimport { useOfflineStatus } from \"../../utilities/useOfflineStatus\";\r\nimport { EditorHelper } from \"../builder/editor/EditorHelper\";\r\nimport { ServerError, ValidationError, SuccessResult } from \"../../services/server/ServerResponses\";\r\nimport { makeStyles, LinearProgress, Drawer, List, FormControl, FormLabel, RadioGroup, FormControlLabel, Radio, Divider, TextField, Button, Grid, Paper, CircularProgress, Typography, Snackbar, IconButton } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\tcontainer: {\r\n\t\tbackground: \"#efefef\",\r\n\t\tlineHeight: \"1.75em\",\r\n\t},\r\n\tprogressBar: {\r\n\t\tposition: \"fixed\",\r\n\t\ttop: 0,\r\n\t\tleft: 0,\r\n\t\twidth: \"100%\",\r\n\t\theight: 7,\r\n\t},\r\n\tappBar: {\r\n\t\tcolor: \"#6b6b6b\",\r\n\t\tbackground: \"#FFFFFF\",\r\n\t\tboxShadow: \"unset\",\r\n\t\tpaddingTop: \"4px\",\r\n\t},\r\n\tsermonContent: {\r\n\t\t[theme.breakpoints.up(\"sm\")]: {\r\n\t\t\tmargin: theme.spacing(4),\r\n\t\t\tmarginBottom: theme.spacing(12),\r\n\t\t\tpadding: theme.spacing(4),\r\n\t\t},\r\n\t\t[theme.breakpoints.down(\"xs\")]: {\r\n\t\t\tpaddingLeft: theme.spacing(2),\r\n\t\t\tpaddingRight: theme.spacing(2),\r\n\t\t\tmarginBottom: 65,\r\n\t\t\tmarginTop: 10,\r\n\t\t\twidth: \"100%\",\r\n\t\t\toverflowWrap: \"break-word\",\r\n\t\t},\r\n\t},\r\n\tgrow: {\r\n\t\tflex: 1,\r\n\t},\r\n\tsettingsListing: {\r\n\t\twidth: 250,\r\n\t},\r\n\tnested: {\r\n\t\tpaddingLeft: theme.spacing(4),\r\n\t},\r\n\tformControl: {\r\n\t\tmargin: theme.spacing(3),\r\n\t},\r\n\tgroup: {\r\n\t\tmargin: `${theme.spacing()}px 0`,\r\n\t},\r\n\tnoMargin: {\r\n\t\tmargin: 0,\r\n\t},\r\n\ttextField: {\r\n\t\tmarginLeft: theme.spacing(0),\r\n\t\tmarginRight: theme.spacing(0),\r\n\t},\r\n\tresetButton: {\r\n\t\tmargin: \"15px auto\",\r\n\t},\r\n\tfontSizingWrapper: {\r\n\t\tdisplay: \"flex\",\r\n\t\tpadding: \"7px 15px\",\r\n\t},\r\n\tfontPrecentage: {\r\n\t\tpadding: \"5px 10px\",\r\n\t\tfontWeight: \"bolder\",\r\n\t},\r\n\tbuttonIcon: {\r\n\t\tpadding: 5,\r\n\t},\r\n\ttitle: {\r\n\t\twhiteSpace: \"nowrap\",\r\n\t\toverflow: \"hidden\",\r\n\t\twidth: \"100%\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t},\r\n\ttimerIcon: {\r\n\t\tcolor: \"#FFF\",\r\n\t\tfontSize: 25,\r\n\t\tpaddingTop: 3,\r\n\t},\r\n\ttimerIconWrapper: {\r\n\t\tposition: \"fixed\",\r\n\t\tright: 0,\r\n\t\ttop: \"10%\",\r\n\t\tpadding: 5,\r\n\t\tbackgroundColor: \"#666\",\r\n\t\tborderTopLeftRadius: 3,\r\n\t\tborderBottomLeftRadius: 3,\r\n\t\tcursor: \"pointer\",\r\n\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\topacity: 1,\r\n\t\t\"&:hover\": {\r\n\t\t\topacity: 0.7,\r\n\t\t\ttransition: \"all 0.3s ease 0s\",\r\n\t\t},\r\n\t},\r\n\t\"@global\": {\r\n\t\tblockquote: {\r\n\t\t\toverflow: \"hidden\",\r\n\t\t\tpaddingRight: \"1.5em\",\r\n\t\t\tpaddingLeft: \"1.5em\",\r\n\t\t\tmarginLeft: 0,\r\n\t\t\tfontStyle: \"italic\",\r\n\t\t\tborderLeft: \"5px solid #ccc\",\r\n\t\t},\r\n\t\th1: {\r\n\t\t\tlineHeight: \"1.4em\",\r\n\t\t},\r\n\t\th2: {\r\n\t\t\tlineHeight: \"1.4em\",\r\n\t\t},\r\n\t},\r\n}));\r\n\r\ninterface Params {\r\n\tid: string;\r\n}\r\n\r\ninterface Props extends RouteComponentProps {\r\n\tonSignOut: () => void;\r\n\tonSignIn: (user: ApplicationUser) => void;\r\n\tuser: ApplicationUser;\r\n\tconfig: AppConfig;\r\n\tgetBuilderAsset: () => Promise | ServerError>;\r\n\tgetPresenterPreferences: () => Promise | ServerError>;\r\n\tsavePresenterPreferences: (\r\n\t\tprefs: PresenterPreferences\r\n\t) => Promise | ValidationError>;\r\n}\r\n\r\ntype PropsWithClasses = Props & { classes: ReturnType };\r\n\r\ntype State = {\r\n\tloading: boolean;\r\n\tpageNotFound: boolean;\r\n\tserverFailed: boolean;\r\n\tsnackbarMessage: string;\r\n\tsnackbarOpen: boolean;\r\n\tscrollProgress: number;\r\n\ttitle: string;\r\n\tbody: string;\r\n\tisFullScreen: boolean;\r\n\tsettingsOpen: boolean;\r\n\tsettingsBarPlacementListOpen: boolean;\r\n\tcountdownTime: number;\r\n\tfontSize: number;\r\n\ttimeMode: TimeMode;\r\n\ttimerEnabled: boolean;\r\n\ttoolbarLocation: ToolbarLocation;\r\n\treset: number;\r\n\tanchorElFont?: HTMLElement;\r\n};\r\n\r\nclass HomeComponent extends React.Component {\r\n\tconstructor(props:PropsWithClasses) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tloading: true,\r\n\t\t\tserverFailed: false,\r\n\t\t\tpageNotFound: false,\r\n\t\t\tsnackbarMessage: \"\",\r\n\t\t\tsnackbarOpen: false,\r\n\t\t\tscrollProgress: 0,\r\n\t\t\ttitle: \"\",\r\n\t\t\tbody: \"\",\r\n\t\t\tisFullScreen: false,\r\n\t\t\tsettingsOpen: false,\r\n\t\t\tsettingsBarPlacementListOpen: false,\r\n\t\t\tcountdownTime: 30,\r\n\t\t\tfontSize: 20,\r\n\t\t\ttimeMode: TimeMode.CountDown,\r\n\t\t\ttimerEnabled: true,\r\n\t\t\ttoolbarLocation: ToolbarLocation.Bottom,\r\n\t\t\treset: 0,\r\n\t\t};\r\n\t}\r\n\r\n\tasync componentDidMount() {\r\n\t\tdocument.title = \"Sermon Maker - Presenter\";\r\n\r\n\t\tconst builderAssetResponse = await this.props.getBuilderAsset();\r\n\t\tif (ServerResponse.isError(builderAssetResponse)) {\r\n\t\t\tif (builderAssetResponse.statusCode === 404) {\r\n\t\t\t\tthis.setState({ pageNotFound: true, loading: false });\r\n\t\t\t}\r\n\t\t\tif (builderAssetResponse.statusCode === 500) {\r\n\t\t\t\tthis.setState({ serverFailed: true, loading: false });\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst builderAsset = builderAssetResponse.data;\r\n\t\tdocument.title = `${builderAsset.name}`;\r\n\t\tthis.setState({ body: builderAsset.text, title: `${builderAsset.name}`, loading: false });\r\n\r\n\t\tlet presenterPreferencesResponse = await this.props.getPresenterPreferences();\r\n\t\tif (ServerResponse.isError(presenterPreferencesResponse)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tsnackbarOpen: true,\r\n\t\t\t\tsnackbarMessage: \"Loading your preferences failed. Please try again.\",\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst preferences = presenterPreferencesResponse.data;\r\n\t\tthis.setState({\r\n\t\t\tcountdownTime: preferences.countdownTime ? preferences.countdownTime : this.state.countdownTime,\r\n\t\t\tfontSize: preferences.fontSize ? preferences.fontSize : this.state.fontSize,\r\n\t\t\ttimeMode: preferences.timeMode ? preferences.timeMode : this.state.timeMode,\r\n\t\t\ttimerEnabled: preferences.timerEnabled ? preferences.timerEnabled : this.state.timerEnabled,\r\n\t\t\ttoolbarLocation: preferences.toolbarLocation ? preferences.toolbarLocation : this.state.toolbarLocation,\r\n\t\t});\r\n\r\n\t\twindow.onscroll = this.updateScrollProgress;\r\n\t\tdocument.body.onscroll = this.updateScrollProgress;\r\n\r\n\t\tlet now = new Date();\r\n\t\tTelemetryService.updateContactField(\"sc_cloud_presenter\", now.toString());\r\n\t}\r\n\r\n\tcomponentDidUpdate() {\r\n\t\tvar contentContainer = document.getElementById(\"editor-content-container\");\r\n\t\tif (contentContainer?.firstChild !== null) {\r\n\t\t\tEditorHelper.getEditorSlides();\r\n\t\t}\r\n\t}\r\n\r\n\thtmlStringToElement(html: string) {\r\n\t\tvar template = document.createElement(\"template\");\r\n\t\ttemplate.innerHTML = html;\r\n\t\treturn template.content.childNodes;\r\n\t}\r\n\r\n\tsetAnchorElFont = (anchorElFont: HTMLElement | undefined) => {\r\n\t\tthis.setState({\r\n\t\t\tanchorElFont,\r\n\t\t});\r\n\t};\r\n\r\n\tupdateScrollProgress = () => {\r\n\t\tconst element = document.querySelector(\"#content\");\r\n\t\tif (element && document.documentElement && document.body) {\r\n\t\t\tconst innerHeight = window.innerHeight;\r\n\t\t\tconst rect = element.getBoundingClientRect();\r\n\t\t\tconst rectHtmlHeight = rect.height;\r\n\t\t\tconst scrollRange = Math.ceil(rectHtmlHeight - innerHeight);\r\n\t\t\tconst scrollY = document.documentElement.scrollTop || document.body.scrollTop;\r\n\t\t\tconst scrollProgress = Math.floor((scrollY / scrollRange) * 100);\r\n\t\t\tthis.setState({ scrollProgress });\r\n\t\t}\r\n\t};\r\n\r\n\ttoggleDrawer = async (open: boolean) => {\r\n\t\tthis.setState({ settingsOpen: open });\r\n\t\tif (open) {\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\tconst response = await this.props.savePresenterPreferences({\r\n\t\t\t\tcountdownTime: this.state.countdownTime,\r\n\t\t\t\tfontSize: this.state.fontSize,\r\n\t\t\t\ttimeMode: this.state.timeMode,\r\n\t\t\t\ttimerEnabled: this.state.timerEnabled,\r\n\t\t\t\ttoolbarLocation: this.state.toolbarLocation,\r\n\t\t\t});\r\n\t\t\tif (ServerResponse.isError(response)) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tsnackbarOpen: true,\r\n\t\t\t\t\tsnackbarMessage: \"Saving your preferences failed. Please try again.\",\r\n\t\t\t\t});\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\ttoggleBarLocationOptions = (e: React.MouseEvent) => {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\tthis.setState({\r\n\t\t\tsettingsBarPlacementListOpen: !this.state.settingsBarPlacementListOpen,\r\n\t\t});\r\n\t};\r\n\r\n\thandleBarLocationChange = async (e: any) => {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\tlet value = e.target.value as string;\r\n\r\n\t\tthis.setState({\r\n\t\t\ttoolbarLocation: toToolbarLocation(value),\r\n\t\t});\r\n\t};\r\n\r\n\tonTimeModeChange = async (e: React.ChangeEvent<{}>, value: string) => {\r\n\t\tlet timeMode = value as TimeMode;\r\n\r\n\t\tlet countdownTime = 0;\r\n\t\tif (timeMode === TimeMode.CountDown) {\r\n\t\t\tcountdownTime = 30;\r\n\t\t}\r\n\t\tthis.setState({ timeMode: timeMode, countdownTime: countdownTime });\r\n\r\n\t\tconst response = this.props.savePresenterPreferences({\r\n\t\t\tcountdownTime: this.state.countdownTime,\r\n\t\t\tfontSize: this.state.fontSize,\r\n\t\t\ttimeMode: timeMode,\r\n\t\t\ttimerEnabled: this.state.timerEnabled,\r\n\t\t\ttoolbarLocation: this.state.toolbarLocation,\r\n\t\t});\r\n\t\tif (ServerResponse.isError(response)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tsnackbarOpen: true,\r\n\t\t\t\tsnackbarMessage: \"Saving your preferences failed. Please try again.\",\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tonTimeLimitChange = async (e: React.ChangeEvent) => {\r\n\t\tlet val = parseInt(e.target.value, 10);\r\n\r\n\t\tif (isNaN(val)) {\r\n\t\t\tval = 0;\r\n\t\t}\r\n\r\n\t\tthis.setState({ countdownTime: val });\r\n\r\n\t\tconst response = await this.props.savePresenterPreferences({\r\n\t\t\tcountdownTime: val,\r\n\t\t\tfontSize: this.state.fontSize,\r\n\t\t\ttimeMode: this.state.timeMode,\r\n\t\t\ttimerEnabled: this.state.timerEnabled,\r\n\t\t\ttoolbarLocation: this.state.toolbarLocation,\r\n\t\t});\r\n\t\tif (ServerResponse.isError(response)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tsnackbarOpen: true,\r\n\t\t\t\tsnackbarMessage: \"Saving your preferences failed. Please try again.\",\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tresetTimer = () => {\r\n\t\tthis.setState({ reset: this.state.reset + 1 });\r\n\t};\r\n\r\n\tincreaseFontSize = async (e: React.MouseEvent) => {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\tlet fontSize = this.state.fontSize + 2;\r\n\t\tthis.setState({ fontSize: fontSize });\r\n\r\n\t\tconst response = await this.props.savePresenterPreferences({\r\n\t\t\tcountdownTime: this.state.countdownTime,\r\n\t\t\tfontSize: fontSize,\r\n\t\t\ttimeMode: this.state.timeMode,\r\n\t\t\ttimerEnabled: this.state.timerEnabled,\r\n\t\t\ttoolbarLocation: this.state.toolbarLocation,\r\n\t\t});\r\n\t\tif (ServerResponse.isError(response)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tsnackbarOpen: true,\r\n\t\t\t\tsnackbarMessage: \"Saving your preferences failed. Please try again.\",\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tdecreaseFontSize = async (e: React.MouseEvent) => {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\tif (this.state.fontSize < 2) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet fontSize = this.state.fontSize - 2;\r\n\t\tthis.setState({ fontSize: fontSize });\r\n\r\n\t\tconst response = await this.props.savePresenterPreferences({\r\n\t\t\tcountdownTime: this.state.countdownTime,\r\n\t\t\tfontSize: fontSize,\r\n\t\t\ttimeMode: this.state.timeMode,\r\n\t\t\ttimerEnabled: this.state.timerEnabled,\r\n\t\t\ttoolbarLocation: this.state.toolbarLocation,\r\n\t\t});\r\n\t\tif (ServerResponse.isError(response)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tsnackbarOpen: true,\r\n\t\t\t\tsnackbarMessage: \"Saving your preferences failed. Please try again.\",\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tonGoBack = () => {\r\n\t\tif (this.props.location.state) {\r\n\t\t\tthis.props.history.goBack();\r\n\t\t} else {\r\n\t\t\tthis.props.history.push(`/build/${this.props.match.params.id}`);\r\n\t\t}\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { classes } = this.props;\r\n\t\tif (this.state.pageNotFound) {\r\n\t\t\treturn ;\r\n\t\t}\r\n\t\tif (this.state.serverFailed) {\r\n\t\t\treturn ;\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t this.toggleDrawer(false)}>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tToolbar Location\r\n\t\t\t\t\t\t\t\t\t this.handleBarLocationChange(e)}\r\n\t\t\t\t\t\t\t\t\t\tonClick={(event) => event.stopPropagation()}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tlabel=\"Top\"\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tlabel=\"Bottom\"\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tTime mode\r\n\t\t\t\t\t\t\t\t\t this.onTimeModeChange(e, value)}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t} label=\"Clock\" />\r\n\t\t\t\t\t\t\t\t\t\t} label=\"Count Down\" />\r\n\t\t\t\t\t\t\t\t\t\t} label=\"Count Up\" />\r\n\t\t\t\t\t\t\t\t\t\t} label=\"None\" />\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{this.state.timeMode === \"Count Down\" && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t) => this.onTimeLimitChange(e)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t{this.state.timeMode === TimeMode.None && (\r\n\t\t\t\t\t
    this.toggleDrawer(true)}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{this.state.loading ? (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tLoading...\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t
    0 ? { __html: this.state.body } : undefined} />\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{this.state.timeMode !== TimeMode.None && (\r\n\t\t\t\t\t this.toggleDrawer(true)}\r\n\t\t\t\t\t\tbarLocation={this.state.toolbarLocation}\r\n\t\t\t\t\t\ttimeMode={this.state.timeMode}\r\n\t\t\t\t\t\ttimeLimit={this.state.countdownTime}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t\t this.setState({ snackbarOpen: false })}\r\n\t\t\t\t\tContentProps={{\r\n\t\t\t\t\t\t\"aria-describedby\": \"message-id\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tmessage={{this.state.snackbarMessage}}\r\n\t\t\t\t\taction={[\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t this.setState({ snackbarOpen: false })}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t,\r\n\t\t\t\t\t]}\r\n\t\t\t\t/>\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\ninterface CompatProps extends RouteComponentProps {}\r\n\r\nexport function PresenterHome(compatProps: CompatProps) {\r\n\tconst isOffline = useOfflineStatus();\r\n\tconst [config] = useAppConfig();\r\n\tconst user = useAuthenticatedUser();\r\n\tconst userInfo = useUser();\r\n\tconst offlineAssets = useOfflineAssets();\r\n\tconst classes = useStyles();\r\n\r\n\tconst builderAssetId = compatProps.match.params.id;\r\n\r\n\tconst [offlinePresenterPreferences, setOfflinePresentorPreferences] = useLocalStorage(\"offlinePresenterPreferences\", {\r\n\t\tcountdownTime: 30,\r\n\t\tfontSize: 20,\r\n\t\ttimeMode: TimeMode.CountDown,\r\n\t\ttimerEnabled: true,\r\n\t\ttoolbarLocation: ToolbarLocation.Bottom,\r\n\t});\r\n\r\n\tconst loadBuilderAsset = () => {\r\n\t\tif (isOffline || !offlineAssets.onlineMode) {\r\n\t\t\tconst offlineAsset = offlineAssets.offlineBuilderAssets.find((a) => a.id === builderAssetId);\r\n\r\n\t\t\tif (offlineAsset) {\r\n\t\t\t\tconst offlineSuccess: SuccessResult = {\r\n\t\t\t\t\tdata: offlineAsset,\r\n\t\t\t\t\tmessage: \"\",\r\n\t\t\t\t};\r\n\t\t\t\treturn Promise.resolve(offlineSuccess);\r\n\t\t\t}\r\n\r\n\t\t\tconst offlineError: ServerError = {\r\n\t\t\t\tstatusCode: 404,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t};\r\n\t\t\treturn Promise.resolve(offlineError);\r\n\t\t}\r\n\r\n\t\treturn BuilderAssetService.get(builderAssetId);\r\n\t};\r\n\r\n\tconst loadPresenterPreferences = async () => {\r\n\t\tif (isOffline || !offlineAssets.onlineMode) {\r\n\t\t\tconst offlineSuccess: SuccessResult = {\r\n\t\t\t\tdata: offlinePresenterPreferences,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t};\r\n\t\t\treturn Promise.resolve(offlineSuccess);\r\n\t\t}\r\n\r\n\t\tconst response = await PresenterPreferencesService.get();\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tsetOfflinePresentorPreferences(response.data);\r\n\t\t}\r\n\r\n\t\treturn response;\r\n\t};\r\n\r\n\tconst savePresenterPreferences = async (prefs: PresenterPreferences) => {\r\n\t\tif (isOffline || !offlineAssets.onlineMode) {\r\n\t\t\tsetOfflinePresentorPreferences(prefs);\r\n\t\t\tconst offlineSuccess: SuccessResult = {\r\n\t\t\t\tdata: prefs,\r\n\t\t\t\tmessage: \"\",\r\n\t\t\t};\r\n\t\t\treturn Promise.resolve(offlineSuccess);\r\n\t\t}\r\n\t\tconst response = await PresenterPreferencesService.save(prefs);\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tsetOfflinePresentorPreferences(response.data);\r\n\t\t}\r\n\t\treturn response;\r\n\t};\r\n\r\n\tconst props: Props = {\r\n\t\t...compatProps,\r\n\t\tconfig,\r\n\t\tuser,\r\n\t\tonSignIn: userInfo.updateUser,\r\n\t\tonSignOut: () => userInfo.updateUser(null),\r\n\t\tgetBuilderAsset: loadBuilderAsset,\r\n\t\tgetPresenterPreferences: loadPresenterPreferences,\r\n\t\tsavePresenterPreferences,\r\n\t};\r\n\r\n\treturn ;\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport { Grid, Typography, AppBar, Toolbar, Paper, CircularProgress, Hidden, Theme, makeStyles } from '@material-ui/core';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport { ServerFailed } from '../errors/serverFailed'\r\nimport { ShareService } from '../../services/ShareService';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n container: {\r\n background: '#efefef',\r\n paddingBottom: theme.spacing(2),\r\n position: \"fixed\",\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n overflowY: 'auto'\r\n },\r\n appBar: {\r\n color: '#6b6b6b',\r\n background: '#FFFFFF',\r\n boxShadow: \"unset\",\r\n paddingTop: '4px'\r\n },\r\n sermonContent: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n margin: theme.spacing(4),\r\n marginBottom: 8,\r\n padding: theme.spacing(4),\r\n width: '90vw',\r\n minHeight: '85vh'\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(2),\r\n marginBottom: 15,\r\n marginTop: 10,\r\n minHeight: '75vh',\r\n width: '100%',\r\n overflowWrap: 'break-word'\r\n },\r\n \"& slide\": {\r\n border: \"unset\",\r\n lineHeight: \"unset\"\r\n }\r\n },\r\n grow: {\r\n flex: 1\r\n },\r\n title: {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n width: '100%',\r\n textOverflow: 'ellipsis'\r\n },\r\n footerText: {\r\n fontSize: 11,\r\n },\r\n footerLink: {\r\n color: \"#222\"\r\n }\r\n}));\r\n\r\nexport function ShareHome() {\r\n const params = useParams<{id: string}>();\r\n const [loading, setLoading] = useState(true);\r\n const [serverFailed, setServerFailed] = useState(false);\r\n const [pageNotFound, setPageNotFound] = useState(false);\r\n const [title, setTitle] = useState('');\r\n const [body, setBody] = useState('');\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n async function getSharedAsset(){\r\n document.title = \"Sermon Maker\";\r\n \r\n setLoading(true);\r\n const shareResponse = await ShareService.getSharedAsset(params.id.toLowerCase());\r\n setLoading(false);\r\n\r\n if(shareResponse.error){\r\n if(shareResponse.statusCode === 404) return setPageNotFound(true);\r\n return setServerFailed(true);\r\n }\r\n \r\n const builderAsset = shareResponse.data;\r\n setBody(builderAsset.text);\r\n setTitle(builderAsset.name);\r\n document.title = `${builderAsset.name}`;\r\n \r\n let removeHtmlTags = /(<([^>]+)>)/ig;\r\n let description = builderAsset.text.replace(removeHtmlTags, \" \").replace(/\\s\\s+/g, \" \").trim();\r\n let existingMeta = document.querySelector(\"meta[name=description]\") as HTMLMetaElement;\r\n if (!existingMeta) {\r\n let meta = document.createElement('meta');\r\n meta.name = \"description\";\r\n meta.content = description.substring(0, 160);\r\n document.getElementsByTagName('head')[0].appendChild(meta);\r\n } else {\r\n existingMeta.content = description.substring(0, 160);\r\n }\r\n };\r\n\r\n getSharedAsset();\r\n }, [])\r\n\r\n if (pageNotFound) {\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n Oops, it looks like something went wrong. This resource is no longer being shared by the owner.\r\n
    \r\n Learn more about Sermon Maker\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n if (serverFailed) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n {title}\r\n
    \r\n
    \r\n \r\n
    \r\n {title}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n {loading ?\r\n
    \r\n \r\n
    \r\n \r\n Loading...\r\n \r\n
    \r\n :\r\n <>\r\n
    0 ? { __html: body } : undefined} />\r\n
    \r\n \r\n }\r\n \r\n
    \r\n Copyright © 2003-{new Date().getFullYear()} | Outreach, Inc., All rights reserved\r\n \r\n Sermon Maker •\r\n Contact Us •\r\n Privacy Policy •\r\n Terms of Use\r\n \r\n
    \r\n \r\n
    \r\n );\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport { Grid, Typography, CircularProgress } from \"@material-ui/core\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\n\r\nimport { ServerFailed } from \"../errors/serverFailed\";\r\nimport { ShareService } from \"../../../src/services/ShareService\";\r\nimport { PresentationExporter } from \"../builder/configuration/PresentationExporter\";\r\n\r\nimport BackgroundImages from \"../../resources/BackgroundImages.json\";\r\nimport { BuilderPreferences } from \"../../entities/BuilderPreferences\";\r\nimport { BuilderAsset, deserializeBuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport { EditorHelper } from \"../builder/editor/EditorHelper\";\r\n\r\ninterface BackgroundImage {\r\n\tid: number;\r\n\tstandardImagePath: string;\r\n\tstandardImageThumbnailPath: string;\r\n\twidescreenImagePath: string;\r\n\twidescreenImageThumbnailPath: string;\r\n\tname: string;\r\n\tfontColor: string;\r\n}\r\n\r\nconst images: BackgroundImage[] = BackgroundImages as any;\r\n\r\nexport const slideAspectRatios = [\r\n\t{\r\n\t\tid: \"16x9\",\r\n\t\tname: \"16 x 9\",\r\n\t},\r\n\t{\r\n\t\tid: \"4x3\",\r\n\t\tname: \"4 x 3\",\r\n\t},\r\n];\r\n\r\nconst removeHtmlTagsRegex = /(<([^>]+)>)/gi;\r\n\r\nexport function DownloadSlides() {\r\n\tconst params = useParams<{id: string}>();\r\n\tconst [loading, setLoading] = useState(true);\r\n\tconst [pageNotFound, setPageNotFound] = useState(false);\r\n\tconst [serverFailed, setServerFailed] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tasync function fetchData(){\r\n\t\t\tdocument.title = \"Sermon Maker\";\r\n\r\n\t\t\tconst response = await ShareService.getSharedSlide(params.id.toLowerCase());\r\n\t\t\tif(response.error){\r\n\t\t\t\tif(response.statusCode === 404) return setPageNotFound(true);\r\n\t\t\t\treturn setServerFailed(true);\r\n\t\t\t}\r\n\r\n\t\t\tconst builderAsset = deserializeBuilderAsset(response.data.builderAsset);\r\n\t\t\tconst preferences = response.data.builderPreferences;\r\n\r\n\t\t\tconst preferredAspectRatio = builderAsset.slideExporterAspectRatio || \"16x9\";\r\n\t\t\tlet fontColor = getFontColor(preferences, builderAsset);\r\n\t\t\tconst description = builderAsset.text.replace(removeHtmlTagsRegex, \" \").replace(/\\s\\s+/g, \" \").trim();\r\n\r\n\t\t\tlet existingMeta = document.querySelector(\"meta[name=description]\") as HTMLMetaElement;\r\n\t\t\tif (!existingMeta) {\r\n\t\t\t\tlet meta = document.createElement(\"meta\");\r\n\t\t\t\tmeta.name = \"description\";\r\n\t\t\t\tmeta.content = description.substring(0, 160);\r\n\t\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(meta);\r\n\t\t\t} else {\r\n\t\t\t\texistingMeta.content = description.substring(0, 160);\r\n\t\t\t}\r\n\r\n\t\t\tdocument.title = `${builderAsset.name}`;\r\n\r\n\t\t\tlet previewSlides = getPreviewSlidesFromEditorHtml(builderAsset.text);\r\n\t\r\n\t\t\tif (builderAsset.customSlideBackgroundImagePath) {\r\n\t\t\t\tfontColor = \"#FFFFFF\";\r\n\t\t\t\tconst slideImageResponse = await ShareService.getCustomSlideBackgroundImageUrl(params.id.toLowerCase());\r\n\t\r\n\t\t\t\tif(slideImageResponse.success){\r\n\t\t\t\t\tPresentationExporter.exportWithImageData(previewSlides, preferredAspectRatio, fontColor, builderAsset.name, response.message);\r\n\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst selectedImage = images.find((image) => image.id === preferences.slideExporterSelectedGalleryImageId);\r\n\t\t\t\tconst backgroundImage = selectedImage ? selectedImage : images[0];\r\n\t\t\t\tlet image = null;\r\n\t\r\n\t\t\t\tif (builderAsset.slideExporterAspectRatio === \"4x3\") {\r\n\t\t\t\t\timage = backgroundImage.standardImagePath;\r\n\t\t\t\t} else {\r\n\t\t\t\t\timage = backgroundImage.widescreenImagePath;\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tPresentationExporter.exportWithImagePath(previewSlides, preferredAspectRatio, fontColor, builderAsset.name, image);\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(false);\r\n\t\t};\r\n\r\n\t\tfetchData();\r\n\t}, [])\r\n\r\n\tconst getFontColor = (preferences: BuilderPreferences, asset: BuilderAsset) => {\r\n\t\tconst { slideExporterSelectedGalleryImageId } = preferences;\r\n\t\tif (asset.customSlideBackgroundImagePath) {\r\n\t\t\treturn \"#FFFFFF\";\r\n\t\t}\r\n\r\n\t\tconst selectedImage = images.find((image) => image.id === slideExporterSelectedGalleryImageId);\r\n\t\tconst backgroundImage = selectedImage ? selectedImage : images[0];\r\n\r\n\t\treturn backgroundImage.fontColor;\r\n\t};\r\n\r\n\tconst getPreviewSlidesFromEditorHtml = (html: string) => {\r\n\t\tlet editorSlides = EditorHelper.getEditorSlides(html);\r\n\t\tlet previewSlides = EditorHelper.getPreviewSlides(editorSlides);\r\n\t\treturn previewSlides;\r\n\t}\r\n\r\n\tif (pageNotFound) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\tOops, it looks like something went wrong. This resource is no longer being shared by the owner.\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\tLearn more about Sermon Maker\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tif (serverFailed)\r\n\t\treturn ;\r\n\r\n\tif (loading) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn null;\r\n}","import { ApplicationUser } from \"../../src/entities/ApplicationUser\";\r\nimport BillingStatement from \"../../src/entities/BillingStatement\";\r\nimport PaymentMethod from \"../../src/entities/PaymentMethod\";\r\nimport Coupon from \"../entities/Coupon\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface UpdatePaymentMethodRequest {\r\n\tpaymentMethodId: string;\r\n\texpirationMonth: number;\r\n\texpirationYear: number;\r\n}\r\n\r\nexport interface CreateMakerSubscriptionRequest {\r\n\tpaymentMethodToken: string;\r\n\tupgradePath: string;\r\n\tisTrial: boolean;\r\n\tpromoCode: string | null;\r\n\tsubscriptionType: number;\r\n\tbundleWithSc: boolean;\r\n}\r\n\r\nexport const AccountService = {\r\n\tcreateMakerSubscription: (request: CreateMakerSubscriptionRequest) =>\r\n\t\tWebClient.Post.Validated(\"api/Account/CreateMakerSubscription\", request),\r\n\r\n\tgetBillingStatements: () => WebClient.Get(\"api/Account/GetBillingStatements\"),\r\n\r\n\tgetPaymentMethod: () => WebClient.Get(\"api/Account/GetPaymentMethod\"),\r\n\r\n\tchangePaymentMethod: (paymentMethodToken: string) =>\r\n\t\tWebClient.Post.Validated(\"api/Account/ChangePaymentMethod\", { paymentMethodToken }),\r\n\r\n\tupdatePaymentMethod: (updateRequest: UpdatePaymentMethodRequest) =>\r\n\t\tWebClient.Put.Validated(\"api/Account/UpdatePaymentMethod\", updateRequest),\r\n\r\n\tcancelMakerSubscriptionAtEndOfTerm: () => WebClient.Put.Validated(\"api/Account/CancelMakerSubscriptionAtEndOfTerm\", {}),\r\n\r\n\tdiscountMakerSubscription: () => WebClient.Put.Validated(\"api/Account/DiscountMakerSubscription\", {}),\r\n\r\n\tvalidatePromoCode: (promoCode: string) => WebClient.Post.Validated(\"api/Subscription/ValidatePromoCode\", { promoCode }),\r\n};\r\n","import React, { useState } from 'react';\r\nimport { Dialog, DialogTitle, DialogContent, Grid, Typography, DialogActions, Button } from '@material-ui/core';\r\nimport { Elements, CardElement, injectStripe, ReactStripeElements } from 'react-stripe-elements';\r\n\r\nimport PaymentMethod from '../../entities/PaymentMethod';\r\nimport { AccountService } from '../../services/AccountService';\r\n\r\ninterface Props extends ReactStripeElements.InjectedStripeProps {\r\n onClose: () => void;\r\n isOpen: boolean;\r\n onSuccess: (paymentMethod: PaymentMethod) => void;\r\n}\r\n\r\nfunction ChangeCardDialogComponent(props:Props) {\r\n const [disabled, setDisabled] = useState(false);\r\n const [validationError, setValidationError] = useState(\"\")\r\n\r\n const onClose = () => {\r\n if (disabled)\r\n return;\r\n\r\n props.onClose();\r\n }\r\n\r\n const onSubmitPayment = async(e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (disabled)\r\n return;\r\n\r\n setDisabled(true);\r\n const {token, error} = await props.stripe!.createToken();\r\n setDisabled(false);\r\n\r\n if (error) return setValidationError(error.message ?? \"Something went wrong, please try again or contact customer support\");\r\n if(token){\r\n setDisabled(true);\r\n const paymentMethodResponse = await AccountService.changePaymentMethod(token.id);\r\n setDisabled(false);\r\n\r\n if(paymentMethodResponse.success) return props.onSuccess(paymentMethodResponse.data);\r\n if(paymentMethodResponse.error) return setValidationError(paymentMethodResponse.message);\r\n setValidationError(paymentMethodResponse.errors[0].errors[0]);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n Change Your Sermon Maker Payment Method\r\n \r\n
    onSubmitPayment(e)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst ChangeCardDialogWithStripe = injectStripe(ChangeCardDialogComponent);\r\n\r\nexport function ChangeCardDialog(props:Props){\r\n return (\r\n \r\n \r\n \r\n );\r\n}","import React from 'react';\r\nimport { Button, makeStyles, Paper, Typography } from \"@material-ui/core\";\r\nimport { useAppConfig } from '../../../utilities/useAppConfig';\r\nimport { useIsMobile } from '../../../components/Mui3WidthProvider';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n section: {\r\n margin: '0 auto',\r\n marginTop: theme.spacing(4),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: \"60%\",\r\n marginBottom: theme.spacing(6),\r\n padding: theme.spacing(4),\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(2),\r\n marginBottom: 30,\r\n marginTop: 10,\r\n },\r\n },\r\n}));\r\n\r\nexport function AccountInfo() {\r\n const [config,] = useAppConfig();\r\n const isMobile = useIsMobile();\r\n const classes = useStyles();\r\n\r\n const onChangeEmail = () => {\r\n window.location.assign(`${config.accountSiteUrl}/account/change-email`);\r\n }\r\n\r\n const onChangePassword = () => {\r\n window.location.assign(`${config.accountSiteUrl}/account/change-password`);\r\n }\r\n\r\n return (\r\n \r\n {isMobile && My Account}\r\n \r\n {!isMobile && My Account}\r\n \r\n Change Email\r\n \r\n \r\n Change Password\r\n \r\n \r\n \r\n );\r\n}","import React from 'react';\r\nimport { Button, makeStyles, Paper, Typography } from \"@material-ui/core\";\r\n\r\nimport PaymentMethod from '../../../entities/PaymentMethod';\r\nimport MakerSubscription, { MakerSubscriptionStatus } from '../../../entities/MakerSubscription';\r\nimport { useIsMobile } from '../../../components/Mui3WidthProvider';\r\nimport { useAuthenticatedUser } from '../../../utilities/useAuthenticatedUser';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n section: {\r\n margin: '0 auto',\r\n marginTop: theme.spacing(4),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: \"60%\",\r\n marginBottom: theme.spacing(6),\r\n padding: theme.spacing(4),\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(2),\r\n marginBottom: 30,\r\n marginTop: 10,\r\n },\r\n },\r\n cancelButton: {\r\n marginTop: 20,\r\n color: \"#ea1818\"\r\n },\r\n}));\r\n\r\ninterface Props {\r\n paymentMethod?: PaymentMethod;\r\n openUpdateCardDialog: () => void;\r\n openChangeCardDialog: () => void;\r\n openCancelDialog: () => void;\r\n openCancelAndRefundDialog: () => void;\r\n}\r\n\r\nexport function SubscriptionInfo(props:Props) {\r\n const { paymentMethod, openCancelAndRefundDialog, openCancelDialog, openChangeCardDialog, openUpdateCardDialog } = props;\r\n const classes = useStyles();\r\n const isMobile = useIsMobile();\r\n const user = useAuthenticatedUser();\r\n const { makerSubscription, inAdminImpersonationMode } = user;\r\n\r\n const getSubscriptionStatus = (makerSubscription: MakerSubscription) => {\r\n if (makerSubscription.cancellationDate) {\r\n return `Cancels on ${new Date(makerSubscription.cancellationDate).toLocaleDateString()}`;\r\n }\r\n\r\n return MakerSubscriptionStatus[makerSubscription.status];\r\n }\r\n\r\n return (\r\n <>\r\n {!makerSubscription\r\n && \r\n <>\r\n {isMobile && Free Sermon Maker Subscription}\r\n \r\n {!isMobile && Free Sermon Maker Subscription}\r\n window.location.assign(\"https://www.sermonmaker.net/upgrade-now/?upgradePath=settings\")}\r\n color=\"primary\"\r\n style={{ marginTop: 20, paddingLeft: isMobile ? 0 : undefined }}\r\n >\r\n Upgrade\r\n \r\n \r\n \r\n }\r\n { makerSubscription\r\n &&\r\n <>\r\n { isMobile && Standard Sermon Maker Subscription}\r\n \r\n { !isMobile && Standard Sermon Maker Subscription}\r\n Status: {getSubscriptionStatus(makerSubscription)}\r\n {\r\n !makerSubscription.cancellationDate\r\n &&\r\n makerSubscription.serviceStopDate\r\n &&\r\n Renews: {new Date(makerSubscription.serviceStopDate).toLocaleDateString()}\r\n }\r\n {\r\n paymentMethod\r\n &&\r\n makerSubscription.cancellationDate == null\r\n &&\r\n \r\n {\r\n `Paid with ${paymentMethod.cardBrand} ending in ${paymentMethod.lastFourOfCardNumber} (Expires ${paymentMethod.expirationMonth}/${paymentMethod.expirationYear}) `\r\n }\r\n - {e.preventDefault(); openUpdateCardDialog()}}>Update{\" / \"}\r\n {e.preventDefault(); openChangeCardDialog()}}>Change\r\n \r\n }\r\n {\r\n (makerSubscription.cancellationDate == null || (makerSubscription.currentPlanName === \"Standard\" || makerSubscription.currentPlanName === \"Standard - Discount\"))\r\n &&\r\n \r\n Cancel Subscription\r\n \r\n }\r\n {\r\n inAdminImpersonationMode\r\n &&\r\n \r\n Cancel and Refund Subscription\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n )\r\n}","import React from 'react';\r\nimport { Typography, TableRow, TableCell, Chip, Card, CardContent, CardActions, makeStyles } from \"@material-ui/core\";\r\nimport classNames from 'classnames';\r\n\r\nimport BillingStatement from '../../../entities/BillingStatement';\r\nimport { useIsMobile } from '../../../components/Mui3WidthProvider';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n title: {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n width: '100%',\r\n textOverflow: 'ellipsis'\r\n },\r\n chip: {\r\n height: 20,\r\n marginLeft: 8,\r\n verticalAlign: \"unset\"\r\n },\r\n paidChip: {\r\n backgroundColor: \"rgb(214,236,255)\"\r\n },\r\n mobileDetails: {\r\n textDecoration: \"none\",\r\n color: \"rgb(0, 0, 0, .85)\",\r\n paddingLeft: 8,\r\n fontWeight: 400,\r\n }\r\n}));\r\n\r\ninterface Props {\r\n row: BillingStatement;\r\n}\r\n\r\nexport function BillingStatementsTable(props:Props) {\r\n const { row } = props;\r\n const isMobile = useIsMobile();\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n {!isMobile &&\r\n \r\n \r\n {row.amount}\r\n \r\n \r\n {row.invoiceNumber}\r\n {new Date(row.createdDate).toLocaleDateString()}\r\n \r\n \r\n View Details\r\n \r\n \r\n \r\n }\r\n {isMobile &&\r\n \r\n \r\n \r\n {new Date(row.createdDate).toLocaleDateString()}\r\n \r\n \r\n {row.amount}\r\n \r\n \r\n \r\n {row.invoiceNumber}\r\n \r\n \r\n \r\n \r\n View Details\r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}","import React, {useState} from 'react';\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, DialogContentText} from \"@material-ui/core\";\r\nimport { ApplicationUser } from '../../../entities/ApplicationUser';\r\nimport { AccountService } from '../../../services/AccountService';\r\nimport { ServerResponse } from '../../../services/server/OldWebClient';\r\nimport { EventTracking } from '../../../utilities/Tracking/EventTracking';\r\nimport { useAuthenticatedUser } from '../../../utilities/useAuthenticatedUser';\r\n\r\ninterface Props {\r\n openCancelDialog: boolean;\r\n toggleCancelDialog: () => void;\r\n toggleSpecialOfferDialog: () => void;\r\n onSubscriptionChanged: (updatedUser:ApplicationUser) => void;\r\n toggleShowErrorMessage: () => void;\r\n setErrorMessage: (message:string) => void;\r\n}\r\n\r\nexport function CancelSubscriptionDialog(props:Props) {\r\n const { openCancelDialog, toggleCancelDialog, onSubscriptionChanged, toggleSpecialOfferDialog, setErrorMessage, toggleShowErrorMessage } = props;\r\n const user = useAuthenticatedUser();\r\n\r\n const [disabled, setdisabled] = useState(false);\r\n\r\n const onCancelSubscription = async () => {\r\n if(user.makerSubscription?.currentPlanName === 'Annual - Discount'){\r\n setdisabled(true);\r\n let applicationUserResponse = await AccountService.cancelMakerSubscriptionAtEndOfTerm();\r\n if (ServerResponse.isSuccess(applicationUserResponse)) {\r\n onSubscriptionChanged(applicationUserResponse.data);\r\n EventTracking.Subscribe.onCancelSubscription();\r\n } else if(ServerResponse.isError(applicationUserResponse)){\r\n setErrorMessage(applicationUserResponse.message)\r\n toggleShowErrorMessage();\r\n } \r\n setdisabled(false);\r\n toggleCancelDialog()\r\n } else {\r\n toggleCancelDialog();\r\n toggleSpecialOfferDialog();\r\n }\r\n }\r\n\r\n return (\r\n \r\n Are you sure you want to cancel your subscription to Sermon Maker Standard?\r\n \r\n {\r\n user.makerSubscription\r\n &&\r\n user.makerSubscription.serviceStopDate\r\n &&\r\n Your access to Sermon Maker Standard will continue through {new Date(user.makerSubscription.serviceStopDate).toLocaleDateString()}.\r\n }\r\n
    \r\n \r\n You will continue to have access to your sermons, assets and uploaded content.\r\n However, as a Sermon Maker Free user, you will no longer be able to use Standard features or upload premium content.\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import React, {useState} from 'react';\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, DialogContentText} from \"@material-ui/core\";\r\nimport { ApplicationUser } from '../../../entities/ApplicationUser';\r\nimport { AdminService } from '../../../services/AdminService';\r\nimport { ServerResponse } from '../../../services/server/OldWebClient';\r\nimport { useAuthenticatedUser } from '../../../utilities/useAuthenticatedUser';\r\n\r\ninterface Props {\r\n openRefundDialog: boolean;\r\n toggleRefundDialog: () => void;\r\n onSubscriptionChanged: (updatedUser:ApplicationUser) => void;\r\n toggleShowErrorMessage: () => void;\r\n setErrorMessage: (message:string) => void;\r\n}\r\n\r\nexport function RefundSubscriptionDialog(props:Props) {\r\n const { openRefundDialog, toggleRefundDialog, onSubscriptionChanged, setErrorMessage, toggleShowErrorMessage } = props;\r\n const user = useAuthenticatedUser();\r\n const [disabled, setdisabled] = useState(false);\r\n\r\n const onRefundSubscription = async () => {\r\n setdisabled(true);\r\n\r\n let applicationUserResponse = await AdminService.cancelAndRefundMakerSubscription();\r\n if (ServerResponse.isSuccess(applicationUserResponse)) {\r\n onSubscriptionChanged(applicationUserResponse.data);\r\n } else if(ServerResponse.isError(applicationUserResponse)){\r\n setErrorMessage(applicationUserResponse.message)\r\n toggleShowErrorMessage();\r\n } \r\n \r\n setdisabled(false);\r\n toggleRefundDialog()\r\n }\r\n\r\n return (\r\n \r\n Cancel {`${user.firstName} ${user.lastName}`}'s Sermon Maker Subscription?\r\n \r\n Are you sure you want to cancel and refund this subscription?\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React, {useEffect, useState} from 'react';\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, DialogContentText, TextField} from \"@material-ui/core\";\r\nimport PaymentMethod from '../../../entities/PaymentMethod';\r\nimport { AccountService, UpdatePaymentMethodRequest } from '../../../services/AccountService';\r\nimport { ServerResponse } from '../../../services/server/OldWebClient';\r\n\r\ninterface Props {\r\n paymentMethod?: PaymentMethod;\r\n openUpdateCardDialog: boolean;\r\n toggleUpdateCardDialog: () => void;\r\n updateCardInfo: (paymentMethod: PaymentMethod) => void;\r\n toggleShowErrorMessage: () => void;\r\n setErrorMessage: (message:string) => void;\r\n}\r\n\r\nexport function UpdateCardDialog(props:Props) {\r\n const { paymentMethod, openUpdateCardDialog, toggleUpdateCardDialog, updateCardInfo, toggleShowErrorMessage, setErrorMessage} = props;\r\n\r\n const [disabled, setdisabled] = useState(false);\r\n const [expirationYear, setExpirationYear] = useState(0);\r\n const [expirationMonth, setExpirationMonth] = useState(0);\r\n\r\n useEffect(() => {\r\n setExpirationYear(paymentMethod!.expirationYear);\r\n setExpirationMonth(paymentMethod!.expirationMonth);\r\n }, [paymentMethod])\r\n\r\n const onUpdatePayment = async () => {\r\n if (disabled || !paymentMethod) {\r\n return;\r\n }\r\n\r\n setdisabled(true)\r\n let request: UpdatePaymentMethodRequest = {\r\n paymentMethodId: paymentMethod.id,\r\n expirationMonth: expirationMonth,\r\n expirationYear: expirationYear\r\n };\r\n let paymentMethodResponse = await AccountService.updatePaymentMethod(request);\r\n if (ServerResponse.isSuccess(paymentMethodResponse)) {\r\n updateCardInfo(paymentMethodResponse.data);\r\n } else if(ServerResponse.isError(paymentMethodResponse)){\r\n setErrorMessage(paymentMethodResponse.message)\r\n toggleShowErrorMessage();\r\n } \r\n\r\n setdisabled(false);\r\n toggleUpdateCardDialog();\r\n }\r\n\r\n\r\n return (\r\n toggleUpdateCardDialog} >\r\n Update your {paymentMethod!.cardBrand} card\r\n \r\n Update the expiration date for your card ending with {paymentMethod!.lastFourOfCardNumber}.\r\n
    \r\n {\r\n let newExpirationMonth = parseInt(e.target.value, 10);\r\n if (!isNaN(newExpirationMonth) && newExpirationMonth >= 1 && newExpirationMonth <= 12) {\r\n setExpirationMonth(newExpirationMonth);\r\n }\r\n }}\r\n disabled={disabled}\r\n />\r\n {\r\n let newExpirationYear = parseInt(e.target.value, 10);\r\n if (!isNaN(newExpirationYear)) {\r\n setExpirationYear(newExpirationYear);\r\n }\r\n }}\r\n disabled={disabled}\r\n />\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}","export default __webpack_public_path__ + \"static/media/downgrade-guy.70ddba7f.png\";","import React, {useState} from 'react';\r\nimport { Button, CardContent, makeStyles, Dialog, DialogContent, DialogTitle, Grid, Hidden, Typography} from \"@material-ui/core\";\r\nimport { ApplicationUser } from '../../../entities/ApplicationUser';\r\nimport { AccountService } from '../../../services/AccountService';\r\nimport { ServerResponse } from '../../../services/server/OldWebClient';\r\nimport DownGradeImage from '../../../resources/downgrade-guy.png';\r\nimport PriceTagIcon from '@material-ui/icons/LocalOffer';\r\nimport ClockIcon from '@material-ui/icons/Schedule';\r\nimport { EventTracking } from '../../../utilities/Tracking/EventTracking';\r\nimport { useIsMobile } from '../../../components/Mui3WidthProvider';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n headerWrapper: {\r\n backgroundColor: '#2196F3',\r\n },\r\n header: {\r\n color: '#fff', \r\n fontWeight: 500\r\n }, \r\n banner: {\r\n fontWeight: 500,\r\n paddingBottom: 10,\r\n paddingTop: 10,\r\n },\r\n paper: {\r\n backgroundColor: \"#f1f1f1\"\r\n },\r\n imageWrapper: {\r\n textAlign: \"center\",\r\n [theme.breakpoints.down('sm')]: {\r\n height: 128,\r\n width: 128\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n display: \"none\"\r\n },\r\n },\r\n downGradeImage: {\r\n width: 255,\r\n [theme.breakpoints.down('sm')]: {\r\n height: 128,\r\n width: 128\r\n }\r\n },\r\n iconWrapper: {\r\n height: 128,\r\n width: 128,\r\n },\r\n icon: {\r\n margin: 'auto',\r\n display: 'block',\r\n width: '80%',\r\n height: '103%',\r\n transform: \"scaleX(-1)\",\r\n color: '#b8b8b8',\r\n },\r\n cancelButton: {\r\n color: '#6c757d',\r\n borderColor: '#6c757d',\r\n float: 'right',\r\n width: 235,\r\n \"&:hover\": {\r\n backgroundColor: \"#6c757d\",\r\n color: \"#fff\"\r\n },\r\n },\r\n downGradeButton: {\r\n width: 235,\r\n },\r\n cardTitle: {\r\n fontWeight: 500\r\n },\r\n textCard: {\r\n paddingRight: 0, \r\n paddingLeft: 0, \r\n paddingBottom: 0,\r\n [theme.breakpoints.down('sm')]: {\r\n padding: 10,\r\n }\r\n }\r\n}));\r\n\r\ninterface Props {\r\n openSpecialOfferDialog: boolean;\r\n toggleSpecialOfferDialog: () => void;\r\n onSubscriptionChanged: (updatedUser:ApplicationUser) => void;\r\n toggleConfirmationDialog: () => void;\r\n toggleShowErrorMessage: () => void;\r\n setErrorMessage: (message:string) => void;\r\n}\r\n\r\nexport function SpecialOfferDialog(props:Props) {\r\n const { openSpecialOfferDialog, toggleSpecialOfferDialog, onSubscriptionChanged, toggleConfirmationDialog, toggleShowErrorMessage, setErrorMessage} = props;\r\n const isMobile = useIsMobile();\r\n const classes = useStyles();\r\n\r\n const [disabled, setdisabled] = useState(false);\r\n\r\n const onDiscountSubscription = async() => {\r\n setdisabled(true)\r\n\r\n let applicationUserResponse = await AccountService.discountMakerSubscription();\r\n if (ServerResponse.isSuccess(applicationUserResponse)) {\r\n onSubscriptionChanged(applicationUserResponse.data);\r\n EventTracking.Subscribe.onDiscountPlan();\r\n } else if(ServerResponse.isError(applicationUserResponse)){\r\n setErrorMessage(applicationUserResponse.message)\r\n toggleShowErrorMessage();\r\n } \r\n setdisabled(false);\r\n toggleSpecialOfferDialog()\r\n toggleConfirmationDialog()\r\n }\r\n\r\n const onContinueCancel = async() => {\r\n setdisabled(true);\r\n\r\n let applicationUserResponse = await AccountService.cancelMakerSubscriptionAtEndOfTerm();\r\n if (ServerResponse.isSuccess(applicationUserResponse)) {\r\n onSubscriptionChanged(applicationUserResponse.data);\r\n EventTracking.Subscribe.onCancelSubscription();\r\n } else if(ServerResponse.isError(applicationUserResponse)){\r\n setErrorMessage(applicationUserResponse.message)\r\n toggleShowErrorMessage();\r\n } \r\n setdisabled(false);\r\n toggleSpecialOfferDialog()\r\n }\r\n\r\n return (\r\n \r\n \r\n Wait, before you cancel...\r\n \r\n \r\n SPECIAL OFFER FOR YOU\r\n \r\n \r\n \r\n \r\n \"Downgrade\"\r\n \r\n \r\n \r\n \r\n Keep Everything… for only $149 a year\r\n \r\n Keep all your Sermon Maker benefits, plus get upcoming software updates\r\n \r\n \r\n \r\n \r\n \r\n \r\n Keep Everything… \r\n for only $149 a year\r\n \r\n Keep all your Sermon Maker benefits, \r\n \r\n \r\n plus get upcoming software updates\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isMobile && \r\n \r\n \r\n \r\n }\r\n \r\n \r\n New Annual Fee\r\n \r\n Your new Sermon Maker price is only $149 per year. Get everything for less than $2.87 a week!\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isMobile && \r\n \r\n \r\n \r\n }\r\n \r\n \r\n One-Time Offer\r\n \r\n This special $149 price is an exclusive offer only available today. Don’t miss your chance to save!\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Grab this offer to keep your account active for less than $12.50 per month (paid annually). All your sermons and resources will remain safe with continued access to all Sermon Maker benefits. Plus, you'll get upcoming software updates on Sermon Maker so you can stay organized, with 100% access to premium sermon ideas and time-saving features.\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React from 'react';\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, DialogContentText} from \"@material-ui/core\";\r\nimport { useAuthenticatedUser } from '../../../utilities/useAuthenticatedUser';\r\n\r\ninterface Props {\r\n openConfirmationDialog: boolean;\r\n toggleConfirmationDialog: () => void;\r\n}\r\n\r\nexport function ConfirmationDialog(props:Props) {\r\n const { openConfirmationDialog, toggleConfirmationDialog } = props;\r\n const user = useAuthenticatedUser();\r\n\r\n return (\r\n \r\n Nicely done, your account has been updated.\r\n \r\n You'll see your updated pricing on your {new Date(user.makerSubscription?.serviceStartDate!).toLocaleDateString('en-US', {year: 'numeric', month: 'long', day: 'numeric'})} billing statement. Thank you and enjoy Sermon Maker\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React, { ReactNode } from \"react\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\ninterface Props {\r\n\tsnackbarOpen: boolean;\r\n\tsnackbarMessage: string;\r\n\tonClose: () => void;\r\n}\r\n\r\nconst htmlRegex = new RegExp(\"(<.*?>.*?)\");\r\n\r\nexport function AccountSnackBar(props: Props){\r\n\tconst { snackbarOpen, snackbarMessage } = props;\r\n const messageNodes:ReactNode[] = snackbarMessage.split(htmlRegex).map(item => \r\n item.startsWith('<') ? customer service : item);\r\n\r\n\treturn (\r\n\t\t}\r\n\t\t\taction={[\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t,\r\n\t\t\t]}\r\n\t\t/>\r\n\t);\r\n};","import React, {useState, useEffect} from 'react';\r\n\r\nimport { AppBar, Toolbar, IconButton, Hidden, Typography, Grid, CircularProgress, Paper, Avatar, Table, TableCell, TableBody, TableRow, TableHead, makeStyles } from '@material-ui/core';\r\n\r\nimport ArrowBack from '@material-ui/icons/ArrowBackIos';\r\n\r\nimport BillingStatement from '../../entities/BillingStatement';\r\nimport PaymentMethod from '../../entities/PaymentMethod';\r\n\r\nimport { AccountService } from '../../services/AccountService';\r\nimport { ServerResponse } from '../../services/server/OldWebClient';\r\n\r\nimport { UserAvatar } from '../../components/UserAvatar';\r\nimport { ChangeCardDialog } from './changeCardDialog';\r\nimport { AccountInfo } from './components/accountInfo';\r\nimport { SubscriptionInfo } from './components/subscriptionInfo';\r\nimport { BillingStatementsTable } from './components/billingStatementsTable';\r\nimport { CancelSubscriptionDialog } from './components/cancelSubscriptionDialog';\r\nimport { RefundSubscriptionDialog } from './components/refundSubscriptionDialog';\r\nimport { UpdateCardDialog } from './components/updateCardDialog';\r\nimport { SpecialOfferDialog } from './components/specialOfferDialog';\r\nimport { ConfirmationDialog } from './components/confirmationDialog';\r\nimport { AccountSnackBar } from './components/accountSnackBar';\r\nimport { useUser } from '../../utilities/useUser';\r\nimport { useIsMobile } from '../../components/Mui3WidthProvider';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useAuthenticatedUser } from '../../utilities/useAuthenticatedUser';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n overflow: \"hidden\"\r\n },\r\n appBar: {\r\n color: '#6b6b6b',\r\n background: '#FFFFFF',\r\n boxShadow: \"unset\",\r\n paddingTop: '4px'\r\n },\r\n title: {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n width: '100%',\r\n textOverflow: 'ellipsis'\r\n },\r\n grow: {\r\n flex: 1\r\n },\r\n avatar: {\r\n margin: '0 auto',\r\n backgroundColor: theme.palette.primary.light,\r\n width: 100,\r\n height: 100,\r\n fontSize: '40px',\r\n marginBottom: theme.spacing(1),\r\n },\r\n contentSection: {\r\n position: 'absolute',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n top: `calc(${theme.mixins.toolbar.minHeight}px + 15px)`,\r\n overflowY: \"auto\",\r\n background: '#efefef',\r\n },\r\n section: {\r\n margin: '0 auto',\r\n marginTop: theme.spacing(4),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: \"60%\",\r\n marginBottom: theme.spacing(6),\r\n padding: theme.spacing(4),\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(2),\r\n marginBottom: 30,\r\n marginTop: 10,\r\n },\r\n },\r\n}));\r\n\r\n\r\nexport function Settings() {\r\n const history = useHistory();\r\n const userContext = useUser();\r\n const user = useAuthenticatedUser();\r\n const makerSubscription = user.makerSubscription;\r\n const classes = useStyles();\r\n const isMobile = useIsMobile(); \r\n\r\n const [loading, setLoading] = useState(false);\r\n const [openCancelDialog, setOpenCancelDialog] = useState(false);\r\n const [openRefundDialog, setOpenRefundDialog] = useState(false);\r\n const [openUpdateCardDialog, setOpenUpdateCardDialog] = useState(false);\r\n const [openChangeCardDialog, setOpenChangeCardDialog] = useState(false);\r\n const [openConfirmationDialog, setOpenConfirmationDialog] = useState(false);\r\n const [openSpecialOfferDialog, setOpenSpecialOfferDialog] = useState(false);\r\n const [billingStatements, setBillingStatements] = useState([]);\r\n const [paymentMethod, setPaymentMethod] = useState();\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [showErrorMessage, setShowErrorMessage] = useState(false);\r\n\r\n useEffect(() => {\r\n document.title = \"Sermon Maker - Settings\";\r\n setLoading(true);\r\n getBillingStatements();\r\n getPaymentMethod();\r\n setLoading(false);\r\n }, [])\r\n\r\n const getBillingStatements = async() => {\r\n let billingStatementResponse = await AccountService.getBillingStatements();\r\n if (ServerResponse.isSuccess(billingStatementResponse)) {\r\n setBillingStatements(billingStatementResponse.data);\r\n }\r\n }\r\n\r\n const getPaymentMethod = async() => {\r\n let result = await AccountService.getPaymentMethod();\r\n if (result.success && result.data) {\r\n setPaymentMethod(result.data)\r\n }\r\n }\r\n\r\n const onUpdatePayment = async (updatedPaymentMethod:PaymentMethod) => {\r\n setPaymentMethod(updatedPaymentMethod);\r\n }\r\n\r\n const onChangeCard = (updatedPaymentMethod:PaymentMethod) => {\r\n setPaymentMethod(updatedPaymentMethod);\r\n setOpenChangeCardDialog(false);\r\n }\r\n\r\n const toggleUpdateCardDialog = () => setOpenUpdateCardDialog(!openUpdateCardDialog);\r\n const toggleCancelDialog = () => setOpenCancelDialog(!openCancelDialog)\r\n const toggleRefundDialog = () => setOpenRefundDialog(!openRefundDialog)\r\n const toggleChangeCardDialog = () => setOpenChangeCardDialog(!openChangeCardDialog);\r\n const toggleSpecialOfferDialog = () => setOpenSpecialOfferDialog(!openSpecialOfferDialog);\r\n const toggleConfirmationDialog = () => setOpenConfirmationDialog(!openConfirmationDialog);\r\n const toggleShowErrorMessage = () => setShowErrorMessage(!showErrorMessage);\r\n\r\n return (\r\n
    \r\n \r\n \r\n history.goBack()}\r\n >\r\n \r\n \r\n \r\n
    \r\n Settings\r\n
    \r\n
    \r\n \r\n
    \r\n Settings\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n loading\r\n &&\r\n
    \r\n \r\n
    \r\n \r\n Loading...\r\n \r\n
    \r\n }\r\n {\r\n !loading\r\n &&\r\n
    \r\n \r\n \r\n
    \r\n {\r\n user.profileImageUrl\r\n ?\r\n \r\n :\r\n {user.firstName.charAt(0)}{user.lastName.charAt(0)}\r\n }\r\n Sermon Maker Settings\r\n Manage your subscription and view billing statements\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {\r\n billingStatements.length > 0\r\n &&\r\n <>\r\n {!isMobile &&\r\n \r\n Billing Statements\r\n\r\n \r\n \r\n \r\n Amount\r\n Invoice Number\r\n Date Created\r\n \r\n \r\n \r\n \r\n {billingStatements.map((row, index) => {\r\n return \r\n })}\r\n \r\n
    \r\n\r\n
    \r\n }\r\n {isMobile &&\r\n <>\r\n Billing Statements\r\n {billingStatements.map((row, index) => {\r\n return \r\n })}\r\n \r\n }\r\n \r\n }\r\n
    \r\n }\r\n { user.inAdminImpersonationMode\r\n &&\r\n setErrorMessage(message)}\r\n toggleShowErrorMessage={toggleShowErrorMessage}/>\r\n }\r\n {\r\n paymentMethod\r\n &&\r\n setErrorMessage(message)}\r\n toggleShowErrorMessage={toggleShowErrorMessage}\r\n />\r\n }\r\n {\r\n makerSubscription\r\n &&\r\n !makerSubscription.cancellationDate\r\n &&\r\n onChangeCard(newPaymentMethod)}\r\n />\r\n }\r\n setErrorMessage(message)}\r\n toggleShowErrorMessage={toggleShowErrorMessage}/>\r\n { makerSubscription\r\n &&\r\n <>\r\n setErrorMessage(message)}\r\n toggleShowErrorMessage={toggleShowErrorMessage}\r\n />\r\n \r\n \r\n }\r\n { showErrorMessage\r\n &&\r\n \r\n }\r\n
    \r\n );\r\n}","import { LibraryItemType } from \"./LibraryItemType\";\r\nimport { AssetCategory, toAssetCategoryFromNumber } from \"./AssetCategory\";\r\nimport { Modify } from \"../utilities/modifyType\";\r\n\r\nexport interface PremiumSermonAsset {\r\n id: string;\r\n premiumSermonId: number;\r\n parentId?: string;\r\n type: LibraryItemType;\r\n name: string;\r\n category?: AssetCategory;\r\n builderAssetText: string;\r\n linkAssetUrl: string;\r\n fileAssetLocation: string;\r\n fileAssetSize?: string;\r\n fileAssetExtension: string;\r\n fileAssetMimeType: string;\r\n}\r\n\r\nexport type SerializedPremiumSermonAsset = Modify;\r\n\r\nexport function deserializePremiumSermonAsset(asset:SerializedPremiumSermonAsset): PremiumSermonAsset{\r\n return {\r\n ...asset,\r\n category: asset.category && !isNaN(+asset.category) ? toAssetCategoryFromNumber(+asset.category) : undefined,\r\n }\r\n}\r\n","import { Modify } from \"../utilities/modifyType\";\r\nimport { PremiumSermonAsset, deserializePremiumSermonAsset, SerializedPremiumSermonAsset } from \"./PremiumSermonAsset\";\r\n\r\nexport interface PremiumSermon {\r\n id: number;\r\n name: string;\r\n shortDescription: string;\r\n description: string; \r\n isDisabled: boolean;\r\n isFree: boolean;\r\n thumbnailUrl: string;\r\n assets: PremiumSermonAsset[];\r\n dateCreated: Date;\r\n totalActivations: number;\r\n}\r\n\r\nexport type SerializedPremiumSermon = Modify;\r\n\r\nexport function deserializePremiumSermon(premiumSermon:SerializedPremiumSermon) : PremiumSermon {\r\n return {\r\n ...premiumSermon,\r\n dateCreated: new Date(premiumSermon.dateCreated),\r\n assets: premiumSermon.assets ? premiumSermon.assets.map(deserializePremiumSermonAsset) : []\r\n }\r\n}","import {deserializePremiumSermon, SerializedPremiumSermon} from \"../../src/entities/PremiumSermon\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface SavePremiumSermonRequest {\r\n\tid?: number;\r\n\ttitle: string;\r\n\tshortDescription: string;\r\n\tdescription: string;\r\n\tthumbnail?: string;\r\n}\r\n\r\nexport interface SavePremiumSermonAssetRequest {\r\n\tpremiumId: number;\r\n\tassetId: string;\r\n}\r\n\r\nexport const PremiumSermonService = {\r\n\tgetAll: () => WebClient.Get(\"api/PremiumSermon/GetPremiumSermon\", (sermons:SerializedPremiumSermon[]) => sermons.map(deserializePremiumSermon)),\r\n\tgetAllEnabled: () => WebClient.Get(\"api/PremiumSermon/GetEnabledPremiumSermon\", (sermons:SerializedPremiumSermon[]) => sermons.map(deserializePremiumSermon)),\r\n\tget: (id: number) => WebClient.Get(`api/PremiumSermon/GetPremiumSermon/${id}`, deserializePremiumSermon),\r\n\tgetByName: (name: string) => WebClient.Post.Unvalidated(`api/PremiumSermon/GetPremiumSermonByTitle`, { title: name} , deserializePremiumSermon),\r\n\tpurchase: (id: number) => WebClient.Put.Validated(`api/PremiumSermon/Purchase/`, { id }),\r\n\tactivate: (id: number) => WebClient.Post.Validated(`api/PremiumSermon/Activate/`, {PremiumSermonId: id})\r\n}\r\n","import { LibraryItemType } from \"./LibraryItemType\";\r\nimport { AssetCategory, toAssetCategoryFromNumber } from \"./AssetCategory\";\r\nimport { Modify } from \"../utilities/modifyType\";\r\n\r\nexport interface PremiumSermonSeriesAsset {\r\n id: string;\r\n premiumSermonSeriesId: number;\r\n parentId?: string;\r\n type: LibraryItemType;\r\n name: string;\r\n category?: AssetCategory;\r\n builderAssetText: string;\r\n linkAssetUrl: string;\r\n fileAssetLocation: string;\r\n fileAssetSize?: string;\r\n fileAssetExtension: string;\r\n fileAssetMimeType: string;\r\n}\r\n\r\nexport type SerializedPremiumSermonSeriesAsset = Modify\r\n\r\nexport function deserializePremiumSermonSeriesAsset(asset:SerializedPremiumSermonSeriesAsset): PremiumSermonSeriesAsset{\r\n return {\r\n ...asset,\r\n category: asset.category && !isNaN(+asset.category) ? toAssetCategoryFromNumber(+asset.category) : undefined,\r\n }\r\n}\r\n","import { Modify } from \"../utilities/modifyType\";\r\nimport { deserializePremiumSermonSeriesAsset, PremiumSermonSeriesAsset, SerializedPremiumSermonSeriesAsset } from \"./PremiumSermonSeriesAsset\";\r\n\r\nexport interface PremiumSermonSeries {\r\n id: number;\r\n name: string;\r\n shortDescription: string;\r\n description: string; \r\n isDisabled: boolean;\r\n isFree: boolean;\r\n thumbnailUrl: string;\r\n assets: PremiumSermonSeriesAsset[];\r\n activations: number;\r\n dateCreated: Date;\r\n}\r\n\r\nexport type SerializedPremiumSermonSeries = Modify\r\n\r\nexport function deserializePremiumSermonSeries(premiumSermonSeries:SerializedPremiumSermonSeries) : PremiumSermonSeries {\r\n return {\r\n ...premiumSermonSeries,\r\n dateCreated: new Date(premiumSermonSeries.dateCreated),\r\n assets: premiumSermonSeries.assets ? premiumSermonSeries.assets.map(deserializePremiumSermonSeriesAsset) : []\r\n }\r\n}\r\n","import { deserializePremiumSermonSeries, SerializedPremiumSermonSeries } from \"../../src/entities/PremiumSermonSeries\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface SavePremiumSermonSeriesRequest {\r\n\tid?: number;\r\n\ttitle: string;\r\n\tshortDescription: string;\r\n\tdescription: string;\r\n\tthumbnail?: string;\r\n}\r\n\r\nexport interface SavePremiumSermonSeriesAssetRequest {\r\n\tpremiumSeriesId: number;\r\n\tassetId: string;\r\n}\r\n\r\nexport const PremiumSermonSeriesService = {\r\n\tgetAll: () => WebClient.Get(\"api/PremiumSermonSeries/GetPremiumSermonSeries\", (series: SerializedPremiumSermonSeries[]) => series.map(deserializePremiumSermonSeries)),\r\n\tgetAllEnabled: () => WebClient.Get(\"api/PremiumSermonSeries/GetEnabledPremiumSermonSeries\", (series: SerializedPremiumSermonSeries[]) => series.map(deserializePremiumSermonSeries)),\r\n\tget: (id: number) => WebClient.Get(`api/PremiumSermonSeries/GetPremiumSermonSeries/${id}`, deserializePremiumSermonSeries),\r\n\tgetByName: (name: string) => WebClient.Post.Unvalidated(`api/PremiumSermonSeries/GetPremiumSermonSeriesByTitle`, {title: name}, deserializePremiumSermonSeries),\r\n\tpurchase: (id: number) => WebClient.Put.Validated(`api/PremiumSermonSeries/Purchase/`, { id }),\r\n\tactivate: (id: number) => WebClient.Post.Validated(`api/PremiumSermonSeries/Activate/`, { PremiumSermonSeriesId: id })\r\n}","import { ApplicationUser } from \"../entities/ApplicationUser\";\r\nimport Coupon from \"../entities/Coupon\";\r\nimport { SubscriptionPlan } from \"../entities/SubscriptionPlan\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nconst endpoint = \"api/Subscription\"\r\n\r\nexport interface CreateCheckoutSessionRequest {\r\n priceId: string;\r\n isAnnualPlan: boolean;\r\n couponId?: string;\r\n cancelPath: string;\r\n}\r\n\r\nexport interface CreateBundleCheckoutSessionRequest {\r\n cancelPath: string;\r\n}\r\n\r\nexport const SubscriptionService = {\r\n checkSubscriptionHistory: () => WebClient.Get(`${endpoint}/CheckSubscriptionHistory`),\r\n hasUserHadFreeTrial: () => WebClient.Get(`${endpoint}/FreeTrialStatus`),\r\n getPromoCode: (code:string) => WebClient.Get(`${endpoint}/PromoCode/${code}`),\r\n getActivePlans: () => WebClient.Get(`${endpoint}/ActivePlans`),\r\n createCheckoutSession: (request: CreateCheckoutSessionRequest) => \r\n WebClient.Post.Unvalidated<{sessionId: string}>(`${endpoint}/CreateCheckoutSession`, request),\r\n createBundleCheckoutSession: (request:CreateBundleCheckoutSessionRequest) => \r\n WebClient.Post.Unvalidated<{sessionId: string}>(`${endpoint}/CreateBundleCheckout`, request),\r\n recordCheckout: (sessionId:string) => WebClient.Post.Validated(`${endpoint}/RecordCheckout`, { sessionId })\r\n}","import React, { useEffect, useMemo } from 'react';\r\n\r\nimport { routes } from '../../routes';\r\nimport { PremiumSermonService } from '../../services/PremiumSermonService';\r\nimport { PremiumSermonSeriesService } from '../../services/PremiumSermonSeriesService';\r\nimport { LoadingPage } from '../../components/LoadingPage';\r\nimport { useUser } from '../../utilities/useUser';\r\nimport { BuilderAssetService, SaveBuilderAssetRequest } from '../../services/BuilderAssetService';\r\nimport { EventTracking } from '../../utilities/Tracking/EventTracking';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useQueryParams } from '../../components/useQueryParams';\r\nimport { SubscriptionService } from '../../services/SubscriptionService';\r\n\r\nconst params = new URLSearchParams(localStorage.getItem(\"registerParams\") ?? \"\")\r\n\r\nexport function ConfirmationPage(){\r\n const routeQueryString = useQueryParams();\r\n const userContext = useUser();\r\n const history = useHistory();\r\n \r\n const redirect = useMemo(() => params.get(\"redirect\") ?? routes.app.libraryHomePage, [params])\r\n const premiumSeriesId = useMemo(() => params.get(\"premiumSeriesId\"), [params]);\r\n const premiumSermonId = useMemo(() => params.get(\"premiumSermonId\"), [params]);\r\n const builderPreviewId = useMemo(() => params.get(\"builderPreviewId\"), [params]);\r\n\r\n useEffect(() => {\r\n async function handleConfirmation(){\r\n const sessionId = routeQueryString.get(\"sessionId\")\r\n\r\n if(!sessionId) return history.push(routes.app.activatePage);\r\n\r\n const userResponse = await SubscriptionService.recordCheckout(sessionId)\r\n\r\n if(userResponse.error) return;\r\n if(userResponse.success){ \r\n if (premiumSeriesId) {\r\n await PremiumSermonSeriesService.purchase(parseInt(premiumSeriesId));\r\n const containerId = await PremiumSermonSeriesService.activate(parseInt(premiumSeriesId));\r\n\r\n if(containerId.success){\r\n userContext.updateUser(userResponse.data); \r\n return history.push(routes.app.resolve.libraryFolder(containerId.data))\r\n }\r\n }\r\n \r\n if(premiumSermonId) {\r\n await PremiumSermonService.purchase(parseInt(premiumSermonId));\r\n const containerId = await PremiumSermonService.activate(parseInt(premiumSermonId));\r\n\r\n if(containerId.success){\r\n userContext.updateUser(userResponse.data); \r\n return history.push(routes.app.resolve.libraryFolder(containerId.data))\r\n }\r\n }\r\n\r\n if(builderPreviewId){\r\n const sermonAssetResponse = await BuilderAssetService.getSermonAsBuilderAsset(builderPreviewId);\r\n if(sermonAssetResponse.success){\r\n const saveAssetRequest:SaveBuilderAssetRequest = {\r\n ...sermonAssetResponse.data,\r\n id: undefined,\r\n } \r\n const response = await BuilderAssetService.save(saveAssetRequest);\r\n EventTracking.Builder.onImportSCSermon(Number(builderPreviewId));\r\n \r\n if(response.success){\r\n userContext.updateUser(userResponse.data); \r\n return history.push(routes.app.resolve.builderPage(response.data.id))\r\n }\r\n }\r\n } \r\n\r\n userContext.updateUser(userResponse.data); \r\n return history.push(redirect) \r\n }\r\n }\r\n \r\n handleConfirmation()\r\n }, [])\r\n\r\n return \r\n}","import { PremiumSermon } from \"../entities/PremiumSermon\";\r\n\r\nexport const Search = (searchTerm: string, sermons: PremiumSermon[]):PremiumSermon[] => {\r\n\tvar regex = new RegExp(searchTerm, \"i\");\r\n\treturn sermons.filter((sermon) => {\r\n\t\tif (regex.test(sermon.name)) {\r\n\t\t\treturn sermon;\r\n\t\t} else if (regex.test(sermon.shortDescription)) {\r\n\t\t\treturn sermon;\r\n\t\t} else if (regex.test(sermon.description)) {\r\n\t\t\treturn sermon;\r\n\t\t}\r\n\t\treturn false;\r\n\t});\r\n};\r\n","export enum MarketingPageType {\r\n\tSeries = \"series\",\r\n\tSermons = \"sermons\",\r\n}\r\n","import { PremiumSermonSeries } from \"../entities/PremiumSermonSeries\";\r\n\r\nexport const Search = (searchTerm: string, sermonSeries: PremiumSermonSeries[]):PremiumSermonSeries[] => {\r\n\tvar regex = new RegExp(searchTerm, \"i\");\r\n\treturn sermonSeries.filter((series) => {\r\n\t\tif (regex.test(series.name)) {\r\n\t\t\treturn series;\r\n\t\t} else if (regex.test(series.shortDescription)) {\r\n\t\t\treturn series;\r\n\t\t} else if (regex.test(series.description)) {\r\n\t\t\treturn series;\r\n\t\t}\r\n\r\n\t\tvar assetNameContainsSearchTerm = series.assets.some((asset) => regex.test(asset.name));\r\n\t\tif (assetNameContainsSearchTerm) {\r\n\t\t\treturn series;\r\n\t\t}\r\n\r\n\t\treturn false\r\n\t});\r\n};\r\n","// a function that will work like the normal JS .replaceAll() that will work for older browsers\r\nexport default function replaceAllCompat(text: string, textToFind: string, textToInsert: string) {\r\n\treturn text.replace(new RegExp(escapeRegExp(textToFind), \"g\"), textToInsert);\r\n}\r\n\r\n// Best practice from MSDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping\r\nfunction escapeRegExp(text: string) {\r\n\treturn text.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\r\n}\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Card, CardActionArea, CardContent, CardMedia, makeStyles, Grid, Theme, Typography } from \"@material-ui/core\";\r\nimport { MarketingPageType } from \"../types/MarketingPageType\";\r\nimport replaceAllCompat from \"../../../utilities/replaceAllCompat\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n\tmedia: {\r\n\t\tpaddingTop: \"56.25%\", // 16:9 ratio\r\n\t\twidth: \"100%\",\r\n\t\theight: \"100%\",\r\n\t\tobjectFit: \"cover\",\r\n\t},\r\n\tmaximumWidth: {\r\n\t\tminWidth: \"100%\",\r\n\t},\r\n\tmaximumWidthMobile: {\r\n\t\t[theme.breakpoints.down(\"xs\")]: {\r\n\t\t\tminWidth: \"100%\",\r\n\t\t},\r\n\t},\r\n\tnoUnderline: {\r\n\t\ttextDecoration: \"none\",\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tassetName: string;\r\n\tassetType: MarketingPageType;\r\n\tcardImage: string;\r\n\tcardTitle: string;\r\n\tcardContent: string;\r\n}\r\n\r\nexport function SermonCard({ cardImage, cardTitle, cardContent, assetName, assetType }: Props) {\r\n\tconst classes = useStyles();\r\n\tconst getUrlSafeAssetName = (assetName: string) => {\r\n\t\tlet safeToEncodeAssetName = replaceAllCompat(replaceAllCompat(assetName, \"-\", \"_\"), \"%\", \"&per&\");\r\n\t\tlet encodedAssetName = encodeURIComponent(safeToEncodeAssetName);\r\n\t\tencodedAssetName = replaceAllCompat(encodedAssetName, \"%20\", \"-\");\r\n\t\tencodedAssetName = replaceAllCompat(encodedAssetName, \"?\", \"%3F\");\r\n\t\treturn encodedAssetName;\r\n\t};\r\n\r\n\tlet urlSafeAssetName = getUrlSafeAssetName(assetName);\r\n\tconst cardLink = `/popular-${assetType === MarketingPageType.Series ? \"sermon-series\" : \"sermons\"}/${urlSafeAssetName}`;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{cardTitle}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{cardContent}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Button, Grid, makeStyles, Paper, Theme } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n\tactionButton: {\r\n\t\twidth: \"100%\",\r\n\t\tmaxWidth: \"350px\",\r\n\t\tcolor: \"#004F9D\",\r\n\t\tbackgroundColor: \"#fff\",\r\n\t\tfontWeight: \"bold\",\r\n\t\tfontSize: \"1.25rem\",\r\n\t\tpadding: \"15px 0\",\r\n\t\tborderRadius: \"2px\",\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: \"#D8D8D8\",\r\n\t\t},\r\n\t},\r\n\tbuttonSubText: {\r\n\t\tcolor: \"#fff\",\r\n\t\tfontSize: \"0.75em\",\r\n\t},\r\n\tcenteredLightWhiteText: {\r\n\t\ttextAlign: \"center\",\r\n\t\tcolor: \"#fff\",\r\n\t\tfontWeight: 200,\r\n\t\tfontSize: \"1.75rem\",\r\n\t\tmarginTop: \"25px\",\r\n\t},\r\n\tcenteredText: {\r\n\t\ttextAlign: \"center\",\r\n\t},\r\n\thero: {\r\n\t\tbackgroundColor: \"#004F9D\",\r\n\t\tpaddingTop: \"50px\",\r\n\t\tpaddingBottom: \"80px\",\r\n\t\t[theme.breakpoints.down(\"md\")]: {\r\n\t\t\tpaddingLeft: \"15px\",\r\n\t\t\tpaddingRight: \"15px\",\r\n\t\t},\r\n\t},\r\n\theroHeaderText: {\r\n\t\tfontSize: \"4rem\",\r\n\t\tfontWeight: 500,\r\n\t\tmaxWidth: \"500px\",\r\n\t\tmargin: \"15px auto 25px auto\",\r\n\t\ttextAlign: \"center\",\r\n\t\tlineHeight: \"4.25rem\",\r\n\t\tcolor: \"#fff\",\r\n\t},\r\n\theroHeaderTextWithSubText: {\r\n\t\tfontSize: \"4rem\",\r\n\t\tfontWeight: 500,\r\n\t\tmaxWidth: \"500px\",\r\n\t\tmargin: \"15px auto 25px auto\",\r\n\t\ttextAlign: \"center\",\r\n\t\tlineHeight: \"4.25rem\",\r\n\t\tcolor: \"#fff\",\r\n\t\tpaddingBottom: \"5px\",\r\n\t\tpaddingTop: \"10px\",\r\n\t},\r\n\theroHeaderSubText: {\r\n\t\tfontSize: \"1.5em\",\r\n\t\ttextAlign: \"center\",\r\n\t\tcolor: \"#fff\",\r\n\t\tpaddingBottom: \"10px\",\r\n\t\tlineHeight: 1.2,\r\n\t\tmarginBottom: \"15px\",\r\n\t\tmarginTop: \"-20px\",\r\n\t},\r\n\tnoUnderline: {\r\n\t\ttextDecoration: \"none\",\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tbuttonText: string;\r\n\tbuttonSubText: string;\r\n\tcallToActionUrl: string;\r\n\tassetName: string;\r\n\theaderPreText: string;\r\n\tassetShortDescription: string | undefined;\r\n}\r\n\r\nexport function Hero({\r\n\tassetName: header,\r\n\theaderPreText,\r\n\tassetShortDescription: headerSubText,\r\n\tbuttonText,\r\n\tbuttonSubText,\r\n\tcallToActionUrl,\r\n}: Props) {\r\n\tconst classes = useStyles();\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{headerPreText}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{header}\r\n\t\t\t\t\r\n\t\t\t\t{headerSubText !== undefined && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{headerSubText}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{buttonSubText}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","type OptionalDirection = \"optionalStart\" | \"optionalEnd\";\r\nexport type SortDirection = \"Ascending\" | \"Descending\";\r\n\r\nexport const orderBy = {\r\n\toptional: {\r\n\t\tdate(\r\n\t\t\tselector: (obj: T) => Date | undefined,\r\n\t\t\tdirection: SortDirection,\r\n\t\t\torder: OptionalDirection\r\n\t\t): (a: T, b: T) => number {\r\n\t\t\treturn (a, b) => {\r\n\t\t\t\tconst dateA = selector(a);\r\n\t\t\t\tconst dateB = selector(b);\r\n\r\n\t\t\t\tif (dateA === dateB) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst optionalDirection = order === \"optionalStart\" ? 1 : -1;\r\n\t\t\t\tif (dateA == null || dateB == null) {\r\n\t\t\t\t\treturn optionalDirection;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (direction === \"Ascending\") {\r\n\t\t\t\t\treturn dateA.getTime() - dateB.getTime();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dateB.getTime() - dateA.getTime();\r\n\t\t\t};\r\n\t\t},\r\n\t\tnumber(\r\n\t\t\tselector: (obj: T) => number | undefined,\r\n\t\t\tdirection: SortDirection,\r\n\t\t\torder: OptionalDirection\r\n\t\t): (a: T, b: T) => number {\r\n\t\t\treturn (a, b) => {\r\n\t\t\t\tconst numberA = selector(a);\r\n\t\t\t\tconst numberB = selector(b);\r\n\r\n\t\t\t\tif (numberA === numberB) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst optionalDirection = order === \"optionalStart\" ? 1 : -1;\r\n\t\t\t\tif (numberA == null || numberB == null) {\r\n\t\t\t\t\treturn optionalDirection;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (direction === \"Ascending\") {\r\n\t\t\t\t\treturn numberA - numberB;\r\n\t\t\t\t}\r\n\t\t\t\treturn numberB - numberA;\r\n\t\t\t};\r\n\t\t},\r\n\t\tstring(\r\n\t\t\tselector: (obj: T) => string | undefined,\r\n\t\t\tdirection: SortDirection,\r\n\t\t\torder: OptionalDirection\r\n\t\t): (a: T, b: T) => number {\r\n\t\t\treturn (a, b) => {\r\n\t\t\t\tlet s1FieldValue = selector(a);\r\n\t\t\t\tlet s2FieldValue = selector(b);\r\n\r\n\t\t\t\tconst optionalDirection = order === \"optionalStart\" ? 1 : -1;\r\n\t\t\t\tif (s1FieldValue == null || s2FieldValue == null) {\r\n\t\t\t\t\treturn optionalDirection;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ts1FieldValue = s1FieldValue.toLowerCase();\r\n\t\t\t\ts2FieldValue = s1FieldValue.toLowerCase();\r\n\r\n\t\t\t\tconst value = s1FieldValue.localeCompare(s2FieldValue);\r\n\t\t\t\tif (value > 0) {\r\n\t\t\t\t\treturn direction === \"Ascending\" ? 1 : -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value < 0) {\r\n\t\t\t\t\treturn direction === \"Ascending\" ? -1 : 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn 0;\r\n\t\t\t};\r\n\t\t},\r\n\t},\r\n\tdate(selector: (obj: T) => Date, direction: SortDirection): (a: T, b: T) => number {\r\n\t\treturn (a, b) =>\r\n\t\t\tdirection === \"Ascending\"\r\n\t\t\t\t? selector(a).getTime() - selector(b).getTime()\r\n\t\t\t\t: selector(b).getTime() - selector(a).getTime();\r\n\t},\r\n\tnumber(selector: (obj: T) => number, direction: SortDirection): (a: T, b: T) => number {\r\n\t\treturn (a, b) => (direction === \"Ascending\" ? selector(a) - selector(b) : selector(b) - selector(a));\r\n\t},\r\n\tstring(selector: (obj: T) => string, direction: SortDirection): (a: T, b: T) => number {\r\n\t\treturn (a, b) => {\r\n\t\t\tconst s1FieldValue = selector(a).toLowerCase();\r\n\t\t\tconst s2FieldValue = selector(b).toLowerCase();\r\n\r\n\t\t\tconst value = s1FieldValue.localeCompare(s2FieldValue);\r\n\t\t\tif (value > 0) {\r\n\t\t\t\treturn direction === \"Ascending\" ? 1 : -1;\r\n\t\t\t}\r\n\r\n\t\t\tif (value < 0) {\r\n\t\t\t\treturn direction === \"Ascending\" ? -1 : 1;\r\n\t\t\t}\r\n\r\n\t\t\treturn 0;\r\n\t\t};\r\n\t},\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Redirect, RouteComponentProps } from \"react-router-dom\";\r\nimport { CircularProgress, Grid, makeStyles, Theme, Typography } from \"@material-ui/core\";\r\n\r\nimport { PremiumSermonSeriesService } from \"../../services/PremiumSermonSeriesService\";\r\nimport { ServerResponse } from \"../../services/server/OldWebClient\";\r\nimport { PremiumSermonService } from \"../../services/PremiumSermonService\";\r\nimport { Search as PremiumSermonSearch } from \"../../utilities/PremiumSermonSearch\";\r\nimport { Search as PremiumSermonSeriesSearch } from \"../../utilities/PremiumSeriesSearch\";\r\nimport { getParameterByName } from \"../../utilities/UrlInteraction\";\r\nimport { MarketingPageType } from \"./types/MarketingPageType\";\r\nimport { ApplicationUser } from \"../../entities/ApplicationUser\";\r\nimport { PremiumSermon } from \"../../entities/PremiumSermon\";\r\nimport { PremiumSermonSeries } from \"../../entities/PremiumSermonSeries\";\r\nimport { SermonCard } from \"./components/sermonCard\";\r\nimport { Hero } from \"./components/hero\";\r\nimport { ServerFailed } from \"../errors/serverFailed\";\r\nimport { orderBy } from \"../../utilities/orderBy\";\r\nimport { useUser } from \"../../utilities/useUser\";\r\nimport { routes } from \"../../routes\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n\thideOverflow: {\r\n\t\toverflow: \"hidden\",\r\n\t},\r\n\tloadingContainer: {\r\n\t\tmarginLeft: \"auto\",\r\n\t\tmarginRight: \"auto\",\r\n\t\tdisplay: \"flex\",\r\n\t},\r\n\tloading: {\r\n\t\tmarginTop: theme.spacing(4),\r\n\t\tmarginBottom: theme.spacing(1),\r\n\t},\r\n\ttileContainer: {\r\n\t\tpadding: \"25px 10px 30px 10px\",\r\n\t\tmaxWidth: \"1080px\",\r\n\t\tmarginLeft: \"auto\",\r\n\t\tmarginRight: \"auto\",\r\n\t},\r\n\tnoResults: {\r\n\t\tmarginLeft: \"auto\",\r\n\t\tmarginRight: \"auto\",\r\n\t\tmarginTop: \"auto\",\r\n\t\tfontWeight: 400,\r\n\t\tfontSize: \"1.5em\",\r\n\t},\r\n}));\r\n\r\ninterface Props {\r\n\tpageType: MarketingPageType;\r\n}\r\n\r\nexport function ProductsList({ pageType }: Props) {\r\n\tconst classes = useStyles();\r\n\tconst userContext = useUser();\r\n\tconst user = userContext.onlineUser;\r\n\r\n\tconst [premiumSermonSeries, setPremiumSermonSeries] = useState();\r\n\tconst [premiumSermons, setPremiumSermons] = useState();\r\n\tconst [queryString, setQueryString] = useState(null);\r\n\tconst [serverError, setServerError] = useState(false);\r\n\tconst seriesRedirectLink = \"/premium-series\";\r\n\tconst sermonRedirectLink = \"/premium-sermons\";\r\n\r\n\tconst heroProps = {\r\n\t\tassetName: `Popular ${pageType === MarketingPageType.Series ? \"Sermon Series\" : \"Sermons\"}`,\r\n\t\theaderPreText: \"CONFIDENT PREACHING\",\r\n\t\tassetShortDescription: undefined,\r\n\t\tbuttonText: \"GET STARTED FREE\",\r\n\t\tbuttonSubText: `Unlock all premium ${pageType} FREE with Sermon Maker`,\r\n\t};\r\n\r\n\tconst getPremiumSeriesData = async () => {\r\n\t\tlet response = await PremiumSermonSeriesService.getAllEnabled();\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tsetServerError(false);\r\n\t\t\tsetPremiumSermonSeries(response.data);\r\n\t\t} else {\r\n\t\t\tsetServerError(true);\r\n\t\t}\r\n\t};\r\n\r\n\tconst getPremiumSermonsData = async () => {\r\n\t\tlet response = await PremiumSermonService.getAllEnabled();\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tsetServerError(false);\r\n\t\t\tsetPremiumSermons(response.data);\r\n\t\t} else {\r\n\t\t\tsetServerError(true);\r\n\t\t}\r\n\t};\r\n\r\n\tconst renderLoadingIcon = () => {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t};\r\n\r\n\tconst renderPremiumSermonSeriesTiles = (premiumSermonSeries: PremiumSermonSeries[], queryString: string | null = null) => {\r\n\t\tif (queryString !== null) {\r\n\t\t\tpremiumSermonSeries = PremiumSermonSeriesSearch(queryString, premiumSermonSeries);\r\n\t\t}\r\n\r\n\t\tif (premiumSermonSeries.length < 1) {\r\n\t\t\treturn No results found for query: {queryString};\r\n\t\t}\r\n\r\n\t\tlet sortedSeries = premiumSermonSeries.sort(orderBy.date((series) => series.dateCreated, \"Descending\"));\r\n\t\treturn sortedSeries.map((series) => {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\t};\r\n\r\n\tconst renderPremiumSermonsTiles = (premiumSermons: PremiumSermon[], queryString: string | null = null) => {\r\n\t\tif (queryString !== null) {\r\n\t\t\tpremiumSermons = PremiumSermonSearch(queryString, premiumSermons);\r\n\t\t}\r\n\r\n\t\tif (premiumSermons.length < 1) {\r\n\t\t\treturn No results found for query: {queryString};\r\n\t\t}\r\n\r\n\t\tlet sortedSermons = premiumSermons.sort(orderBy.date((sermon) => sermon.dateCreated, \"Descending\"));\r\n\t\treturn sortedSermons.map((sermon) => {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\t};\r\n\r\n\tconst renderContent = () => {\r\n\t\tif (premiumSermonSeries !== undefined && pageType === MarketingPageType.Series) {\r\n\t\t\treturn renderPremiumSermonSeriesTiles(premiumSermonSeries, queryString);\r\n\t\t}\r\n\r\n\t\tif (premiumSermons !== undefined && pageType === MarketingPageType.Sermons) {\r\n\t\t\treturn renderPremiumSermonsTiles(premiumSermons, queryString);\r\n\t\t}\r\n\r\n\t\treturn renderLoadingIcon();\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (pageType === MarketingPageType.Series) {\r\n\t\t\tgetPremiumSeriesData();\r\n\t\t} else if (pageType === MarketingPageType.Sermons) {\r\n\t\t\tgetPremiumSermonsData();\r\n\t\t}\r\n\r\n\t\tif (window.location.search !== \"\") {\r\n\t\t\tlet query = getParameterByName(\"query\");\r\n\t\t\tsetQueryString(query);\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{user === null || user?.makerSubscription === null ? (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{!serverError && renderContent()}\r\n\t\t\t\t\t\t{serverError && }\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}","export const getParameterByName = (name: string, url?: string) => {\r\n\r\n // Silly to roll our own, I know, but we need the name lookup to be case insensitive,\r\n // and I didn't want to loop through keys\r\n if (!url) {\r\n url = window.location.href;\r\n }\r\n\r\n name = name.replace(/[[\\]]/g, \"\\\\$&\");\r\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\", 'i');\r\n var results = regex.exec(url);\r\n\r\n if (!results) {\r\n return null;\r\n }\r\n\r\n if (!results[2]) {\r\n return '';\r\n }\r\n\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n};","import React from \"react\";\r\nimport {\r\n\tTheme,\r\n\tGrid,\r\n\tTypography,\r\n\tTable,\r\n\tTableHead,\r\n\tTableRow,\r\n\tTableCell,\r\n\tTableSortLabel,\r\n\tTableBody,\r\n\tmakeStyles,\r\n} from \"@material-ui/core\";\r\nimport classNames from \"classnames\";\r\n\r\nimport { PremiumSermon } from \"../../../entities/PremiumSermon\";\r\nimport { PremiumSermonSeries } from \"../../../entities/PremiumSermonSeries\";\r\nimport { LibraryItemType, printLibraryItemType } from \"../../../entities/LibraryItemType\";\r\nimport { printAssetCategory } from \"../../../entities/AssetCategory\";\r\nimport { MarketingPageType } from \"../types/MarketingPageType\";\r\nimport { Hero } from \"./hero\";\r\nimport { orderBy } from \"../../../utilities/orderBy\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n\tautoMargin: {\r\n\t\tmarginLeft: \"auto\",\r\n\t\tmarginRight: \"auto\",\r\n\t},\r\n\tmedia: {\r\n\t\tmaxWidth: \"100%\",\r\n\t\tmaxHeight: \"100%\",\r\n\t\tborderRadius: \"4px\",\r\n\t},\r\n\tmediaContainer: {\r\n\t\tmarginTop: \"15px\",\r\n\t\tmarginBottom: \"5px\",\r\n\t\tpaddingTop: \"15px\",\r\n\t\tminWidth: \"fit-content\",\r\n\t\t[theme.breakpoints.down(\"xs\")]: {\r\n\t\t\tmarginRight: \"10px\",\r\n\t\t\tmarginLeft: \"10px\",\r\n\t\t},\r\n\t},\r\n\tlongDescriptionContainer: {\r\n\t\tmarginTop: \"5px\",\r\n\t\tmarginBottom: \"10px\",\r\n\t\tpadding: \"0 15px\",\r\n\t\tmaxWidth: \"initial\",\r\n\t},\r\n\tlongDescriptionText: {\r\n\t\tfontSize: \"1.1rem\",\r\n\t\tmaxWidth: \"600px\",\r\n\t\tdisplay: \"block\",\r\n\t\tmargin: \"0 auto\",\r\n\t\tlineHeight: \"1.85rem\",\r\n\t\twidth: \"100%\",\r\n\t},\r\n\ttableContainer: {\r\n\t\tmaxWidth: \"649px\",\r\n\t\twidth: \"100%\",\r\n\t\tdisplay: \"block\",\r\n\t\tmargin: \"15px auto 30px\",\r\n\t},\r\n}));\r\n\r\ninterface Props{\r\n\tasset: PremiumSermon | PremiumSermonSeries;\r\n\tcallToActionUrl: string;\r\n\tpageType: MarketingPageType;\r\n}\r\n\r\nexport function ProductPageContent({ callToActionUrl, pageType, asset }: Props) {\r\n\tconst classes = useStyles();\r\n\tconst headerPreText = `POPULAR ${pageType === MarketingPageType.Series ? \"SERMON SERIES\" : \"SERMONS\"}`;\r\n\tconst buttonText = \"UNLOCK FREE TODAY\";\r\n\tconst buttonSubText = `Unlock all premium ${pageType === MarketingPageType.Series ? \"sermon series\" : \"sermons\"} FREE with Sermon Maker`;\r\n\r\n\tconst renderSeriesAssets = (series: PremiumSermonSeries) => {\r\n\t\tlet assets = series.assets.sort(orderBy.string((asset) => asset.name, \"Ascending\"));\r\n\r\n\t\treturn assets.map(\r\n\t\t\t(asset) =>\r\n\t\t\t\tasset.type !== LibraryItemType.Folder && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{asset.name}\r\n\t\t\t\t\t\t{asset.category ? printAssetCategory(asset.category) : printLibraryItemType(asset.type)}\r\n\t\t\t\t\t\r\n\t\t\t\t)\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\"sermon\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{asset.description}\r\n\t\t\t\t\r\n\t\t\t\t{pageType === MarketingPageType.Series && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tTitle\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tFile\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{renderSeriesAssets(asset as PremiumSermonSeries)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Redirect, RouteComponentProps } from \"react-router-dom\";\r\nimport DocumentMeta from \"react-document-meta\";\r\nimport { CircularProgress, makeStyles, Grid, Theme } from \"@material-ui/core\";\r\n\r\nimport { ServerResponse } from \"../../services/server/OldWebClient\";\r\nimport { PremiumSermonSeriesService } from \"../../services/PremiumSermonSeriesService\";\r\nimport { PremiumSermonService } from \"../../services/PremiumSermonService\";\r\nimport { MarketingPageType } from \"./types/MarketingPageType\";\r\nimport { PremiumSermonSeries } from \"../../entities/PremiumSermonSeries\";\r\nimport { ApplicationUser } from \"../../entities/ApplicationUser\";\r\nimport { PremiumSermon } from \"../../entities/PremiumSermon\";\r\nimport { ProductPageContent } from \"./components/productPageContent\";\r\nimport { ServerFailed } from \"../errors/serverFailed\";\r\nimport replaceAllCompat from \"../../utilities/replaceAllCompat\";\r\nimport { routes } from \"../../routes\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n\tloadingContainer: {\r\n\t\tmarginLeft: \"auto\",\r\n\t\tmarginRight: \"auto\",\r\n\t\tdisplay: \"flex\",\r\n\t},\r\n\tloading: {\r\n\t\tmarginTop: theme.spacing(4),\r\n\t\tmarginBottom: theme.spacing(1),\r\n\t},\r\n}));\r\n\r\ninterface Props extends RouteComponentProps<{ name: string }> {\r\n\tpageType: MarketingPageType;\r\n\tuser: ApplicationUser | null;\r\n}\r\n\r\nexport function Product({ user, pageType, match }: Props) {\r\n\tconst classes = useStyles();\r\n\tconst assetNameFromUri = replaceAllCompat(replaceAllCompat(match.params.name, \"-\", \" \"), \"_\", \"-\");\r\n\tconst assetName = replaceAllCompat(decodeURIComponent(assetNameFromUri), \"&per&\", \"%\");\r\n\tconst [series, setSeries] = useState(undefined);\r\n\tconst [sermon, setSermon] = useState(undefined);\r\n\tconst [serverError, setServerError] = useState(false);\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst [documentMetaInfo, setDocumentMetaInfo] = useState({\r\n\t\ttitle: \"loading...\",\r\n\t\tdescription: \"loading info...\",\r\n\t});\r\n\r\n\tconst getPremiumSeriesData = async () => {\r\n\t\tsetServerError(false);\r\n\t\tsetLoading(true);\r\n\t\tlet response = await PremiumSermonSeriesService.getByName(assetName);\r\n\t\tsetLoading(false);\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tlet series = response.data;\r\n\t\t\tsetDocumentMetaInfo({\r\n\t\t\t\ttitle: series.name,\r\n\t\t\t\tdescription: series.description,\r\n\t\t\t});\r\n\t\t\tsetSeries(series);\r\n\t\t} else {\r\n\t\t\tsetServerError(true);\r\n\t\t}\r\n\t};\r\n\r\n\tconst getPremiumSermonData = async () => {\r\n\t\tsetServerError(false);\r\n\t\tsetLoading(true);\r\n\t\tlet response = await PremiumSermonService.getByName(assetName);\r\n\t\tsetLoading(false);\r\n\r\n\t\tif (ServerResponse.isSuccess(response)) {\r\n\t\t\tlet sermon = response.data;\r\n\t\t\tsetDocumentMetaInfo({\r\n\t\t\t\ttitle: sermon.name,\r\n\t\t\t\tdescription: sermon.description,\r\n\t\t\t});\r\n\t\t\tsetSermon(sermon);\r\n\t\t} else {\r\n\t\t\tsetServerError(true);\r\n\t\t}\r\n\t};\r\n\r\n\tconst renderLoadingIcon = () => {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t};\r\n\r\n\tconst renderRedirect = () => {\r\n\t\tif (pageType === MarketingPageType.Series && series !== undefined) {\r\n\t\t\treturn ;\r\n\t\t} else if (pageType === MarketingPageType.Sermons && sermon !== undefined) {\r\n\t\t\treturn ;\r\n\t\t}\r\n\t};\r\n\r\n\tconst renderPageContent = () => {\r\n\t\tif (pageType === MarketingPageType.Series && series !== undefined) {\r\n\t\t\tlet callToActionUrl = user !== null ? routes.app.resolve.activatePage(`?premiumSeriesId=${series.id}`) : routes.public.resolve.reqisterPage(`?premiumSeriesId=${series.id}`);\r\n\t\t\treturn ;\r\n\t\t} else if (pageType === MarketingPageType.Sermons && sermon !== undefined) {\r\n\t\t\tlet callToActionUrl = user !== null ? routes.app.resolve.activatePage(`?premiumSermonId=${sermon.id}`) : routes.public.resolve.reqisterPage(`?premiumSermonId=${sermon.id}`);\r\n\t\t\treturn ;\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (pageType === MarketingPageType.Series) {\r\n\t\t\tgetPremiumSeriesData();\r\n\t\t} else if (pageType === MarketingPageType.Sermons) {\r\n\t\t\tgetPremiumSermonData();\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{user && user.makerSubscription && renderRedirect()}\r\n\t\t\t\t{loading && renderLoadingIcon()}\r\n\t\t\t\t{(series !== undefined || sermon !== undefined) && renderPageContent()}\r\n\t\t\t\t{serverError && }\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}","import React from \"react\";\r\nimport { ApplicationUser } from \"../entities/ApplicationUser\";\r\n\r\nexport interface BuilderPreviewState {\r\n user: ApplicationUser | null ;\r\n updateUser: (user: ApplicationUser | null) => void;\r\n showSnackBar: (message: string) => void;\r\n}\r\n\r\nexport const BuilderPreviewContext = React.createContext({} as any);\r\n\r\nexport function useBuilderPreview() {\r\n\treturn React.useContext(BuilderPreviewContext);\r\n}","import React, {useState} from 'react';\r\nimport { Button, DialogContent, TextField, Grid, Typography, makeStyles, Hidden, Divider, DialogActions} from \"@material-ui/core\";\r\nimport { ApplicationUser } from '../../../entities/ApplicationUser';\r\nimport { ServerResponse } from '../../../services/server/OldWebClient';\r\nimport { AuthenticationService } from '../../../services/AuthenticationService';\r\nimport { useBuilderPreview } from '../../../utilities/useBuilderPreview';\r\nimport { ProfitWell } from '../../../utilities/Tracking/ProfitWell';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { EventTracking, Location } from '../../../utilities/Tracking/EventTracking';\r\nimport { FieldValidationError, ValidationHelper } from '../../../services/server/ServerResponses';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing(20),\r\n },\r\n signInContainer: {\r\n height: '100vh'\r\n },\r\n paperGridItem: {\r\n [theme.breakpoints.down('xs')]: {\r\n height: '100%'\r\n }\r\n },\r\n signInPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500,\r\n [theme.breakpoints.down('xs')]: {\r\n margin: '0px',\r\n padding: '0px 30px',\r\n paddingTop: '5%',\r\n height: '100%'\r\n }\r\n },\r\n logoImage: {\r\n maxWidth: \"180px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n title: {\r\n fontSize: \"1.7rem\",\r\n fontWeight: 500\r\n },\r\n textButton: {\r\n color: \"rgb(50, 153, 57, .8)\",\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n marginTop: 4,\r\n backgroundColor: \"rgb(50, 153, 57, .9)\",\r\n color: '#FFF',\r\n \"&:hover\": {\r\n backgroundColor: \"rgb(50, 153, 57, .8)\",\r\n },\r\n },\r\n buttonContainer: {\r\n },\r\n link: {\r\n color: \"rgb(50, 153, 57, .8)\",\r\n textDecoration: 'none'\r\n },\r\n messageLink: {\r\n color: \"#00a5e7\"\r\n },\r\n termsText: {\r\n opacity: .88,\r\n },\r\n cssLabel: {\r\n '&$cssFocused': {\r\n color: \"rgb(50, 153, 57, .8)\",\r\n },\r\n },\r\n cssFocused: {},\r\n cssUnderline: {\r\n '&:after': {\r\n borderBottomColor: \"rgb(50, 153, 57, .8)\",\r\n color: \"rgb(50, 153, 57, .8)\",\r\n },\r\n },\r\n cssOutlinedInput: {\r\n '&$cssFocused $notchedOutline': {\r\n borderColor: \"rgb(50, 153, 57, .8)\",\r\n color: \"rgb(50, 153, 57, .8)\",\r\n },\r\n },\r\n notchedOutline: {},\r\n divider: {\r\n borderLeft: \"3px solid green\",\r\n position: \"absolute\",\r\n left: \"50%\",\r\n marginLeft: \"-1.5px\",\r\n }\r\n}));\r\n\r\nexport function SignInRegisterDialog() {\r\n const [showForgotPassword, setShowForgotPassword] = useState(false);\r\n const [isDisabled, setIsDisabled] = useState(false);\r\n\r\n const toggleForgotPassword = () => {\r\n setIsDisabled(false);\r\n setShowForgotPassword(!showForgotPassword);\r\n }\r\n\r\n return (\r\n showForgotPassword\r\n ?\r\n <>\r\n Forgot Your Password\r\n \r\n toggleForgotPassword()} \r\n />\r\n \r\n \r\n :\r\n <>\r\n Sign in or register\r\n \r\n \r\n \r\n \r\n toggleForgotPassword()} \r\n setIsDisabled={(disable:boolean) => setIsDisabled(disable)}\r\n isDisabled={isDisabled}/>\r\n \r\n \r\n
    \r\n
    \r\n \r\n setIsDisabled(disable)}\r\n isDisabled={isDisabled}/>\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n toggleForgotPassword()} \r\n setIsDisabled={(disable:boolean) => setIsDisabled(disable)}\r\n isDisabled={isDisabled}/>\r\n \r\n \r\n \r\n setIsDisabled(disable)}\r\n isDisabled={isDisabled}/>\r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n}\r\n\r\ninterface SignInFormProps{\r\n toggleForgotPassword: () => void;\r\n isDisabled: boolean;\r\n setIsDisabled: (disable:boolean) => void;\r\n}\r\n\r\nfunction SignInForm(props: SignInFormProps){\r\n const [email, setEmail] = useState('')\r\n const [password, setPassword] = useState('')\r\n const [errors, setErrors] = useState([])\r\n const { isDisabled } = props;\r\n const previewContext = useBuilderPreview();\r\n const classes = useStyles();\r\n\r\n const handleFormSubmit = async(e: React.FormEvent) => {\r\n e.preventDefault(); \r\n if (isDisabled) {\r\n return;\r\n }\r\n \r\n props.setIsDisabled(true);\r\n const response = await AuthenticationService.signIn(email, password, false);\r\n props.setIsDisabled(false);\r\n\r\n \r\n if (ServerResponse.isSuccess(response)) {\r\n EventTracking.Authentication.onLogin(Location.BuilderPreview)\r\n ProfitWell.onUserAuthenticated(response.data.email);\r\n previewContext.updateUser(response.data)\r\n }\r\n else if (ServerResponse.isModelValidation(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n setErrors([serverError]);\r\n }\r\n else {\r\n setErrors(response.errors);\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n setErrors([serverError]);\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n Sign in to SermonCentral\r\n \r\n
    \r\n setEmail(e.target.value)}\r\n disabled={isDisabled}\r\n helperText={\r\n ValidationHelper.isFieldInError(errors, \"Email\") &&\r\n /gm, '') }} />}\r\n />\r\n setPassword(e.target.value )}\r\n disabled={isDisabled}\r\n helperText={\r\n ValidationHelper.isFieldInError(errors, \"Password\") &&\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\ninterface RegisterFormProps {\r\n isDisabled: boolean;\r\n setIsDisabled: (disable:boolean) => void;\r\n}\r\n\r\nfunction RegisterForm(props: RegisterFormProps){\r\n\r\n const [fullName, setFullName] = useState('')\r\n const [email, setEmail] = useState('')\r\n const [password, setPassword] = useState('')\r\n const [errors, setErrors] = useState([])\r\n const { isDisabled } = props;\r\n const previewContext = useBuilderPreview();\r\n const classes = useStyles();\r\n\r\n const registerUser = async(e:React.FormEvent) => {\r\n e.preventDefault();\r\n if(isDisabled){\r\n return;\r\n }\r\n\r\n let splitName = fullName.trim().split(' ');\r\n\r\n if (splitName.length < 2) {\r\n const serverError: FieldValidationError = { field: \"FullName\", errors: ['First and Last name are required'] };\r\n setErrors([serverError])\r\n return;\r\n }\r\n\r\n let lastName = splitName[splitName.length - 1].trim();\r\n let firstName = splitName.slice(0, splitName.length - 1).join(' ').trim();\r\n\r\n props.setIsDisabled(true);\r\n const response = await AuthenticationService.register({firstName, lastName, email, password});\r\n props.setIsDisabled(false);\r\n \r\n if (ServerResponse.isSuccess(response)) {\r\n EventTracking.Authentication.onNewRegistration(Location.BuilderPreview)\r\n previewContext.updateUser(response.data)\r\n return;\r\n }\r\n \r\n if (ServerResponse.isModelValidation(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n setErrors([serverError]);\r\n }\r\n else {\r\n setErrors(response.errors);\r\n }\r\n } else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n setErrors([serverError]);\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n Register a new account\r\n \r\n
    \r\n setFullName(e.target.value)}\r\n helperText={\r\n ValidationHelper.isFieldInError(errors, \"FullName\") &&\r\n \r\n }\r\n />\r\n setEmail(e.target.value)}\r\n helperText={\r\n ValidationHelper.isFieldInError(errors, \"Email\") &&\r\n /gm, '') }} />\r\n }\r\n />\r\n setPassword(e.target.value)}\r\n helperText={\r\n ValidationHelper.isFieldInError(errors, \"Password\") && \r\n \r\n }\r\n />\r\n \r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\n\r\ninterface ForgotPasswordProps{\r\n toggleForgotPassword: () => void;\r\n}\r\n\r\nfunction ForgotPasswordForm(props: ForgotPasswordProps){\r\n\r\n const [email, setEmail] = useState('')\r\n const [errors, setErrors] = useState([])\r\n const classes = useStyles();\r\n const previewContext = useBuilderPreview();\r\n const loaction = useLocation();\r\n const [isDisabled, setIsDisabled] = useState(false);\r\n\r\n const handleFormSubmit = async(e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (isDisabled) {\r\n return;\r\n }\r\n\r\n setIsDisabled(true)\r\n const response = await AuthenticationService.sendResetPasswordEmail(email, loaction.pathname);\r\n setIsDisabled(false)\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n props.toggleForgotPassword()\r\n previewContext.showSnackBar(\r\n \"Reset Password Link Sent\"\r\n )\r\n }\r\n else if (ServerResponse.isError(response)) {\r\n const serverError: FieldValidationError = { field: \"Email\", errors: [response.message] };\r\n setErrors([serverError]);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"Email\", errors: [response.errors[0].errors[0]] };\r\n setErrors([serverError]);\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n Enter your email address and we will send you an email with a link to reset your password.\r\n \r\n
    handleFormSubmit(e)}>\r\n setEmail(e.target.value)}\r\n helperText={}\r\n />\r\n *Sermon Maker is part of SermonCentral.com. Use your SermonCentral.com account details to login. \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React from 'react';\r\nimport { Button, DialogContent, Grid, Typography, List, ListItem, ListItemIcon, ListItemText, makeStyles} from \"@material-ui/core\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\nimport { useBuilderPreview } from '../../../utilities/useBuilderPreview';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n submitButton: {\r\n width: 250,\r\n color: \"#FFF\",\r\n backgroundColor: \"rgb(50, 153, 57)\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgb(50, 153, 57, .8)\",\r\n },\r\n \"&:disabled\": {\r\n backgroundColor: \"rgb(50, 153, 57, .5)\",\r\n },\r\n },\r\n}));\r\n\r\nconst bulletPoints = [\r\n <>Intelligent suggestions engine for fresh ideas,\r\n <>Real-time sermon analyzer for better sermons,\r\n <>Integrated sermon slide builder for clearer preaching,\r\n <>Organize your sermon library and preach with confidence,\r\n]\r\n\r\ninterface Props {\r\n onSelectMakerCheckout: () => void;\r\n onSelectedBundleCheckOut: () => void;\r\n}\r\n\r\nexport function SignUpOfferDialog(props:Props) {\r\n const previewContext = useBuilderPreview();\r\n const { user } = previewContext;\r\n const classes = useStyles();\r\n\r\n if(user === null){\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n { user.proSubscription ? 'Your Pro Discount...' : 'Preach better sermons'}\r\n \r\n \r\n \r\n { user.proSubscription\r\n ?\r\n \r\n Sermon Maker helps you organize & preach better. Active PRO members can save over $100 on Sermon Maker for 1 year.\r\n \r\n :\r\n \r\n Sermon Maker helps you preach confidently. Bundle with SermonCentral PRO and save over $100 today.\r\n \r\n }\r\n \r\n { bulletPoints.map( (li, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {li}\r\n \r\n )}\r\n )}\r\n \r\n { user.proSubscription\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n {user.userCanHaveTrial && \"14 days free, then \"}$19.00 $9.99/mo cancel anytime\r\n \r\n \r\n :\r\n \r\n \r\n \r\n Save $100 today\r\n \r\n \r\n \r\n 14 days free\r\n \r\n \r\n }\r\n \r\n \r\n \r\n );\r\n}","import React, { useEffect } from 'react';\r\nimport { CircularProgress, Grid, Typography } from \"@material-ui/core\";\r\n\r\nimport { SubscriptionService } from '../../../services/SubscriptionService';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport { routes } from '../../../routes';\r\nimport { HorizontalCentered } from '../../../components/HorizontalCentered';\r\nimport { VerticalCenter } from '../../../components/VerticalCenter';\r\n\r\n\r\nexport function MakerCheckOutDialog(){\r\n const history = useHistory();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n async function createBundleCheckout(){\r\n const response = await SubscriptionService.createBundleCheckoutSession({cancelPath: history.createHref(location) });\r\n\r\n if(response.success){\r\n history.push(routes.app.resolve.checkoutPage(response.data.sessionId))\r\n }\r\n };\r\n\r\n createBundleCheckout();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Loading...\r\n \r\n \r\n )\r\n}","import React, { useState } from 'react';\r\nimport { DialogContent, Grid, CircularProgress, Typography } from \"@material-ui/core\";\r\nimport { useBuilderPreview } from '../../../utilities/useBuilderPreview';\r\nimport { useAppConfig } from '../../../utilities/useAppConfig';\r\nimport { useEffect } from 'react';\r\nimport { AuthenticationService } from '../../../services/AuthenticationService';\r\nimport { EventTracking } from '../../../utilities/Tracking/EventTracking';\r\nimport { AddAssetAction } from '../../../entities/AddAssetAction';\r\n\r\ninterface IFramePayload {\r\n message:string,\r\n height?: number\r\n}\r\n\r\nexport function BundleCheckoutDialog() {\r\n const [config, ] = useAppConfig();\r\n const previewContext = useBuilderPreview();\r\n const [loading, setLoading] = useState(true);\r\n const [iframeHeight, setIframeHeight] = useState(0);\r\n\r\n useEffect(() => {\r\n async function handleIframeMessage(e:MessageEvent){\r\n if(e.data as IFramePayload){\r\n const payload:IFramePayload = e.data;\r\n switch(payload.message){\r\n case \"loadingCompleted\":\r\n setIframeHeight(payload.height ?? 0);\r\n setLoading(false);\r\n break;\r\n case \"bundleCreated\":\r\n EventTracking.Subscribe.onNewSubscription(4.99, AddAssetAction.ImportSermonFromSC);\r\n const result = await AuthenticationService.getAuthenticatedUser()\r\n if(result.success){\r\n previewContext.updateUser(result.data);\r\n } else {\r\n previewContext.updateUser(null);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n window.addEventListener(\"message\", handleIframeMessage)\r\n return () => window.removeEventListener(\"message\", handleIframeMessage)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[])\r\n\r\n if(previewContext.user === null){\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {loading &&\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n Loading...\r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n
    \r\n );\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { RouteComponentProps } from \"react-router\";\r\n\r\nimport { Typography, CircularProgress, Dialog, Snackbar, DialogTitle, Paper, makeStyles } from \"@material-ui/core\";\r\n\r\nimport { ServerFailed } from \"../errors/serverFailed\";\r\nimport { PageNotFound } from \"../errors/pageNotFound\";\r\n\r\nimport { ServerResponse } from \"../../services/server/OldWebClient\";\r\nimport { BuilderAssetService, SaveBuilderAssetRequest } from \"../../services/BuilderAssetService\";\r\n \r\nimport { BuilderAsset } from \"../../entities/BuilderAsset\";\r\nimport AppConfig from \"../../entities/AppConfig\";\r\n\r\nimport { ApplicationUser } from \"../../entities/ApplicationUser\";\r\nimport { isActiveMakerSubscription } from \"../../entities/MakerSubscription\";\r\nimport { BuilderHome } from '../builder/home';\r\nimport { useUser } from \"../../utilities/useUser\";\r\nimport { BuilderPreviewContext } from '../../utilities/useBuilderPreview'\r\nimport { SignInRegisterDialog } from './components/signInRegisterDialog';\r\nimport { SignUpOfferDialog } from './components/signUpOfferDialog';\r\nimport { MakerCheckOutDialog } from \"./components/makerCheckoutDialog\";\r\nimport { BundleCheckoutDialog } from \"./components/bundleCheckoutDialog\";\r\nimport { ProfitWell } from \"../../utilities/Tracking/ProfitWell\";\r\nimport { EventTracking } from \"../../utilities/Tracking/EventTracking\";\r\nimport { useIsMobile } from \"../../components/Mui3WidthProvider\";\r\nimport useLocalStorage from \"../../utilities/useLocalStorage\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n\t\"@global\": {\r\n\t\th1: {\r\n\t\t\tlineHeight: \"1.4em\",\r\n\t\t},\r\n\t\th2: {\r\n\t\t\tlineHeight: \"1.4em\",\r\n\t\t},\r\n\t},\r\n\tdialogPaper: {\r\n\t\ttouchAction: \"none\",\r\n\t\tbackgroundColor: \"transparent\",\r\n\t\t\"-webkit-tap-highlight-color\": \"transparent\",\r\n\t\tboxShadow: \"none\"\r\n\t},\r\n\tbackButton: {\r\n\t\tcolor: \"#fff\", \r\n\t\tcursor: \"pointer\",\r\n\t\t'&:hover': {\r\n\t\t\tcolor: \"#EEE\",\r\n\t\t}\r\n\t},\r\n\tdialogContentPaper: {\r\n\t\theight: \"fit-content\",\r\n\t\toverflowY: \"auto\",\r\n\t}\r\n}));\r\n\r\ninterface Props extends RouteComponentProps<{ id: string }> {\r\n config: AppConfig;\r\n\tappUser: ApplicationUser | null;\r\n}\r\n\r\nexport function BuilderPreview(props: Props) {\r\n\tconst { match, history, appUser } = props;\r\n\tconst userContext = useUser();\r\n\tconst isMobile = useIsMobile();\r\n\tconst classes = useStyles();\r\n\r\n\tconst [user, setUser] = useState(null);\r\n\tconst [sermonAsset, setSermonAsset] = useState();\r\n\tconst [serverLoading, setServerLoading] = useState(true);\r\n\tconst [showOffer, setShowOffer] = useState(false);\r\n\tconst [showMakerCheckout, setShowMakerCheckout] = useState(false);\r\n\tconst [showBundleCheckout, setBundleCheckout] = useState(false);\r\n\tconst [serverFailed, setServerFailed] = useState(false);\r\n\tconst [pageNotFound, setPageNotFound] = useState(false);\r\n\tconst [snackbarMessage, setSnackbarMessage] = useState();\r\n\r\n\tuseEffect(() => {\r\n\t\tasync function mountComponent(){\r\n\t\t\tdocument.title = \"Sermon Maker - Builder\";\r\n\t\t\tconst sermonId = match.params.id;\r\n\t\t\tlocalStorage.setItem(\"registerParams\", `?builderPreviewId=${sermonId}`)\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst sermonAssetResponse = await BuilderAssetService.getSermonAsBuilderAsset(sermonId);\r\n\t\t\t\t\r\n\t\t\t\tif (ServerResponse.isError(sermonAssetResponse)) {\r\n\t\t\t\t\tif (sermonAssetResponse.statusCode === 404) {\r\n\t\t\t\t\t\tsetPageNotFound(true);\r\n\t\t\t\t\t\tsetServerLoading(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (sermonAssetResponse.statusCode === 500) {\r\n\t\t\t\t\t\tsetServerFailed(true);\r\n\t\t\t\t\t\tsetServerLoading(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else if (ServerResponse.isModelValidation(sermonAssetResponse)) {\r\n\t\t\t\t\tsetServerFailed(true);\r\n\t\t\t\t\tsetServerLoading(false);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(appUser && isActiveMakerSubscription(appUser.makerSubscription)){\r\n\t\t\t\t\tsaveAssetToLibrary(sermonAssetResponse.data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetSermonAsset(sermonAssetResponse.data);\r\n\t\t\t\t\tsetUser(appUser)\r\n\t\t\t\t\tsetServerLoading(false);\r\n\t\t\t\t}\r\n\t\t\t} catch {\r\n\t\t\t\tsetPageNotFound(true);\r\n\t\t\t\tsetServerLoading(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tmountComponent();\r\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif(user === null){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tuserContext.updateUser(user);\r\n\t\t\r\n\t\tconst hasActiveMakerSubscription = user && isActiveMakerSubscription(user.makerSubscription);\r\n\t\t\r\n\t\tif(hasActiveMakerSubscription && sermonAsset){\r\n\t\t\tsaveAssetToLibrary(sermonAsset);\r\n\t\t} else {\r\n\t\t\tsetShowOffer(true);\r\n\t\t}\r\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [user])\r\n\r\n\tconst toggleMakerCheckOut = () => {\r\n\t\tsetShowOffer(false);\r\n\t\tsetShowMakerCheckout(true);\r\n\t}\r\n\tconst toggleBundleCheckOut = () => {\r\n\t\tsetShowOffer(false);\r\n\t\tsetBundleCheckout(true);\r\n\t}\r\n\tconst handleBackClick = () => {\r\n\t\tif(showBundleCheckout || showMakerCheckout){\r\n\t\t\tsetShowOffer(true);\r\n\t\t\tsetShowMakerCheckout(false);\r\n\t\t\tsetBundleCheckout(false);\r\n\t\t} else {\r\n\t\t\thistory.goBack();\r\n\t\t}\r\n\t}\r\n\r\n\tconst saveAssetToLibrary = async(asset:BuilderAsset ) => {\r\n\t\tconst knownUser = user ?? appUser;\r\n\r\n\t\tif(!knownUser)\r\n\t\t\treturn;\r\n\r\n\t\tconst saveAssetRequest:SaveBuilderAssetRequest = {\r\n\t\t\t...asset,\r\n\t\t\tid: undefined,\r\n\t\t} \r\n\r\n\t\tconst response = await BuilderAssetService.save(saveAssetRequest);\r\n\r\n\t\tif(ServerResponse.isSuccess(response)){\r\n\t\t\tEventTracking.Builder.onImportSCSermon(Number(match.params.id))\r\n\t\t\tProfitWell.onUserAuthenticated(knownUser.email);\r\n\t\t\tuserContext.updateUser(knownUser);\r\n\t\t\thistory.push(`/build/${response.data.id}`);\r\n\t\t} else {\r\n\t\t\tsetServerFailed(true);\r\n\t\t}\r\n\t}\r\n\r\n\tif (pageNotFound) {\r\n\t\treturn ;\r\n\t}\r\n\tif (serverFailed) {\r\n\t\treturn ;\r\n\t}\r\n\r\n\tconst builderAsset = sermonAsset;\r\n\r\n\tif(serverLoading) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tLoading...\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t setUser(updatedUser),\r\n\t\t\t\t\tshowSnackBar: (message) => setSnackbarMessage(message)\r\n\t\t\t\t}} >\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{\"< Back\"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{ !user && }\r\n\t\t\t\t\t\t{ showOffer && toggleMakerCheckOut()} onSelectedBundleCheckOut={() => toggleBundleCheckOut()}/>}\r\n\t\t\t\t\t\t{ showMakerCheckout && }\r\n\t\t\t\t\t\t{ showBundleCheckout && }\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t setSnackbarMessage(undefined)}\r\n\t\t\t\t\tContentProps={{\r\n\t\t\t\t\t\t'aria-describedby': 'message-id',\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tmessage={{snackbarMessage}}\r\n\t\t\t\t\t/>\r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n}","import { deserializeLibraryItem, SerializedLibraryItem } from \"../../src/entities/LibraryItem\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport const LibraryItemService = {\r\n\tgetAll: () => WebClient.Get(\"api/LibraryItems\", (libraryItems:SerializedLibraryItem[]) => libraryItems.map(deserializeLibraryItem)),\r\n\tgetRecent: () => WebClient.Get(\"api/LibraryItems/GetRecent\", (libraryItems:SerializedLibraryItem[]) => libraryItems.map(deserializeLibraryItem)),\r\n\tgetStarred: () => WebClient.Get(\"api/LibraryItems/GetStarred\", (libraryItems:SerializedLibraryItem[]) => libraryItems.map(deserializeLibraryItem)),\r\n\tgetCalendar: () => WebClient.Get(\"api/LibraryItems/GetCalendar\", (libraryItems:SerializedLibraryItem[]) => libraryItems.map(deserializeLibraryItem)),\r\n\tgetTemplates: () => WebClient.Get(\"api/LibraryItems/GetTemplates\", (libraryItems:SerializedLibraryItem[]) => libraryItems.map(deserializeLibraryItem)),\r\n\tgetChildren: (id: string | null) => WebClient.Get(`api/LibraryItems/GetChildren/${id}`, (libraryItems:SerializedLibraryItem[]) => libraryItems.map(deserializeLibraryItem)),\r\n\tgetLibraryItemWithAncestors: (id: string) => WebClient.Get(`api/LibraryItems/GetLibraryItemWithAncestors/${id}`, (libraryItems:SerializedLibraryItem[]) => libraryItems.map(deserializeLibraryItem)),\r\n\tsearch: (query: string) => WebClient.Get(`api/LibraryItems/Search/${query ?? \" \"}`, (libraryItems:SerializedLibraryItem[]) => libraryItems.map(deserializeLibraryItem)),\r\n\tgetItem: (id: string) => WebClient.Get(`api/LibraryItems/GetLibraryItem/${id}`, deserializeLibraryItem),\r\n}\r\n","import { Modify } from \"../utilities/modifyType\";\r\nimport { LibraryItem } from \"./LibraryItem\";\r\nimport { LibraryItemType } from \"./LibraryItemType\";\r\n\r\nexport interface Folder {\r\n id: string;\r\n name: string;\r\n parentId?: string;\r\n dateAccessed: Date;\r\n dateCreated: Date;\r\n dateModified: Date;\r\n isStarred: boolean;\r\n}\r\n\r\nexport type SerializedFolder = Modify\r\n\r\nexport const deserializeFolder = (folder: SerializedFolder): Folder => {\r\n\treturn {\r\n\t\t...folder,\r\n\t\tdateAccessed: new Date(folder.dateAccessed),\r\n\t\tdateCreated: new Date(folder.dateCreated),\r\n\t\tdateModified: new Date(folder.dateModified)\r\n\t};\r\n};\r\n\r\nexport function convertFolderToLibraryItem(folder: Folder): LibraryItem {\r\n return {\r\n ...folder,\r\n type: LibraryItemType.Folder,\r\n isShared: false,\r\n isTemplate: false,\r\n templateDescription: '',\r\n templateText: undefined,\r\n slideExporterAspectRatio: '16x9',\r\n };\r\n}","import {deserializeFolder, SerializedFolder} from \"../../src/entities/Folder\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface SaveFolderRequest {\r\n id: string; \r\n parentId?: string; \r\n name: string;\r\n isStarred: boolean;\r\n}\r\n\r\nexport const FolderService = {\r\n getFolder: (id: string) => WebClient.Get(`api/Folders/GetFolder/${id}`, deserializeFolder),\r\n save: (builderAssetToSave: SaveFolderRequest) => WebClient.Post.Validated(`api/Folders/SaveFolder/`, builderAssetToSave, deserializeFolder),\r\n createFolder: (name: string, parentId: string | null) => WebClient.Post.Validated(`api/Folders/CreateFolder`, { name, parentId }, deserializeFolder),\r\n setStarredFolder: (id: string, isStarred: boolean) => WebClient.Put.Validated(`api/Folders/SetStarredFolder`, {id, isStarred}, deserializeFolder),\r\n setFolderName: (id: string, name: string) => WebClient.Put.Validated(`api/Folders/SetNameFolder`, {id, name}, deserializeFolder),\r\n deleteFolder: (id: string) => WebClient.Delete(`api/Folders/DeleteFolder/${id}`),\r\n undeleteFolder: (id: string) => WebClient.Put.Validated(`api/Folders/UndeleteFolder/`, {id}, deserializeFolder),\r\n getFolders: () => WebClient.Get(\"api/Folders/GetFolders\", (serializedFolders: SerializedFolder[]) => serializedFolders.map(deserializeFolder)),\r\n moveFolder: (id: string, parentId: string | null) => WebClient.Put.Validated(`api/Folders/MoveFolder`, {id, parentId}, deserializeFolder),\r\n}","import { Modify } from \"../utilities/modifyType\";\r\nimport { LibraryItem } from \"./LibraryItem\";\r\nimport { LibraryItemType } from \"./LibraryItemType\";\r\n\r\nexport interface SermonSeries {\r\n id: string;\r\n name: string;\r\n parentId?: string;\r\n dateAccessed: Date;\r\n dateCreated: Date;\r\n dateModified: Date;\r\n isStarred: boolean;\r\n}\r\n\r\nexport type SerializedSermonSeries = Modify\r\n\r\nexport const deserializeSermonSeries = (series: SerializedSermonSeries): SermonSeries => {\r\n\treturn {\r\n\t\t...series,\r\n\t\tdateAccessed: new Date(series.dateAccessed),\r\n\t\tdateCreated: new Date(series.dateCreated),\r\n\t\tdateModified: new Date(series.dateModified)\r\n\t};\r\n};\r\n\r\nexport function convertSeriesToLibraryItem(series: SermonSeries): LibraryItem {\r\n return {\r\n ...series,\r\n type: LibraryItemType.SermonSeries,\r\n isShared: false,\r\n isTemplate: false,\r\n templateDescription: '',\r\n templateText: undefined,\r\n slideExporterAspectRatio: '16x9',\r\n };\r\n}","import { deserializeSermonSeries } from \"../../src/entities/SermonSeries\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface SaveSeriesRequest {\r\n id: string; \r\n parentId?: string; \r\n name: string;\r\n isStarred: boolean;\r\n}\r\n\r\nexport const SermonSeriesService = {\r\n getSeries: (id: string) => WebClient.Get(`api/SermonSeries/GetSermonSeries/${id}`, deserializeSermonSeries),\r\n save: (seriesToSave: SaveSeriesRequest) => WebClient.Post.Validated(`api/SermonSeries/SaveSermonSeries/`, seriesToSave, deserializeSermonSeries),\r\n createSermonSeries: (name: string, parentId: string | null) => WebClient.Post.Validated(`api/SermonSeries/CreateSermonSeries`, { name, parentId }, deserializeSermonSeries),\r\n setStarredSeries: (id: string, isStarred: boolean) => WebClient.Put.Validated(`api/SermonSeries/SetStarredSermonSeries`, {id, isStarred}, deserializeSermonSeries),\r\n setNameSeries: (id: string, name: string) => WebClient.Put.Validated(`api/SermonSeries/SetNameSermonSeries`, {id, name}, deserializeSermonSeries),\r\n deleteSermonSeries: (id: string) => WebClient.Delete(`api/SermonSeries/DeleteSermonSeries/${id}`),\r\n undeleteSermonSeries: (id: string) => WebClient.Put.Validated(`api/SermonSeries/UndeleteSermonSeries/`, {id}, deserializeSermonSeries),\r\n moveSeries: (id: string, parentId: string | null) => WebClient.Put.Validated(`api/SermonSeries/MoveSermonSeries`, {id, parentId}, deserializeSermonSeries)\r\n}","import React, { useState } from \"react\";\r\nimport { Button, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions } from \"@material-ui/core\";\r\nimport { useLibrary, useLibraryAlert } from \"../../LibraryPage\";\r\nimport { FolderService } from \"../../../../services/FolderService\";\r\nimport { convertFolderToLibraryItem } from \"../../../../entities/Folder\";\r\nimport { FieldValidationError, ValidationHelper } from \"../../../../services/server/ServerResponses\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { routes } from \"../../../../routes\";\r\nimport { SermonSeriesService } from \"../../../../services/SermonSeriesService\";\r\nimport { convertSeriesToLibraryItem } from \"../../../../entities/SermonSeries\";\r\n\r\ninterface Props {\r\n\tselectedFolderType: \"folder\" | \"series\";\r\n\tonClose: () => void;\r\n}\r\n\r\nexport function CreateFolderDialog(props: Props) {\r\n\tconst context = useLibrary();\r\n const libraryAlert = useLibraryAlert();\r\n\tconst history = useHistory();\r\n\r\n\tconst { activeFolderId } = context;\r\n\tconst [title, setTitle] = useState(\"\");\r\n\tconst [errors, setErrors] = useState([]);\r\n\tconst [disable, setDisable] = useState(false);\r\n\r\n\tconst onCreate = (e:React.FormEvent) => {\r\n\t\te.preventDefault();\r\n\t\tprops.selectedFolderType === \"folder\" \r\n\t\t\t? onCreateFolder() \r\n\t\t\t: onCreateSermonSeries()\r\n\t}\r\n\r\n\tconst onCreateFolder = async () => {\r\n setDisable(true);\r\n\t\tconst response = await FolderService.createFolder(title, activeFolderId);\r\n setDisable(false);\r\n\r\n\t\tif(response.error) return libraryAlert(response.message);\r\n\t\tif(response.validation) return setErrors(response.errors);\r\n\t\t\r\n\t\tconst folder = response.data;\r\n\t\tcontext.addLibraryItem(convertFolderToLibraryItem(folder));\r\n\t\tlibraryAlert(`Folder ${title} created`, async () => {\r\n\t\t\tconst result = await FolderService.deleteFolder(folder.id);\r\n\t\t\tif(result.success) {\r\n\t\t\t\tcontext.removeLibraryItem(folder.id);\r\n\t\t\t\tlibraryAlert(`Removed folder ${folder.name}`);\r\n\t\t\t} else {\r\n\t\t\t\tlibraryAlert(`Failed to delete folder ${folder.name}`);\r\n\t\t\t}\r\n\t\t});\r\n\t\thistory.push(routes.app.resolve.libraryFolder(folder.id), { prevUrl: window.location.href });\r\n\t\tprops.onClose();\r\n\t};\r\n\r\n\tconst onCreateSermonSeries = async () => {\r\n setDisable(true);\r\n\t\tconst response = await SermonSeriesService.createSermonSeries(title, activeFolderId);\r\n setDisable(false);\r\n\r\n\t\tif(response.error) return libraryAlert(response.message);\r\n\t\tif(response.validation) return setErrors(response.errors);\r\n\r\n\t\tconst series = response.data;\r\n\t\tcontext.addLibraryItem(convertSeriesToLibraryItem(series));\r\n\t\tlibraryAlert(`Sermon Series ${title} created`, async () => {\r\n\t\t\tconst result = await FolderService.deleteFolder(series.id);\r\n\t\t\tif(result.success) {\r\n\t\t\t\tcontext.removeLibraryItem(series.id);\r\n\t\t\t\tlibraryAlert(`Removed Sermon Series ${series.name}`);\r\n\t\t\t} else {\r\n\t\t\t\tlibraryAlert(`Failed to delete Sermon Series ${series.name}`);\r\n\t\t\t}\r\n\t\t});\r\n\t\thistory.push(routes.app.resolve.libraryFolder(series.id), { prevUrl: window.location.href });\r\n\t\tprops.onClose();\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\tNew {props.selectedFolderType}\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tEnter the name of your new {props.selectedFolderType}.\r\n\t\t\t\t\t setTitle(e.currentTarget.value)}\r\n\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\tvalue={title}\r\n\t\t\t\t\t\terror={ValidationHelper.isFieldInError(errors, \"Name\")}\r\n\t\t\t\t\t\thelperText={}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAWxJREFUSMftk7EvQ1EYxc9VRaTtJkiIzSQRkUaYLQwstVlqMZssIv4Gi83OIGIwSIRERLpIxEJikVC1NBJEKtGf5TWe1+/1tWXsWd699zvf79ybe5/UUoRcrSIwKqlf0olzrhTi6ZWUkTQs6UXSkXPuXBHgHuCQH+WAuOFbBN74rTKQqQVPAw9UayngmwW+sHURBp8BXkOadn0+B9wQrmLF2+Zryko6kJQIOVzaN56WhKR8iLfT2v0O8AisAgVjV2Ug5Xnj3rcDuDW8OSsgASS98ULI0aeMvlPDtxb1itqAvNG4HPAlgY+ApwT0Vd2BX865sqR9ozQWmK9I6gqsbTrnCooSMG+c4B5wXn3QeHH5yj3VE5ACPo2QcaAdODNqc3XBfSEW5Bo4Nta3GoJ7AevUpyugu5mAyTrgT8BQw3AvIAY814C/AxNNwX0hGyHwIsaP10xAArgLwC+BkT/DfSEDwDawB2SB2L/BW/oGQNDNv/lDvm4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDMtMTlUMTU6NTI6MDArMDA6MDDYG3AhAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTAzLTE5VDE1OjUyOjAwKzAwOjAwqUbInQAAACh0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vdG1wL21hZ2ljay1SQ3ZzTE83dqvZsVYAAAAASUVORK5CYII=\"","import { deserializeLinkAsset } from \"../../src/entities/LinkAsset\";\r\nimport { AssetCategory } from \"../../src/entities/AssetCategory\";\r\nimport { WebClient } from \"./server/WebClient\";\r\n\r\nexport interface SaveLinkAssetRequest {\r\n id?: string; \r\n parentId?: string; \r\n name: string;\r\n isStarred: boolean;\r\n dateAccessed: Date;\r\n category: AssetCategory;\r\n url: string;\r\n datePreached?: Date;\r\n locationPreached: string;\r\n scripture: string;\r\n}\r\n\r\nexport const LinkAssetService = {\r\n get: (id: string) => WebClient.Get(`api/LinkAssets/GetLinkAsset/${id}`, deserializeLinkAsset),\r\n save: (fileAssetToSave: SaveLinkAssetRequest) => WebClient.Post.Validated(`api/LinkAssets/SaveLinkAsset/`, fileAssetToSave, deserializeLinkAsset),\r\n delete: (id: string) => WebClient.Delete(`api/LinkAssets/DeleteLinkAsset/${id}`),\r\n getRedirectUrl: (id: string) => `api/LinkAssets/GoTo/${id}`,\r\n undelete: (id: string) => WebClient.Put.Validated(`api/LinkAssets/UndeleteLinkAsset/`, {id}, deserializeLinkAsset),\r\n setName: (id: string, name: string) => WebClient.Put.Validated(`api/LinkAssets/SetNameLinkAsset/`, {id, name}, deserializeLinkAsset),\r\n setStarred: (id: string, isStarred: boolean) => WebClient.Put.Validated(`api/LinkAssets/SetStarredLinkAsset`, {id, isStarred}, deserializeLinkAsset),\r\n move: (id: string, parentId: string | null) => WebClient.Put.Validated(`api/LinkAssets/MoveLinkAsset`, {id, parentId}, deserializeLinkAsset)\r\n}","import React, { useMemo, useState } from \"react\";\r\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, IconButton, InputAdornment, TextField } from \"@material-ui/core\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport { useLibrary, useLibraryAlert } from \"../../LibraryPage\";\r\nimport { LinkAssetService, SaveLinkAssetRequest } from \"../../../../services/LinkAssetService\";\r\nimport { AssetCategory } from \"../../../../entities/AssetCategory\";\r\nimport { useIsMobile } from \"../../../../components/Mui3WidthProvider\";\r\nimport { FieldValidationError, ValidationHelper } from \"../../../../services/server/ServerResponses\";\r\nimport { convertLinkAssetToLibraryItem } from \"../../../../entities/LinkAsset\";\r\n\r\ninterface Props{\r\n open: boolean;\r\n onClose: () => void;\r\n onSuccess: () => void;\r\n}\r\n\r\nconst youtubeRegex = new RegExp(/(?:youtube\\.com\\/(?:[^/]+\\/.+\\/|(?:v|e(?:mbed)?)\\/|.*[?&]v=)|youtu\\.be\\/)([^\"&?/ ]{11})/, \"i\")\r\n\r\nexport function YoutubeLinkDialog(props:Props){\r\n const libraryAlert = useLibraryAlert();\r\n const context = useLibrary();\r\n const { activeFolderId } = context;\r\n const isMobile = useIsMobile();\r\n\r\n const [title, setTitle] = useState(\"\");\r\n const [url, setUrl] = useState(\"\");\r\n const [disabled, setDisabled] = useState(false);\r\n const [embeddedLinkId, setEmbeddedLinkId] = useState();\r\n const [errors, setErrors] = useState([]);\r\n\r\n const videoHeight = useMemo(() => isMobile ? 'auto' : '315', [isMobile]);\r\n const videoWidth = useMemo(() => isMobile ? 'auto' : '550', [isMobile]);\r\n\r\n const tryParseUrl = (e:React.FormEvent) => {\r\n e.preventDefault();\r\n setErrors([]);\r\n const parsed = url.match(youtubeRegex);\r\n\r\n if (parsed && parsed.length > 0)\r\n return setEmbeddedLinkId(parsed[1]);\r\n\r\n const serverError: FieldValidationError = { field: \"Url\", errors: ['Sorry, this YouTube url is invalid. (Example: https://youtu.be/ELIqj32_IJs)'] };\r\n setErrors([serverError]);\r\n }\r\n\r\n const onSave = async(e:React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n ///TODO: is all this needed\r\n const request: SaveLinkAssetRequest = {\r\n parentId: activeFolderId ?? undefined,\r\n name: title,\r\n isStarred: false,\r\n dateAccessed: new Date(),\r\n category: AssetCategory.Video,\r\n url: `youtube://${embeddedLinkId}`,\r\n locationPreached: \"\",\r\n scripture: \"\",\r\n };\r\n\r\n setDisabled(true);\r\n const response = await LinkAssetService.save(request);\r\n setDisabled(false);\r\n\r\n if(response.validation) return setErrors(response.errors);\r\n if(response.error) return libraryAlert(response.message);\r\n\r\n context.addLibraryItem(convertLinkAssetToLibraryItem(response.data));\r\n libraryAlert(`${title} added to library`);\r\n return props.onSuccess();\r\n }\r\n\r\n return (\r\n e.key === \"Tab\" ? e.stopPropagation() : undefined}\r\n >\r\n New Linked YouTube Video\r\n {isMobile && }\r\n \r\n
    \r\n \r\n \r\n Add a link to your YouTube video.\r\n \r\n setTitle(e.currentTarget.value)}\r\n fullWidth\r\n error={ValidationHelper.isFieldInError(errors, 'Name')}\r\n helperText={}\r\n />\r\n setUrl(e.currentTarget.value)}\r\n helperText={'Example: https://youtu.be/ELIqj32_IJs'}\r\n error={ValidationHelper.isFieldInError(errors, 'Url')}\r\n InputProps={{\r\n endAdornment:\r\n \r\n { setEmbeddedLinkId(undefined); setUrl(\"\")}}\r\n style={{display: embeddedLinkId ? \"block\" : \"none\"}}\r\n >\r\n \r\n \r\n \r\n }}\r\n\r\n />\r\n {embeddedLinkId\r\n &&\r\n <>\r\n
    \r\n
    \r\n