{"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","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/components/accountInfo.tsx","pages/account/components/subscriptionInfo.tsx","pages/account/components/billingStatementsTable.tsx","pages/account/components/cancelSubscriptionDialog.tsx","pages/account/components/refundSubscriptionDialog.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","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","refreshUser","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","glooButton","borderColor","borderWidth","fontFamily","fontSize","minHeight","textTransform","glooIcon","transform","marginLeft","marginRight","disabledLink","pointerEvents","GlooButton","fullWidth","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","returnPath","AccountInfo","cancelButton","SubscriptionInfo","openCancelAndRefundDialog","openCancelDialog","portalUrl","setPortalUrl","getPortalUrl","cancellationDate","currentPeriodEnd","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","headerWrapper","banner","imageWrapper","downGradeImage","iconWrapper","downGradeButton","cardTitle","textCard","SpecialOfferDialog","openSpecialOfferDialog","toggleConfirmationDialog","onDiscountSubscription","onContinueCancel","disableTypography","md","DownGradeImage","ConfirmationDialog","openConfirmationDialog","htmlRegex","AccountSnackBar","messageNodes","avatar","contentSection","Settings","setOpenCancelDialog","setOpenRefundDialog","setOpenConfirmationDialog","setOpenSpecialOfferDialog","billingStatements","setBillingStatements","showErrorMessage","setShowErrorMessage","getBillingStatements","billingStatementResponse","Table","TableHead","TableBody","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","onBundleCreated","iframeHeight","setIframeHeight","handleIframeMessage","payload","dataLayerEvent","dialogPaper","touchAction","backButton","dialogContentPaper","appUser","setUser","setSermonAsset","serverLoading","setServerLoading","showOffer","setShowOffer","showMakerCheckout","setShowMakerCheckout","showBundleCheckout","setBundleCheckout","bundleCreated","setBundleCreated","saveAssetToLibrary","handleBackClick","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","onSuccess","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","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","PricingTable","selectedPlan","costOfPlan","trialAllowed","couponValue","isMonthly","subscriptionTerm","onChangePlan","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.9ab3615c.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://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://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\r\n refreshUser: () => WebClient.Get(\"api/Authentication/RefreshUser\"),\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}","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 from '../../entities/AppConfig';\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 ? \"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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAABWdJREFUaN7tWV1sFFUU/s6dabXuoolWbSW8IIYmBmNk5cnEFMHQ3ZmpIVKQEjWG+NeSEH0xRNNgUJ40KhRFDA9KFFZN2p2ZQtLaqg+akl1ffOAnRA1WCgFMRLrNLM49PnSKuDu7M0MH+kC/ZJPde8895/vunbnn7L3AHOZwY4PicJLNZpWGhoZlRNQKYCmAFgDNAJKeyUUApwAcA1AQQgyPjo4e3rp1q5xVAX19fQtUVe0CsAHA/IjDx5h5n6Iovel0euy6ChgYGLhTSrkNwLMA6mcyCQBKRLTXdd03DMM4d80F2La9npl3ALh9hsTLcR5At6Zp+6+JgHw+Xzc+Pr6LiDbGTLwcu5uamjalUqlLsQnI5XK3ENFXRNR2jclPY0BKucYwjGKQoQgyyOfzddeZPACkhRD92Ww28P0KFOA9NteT/DRWJBKJ94OMaj5Cpml2EtG+WSB/Gcy8Ttf1A5EFeFvlUcS720wCOMTMw0RUwlTuWA9g0RU2LoAJALd6v8+VSqWW1atXn/dzqFaL5O3z1cgPAXgQQGME8oNSyo2GYZy8sjGfz287ffr0uwAeA2AD2O/5n0ZjfX39mwC6/Jz6roCXYU+gSpISQjzCzBeklENEdFcI8t8mEomVra2t/9QyGhkZUScmJj4H0F4W2xFCLPLL2L4vsVceVN0BhBBHMpnMz8z8KIDjAeQd13U7g8gDQLFYbPVW4a2yrptc1/VdgQoB2WxWwVRtU52R49wMAIZhHBVCPAxgDwCuNrHt7e2ngsgDQCaTGSSiiwBe95m0zp6engq+FQ0NDQ3LEFCYqar60PT3dDp9QdO056WUKWb+GkB5Bj2JkPDKlAMA6sr7mHlBKpVKBQrwSuKaYOany9sMw/hJ1/UnS6VSMzM/Q0QfAfieiCbDCgBgAFCqdQohlldMpo/d0hCB0pZlrdA0bai8w9vuPvU+kcDMzQH9Fdz8XuLFQYGklEuYuT5Mqo+IpoD+Cm5+K9Ac4AREtFDX9YE4mQ8ODt7mOM7CALMKbn4rkAxwAiJ6IU7yADA5OdmKGonVw7wwAsJgjWma3XEKEEI8flXjfNouhhlIRDts295rWVbQsgcim80mAawJYfp3GAHjIeO6zHwQwHy/BBMFiUTiJYSrqyq4+T1zxwDcH8KZwswP6Lr+5UzI9/f3z2PmV0OaHytvqJg5Zs6HDU5EWyzL2hDW3g+qqu4BcHdI8wpuFSugKMqIlKHPmwSAz2zb7gDwseM4P1ar2/1gWdbLzLw2rL2UctiPwP8wOjp6mIh+jzKLzKwz89t1dXX3RiD/HID3IoQ5WSgUCuWNvv8HTNPcTkSvhXD6F4DvmPmTZDJ5MEzJ7B1Dbgvp/z+iRNszmcyW8nbfxKEoSq+U8hX4/yf4hpm3M/MvhmH8GoWEbdsrmfkdAEuijAPgSCl7fYXVCPYhM79Ypfs8M+9RVXV3W1vbb7Ui53K5RkVRnpBSPkVEy3F12Klp2qZIAnK5XKMQ4iiAO2o4ZgBHmPkHIjrBzBNCiEvMfA+AhQDuw1R1G1Qi1MJZVVVbVq1a9WckAQBgWdY6AF/MIHgc6NA0rWquqZlBvYPW3bPFnJl7a5EPFAAAxWKxi4j6ZoG/nUwmNwcZBQro6OhwXdftBBBr/V8LzGxJKTvCbMuRjtfPnDnzQY2dKS7yvclkcnMY8pEETMM0zbVEtBPRTuXC4CyArqBnvhyRy2Bd1w+USqUWALsAODEQdwDsVFW1JSp5YIaXfKZpzgfQLYToZOYFkQJP1Vv7pJS9uq7/cbUcYrlm7enpEalUKiWEWO4dfSzG1OHY5WtWIhpj5uMA8lLK4UKhUIjjmnUOc7jR8S/ZfQcN4LwJzQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wNS0xMFQxNzo0NDoyNyswMDowMLPyVtMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDUtMTBUMTc6NDQ6MjcrMDA6MDDCr+5vAAAAKHRFWHRzdmc6YmFzZS11cmkAZmlsZTovLy90bXAvbWFnaWNrLVlFMnUzZDJHpQfIVAAAAABJRU5ErkJggg==\"","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,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\"","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 Invoice from \"../entities/Invoice\";\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\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\tgetStripePortal: (returnPath: string) => WebClient.Get<{ portalUrl: string }>(`api/Account/StripePortal?returnPath=${encodeURIComponent(returnPath)}`)\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, { useEffect, useState } from 'react';\r\nimport { Button, Link, makeStyles, Paper, Typography } from \"@material-ui/core\";\r\n\r\nimport { useIsMobile } from '../../../components/Mui3WidthProvider';\r\nimport { useAuthenticatedUser } from '../../../utilities/useAuthenticatedUser';\r\nimport { AccountService } from '../../../services/AccountService';\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 openCancelDialog: () => void;\r\n openCancelAndRefundDialog: () => void;\r\n}\r\n\r\nexport function SubscriptionInfo(props:Props) {\r\n const { openCancelAndRefundDialog, openCancelDialog } = props;\r\n const classes = useStyles();\r\n const isMobile = useIsMobile();\r\n const user = useAuthenticatedUser();\r\n const { makerSubscription, inAdminImpersonationMode } = user;\r\n const [portalUrl, setPortalUrl] = useState(\"#\");\r\n\r\n useEffect(() => {\r\n const getPortalUrl = async () => {\r\n let response = await AccountService.getStripePortal(\"/settings\");\r\n if (response.success)\r\n setPortalUrl(response.data.portalUrl);\r\n }\r\n\r\n getPortalUrl();\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: {makerSubscription.status}\r\n {\r\n !makerSubscription.cancellationDate\r\n &&\r\n Renews: {new Date(makerSubscription.currentPeriodEnd).toLocaleDateString()}\r\n }\r\n \r\n View/Update Payment Method\r\n \r\n {\r\n (makerSubscription.cancellationDate == null) &&\r\n \r\n Cancel Subscription\r\n \r\n }\r\n {\r\n inAdminImpersonationMode &&\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 Invoice from '../../../entities/Invoice';\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: Invoice;\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?.planName === '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 Your access to Sermon Maker Standard will continue through {new Date(user.makerSubscription.currentPeriodEnd).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}","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\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\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 next 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 Invoice from '../../entities/Invoice';\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 { 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 { 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 [openConfirmationDialog, setOpenConfirmationDialog] = useState(false);\r\n const [openSpecialOfferDialog, setOpenSpecialOfferDialog] = useState(false);\r\n const [billingStatements, setBillingStatements] = 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 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 toggleCancelDialog = () => setOpenCancelDialog(!openCancelDialog)\r\n const toggleRefundDialog = () => setOpenRefundDialog(!openRefundDialog)\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 { \r\n user.inAdminImpersonationMode &&\r\n setErrorMessage(message)}\r\n toggleShowErrorMessage={toggleShowErrorMessage}\r\n />\r\n }\r\n setErrorMessage(message)}\r\n toggleShowErrorMessage={toggleShowErrorMessage}\r\n />\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 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\nimport { GTag } from '../../../utilities/Tracking/GoogleAnalytics';\r\nimport { getDataLayer } from '../../../utilities/Tracking/DataLayer';\r\n\r\ninterface IFramePayload {\r\n message: string,\r\n dataLayerEvent?: any,\r\n height?: number\r\n}\r\n\r\nexport function BundleCheckoutDialog({onBundleCreated}: {onBundleCreated: () => void}) {\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 setIframeHeight(630);\r\n onBundleCreated();\r\n \r\n // Refresh the user since their cookies were updated in the payments IFrame\r\n await AuthenticationService.refreshUser();\r\n break;\r\n case \"verified\":\r\n if (payload.dataLayerEvent) {\r\n const dataLayer = getDataLayer();\r\n dataLayer.push(payload.dataLayerEvent);\r\n }\r\n\r\n // Refresh the user since their cookies were updated in the payments IFrame\r\n const result = await AuthenticationService.refreshUser()\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 }, []);\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 { 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 { AuthenticationService } from \"../../services/AuthenticationService\";\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\tconst [bundleCreated, setBundleCreated] = useState(false);\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 && appUser.makerSubscription != null) { \r\n\t\t\t\t\tsaveAssetToLibrary(sermonAssetResponse.data, appUser);\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}, []);\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 && user.makerSubscription != null;\r\n\t\tif (hasActiveMakerSubscription && sermonAsset) {\r\n\t\t\tsaveAssetToLibrary(sermonAsset, user);\r\n\t\t} else {\r\n\t\t\tsetShowOffer(true);\r\n\t\t}\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\r\n\tconst toggleBundleCheckOut = () => {\r\n\t\tsetShowOffer(false);\r\n\t\tsetBundleCheckout(true);\r\n\t}\r\n\r\n\tconst handleBackClick = async () => {\r\n\t\t// In this case, the user skipped verification\r\n\t\tif (bundleCreated) {\r\n\t\t\tconst result = await AuthenticationService.getAuthenticatedUser();\r\n\t\t\tif (result.success) {\r\n\t\t\t\tuserContext.updateUser(result.data);\r\n\t\t\t} else {\r\n\t\t\t\tuserContext.updateUser(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\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, user: ApplicationUser) => {\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(user.email);\r\n\t\t\tuserContext.updateUser(user);\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{bundleCreated ? \"X Close\" : \"< 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 && setBundleCreated(true)} />}\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