{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/Square.png","webpack:///./assets/Hotspot_Done.svg","webpack:///./store/store.ts","webpack:///./actions/addHeaderBlocksToStateAction.ts","webpack:///./actions/rehydrate.ts","webpack:///./actions/setAPIErrorAction.ts","webpack:///./store/mirror.ts","webpack:///./actions/setBlocksLocalAction.ts","webpack:///./actions/setBlocksAction.ts","webpack:///./selectors/block.ts","webpack:///./services/apiHelpers/getCurrentTopic.ts","webpack:///./services/apiHelpers/getBlockById.ts","webpack:///./services/apiHelpers/getTopics.ts","webpack:///./services/apiHelpers/getInteractionsInTopic.ts","webpack:///./services/getTopicsNotHiddenFromNextAndBackNavigation.ts","webpack:///./services/apiHelpers/getAllInteractions.ts","webpack:///./services/apiHelpers/getAllAssessmentQuestions.ts","webpack:///./factories/utils.ts","webpack:///./factories/block.ts","webpack:///./factories/header.ts","webpack:///./actions/updateThemeHeadersAction.ts","webpack:///./factories/topic.ts","webpack:///./factories/scorm.ts","webpack:///./reducers/mirrorActive.ts","webpack:///./services/isAndroidSamsung.ts","webpack:///./services/isAppleComputerInc.ts","webpack:///./services/removeUndefinedEntriesFromObject.ts","webpack:///./factories/interactions/continueBtn.ts","webpack:///./reducers/preprocessModule.ts","webpack:///./reducers/updateInteractionsLocked.ts","webpack:///./reducers/addFeedBackData.ts","webpack:///./services/transformAssessmentsToAndFromSuspendData.ts","webpack:///./services/transformListBetweenIdSId.ts","webpack:///./store/localStore.ts","webpack:///./actions/setBlockAction.ts","webpack:///./actions/setBlockLocalAction.ts","webpack:///./factories/advancedediting.ts","webpack:///./factories/interactions/editableBtn.ts","webpack:///./factories/bookmark.ts","webpack:///./factories/modulehasaudiomessage.ts","webpack:///./actions/addAdvancedEditingBlocksToStateAction.ts","webpack:///./reducers/resetModule.ts","webpack:///./store/next.ts","webpack:///./factories/module.ts","webpack:///./reducers/addScormResponse.ts","webpack:///./reducers/focusBlock.ts","webpack:///./reducers/hideHeader.ts","webpack:///./reducers/loadBookmarkData.ts","webpack:///./reducers/loadSuspendData.ts","webpack:///./reducers/rehydrate.ts","webpack:///./reducers/rehydrateFromLMS.ts","webpack:///./reducers/removeBlock.ts","webpack:///./reducers/removeBlockLocal.ts","webpack:///./reducers/setActiveTopic.ts","webpack:///./reducers/setAPIError.ts","webpack:///./reducers/setBlock.ts","webpack:///./reducers/setBlocks.ts","webpack:///./reducers/setCurrentInteraction.ts","webpack:///./reducers/setError.ts","webpack:///./reducers/setExit.ts","webpack:///./reducers/setExitComplete.ts","webpack:///./reducers/setFonts.ts","webpack:///./reducers/setIsScrolling.ts","webpack:///./reducers/setLinks.ts","webpack:///./reducers/setProjectId.ts","webpack:///./reducers/setRootBlock.ts","webpack:///./reducers/setTheme.ts","webpack:///./reducers/setThemeId.ts","webpack:///./reducers/setTracker.ts","webpack:///./reducers/updateCourseTheme.ts","webpack:///./reducers/updateInteractionsOpen.ts","webpack:///./reducers/updateInteractionsSeen.ts","webpack:///./reducers/updateRecoloredChameleonImages.ts","webpack:///./reducers/updateScore.ts","webpack:///./reducers/updateScormSettigns.ts","webpack:///./reducers/updateUserPallete.ts","webpack:///./reducers/updateAssessment.ts","webpack:///./reducers/controlAudio.ts","webpack:///./reducers/audioAcknowledged.ts","webpack:///./reducers/addHeaderBlocksToState.ts","webpack:///./reducers/addAdvancedEditingBlocksToState.ts","webpack:///./reducers/updateModuleVariables.ts","webpack:///./reducers/updateLandingPageSeenState.ts","webpack:///./actions/preprocessModuleAction.ts","webpack:///./services/updateLegacyBlocksWithSId.ts","webpack:///./services/getStore.ts","webpack:///./styles/variables.ts","webpack:///./components/UI/EmptyBtn.tsx","webpack:///./components/UI/EditorBtn.tsx","webpack:///./components/errorHandler.tsx","webpack:///./services/pubSub/pubSub.ts","webpack:///./services/imageCache.ts","webpack:///./services/pubSub/getSubscriptions.ts","webpack:///./services/pubSub/usePubSub.ts","webpack:///./services/pubSub/index.ts","webpack:///./services/hexToRGB.ts","webpack:///./components/lib/PreLoaders/ModuleImagesPreloader.tsx","webpack:///./components/errorModal.tsx","webpack:///./services/apiHelpers/setCurrentBlock.ts","webpack:///./actions/focusBlockAction.ts","webpack:///./components/UI/EditMarker.tsx","webpack:///./services/getTopicSId.ts","webpack:///./services/getSectionInView.ts","webpack:///./services/getCurrentLocation.ts","webpack:///./components/UI/CloseBtn.tsx","webpack:///./services/useHeader.ts","webpack:///./components/TopicMenu/Menu.tsx","webpack:///./components/UI/VisuallyHidden.tsx","webpack:///./components/Header/BackBtn.tsx","webpack:///./services/apiHelpers/setCurrentTopic.ts","webpack:///./actions/setActiveTopicAction.ts","webpack:///./services/onScrollEnds.ts","webpack:///./components/Header/ProgressBar.tsx","webpack:///./components/Header_v2/HeaderLayout.tsx","webpack:///./components/Header/Header.tsx","webpack:///./components/Header/index.tsx","webpack:///./components/Header_v2/HeaderBackground.tsx","webpack:///./components/Header_v2/HeaderGraphic.tsx","webpack:///./services/getIsFirstInteraction.ts","webpack:///./components/Header_v2/Header_v2.tsx","webpack:///./components/Layouts/AudioPlayer.tsx","webpack:///./actions/setCurrentInteractionAction.ts","webpack:///./theme.ts","webpack:///./actions/updateScoreAction.ts","webpack:///./hosting/context.tsx","webpack:///./services/scorm/API.ts","webpack:///./components/lib/Scorm/SCORMToCollect.ts","webpack:///./services/transformScoreData.ts","webpack:///./components/lib/Scorm/SCORM.tsx","webpack:///./services/apiHelpers/getAssessments.ts","webpack:///./actions/setExitCompleteAction.ts","webpack:///./actions/updateAssessmentAction.ts","webpack:///./services/useCachedResource.ts","webpack:///./components/Module/AssessmentContainer.tsx","webpack:///./services/isIE.ts","webpack:///./services/ie11VerticalFlexCenterFix.ts","webpack:///./services/replaceWithPolyfill.js","webpack:///./services/updateReadOnlyText.ts","webpack:///./factories/interactions/interaction.ts","webpack:///./factories/layout.ts","webpack:///./factories/interactions/media.ts","webpack:///./factories/interactions/accordion.ts","webpack:///./factories/interactions/flipcard.ts","webpack:///./factories/interactions/image.ts","webpack:///./factories/interactions/carousel.ts","webpack:///./factories/interactions/feedback.ts","webpack:///./factories/interactions/multichoice.ts","webpack:///./factories/interactions/sortation.ts","webpack:///./factories/interactions/modalWithEditableBtn.ts","webpack:///./factories/interactions/draganddrop.ts","webpack:///./factories/interactions/matching_v2.ts","webpack:///./factories/interactions/hotspot_isolated.ts","webpack:///./factories/interactions/hotspot.ts","webpack:///./factories/interactions/fivestarrating.ts","webpack:///./factories/interactions/resultspage.ts","webpack:///./factories/interactions/clickandreveal.ts","webpack:///./factories/interactions/topicportal.ts","webpack:///./factories/interactions/assessmentintroduction.ts","webpack:///./factories/interactions/assessmentquestion.ts","webpack:///./factories/interactions/assessmentresults.ts","webpack:///./factories/interactions/contentcard.ts","webpack:///./factories/interactions/selectoptions.ts","webpack:///./factories/interactions/slider.ts","webpack:///./factories/interactions/certificate.ts","webpack:///./components/Editor/NewSectionWizard/createInteraction.ts","webpack:///./factories/interactions/fullpagetext.ts","webpack:///./factories/interactions/textentryvariable.ts","webpack:///./factories/interactions/textentryquiz.ts","webpack:///./factories/interactions/assessment.ts","webpack:///./components/Layouts/Wrapper.tsx","webpack:///./components/Layouts/HiddenBackButton.tsx","webpack:///./components/Layouts/Background.tsx","webpack:///./components/Layouts/next.ts","webpack:///./actions/updateInteractionsOpenAction.ts","webpack:///./components/Layouts/headingsStyles.ts","webpack:///./services/getScrollBarWidth.ts","webpack:///./components/Layouts/MenuContainer.tsx","webpack:///./actions/controlAudioAction.ts","webpack:///./components/Editor/EditorUtilities/UI/Bubble.tsx","webpack:///./components/NavigationSettings/ModuleNavigation.tsx","webpack:///./components/Layouts/buttonLayouts.ts","webpack:///./styles/updateGlobalFontStylesFromTheme.ts","webpack:///./services/getWebGLEnabled.ts","webpack:///./components/Module/Orbs.tsx","webpack:///./components/Layouts/ContainerLogical.tsx","webpack:///./services/killAllAudio.ts","webpack:///./components/UI/Modal.tsx","webpack:///./services/isIOSSafari.ts","webpack:///./services/apiHelpers/renderBlock.tsx","webpack:///./components/lib/EditableText/serializer.tsx","webpack:///./components/lib/EditableText/renderMark.tsx","webpack:///./components/lib/EditableText/renderNode.tsx","webpack:///./components/lib/EditableText/renderInline.tsx","webpack:///./services/apiHelpers/setBlockProps.ts","webpack:///./components/lib/EditableText/bulletStyles.ts","webpack:///./components/lib/EditableText/TextToSpeech.tsx","webpack:///./services/speechSynthesisCancel.ts","webpack:///./services/isiOS.ts","webpack:///./services/apiHelpers/getActiveBlocks.ts","webpack:///./services/scoring.ts","webpack:///./services/getScoreDataFromScoringBlocks.ts","webpack:///./components/lib/EditableText/ReadOnlyText.tsx","webpack:///./components/lib/EditableText/EditableText.tsx","webpack:///./components/lib/EditableText/index.tsx","webpack:///./components/lib/Buttons/getBaseButtonStyles.ts","webpack:///./components/lib/Buttons/buttonHelpers.ts","webpack:///./services/hasValidLocationUpdated.ts","webpack:///./components/lib/Buttons/NavigationButton.tsx","webpack:///./components/lib/Buttons/GenericButton.tsx","webpack:///./components/lib/EditableBtn/index.tsx","webpack:///./components/lib/Image/EditWrappers.tsx","webpack:///./components/UI/LoadingSpinner/LoadingSpinner.tsx","webpack:///./components/UI/LoadingSpinner/index.tsx","webpack:///./services/checkImgSrcIsGif.ts","webpack:///./hooks/useImageLoader.tsx","webpack:///./components/lib/Image/Circle.tsx","webpack:///./components/lib/Image/ImageZoom.tsx","webpack:///./components/lib/Image/Image.tsx","webpack:///./components/lib/Image/imgPlaceholders.ts","webpack:///./components/lib/Image/index.tsx","webpack:///./components/Module/Bookmark.tsx","webpack:///./services/clearLocationHistory.ts","webpack:///./components/Module/Fonts.tsx","webpack:///./components/lib/EmptySection/EmptySection.tsx","webpack:///./components/lib/EmptySection/index.tsx","webpack:///./components/UI/Arrow.tsx","webpack:///./services/unlockInteraction.ts","webpack:///./components/lib/Accordion/interactionContext.ts","webpack:///./components/lib/Accordion/Accordion.tsx","webpack:///./components/lib/ContinueBtn/DButton.tsx","webpack:///./services/findByKeyVal.ts","webpack:///./components/Editor/EditorUtilities/UI/LastPageMessage.tsx","webpack:///./components/lib/ContinueBtn/continueBtn_v2.tsx","webpack:///./components/lib/TextAndImage/interactionContext.ts","webpack:///./hooks/useIntersectionObserver.ts","webpack:///./components/lib/Video/Transcript.tsx","webpack:///./components/lib/Video/Video.tsx","webpack:///./components/lib/Video/index.tsx","webpack:///./components/lib/Audio/Transcript.tsx","webpack:///./assets/animations/headphonesWoman.js","webpack:///./components/lib/Audio/Audio.tsx","webpack:///./components/lib/Audio/index.tsx","webpack:///./components/lib/SVG/EditWrappers.tsx","webpack:///./assets/animations/placeholder.js","webpack:///./components/lib/SVG/index.tsx","webpack:///./components/lib/SVG/SVG.tsx","webpack:///./components/lib/Media/Media.tsx","webpack:///./components/lib/Media/index.tsx","webpack:///./services/shouldUpdate.ts","webpack:///./components/lib/Embed/EditWrappers.tsx","webpack:///./actions/hideHeaderAction.ts","webpack:///./components/lib/Embed/Embed.tsx","webpack:///./components/lib/Embed/index.tsx","webpack:///./components/lib/PDF/EditWrappers.tsx","webpack:///./components/lib/PDF/PDF.tsx","webpack:///./components/lib/PDF/index.tsx","webpack:///./components/lib/PDF/OpenPDF.tsx","webpack:///./components/lib/Accordion/AccordionDisplay_v2.tsx","webpack:///./components/lib/Carousel/swipeGesture.ts","webpack:///./components/lib/Accordion/index.tsx","webpack:///./components/lib/Carousel/CarouselBtn.tsx","webpack:///./components/lib/Carousel/CarouselMarker.tsx","webpack:///./components/lib/Carousel/interactionContext.ts","webpack:///./services/isEDGE.ts","webpack:///./components/lib/Carousel/CarouselLayout.tsx","webpack:///./components/lib/Carousel/Carousel.tsx","webpack:///./components/lib/Carousel/CarouselSlide.tsx","webpack:///./components/lib/Carousel/CarouselDisplay.tsx","webpack:///./components/lib/Carousel/index.tsx","webpack:///./components/lib/FlipCard/interactionContext.ts","webpack:///./components/lib/FlipCard/Flipcards_v2.tsx","webpack:///./services/checkReturnToInteractionEditing.ts","webpack:///./styles/headingStylesForPanelsAndCards.ts","webpack:///./components/lib/FlipCard/Face.tsx","webpack:///./components/lib/FlipCard/Flipcard_v2.tsx","webpack:///./components/lib/FlipCard/FlipCardDisplay_v2.tsx","webpack:///./components/lib/FlipCard/index.tsx","webpack:///./components/lib/FullPageText/interactionContext.ts","webpack:///./components/lib/FullPageText/TermsAndConditions.tsx","webpack:///./components/lib/FullPageText/FullPageText.tsx","webpack:///./components/lib/FullPageText/FullPageTextDisplay.tsx","webpack:///./components/lib/FullPageText/index.tsx","webpack:///./actions/addScormResponseAction.ts","webpack:///./components/lib/Feedback/Feedback.tsx","webpack:///./components/lib/Feedback/FeedbackWithEditableBtn.tsx","webpack:///./components/lib/Feedback/index.tsx","webpack:///./services/apiHelpers/useScoringQuizzes.ts","webpack:///./components/lib/Multichoice/interactionContext.ts","webpack:///./components/lib/Multichoice/Multichoice_v2.tsx","webpack:///./services/scorm/scormService.ts","webpack:///./components/lib/Multichoice/Radio.tsx","webpack:///./components/lib/Multichoice/Answer.tsx","webpack:///./components/lib/Multichoice/MultichoiceDisplay_v2.tsx","webpack:///./components/lib/Multichoice/index.tsx","webpack:///./components/lib/MultichoiceImage/interactionContext.ts","webpack:///./services/apiHelpers/setNewBlockNewTree.ts","webpack:///./hooks/useSetState.ts","webpack:///./components/UI/ColorPicker/Dot.tsx","webpack:///./actions/setErrorAction.ts","webpack:///./actions/updateUserPaletteAction.ts","webpack:///./components/UI/AddRemoveBtn.tsx","webpack:///./components/UI/ColorPicker/UserPalette.tsx","webpack:///./components/lib/MultichoiceImage/MultichoiceImage.tsx","webpack:///./components/Editor/EditMultichoiceImage/EditMultichoiceImage.tsx","webpack:///./components/Layouts/IELayout.tsx","webpack:///./components/lib/MultichoiceImage/Answer.tsx","webpack:///./components/lib/MultichoiceImage/SubmitBtn.tsx","webpack:///./components/lib/Feedback/Feedback_updated_022022.tsx","webpack:///./components/lib/MultichoiceImage/MultichoiceImageDisplay.tsx","webpack:///./components/lib/MultichoiceImage/index.tsx","webpack:///./components/lib/Sortation/interactionContext.ts","webpack:///./services/apiHelpers/getBlocksByType.ts","webpack:///./components/lib/Sortation/Option.tsx","webpack:///./services/rgbaFromHexAndOpacity.ts","webpack:///./components/lib/Sortation/Sortation.tsx","webpack:///./components/lib/Sortation/SortationHeading.tsx","webpack:///./components/lib/Sortation/SortationDisplay_v2.tsx","webpack:///./components/lib/Sortation/SortableImage.tsx","webpack:///./components/lib/Sortation/index.tsx","webpack:///./components/lib/Slider/interactionContext.ts","webpack:///./components/lib/Slider/Slider.tsx","webpack:///./components/lib/Slider/SliderDisplay.tsx","webpack:///./components/lib/Slider/index.tsx","webpack:///./components/lib/Matching/interactionContext.ts","webpack:///./components/lib/Matching/Feedback.tsx","webpack:///./components/lib/Matching/LayoutResponsiveContainer.tsx","webpack:///./components/lib/Matching/screenReader.ts","webpack:///./components/lib/Matching/Layout_v2.tsx","webpack:///./components/lib/Matching/ReRenderedFeedback.tsx","webpack:///./components/lib/Matching/Matching_v2.tsx","webpack:///./services/apiHelpers/getMediaParent.ts","webpack:///./components/lib/Matching/MatchDrag.tsx","webpack:///./components/lib/Matching/MatchDrop.tsx","webpack:///./components/lib/Matching/MatchingDisplay.tsx","webpack:///./components/lib/Matching/index.tsx","webpack:///./components/lib/TextAndImage/MultiMediaDisplay.tsx","webpack:///./components/lib/TextAndImage/index.tsx","webpack:///./components/lib/HotSpot/interactionContext.ts","webpack:///./components/lib/HotSpot/EditWrapper.tsx","webpack:///./components/lib/HotSpot/Feedback.tsx","webpack:///./components/lib/HotSpot/HotSpotTickedWhenSeen.tsx","webpack:///./components/lib/HotSpot/VisibleHotSpot.tsx","webpack:///./components/lib/HotSpot/Polygon.tsx","webpack:///./components/Editor/editorContext.ts","webpack:///./components/Editor/SetMediaType/SetMediaType.tsx","webpack:///./components/Editor/EditImage/ImageLibrary/variables.ts","webpack:///./components/UI/FileUploader/FileUploader.tsx","webpack:///./services/getSVGSize.ts","webpack:///./components/Editor/EditImage/ImageLibrary/YourLibrary/YourImagePreviewPanel.tsx","webpack:///./components/Editor/EditImage/ImageLibrary/YourLibrary/YourImagePreview.tsx","webpack:///./components/Editor/EditImage/ImageLibrary/YourLibrary/YourLibrary.tsx","webpack:///./components/Editor/EditImage/ImageLibrary/ChameleonsLibrary/SVGPreview.tsx","webpack:///./components/Editor/EditImage/ImageLibrary/ChameleonsLibrary/ChameleonsLibrary.tsx","webpack:///./services/isFeatureEnabled.ts","webpack:///./components/Editor/EditImage/EditImage.tsx","webpack:///./components/Editor/EditHotSpotIsolated/EditHotSpotIsolated_v2.tsx","webpack:///./components/lib/HotSpot/Rectangle.tsx","webpack:///./components/lib/HotSpot/HotSpotScorable.tsx","webpack:///./components/lib/HotSpot/onMouseDown.ts","webpack:///./components/lib/HotSpot/onMouseMove.ts","webpack:///./components/lib/HotSpot/onMouseUp.ts","webpack:///./components/lib/HotSpot/onClick.ts","webpack:///./components/lib/HotSpot/HotSpot.tsx","webpack:///./components/lib/HotSpot/useHotSpotTransformOldToNew.ts","webpack:///./components/lib/HotSpot/getMouseEvents.ts","webpack:///./services/lastCharInStringIsPeriod.ts","webpack:///./components/lib/HotSpot/HotSpotDisplay.tsx","webpack:///./components/lib/HotSpot/index.tsx","webpack:///./components/lib/FiveStarRating/interactionContext.ts","webpack:///./components/lib/FiveStarRating/Message.tsx","webpack:///./components/UI/TextEntry.tsx","webpack:///./components/lib/FiveStarRating/FiveStarRating_v2.tsx","webpack:///./components/lib/FiveStarRating/FiveStarList.tsx","webpack:///./components/lib/FiveStarRating/Heart.tsx","webpack:///./components/lib/FiveStarRating/Diamond.tsx","webpack:///./components/lib/FiveStarRating/Smiley.tsx","webpack:///./components/lib/FiveStarRating/Star.tsx","webpack:///./components/lib/FiveStarRating/SubmitBtn.tsx","webpack:///./components/lib/FiveStarRating/FiveStarRatingDisplay_v2.tsx","webpack:///./components/lib/FiveStarRating/FeedbackSubmittedEditable.tsx","webpack:///./components/lib/FiveStarRating/index.tsx","webpack:///./components/lib/ResultsPage/interactionContext.ts","webpack:///./components/lib/ResultsPage/ResultsPageContent.tsx","webpack:///./components/lib/ResultsPage/ResultsPageMedia.tsx","webpack:///./components/lib/ResultsPage/GraphCircle.tsx","webpack:///./components/lib/ResultsPage/GraphBar.tsx","webpack:///./components/lib/ResultsPage/ResultsPageResult.tsx","webpack:///./components/lib/ResultsPage/ResultsPageDisplay.tsx","webpack:///./components/lib/ResultsPage/index.tsx","webpack:///./components/lib/ClickAndReveal/interactionContext.ts","webpack:///./components/lib/ClickAndReveal/ClickAndReveals.tsx","webpack:///./components/lib/ClickAndReveal/ClickAndReveal.tsx","webpack:///./components/lib/ClickAndReveal/ClickAndRevealContent.tsx","webpack:///./components/lib/ClickAndReveal/ClickAndRevealDisplay.tsx","webpack:///./components/lib/ClickAndReveal/index.tsx","webpack:///./components/lib/ContentCard/interactionContext.ts","webpack:///./components/lib/ContentCard/EditCardWrapper.tsx","webpack:///./services/arrayToGridLike.ts","webpack:///./components/lib/ContentCard/Masonry.tsx","webpack:///./components/lib/ContentCard/grids.tsx","webpack:///./components/lib/ContentCard/ContentCards.tsx","webpack:///./components/lib/ContentCard/ContentCard.tsx","webpack:///./components/lib/ContentCard/ContentCardDisplay.tsx","webpack:///./components/lib/ContentCard/index.tsx","webpack:///./components/lib/SelectOptions/interactionContext.ts","webpack:///./components/lib/SelectOptions/onSubmit.ts","webpack:///./components/lib/SelectOptions/SelectOptionsRoot.tsx","webpack:///./components/lib/SelectOptions/SelectOptions.tsx","webpack:///./components/lib/SelectOptions/SelectOption.tsx","webpack:///./components/lib/SelectOptions/SelectOptionsDisplay.tsx","webpack:///./components/lib/SelectOptions/index.tsx","webpack:///./components/lib/TopicPortal/interactionContext.ts","webpack:///./components/lib/TopicPortal/TopicIcon.tsx","webpack:///./components/lib/TopicPortal/TopicPanel.tsx","webpack:///./services/apiHelpers/getTopicsComplete.ts","webpack:///./components/lib/TopicPortal/updateTopicPortalMedia.ts","webpack:///./components/lib/TopicPortal/TopicPortalContainer.tsx","webpack:///./components/lib/TopicPortal/TopicPortalDisplay.tsx","webpack:///./components/lib/TopicPortal/index.tsx","webpack:///./components/lib/TextEntry/SubmitBtn.tsx","webpack:///./components/lib/TextEntry/interactionContext.ts","webpack:///./components/lib/TextEntry/TextEntry.tsx","webpack:///./services/submitToCollect.ts","webpack:///./components/lib/TextEntry/TextEntryDisplay.tsx","webpack:///./components/lib/TextEntry/index.tsx","webpack:///./components/lib/TextEntryVariable/SubmitBtn.tsx","webpack:///./components/lib/TextEntryVariable/interactionContext.ts","webpack:///./components/UI/TextAreaDynamicHeight.tsx","webpack:///./components/lib/TextEntryVariable/TextEntryVariable.tsx","webpack:///./components/lib/TextEntryVariable/TextEntryVariableDisplay.tsx","webpack:///./components/lib/TextEntryQuiz/TextEntryQuiz.tsx","webpack:///./components/lib/TextEntryVariable/index.tsx","webpack:///./components/lib/TextEntryQuiz/interactionContext.ts","webpack:///./components/lib/TextEntryQuiz/TextEntryQuizDisplay.tsx","webpack:///./components/lib/TextEntryQuiz/index.tsx","webpack:///./components/lib/Assessment/interactionContext.ts","webpack:///./components/lib/Assessment/Assessment.tsx","webpack:///./components/lib/Assessment/AssessmentIntroduction.tsx","webpack:///./components/lib/Assessment/AssessmentQuestion.tsx","webpack:///./components/lib/Assessment/AssessmentResults.tsx","webpack:///./components/lib/Assessment/AssessmentDisplay.tsx","webpack:///./components/lib/Assessment/index.tsx","webpack:///./components/lib/AssessmentIntroduction/interactionContext.ts","webpack:///./components/lib/AssessmentIntroduction/AssessmentIntroduction.tsx","webpack:///./components/lib/AssessmentIntroduction/AssessmentIntroductionDisplay.tsx","webpack:///./components/lib/AssessmentIntroduction/index.tsx","webpack:///./components/lib/AssessmentQuestion/interactionContext.ts","webpack:///./components/lib/AssessmentQuestion/SubmitContinue.tsx","webpack:///./components/lib/AssessmentQuestion/AssessmentQuestion.tsx","webpack:///./components/lib/AssessmentQuestion/AssessmentQuestionOption.tsx","webpack:///./components/lib/AssessmentQuestion/AssessmentQuestionOptions.tsx","webpack:///./components/lib/AssessmentQuestion/AssessmentQuestionDisplay.tsx","webpack:///./components/lib/AssessmentQuestion/index.tsx","webpack:///./components/lib/AssessmentResults/interactionContext.ts","webpack:///./components/UI/AssessmentCorrect.tsx","webpack:///./components/UI/AssessmentIncorrect.tsx","webpack:///./components/lib/AssessmentResults/ScoreBar.tsx","webpack:///./components/lib/AssessmentResults/Button.tsx","webpack:///./components/lib/AssessmentResults/AssessmentResults.tsx","webpack:///./components/lib/AssessmentResults/getQuestionsInAssessment.tsx","webpack:///./components/lib/AssessmentResults/getAttempt.ts","webpack:///./components/lib/AssessmentResults/unlockAssessment.ts","webpack:///./components/lib/AssessmentResults/RetryAssessment.tsx","webpack:///./components/lib/AssessmentResults/FeedbackPassed.tsx","webpack:///./components/lib/AssessmentResults/FeedbackFailed.tsx","webpack:///./components/lib/AssessmentResults/ContinueButtonBranching.tsx","webpack:///./components/lib/AssessmentResults/AssessmentResultsDisplay.tsx","webpack:///./components/lib/AssessmentResults/index.tsx","webpack:///./components/lib/Certificate/interactionContext.ts","webpack:///./components/lib/Certificate/Handles.tsx","webpack:///./components/lib/Certificate/generatePDF.ts","webpack:///./components/lib/Certificate/Certificate_1_SVG.tsx","webpack:///./components/lib/Certificate/Certificate_2_SVG.tsx","webpack:///./components/lib/Certificate/Certificate_3_SVG.tsx","webpack:///./components/lib/Certificate/InputText.tsx","webpack:///./components/lib/Certificate/CertificateTemplates.tsx","webpack:///./components/lib/Certificate/Certificate.tsx","webpack:///./components/lib/Certificate/CertificateDisplay.tsx","webpack:///./components/Module/Interactions_Editor.tsx","webpack:///./components/Module/Interactions_Module.tsx","webpack:///./components/Module/ModuleHasAudioMessage.tsx","webpack:///./components/Module/TopicContainer.tsx","webpack:///./services/reviewToolPostMessage.ts","webpack:///./services/getModuleIsFreeScrolling.ts","webpack:///./components/Module/windowScrollInfo.ts","webpack:///./components/Module/ReadsHostingContext.tsx","webpack:///./components/Module/Module_v2.tsx","webpack:///./components/Module/index.tsx","webpack:///./actions/setExitAction.ts","webpack:///./components/Module/navLoadingIndicator.ts","webpack:///./services/apiHelpers/setCurrentInteraction.ts","webpack:///./services/fontService/fonts.ts","webpack:///./services/fontService/allGoogleFonts.ts","webpack:///./services/fontService/parseFontUrl.ts","webpack:///./components/lib/BootScreen/BootScreen.tsx","webpack:///./services/fontService/fontService.ts","webpack:///./services/getModuleImages.ts","webpack:///./styles/global.ts","webpack:///./styles/flipCard.styles.ts","webpack:///./styles/matching.styles.ts","webpack:///./styles/clickAndReveal.styles.ts","webpack:///./styles/la-ball-pulse.ts","webpack:///./module.tsx","webpack:///./assets/Correct_loop.gif","webpack:///./assets/Incorrect_loop.gif","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/module.js","webpack:///./assets/Image.svg","webpack:///./assets/CloseFullscreenEmbed.svg","webpack:///./assets/CC_Sortation_Placeholder.png","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/box.js","webpack:///./assets/Logo_updated.svg","webpack:///./assets/Character A.png","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/flexbox.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/text.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/hooks/useSidebar.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/navbarContext.js","webpack:///./assets/Plus.svg","webpack:///./assets/addImg@3x.svg","webpack:///./assets/Video.svg","webpack:///./assets/Embed.svg","webpack:///./assets/FullScreenIcon.svg","webpack:///./assets/PDF_smallIcon.svg","webpack:///./assets/tick_mint.svg","webpack:///./assets/Audio.png","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/utils/render.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/carousel.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/interaction.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/navItem.js","webpack:///./assets/new_graphic_banner_default.png","webpack:///./assets/chameleon_icon_white.svg","webpack:///./assets/Media_default.svg","webpack:///./assets/Character C.png","webpack:///./assets/Wide Image.png","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/core.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/atoms/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/utils/children.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/topic.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/edit/topics.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/bar.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/burger.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/drawer.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/dropDown.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/logo.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/navArrow.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/user.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/navbarLink.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/search.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/navigation.js","webpack:///./assets/Card_Test.png","webpack:///./services/ie11closestPolyfill.ts","webpack:///./assets/Loader_Logo_2.gif","webpack:///./assets/edit.svg","webpack:///./assets/pdf_thumbnail_26012023.png","webpack:///./assets/CC_Correct.png","webpack:///./assets/CC_Incorrect.png","webpack:///./assets/CC_TryAgain.png","webpack:///./assets/previewInteractionIcon.svg","webpack:///./assets/reviewToolReviewsBubble.svg","webpack:///./assets/expand.svg","webpack:///./assets/Wide Image 2.png","webpack:///./assets/genericAdditionalPlaceholder.png","webpack:///./assets/CC_Phone Character.png","webpack:///./assets/addInteractionDefault.svg","webpack:///./assets/addInteractionHover.svg","webpack:///./assets/Play Default.svg","webpack:///./assets/Play Hover.svg","webpack:///./assets/the Gwillest.png","webpack:///./assets/addInteractionBKG.svg","webpack:///./assets/theresNothingHereYet.png","webpack:///./assets/watchAQuickHowToVideo.png","webpack:///./assets/playVideo.svg","webpack:///./assets/clickPreviewToSeeOutput.png","webpack:///./assets/CC_Multi Choice Media Placeholders_1.svg","webpack:///./assets/CC_Multi Choice Media Placeholders_2.svg","webpack:///./assets/CC_Multi Choice Media Placeholders_3.svg","webpack:///./assets/CC_Multi Choice Media Placeholders_4.svg","webpack:///./assets/CC_Multi Choice Media Placeholders_5.svg","webpack:///./assets/CC_Multi Choice Media Placeholders_6.svg","webpack:///./assets/CC_Question Text + Image.svg","webpack:///./assets/Cross.svg","webpack:///./assets/Plus_purple.svg","webpack:///./assets/Info.svg","webpack:///./assets/CC_Sortation Placeholder_Panel Media 4.png","webpack:///./assets/CC_QuestionTextImage.svg","webpack:///./assets/HotspotSVGError.svg","webpack:///./assets/Delete_new.svg","webpack:///./assets/tick_grey.svg","webpack:///./assets/Hotspot_Add.svg","webpack:///./assets/imageUploadError_hotSpot.svg","webpack:///./assets/SVG.svg","webpack:///./assets/AudioIcon.svg","webpack:///./assets/Text.svg","webpack:///./assets/Search.svg","webpack:///./assets/removeNavigation.svg","webpack:///./assets/Plus_Icon.svg","webpack:///./assets/Widest Image.png","webpack:///./assets/hotspotLandingPageImg.png","webpack:///./assets/hotspotQuizImg.png","webpack:///./assets/collectFeedbackSubmitted.svg","webpack:///./assets/CC_AW_Feedback-min.png","webpack:///./assets/landingPageCake_1.png","webpack:///./assets/landingPageCake_2.png","webpack:///./assets/landingPageCake_3.png","webpack:///./assets/landingPageCake_4.png","webpack:///./assets/landingPageCake_5.png","webpack:///./assets/landingPageCake_6.png","webpack:///./assets/clickToRevealMagicMan.png","webpack:///./assets/CC_Topic Portal V3_Topic Portal Placeholder Icon.png","webpack:///./assets/CC_Text_Entry_Quiz_Placeholder.png","webpack:///./assets/new_assessment_intro_default.png","webpack:///./assets/CC_Assessment Question Image.png","webpack:///./assets/Certificate-V2.png","webpack:///./assets/Drag Icon_Blue.svg","webpack:///./assets/Resize Icon.svg","webpack:///./assets/move_cert_input.svg","webpack:///./assets/resize_cert_input.svg","webpack:///./assets/chameleonLogoForCertificate.svg","webpack:///./assets/lizard.svg","webpack:///./setup.ts","webpack:///./assets/whoopsBrowserIncompatible.png","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/editor.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/button.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/card.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/grid.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/heading.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/image.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/link.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/core/icon.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/atoms/windowButton.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/atoms/indicator.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/molecules/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/elements/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/elements/browserWindow.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/elements/column.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/elements/row.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/icons/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/icons/back.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/accordion.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/accordionBody.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/accordionField.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/accordionHeader.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/animation.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/animationGroup.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/back.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/branchButton.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/hooks/useCarousel.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/carouselAnimator.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/heighAwareComponent.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/carouselNavigation.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/choice.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/choices.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/column.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/continueButton.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/description.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/dragAndDrop.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/dragContainer.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/dragItem.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/dropContainer.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/dropItem.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/feedback.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/header.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/heading.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/image.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/menu.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/multipleChoice.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/paragraph.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/quiz.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/rating.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/result.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/singleChoice.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/singleColumnLayout.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/slide.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/text.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/textarea.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/title.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/topicTitle.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/twoColumnLayout.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/editable.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/video.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/edit/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/edit/color.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/edit/enum.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/edit/richText.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/edit/sidebar.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/edit/block.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/edit/text.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/hooks/useModule.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/components/frame.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/player.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/app.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/utils/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/utils/block.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/index.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/navbar.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/lock.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/divider.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/networkActivity.js","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-app/build/chrome/loadingSpinner.js","webpack:///./services/elementRemovePolyfill.ts","webpack:///./services/removePolyfill.ts","webpack:///./components/Layouts/highlightActiveElement.ts","webpack:////home/phantom_antonym/Development/chameleon/packages/creator-ui/build/index.js","webpack:///./assets/Rectangle.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","__webpack_public_path__","TrackerState","findHeaderElementByType","blocks","type","values","find","block","addHeaderBlocksToStateAction","dispatch","getState","header","standardHeader","graphicHeader","children","map","child","id","standardHeaderLogo","graphicHeaderBackground","graphicHeaderLogo","rehydrateAction","setAPIErrorAction","err","themeButtonDefault","label","undefined","shape","backgroundColor","backgroundOpacity","backgroundColorOnHover","backgroundOpacityOnHover","borderWidth","focusColor","includeButtonBackground","useLargeButton","borderRadius","textColor","textColorOnHover","shadow","outline","outlineColor","fontFamily","fontSize","bold","uppercase","initialState","apiError","count","bookmarkLoaded","bookmarkLocation","currentInteraction","currentInteractionBlockId","currentTopic","audio","audioAcknowledged","customFonts","error","exit","exitComplete","focusedNodeId","feedback","hasError","hideHeader","interactionsLocked","interactionsOpen","interactionsSeen","landingPagesSeenState","isScrolling","lastFocusedNodeId","links","mirrorActive","idToSIdMap","sIdToIdMap","topicsIdSIdMapping","idToSId","sIdToId","assessmentQuestionIdSIdMapping","nextInteractionMap","projectId","rootBlockId","scormSettings","passMark","setCompleteFromScore","setCompleteOnExit","setCompleteWhenAllPagesViewed","sendOnlySuccessStatus","lessonStatus","theme","buttonBackgroundColor","buttonBorderRadius","buttonOutline","buttonShadow","buttonShape","buttonTextColor","buttonHover","fontFamilies","lineHeight","padding","margin","paragraphSpacing","fontSizes","loadingSpinnerColor","buttons","main","highContrast","recoloredChameleonImages","useImagePreloader","enableBookmarking","moduleIsFreeScrolling","desktop","device","giveFocusToFirstSectionOnLoad","textToSpeech","textToSpeechVoice","disableLockDownInPreview","userPalette","menu","headings","h1","h2","h3","h4","h5","h6","link","visited","hover","focus","active","linksSecondary","themeId","tracker","userBehaviour","score","interactionTiming","scormResponses","moduleVariables","assessments","fn","run","Mirror","a","state","newTracker","keys","k","DIRTY","CLEAN","DELETED","filter","toUpdate","toSet","b","__delete","project_id","__isSaving","client","setMany","then","Array","isArray","forEach","deleted_at","catch","Sentry","scope","setExtra","currrentTracker","nextTracker","next","setBlocksLocalAction","setBlocksAction","bs","localbs","reduce","acc","remoteable","allTopicsOrdered","allInteractionsOrdered","cachedTopics","getBlock","findBlocks","selector","findBlocksIn","toVisit","discovered","filterToNewRoot","rootBlock","getBlockChildren","blockList","cur","getTopicGroup","possibleGroups","meta","subType","Error","getTopicGroupFromState","getTopicsFromGroup","topicGroup","getInteractionsFromTopicAndState","topic","interactionGroup","newRootBlockList","getTopicInteractionGroup","interactions","props","asAssessment","introduction","questions","q","results","getAllTopicsOrdered","groupBlock","dev","getAllInteractionsOrdered","getBlockFromState","getStore","store","getTopics","topics","cachedInteractions","getCurrentTopic","getTopicsNotHiddenFromNextAndBackNavigation","hiddenFromNextAndBackNavigation","onlyTopicsNotHiddenFromNextAndBackNavigation","curr","getInteractionsInTopic","getAllAssessmentQuestions","toLowerCase","flatten","cloneBlock","childBlocks","makeReference","getSId","list","offset","getAllInteractions","getBlockById","SIds","entry","sId","nextSId","Math","max","createBlock","extra","uuid","animator","standardHeaderDefaults","headerHeight","headerBackgroundColor","headerBackgroundOpacity","headerTextColor","backButton","topicName","progressBar","topicMenu","headerDropShadow","graphicHeaderDefaults","includeHeaderOverlay","headerOverlayColor","headerOverlayOpacity","addHeaders","logoProps","headersBlock","src","standard_header_logo","banner_primary_creator","graphic_header_logo","newHeadersBlocks","rootId","nhb","updateThemeHeadersAction","logo","imageId","newBlock","newTree","addInteractionToGroup","group","interaction","position","nextGroup","createScorm","scormExitMessage","shouldSendScoreWhen","moduleCompleteInterationRequirement","moduleCompleteScoreRequirement","scormControlledExit","scormExitDelay","scoringCriteria","scoreCriteria","isAndroidSamsung","navigator","userAgent","match","isAppleComputerInc","vendor","removeUndefinedEntriesFromObject","obj","includes","oldStylesToNewMap","background","buttonBackgroundOpacity","buttonHoverBackgroundOpacity","color","textHoverColor","buttonOutlineColor","oldDataToNewMap","location","linkData","createContinueBtn","isDevice","getExistingButtonStylesFromTheme","cachedBlocks","transformListFromIdToSId","transformListFromSIdToId","updateCachedBlocks","types","resultsKeyMapToSuspendData","answer","attemptCount","correctAnswer","isCorrect","isLocked","navigateToResults","questionName","submitButtonLabel","resultsKeyMapFromSuspendData","1","2","3","4","5","6","7","8","getResultsMinified","accA","currA","index","keysRemapped","accB","currB","questionBlock","questionBlockOptions","questionBlockOptionsId","indexOf","getResultsMaxified","Number","console","log","transformAssessmentsToSuspendData","assessmentsMinified","assessment","assessmentSId","String","structuredClone","resultsUpdatingIdToSId","resultsMinified","assessmentMinified","transformAssessmentsFromSuspendData","assessmentId","resultsUpdatingSIdToId","resultsMaxified","assessmentMaxified","hash","href","replace","sessionStorage","clear","localStorage","open","watch","deBounce","subscribe","clearTimeout","setTimeout","stndardHeader","minifiedAssessments","setItem","JSON","stringify","saveState","setBlockAction","setBlockLocalAction","addAdvancedEditingBlock","advancedEditingBlock","advancedEditingBlockRef","nextBlock","createEditableBtn","createBookmark","localButtonOutline","localColor","createModuleHasAudioMessage","addAdvancedEditingBlocksToStateAction","findBlockByType","hasAdvancedEditing","hasBookmark","hasModuleHasAudioMessage","Module","newBlockA","newTreeA","bookmarkBlock","bookmarkBlockRef","newBlocks","addBookmarkBlock","newBlockB","newTreeB","moduleHasAudioMessageBlock","moduleHasAudioMessageBlockRef","addModuleHasAudioMessageBlock","newBlockM","newTreeM","requestAnimationFrame","title","hasMode","mod","flatMod","actionHandlers","ADD_SCORM_RESPONSE","FOCUS_BLOCK","updatedCurrentInteractionBlockId","HIDE_HEADER","hide","LOAD_BOOKMARK_DATA","LOAD_SUSPEND_DATA","hasSavedAssessments","newState","interactionsReporting","MIRROR_ACTIVE","PREPROCESS_MODULE","moduleIsFreeScrollingDesktop","moduleIsFreeScrollingDevice","$","lockDown","selectedTopics","some","toString","mainButton","certificateInteraction","imgSrc","imgWidth","imgHeight","certificate","option","optionBlock","version","updatedStyleProps","updateBackgroundOpacityForOutline","newKey","hasLocalMap","hasValue","prop","toUpperCase","REHYDRATE","REHYDRATE_FROM_LMS","REMOVE_BLOCK","nextState","all","REMOVE_BLOCK_LOCAL","SET_ACTIVE_TOPIC","SET_API_ERROR","SET_BLOCK","SET_BLOCKS","SET_CURRENT_INTERACTION","updateFocusedNodeId","SET_ERROR","SET_EXIT","SET_EXIT_COMPLETE","SET_FONTS","SET_IS_SCROLLING","SET_LINKS","SET_PROJECT_ID","SET_ROOT_BLOCK","SET_THEME","SET_THEME_ID","SET_TRACKER","SUBMIT_FEEDBACK","UPDATE_COURSE_THEME","UPDATE_INTERACTIONS_OPEN","currentInteractionId","newInteractionsOpen","from","Set","nextInteractionId","UPDATE_INTERACTIONS_SEEN","newInteractionsSeen","UPDATE_RECOLORED_CHAMELEON_IMAGES","UPDATE_SCORE","UPDATE_SCORM_SETTINGS","UPDATE_USER_PALETTE","UPDATE_ASSESSMENT","assessmentData","questionData","delete","questionId","CONTROL_AUDIO","newAudio","AUDIO_ACKNOWLEDGED","ADD_HEADER_BLOCKS_TO_STATE","ADD_ADVANCED_EDITING_BLOCKS_TO_STATE","UPDATE_INTERACTIONS_LOCKED","updatedInteractionsLocked","indexOfId","RESET_MODULE","UPDATE_MODULE_VARIABLES","UPDATE_LANDING_PAGE_SEEN_STATE","parentId","childIndex","updatedLandingPagesSeenState","composeEnhancers","compose","createStore","action","handler","applyMiddleware","thunk","savedStore","savedState","parse","getItem","transformedInteractionsSeen","transformedInteractionsLocked","getLocalState","blocksList","topicBlocks","interactionBlocks","assessmentQuestionBlocks","topicBlocksSIdCounter","topicBlock","interactionBlocksSIdCounter","interactionBlock","assessmentQuestionBlocksSIdCounter","assessmentQuestionBlock","blocksUpdatedWithSId","updatedBlocks","parent","_store","colors","lPink","lBlue0","softBlue","lGrey0","lGrey1","lGrey2","lGrey3","lGrey4","lTeal0","lTeal1","lightBlueGrey","mint","chameleonMint","purple","getButtonFocus","shadowBefore","EmptyBtn","tabIndex","ariaLabel","disabled","onClick","style","css","tab-index","aria-label","EditorBtn","hoverOveride","join","subscriptions","Cont","Backdrop","Modal","ErrorBoundary","eventId","info","setExtras","setState","this","reload","React","Component","getCache","caches","Promise","resolve","add","put","getSubscriptionsWindow","WINDOW","prefix","keyId","getId","getSubscriptions","_","pubSub","freeze","fN","subscribers","record","publish","query","warn","usePubSub","useState","useEffect","pS","getIsValidHexColor","_hex_","test","hexToRgb","isValidHexColor","hex","split","exec","parseInt","getHexToRgbWithDefaultFallback","defaultColor","loadImage","cb","img","Image","crossOrigin","onload","onerror","ModuleImagesPreloader","images","imgsLoaded","setImgsLoaded","whichImagesLoaded","setImgAsLoaded","minDisplayTime","setMinDisplayTime","boot","setBoot","showEditPreloader","setShowEditPreloader","useSelector","modulePreloaderSettings","AdvancedEditing","modulePreloaderbackgroundColor","moduleLoadingMessage","progressBarColor","hexToRGB","g","lizard","preLoader","useRef","documentTitle","document","moduleImagesPreloaderDomContainer","querySelector","current","createElement","left","top","width","height","zIndex","body","appendChild","root","setAttribute","sections","querySelectorAll","modalContainer","hasChildNodes","section","activeElement","blur","timeEnd","time","self","cache","fun","fader","addEventListener","removeEventListener","remove","mockPercentLoaded","setMockPercentLoaded","tick","setInterval","round","random","clearInterval","percentLoaded","opacity","display","createPortal","ref","alt","textAlign","aria-valuemin","aria-valuemax","aria-valuenow","role","overflow","transition","ErrorModal","connect","focusBlockAction","EditMarker","className","right","Edit","getTopicSId","topicId","topicSId","interactionId","interactionSId","getSectionInView","reverse","getBoundingClientRect","innerHeight","getCurrentLocation","CloseBtn","transform","cursor","getHeaderElement","element","reRenderSelector","prev","useHeader","headerStyle","standard","headerLogo","logoBlock","graphic","headerBackgroundImage","backgroundBlock","interactionsInTopics","open_menu_kf","close_menu_kf","getAnchorId","Menu","close","init","nav","scrollableContainer","menuItemsContainer","anchors","closeButton","currentTopicId","menuColors","menuBackgroundColor","menuTextAndCloseColor","menuTextHoverColor","menuTextActiveColor","disableNavigationToIncompleteTopics","topicsComplete","temp","every","getTopicsComplete","keyOverrides","e","preventDefault","shiftKey","onAnimationEnd","target","visibility","maxHeight","closeBtnFocus","trim","aria-hidden","border","justifyContent","alignItems","boxShadow","hiddenFromMenu","arr","isCurrentTopic","disableNav","targetLocation","locationHistory","onKeyUp","currentTarget","click","aria-disabled","firstSection","scrolling","VisuallyHidden","setActiveTopicAction","onScrollEnds","callback","checkScrolling","backBtnOnClick","interactionIsAnAssessmentQuestion","prevSection","scrollIntoView","behavior","navToPrevTopic","checkHistory","substr","Arrow","viewBox","stroke","strokeWidth","fill","fillRule","points","topicsNotHiddenFromNextAndBackNavigation","prevTopic","findIndex","setCurrentTopic","scrollTo","scrollHeight","lastSection","BackBtn","backBtn","onScroll","pointerEvents","toggle","node","ProgressBar","allInteractions","useMemo","percent","toFixed","Column","flex","HeaderLayout","headerRef","responsiveHeight","currentTopicIndex","currentTopicName","includeLogo","setMenuState","Burger","marginLeft","Background","content","clipPath","Header","headerProps","hideMenu","useCallback","HeaderBackground","backgroundPosition","backgroundSize","HeaderGraphic","isFirstInteraction","headerBackground","screen","availWidth","scrollY","invertedScrollY","getIsFirstInteraction","firstInteraction","headerId","currentHeader","selected","editWrapperMargin","setCurrentBlock","AudioPlayer","audioSrc","autoPlay","controls","delay","pause","audioPlayer","delayAudioPlay","play","wait","onFullScreenChange","fullscreenElement","paused","bottom","maxWidth","onPlay","onPause","setCurrentInteractionAction","breakpoints","space","fonts","default","Text","updateScoreAction","readCookie","nameEQ","ca","cookie","charAt","substring","HostingContext","createContext","HostingProvider","url","signaler","createSignalServer","setSession","session","currentSession","start","Provider","csrfToken","decodeURIComponent","fetch","method","credentials","headers","Accept","req","json","resume","end","sendBeacon","Blob","event","scoreMin","scoreMax","scoreScaled","scoreRaw","success","completion","suspend_data","SCORMToCollectValues","SCORMToCollect","isHosted","getParams","hosted","raw","hosting","learning_module_session_data","myHeaders","Headers","append","requestOptions","redirect","endPoint","chameleon","CHAMELEON_URL","response","text","transformScoreDataFromIdToSId","scoreData","tF","transformScoreDataFromSIdToId","blockWithSIdOrId","Version","SuccessString","CompletionString","ShouldSendScore","ReportableInteractions","scormInitialized","API_KEYS","API","getSCORMInitialized","getResult","OnePointTwo","asPercent","number","total","hasReloadedScoreData","setScoreData","scorm","passed","sendScore","assessmentScoringData","scoringAssessments","scoring","passingAssessments","passingAssessment","passingAssessmentResults","isComplete","completionString","set","Complete","Incomplete","assessmentScoringAverageOrFirstPassed","shouldSendSuccess","TwoThousandAndFour","Passed","Failed","setSCORMCompletion","scormCompletionString","setCompletionStatus","save","setIsComplete","interactionCompletion","scoreCompletion","setShouldSendScore","shouldSendScore","Never","Always","OnComplete","setCompleteOnExitOps","exitProps","qid","SCORM","qdesc","question","qtype","qstudent","qlearner","qcorrect","correct","qresult","qsave","cmiInteractions","Multichoice","Sortation","Likert","FillIn","LongFillIn","loadActiveBlocks","createSelector","loadScoringBlocks","assessmentsQuestions","interactionsInTopic","PIPWERKS","pipwerks","SCORMRenderer","debug","isActive","useDispatch","useContext","ModuleContext","initialised","setInitialized","setVersion","lastInteractionSeen","setLastInteractionSeen","reportedInteractions","setReportedInteractions","exiting","numberOfScorableInteractions","lastInteraction","allInteractionsSeen","_curr_","scorePercent","percentComplete","hasExited","scormVersion","remoteData","sIds","suspendedData","remoteDataJSONParsed","reported","unloaded","un","handleExitMode","checkedScormExitMessage","quit","timeoutQuit","exitPropsProcessed","timeout","delaySetSCORM","assessmentsWithDataRemoved","assessmentsToSuspendData","suspendData","ri","setRI","completed","delivered","x","rep","interactionType","reportable","qProps","setCMIInteractions","resultParsed","qp","entries","rating","message","setLocationOnSuspendData","unsubscribe","sectionInView","currentLocation","updateAssessmentAction","useCachedResource","cacheName","$$","has","hasCacheName","ok","blob","objectURL","URL","createObjectURL","clonedResponse","clone","backgroundImageOpacity","backgroundBlur","cachedBackgroundImage","transformOrigin","BackgroundWithParallax","parallaxValue","refreshParallaxScrollOnTopicChange","setRefreshParallaxScrollOnTopicChange","setImageRef","minHeight","parallaxThrottler","parallax","imgTravel","offsetHeight","scrollValue","imgHeightOnLoad","checkLimit","objectFit","minWidth","GradientBackground","backgroundGradientData","backgroundPrimaryColor","backgroundSecondaryColor","backgroundGradientAngle","AssessmentContext","submitted","resetQuestion","setSubmitted","maxAttempts","answersWrappingAlignment","saveData","learnMoreResetsAssessment","AssessmentContainer","backgroundImage","backgroundGradient","backgroundGradientFullHeight","updatedSubmissions","tabindex","isIE","ua","msie","rv","ie11VerticalFlexCenterFix","ReplaceWithPolyfill","currentNode","parentNode","arguments","removeChild","ownerDocument","createTextNode","insertBefore","previousSibling","replaceChild","Element","replaceWith","CharacterData","DocumentType","linksShouldPopup","updateReadOnlyText","containerElement","chameleonText","tagName","innerText","innerHTML","div","dataType","getAttribute","rE","RegExp","outerHTML","dataset","closestLi","closest","classList","liInnerHTML","span","getComputedStyle","calculatedLineHeight","ulol","ulol_","previousSiblingTagName","lastChild","IS_POPUP","oldWidth","innerWidth","oldHeight","resizeBy","newWidth","newHeight","reversed","repeat","createLayout","createTranscriptBlock","useBackgroundControls","createMediaBlock","removeTypes","forceInclude","bulletColor","fit","imgPlaceholderIndex","isAdditionalMedia","pdf_default","displayInline","ImageChoice","parsedFlipCardLayout","makeLeftChoice","imgBlock","textBlock","makeRightChoice","makeFillChoice","makeNoneChoice","createChoice","choice","None","media","Left","Right","Fill","createAccordionFieldBlock","imageChoice","createAccordionBlock","createAFB","contentForColumn","createSlideBlock","createFlipcardsBlock","createFlipcardInteractionBlock","flipcardFrontColor","flipcardBackColor","flipcardFrontTextColor","flipcardBackTextColor","flipcardWidth","flipcardHeight","alignTextTop","flipcardLayout","imageText","imageImage","textText","answerCount","flexDirection","flexWrap","layout","createFeedbackBlock","Correct_default","unlocked","removeable","Incorrect_default","Attempt_default","createMultichoiceMediaOption","createMultichoiceBlock","isMultichoiceMedia","createMultichoiceBlockWithText","sharedQuestionMedia","createMultichoiceInteractionBlock","checkboxColor","correctOptions","numberOfAttempts","showCorrectAnswer","useUniqueOptionFeedback","columnCount","columnsReversed","createAnswerBlock","isSortableImg","createSortationBlock","createSortationInteractionBlock","panelBackgroundDragging","textColorDragging","baseColor","createModalWithEditableBtn","createDragAndDropElement","Media_default","createDragAndDropBlock","createDragAndDropInteractionBlock","panelBackground","dropZoneColor","createMatchPairs","feedbackId","draggableId","droppableId","createMatchingBlock","DragContainer","DropContainer","AnswerContainer","dragBlock","dropBlock","createMatchingInteractionBlock","panelWidth","panelHeight","createHotSpotElement","getNextHotSpotBlock","hotSpotOptionBlock","createHotSpotInteractionBlock","immediateFeedback","isGlobalNavigation","isHotspotLandingPage","image","hotspotType","hotSpotColor","hotSpotSize","hotSpots","createFiveStarRatingBlock","createFiveStarRatingInteractionBlock","starColor","submissionEmailDestination","subject","isTextEntry","resultsPassed","resultsFailed","createResultsPageInteractionBlock","graphType","graphColor","createClickAndRevealBlock","createClickAndRevealsBlock","createClickAndRevealInteractionBlock","clickAndRevealPanelTextColor","clickAndRevealLabelTextColor","borderColor","useGlobalNavigation","isLandingPage","createTopicPortalInteractionBlock","createAssessmentIntroduction","createAssessmentQuestionOption","createAssessmentQuestion","createAssessmentResults","createContinueButtonBranchingBlock","createContentCardBlock","disableLastPageMessage","createContentCardsBlock","createContentCardInteractionBlock","grid","contentCardBackgroundColor","contentCardPanelTextColor","contentCardContentTextColor","imagePosition","includeText","includeShadow","uniformHeight","numColumns","numberOfCards","createSelectOptionBlock","createSelectOptionsBlock","createSelectOptionsInteractionBlock","certificateTextField","isInputField","placeholder","isCertificateField","createCertificateInteractionBlock","ccount","center","centerReversed","creversed","newInteractions","accordion","numberOfItems","containerProperties","interactionProperties","imgChoice","headingTextColor","headingColor","fieldBodyTextColor","fieldBodyBackgroundColor","numberOfAccordions","createAccordionInteractionBlock","none","carousel","slideCount","carouselColor","carouselTextColor","numberOfSlides","sortation","slider","matching","hotspot","createAssessmentIntroductionInteractionBlock","createAssessmentQuestionInteractionBlock","showAttemptCounter","enableLearnMore","enableTryAgain","enableReVisit","includeResultsGraph","addAssessmentRetry","enableBranching","correctColor","incorrectColor","createAssessmentResultsInteractionBlock","createInteraction","setBlocks","setBlock","foreground","buttonBackground","buttonColor","buttonForeground","transformProperties","newInteraction","newInteractionRef","newTopicBlock","addInteraction","getBoxShadow","Wrapper","reviewToolToggleOn","setReviewToolToggleOn","setHover","topicAsAssessment","bottomPadding","Plus","topicAnimationGroup","numQuestions","setNewSectionWizard","data-info-bubble","onMouseOver","onMouseOut","preview","currentInteractionSId","previewLocation","previewLink","newWindowUrl","reviewModeEnabled","reviewToolReviewsBubble","showReviewTool","setReviewToolToggleOff","HiddenBackButton","setDisabled","isMounted","getPrevSection","currentSectionIndex","isTopic0","hasPrevSection","onFocus","onBlur","checkWindowHasScrolled","backgroundImageURL","updateInteractionsOpenAction","nextTopic","nextInteraction","topicContainer","getNextInteraction","windowScrollY","preventScroll","getFontSize","base","h","halfwayBetween2Numbers","headingsTable","getLineHeight","heading","headingStyles","getScrollBarWidth","clientWidth","MenuContainer","rootSelector","setRoot","fauxFocus","setFauxFocus","setMenu","currentHeaderProps","hiddenButton","fauxFocusColor","controlAudioAction","audioData","Bubble","y","bubbleCoords","setBubbleCoords","bubble","arrow","arrowData","getBBox","elementWidth","bubbleAlign","rx","bottomLeft","bottomRight","InfoBubbleContainer","bubbleData","setShowBubbleData","infoBubble","moduleNavigationActions","NEXT","EXIT","SET_MODULE_COMPLETE","SET_MODULE_COMPLETE_AND_EXIT","moduleNavigationActionsList","buttonLayouts","buttonPosition","updateGlobalFontStylesFromTheme","parsedTextColor","headingsStyles","webGLEnabled","getWebGLEnabled","canvas","webgl","getContext","WebGLRenderingContext","getAnimatedOrbsDefaultValues","primaryOrbColor","secondaryOrbColor","tertiaryOrbColor","orbOpacity","orbBlurStrength","orbSpeed","debounce","func","timeoutId","args","min","start1","end1","start2","end2","simplex","SimplexNoise","ColorPalette","setColors","setCustomProperties","hue","complimentaryHue1","complimentaryHue2","saturation","lightness","hsl","complimentaryColor1","complimentaryColor2","colorChoices","Orb","bounds","setBounds","scale","radius","xOff","yOff","inc","graphics","PIXI","alpha","maxDist","originX","originY","xNoise","noise2D","yNoise","scaleNoise","beginFill","drawCircle","endFill","Orbs","orbsFor","calculatedOrbColors","tinycolor","analogous","toHexString","pixiCanvas","app","view","resizeTo","transparent","stage","filters","KawaseBlurFilter","orbs","orb","addChild","ticker","update","render","renderCount","InteractionContext","getInteractionsOpen","getContinueButton","getHiddenBackButton","ContainerLogical","moduleContext","setComplete","setCompleteAndExit","resetModule","includeAudio","stopAudioWhenModalIsOpened","autoOpenNextSection","backgroundStyle","fullWidth","isOpen","contentContainer","useLayoutEffect","hiddenBackButton","onKeyDown","continueBtn","hiddenMenuButton","getHiddenMenuButton","scrollBarWidth","paddingLeft","anchorNavNextExit","aNext","sectionInViewSubscriber","overideStyleBackground","paddingTop","as","overflowX","py","data-section","data-section-text-color","sectionLabel","paddingBottom","killAllAudio","container","memo","useFader","disableNullSpaceClick","onClose","onOpened","contentContainerStyles","interactionContext","btnColor","focusedNodeIdOnOpen","rootContainer","checkResize","tabInit","focusableElements","firstFocusElement","lastFocusElement","tabOveride","reverseTab","overflowY","onResize","closeOnLinkClick","addRemoveCloseOnLinkClick","addOrRemove","isSafari","iOS","globalFontStyles","initial","duration","ease","animate","onAnimationComplete","MSStream","stopPropagation","Components","rules","deserialize","el","nodes","childNodes","serialize","data-type","fontSizeNumber","isNaN","lang","varName","toJS","fontSizePXToREM","varNameFromChildren","data-varname","html","Html","findUl","Indent","attributes","indent","contains","Lang","langRef","renderMark","editor","mark","setLocalColor","variable","widgetColor","spanWithColor","chameleonTextComputedStyle","spanWithColorComputedStyle","onKeyAction","moveToRangeOfNode","contentEditable","suppressContentEditableWarning","middle","leftOrRightEdge","clientX","pParent","addEmptyAndRemoveMarks","moveForward","firstChild","insertFragment","moveToStartOfText","moveFocusForward","insertText","moveFocusBackward","marks","removeMark","xmlns","Li","li","_fontFamily","childSpanOfSpan","renderNode","isFocused","A","textDecorationColor","onMouseEnter","renderInline","delayUpdate","speechSynth","bulletStyles","speechSynthesisCancel","speechSynthesis","cancel","isiOS","platform","SpeechSynthesisUtterance","PlayBtn","strokeLinecap","strokeLinejoin","clipRule","TextToSpeech","setColor","canPlay","setCanPlay","voice","voices","getVoices","UK_English_Male_iOS","voiceSelection","voiceFallback","isIOS","textToSpeechBtn","speak","chameleonTextP","cssObj","onStart","onEnd","getActiveBlocks","getAllScoringInteractions","setScore","_scoreValue","scoreValue","getScore","ReadOnlyText","liTextColor","linkColors","enableTextToSpeechBtn","readOnlyText","fontInfo","varElems","vE","moduleBlock","mbProps","allScoringInteractions","scoreDataFromScoringInteractions","getScoreDataFromScoringInteractions","hasScoringInteractions","getScoreDataFromScoringBlocks","textContent","Date","devicePixelRatio","dangerouslySetInnerHTML","__html","CHAMELEON_COPIED_TEXT","isBoldHotkey","isKeyHotkey","isItalicHotkey","isUnderlinedHotkey","schema","isVoid","EditableText","textBackgroundOpacity","enableSecondaryLinkColors","enableCustomLinkColors","customLinkColors","placeholderText","clearedFormatting","onCopy","copied","clipboardData","getData","hasPlaceholder","readOnly","onChange","toggleMark","onPaste","pasted","pastedToPs","renderBlock","updateEditor","getBaseButtonStyles","fontWeight","hoverColor","buttonShape_","pill","rectangle","circle","aspectRatio","updateLinkColors","getFocusColorForCSSObject","updateButtonHeightForIE","buttonRef","goalHeight","offsetWidth","hasValidLocationUpdated","parsedLocation","IsExternalLink","strokeMiterlimit","GenericButton","themeButtons","cleanedBlockProps","enabled","baseButtonStyles","_focusColor_","backgroundColorRGBA","hoverR","hoverG","hoverB","hoverA","backgroundColorOnHoverRGBA","genericButton","textTransform","button","frameSelected","EditWrapper0","mediaParentId","EditWrapper1","editWrapperSize","editWrapperUseIcon","EditWrapper2","EditWrapper3","editWrapperPadding","dualRingAnimation","dualRing","size","lineWeight","LoadingSpinner","checkImgSrcIsGif","useImgLoader","loadedState","setLoadedState","mounted","loaded","cachedCircleSize","CircleCalculated","imgLoadedState","useImageLoader","hyperLink","pageBackgroundColor","aHiliteColor","parentHeight","circleWidth","circleHeight","useParentHeight","buttonStyles","sx","ImageZoomContext","overideStyles","ImageZoom","description","noDescription","imageZoomBackgroundColor","imageZoomIconColor","zoom","setZoom","imageZoom","expand","ImageZoomed","imageZoomed","closeBtn","closeFullscreen","cachedSrcs","cachedSrc","ImageContext","imageContext","editWrapperType","usePlaceholderValue","borderStyle","fixedHeight","fixedHeightValue","imgSize","defaultHeight","imgContainerHeight","imgMagnification","canUpdateContainerHeight","realSrc","setRealSrc","resp","r2","hasResized","targetHeight","imageWidth","imageHeight","containerWidth","ratio","calculatedMaxHeight","calculatedHeight","getCalculatedHeight","EditWrapper","fullHeight","abs","data-can-update-container-height","imgPlaceholders","imagePlaceholder","genericAdditionalPlaceholder","Button","Bookmark","renderedBookmarkBlock","updateBookmarkState","bookmark","setBookmark","showLoadingBookmark","setShowLoadingBookmark","EditableButton","EditableBtn","txt","noBtn","yesBtn","hasTextContent","resetAriaAndOverflowY","setBlockProps","firstTopic","firstTopicSId","firstInteractionSId","showBookmark","navToHash","noBtnOnClick","yesBtnOnClick","persistHistory","cloneElement","bookmark_graphic","marginBottom","FontManager","FontFace","family","font","ff","weight","load","Hover","DashboardRow","DashBoard","CC_Phone_Character","addInteractionHover","addInteractionDefault","PlayHover","PlayDefault","showGettingStartedVideo","theGwillest","watchAQuickHowToVideo","AddInteractionBtn","EmptySection","moduleHasInteractions","addInteractionBKG","theresNothingHereYet","styled","rotate","Line","unlockInteraction","itemsSeen","clearFieldHilites","field","useAccordion","unlock","exclusive","viewed","past","AccordionContext","Accordion","iContext","ctx","Children","idx","findByKeyVal_V2","val","found","NavigationButton","_textColorOnHover_","hasValidLocation","urlEnabled","navigationButton","textDecoration","keyCode","useIntersectionObserver","updateWhenIsNotIntersecting","options","io","IntersectionObserver","isIntersecting","observe","Transcript","btn","buttonContainer","continueButton","removeAttribute","ShowTranscriptBtn","setShowTranscript","showTranscriptFontSize","showTranscriptFontColor","showTranscriptLabel","VideoIcon","CloudflareVideo","cloudflareUid","rest","Video","videoSrc","useTranscript","viewingTranscriptUnlocksInteraction","posterSrc","hideControls","playInline","isYouTube","isPlaying","setIsPlaying","calcHeight","setCalcHeight","showTranscript","context","video","player","hasAutoPlayed","threshold","onWindowResize","calcHeightTarget","continuePlayingInFullscreen","videoPlayer","streamRef","onEnded","poster","autoplay","loop","muted","playsinline","playing","light","playVideo","showTranscriptBtn","showTranscriptButtonElement","AudioImage","cachedImgSrc","Audio","transcript","Audio_default","audioInteraction","audioPausedByUser","currentTime","headphonesWoman","Img","prerender","renderer","animationData","SVG","svgPlaceholder","svg","reactBodyMovin","bodymovinOptions","hasAnimationData","svg_","MediaContext","onMediaChange","Media","mediaContext","isSafeToCallOnMediaChange","shouldUpdate","embedIcon","hideHeaderAction","getMinHeight","fullWindowHeight","IFrame","fullscreenMode","setLoaded","onLoad","Embed","dropShadow","includeBorder","includeAspectRatio","borderSize","iFrameHovered","setIFrameHovered","setFullscreenMode","allowFullScreen","matchMedia","matches","exitFullscreen","CloseFullscreenEmbed","FullScreenIcon","PDF_smallIcon","PDF","cardColor","cardOutline","includeImage","cardBorderRadius","PDFThumbnail","openPDF","pdfSrc","clickPreviewToSeeOutput","OpenPDFImage","OpenPDF","hasOneColumnLayout","containerHilite","setContainerHilite","alert","SingleColumnLayout","Row","defaultProps","TwoColumnLayout","checkSwipeIsLive","ComponentsObject","InteractionColumn","includeAdditionalTextField","AccordionField","includeFieldBodyBackground","fieldBodyBackgroundOpacity","trigger","interactionIsOpen","isFieldOpen","fieldBody","mt","mb","AccordionHeader","includeHeadingBackground","headingBackgroundOpacity","fieldHeaderRef","fieldFauxFocus","borderRadiusRealculatedForCSSBug","fieldOpen","aria-expanded","pl","pr","AccordionBody","fieldBodyElements","rowFieldBody","aria-live","onAnimationStart","ContinueButton","ContinueBtn","AccordionDisplay","blockId","Btn","dir","arrowColor","ariaDisabled","hoverColorToRGB","heightOffset","Marker_v2","carouselContext","CarouselContext","goto","isDefaultColor","notCurrentMarkerColor","isEDGE","edge","Direction","CarouselLayout","currentIndex","backGround","animation","includeSlideIndicators","prevNextBtnColor","prevNextBtnHoverColor","prevNextArrowColor","carouselHeight","OneColumn","setImgHeight","debounceSetImgHeight","navigate","onTouchStart","Next","Prev","touches","pointerTravel","swipeIsLive","onTouchMove","onTouchEnd","slide","Carousel","setCurrentIndex","previousIndex","setPreviousIndex","slideCache","hasAnimated","slideCacheIds","childrenIds","diff","removedIndex","_currentIndex","slideNum","defaultBulletFormatting","CarouselSlide","slideRef","ar","imageZoomContextValue","natural","stiffness","damping","smooth","Slide","Carousel_default","interactionContext_","interactionLayout","CarouselDisplay","updateItemsSeen","Flipcards","updateFlipCardSeen","numFlipCards","noop","headingStylesForPanelsAndCards","Face","face","includeFlipcardBackground","cardBackgroundOpacity","flipcardOutline","flipcardOutlineColor","flipcardBorderRadius","visibleFace","mediaType","mediaTypeUpdated","faceMedia","faceElement","addRemoveStopPropagation","addRemove","Flipcard","cardHasFocus","setCardHasFocus","rotation","updateCardDisplay","cardContent","setCardContent","frontFaceMedia","backFaceMedia","edgeOpacityHack","setEdgeOpacityHack","flipcardBackgroundOpacity","flipCard","flipCardFaces","flipCardInit","delayReadingCardContent","frontFaceMediaIsSVG","backFaceMediaIsSVG","frontFaceMediaIsSVGKey","backFaceMediaIsSVGKey","updateRotation","checkReturnToInteractionEditing","side","updateCardContent","faceContent","getFocusColor","onTransitionEnd","texts","checkFlipCardSize","counter","aria-pressed","flipcards","Flipcards_v2","Flipcard_v2","FlipcardSide","Front","Back","FlipCardDisplay","Tick","tickColor","TermsAndConditions","accept","acceptContent","acceptBorderRadius","acceptTextColor","acceptBackgroundColor","setToggle","onSubmit","checked","htmlFor","FullPageText","FullPageTextDisplay","addScormResponseAction","scormAction","useFreshProps","Feedback","targetFeedbackElements","attempt","showAttemptNumber","useMediaInFeedback","navigationBehaviour","ModalWithEditableBtn","Correct","Incorrect","Attempt","freshProps","keyEventsDisabled","renderedBlock","Feedbacks","Correct_Feedback","Incorrect_Feedback","Attempt_Feedback","FeedbackButtonCorrect","FeedbackButtonIncorrect","showAttemptNumberComputed","nullSpaceCloseAction","feedbackText","anchorButton","killKeyAndPointerEvents","incorrect","parsedOnClose","useScoringQuizzes","SubmitState","multichoiceMediaPlaceholders","CC_Multi_Choice_Media_Placeholders_1","CC_Multi_Choice_Media_Placeholders_2","CC_Multi_Choice_Media_Placeholders_3","CC_Multi_Choice_Media_Placeholders_4","CC_Multi_Choice_Media_Placeholders_5","CC_Multi_Choice_Media_Placeholders_6","placeholderMappingToImageId","MultichoiceContext","sessionLock","attempts","randomAnswers","_interactionContext","interactionContextId","randomizeOptions","useFeedback","mediaPanelWidth","showReviewFeedback","includeQuestionTextPlusImage","hasAttemptFeedback","setSelected","Resolved","Initial","submit","setSubmit","setFeedback","scoringQuizzes","scoreAll","Question","SubmitBtn","AnswersContainer","ReviewFeedback","Answers","multichoice","parsedIsCorrect","sort","isMultiCorrect","isLive","showFeedback","questionText","getCorrectAndResponseOptions","imgAltText","responseExpanded","correctExpanded","shouldDispatchScore","multichoiceIsLive","answerIds","_Answers_","getRandomAnswers","isMultiSelect","updateSelected","optionId","_selected","flexShrink","useAttemptFeedback","focusedElement","abortCounter","getMultichoiceData","local_suspend_data","multichoiceData","NewTick","Radio","lockedBySCORM","resolved","isMulti","isSquare","hasFocus","savedMultichoiceData","multichoiceMediaDefaultProps","Answer","multichoiceContext","optionText","panelBackgroundOpacity","_panelBackgroundOpacity","mediaPanelHeight","fixedPanelHeight","panelOutline","panelOutlineColor","panelBorderRadius","optionTextColor","setHasFocus","buttonFocus","optionStyles","imgDescription","mediaIsText","mediaIsImage","eventHandlers","input","ColumnContentForMultichoiceMedia","CC_QuestionTextImage","MultichoiceMedia","MultichoiceWithText","Multichoice_v2","MultichoiceDisplay","setNewBlockNewTree","useSetState","setErrorAction","updateUserPaletteAction","nextTheme","themes","AddRemmoveBtn","Swatch","marginRight","AddRemoveBtnWrapped","AddRemoveBtn","currentColor","selectColor","colorsFromTheme","themeButtonsMain","confirm","MultichoiceImageContext","MultichoiceImage","defaultFeedback","answers","submitBtn","isResolved","setIsResolved","setResult","setShowFeedback","findChildByType","IELayout","isButtonBlock","aria-describedby","selectedColor","imageBorderRadius","imageBackground","multichoiceImageContext","isSelected","isCorrectOption","targetFeedback","feedbackTextCB","buttonContainerCB","updatedProps","MultiChoice_default","MultichoiceImageWithText","ColumnImageAndText","useMediaInColumn","MultichoiceImageDisplay","renderedChildren","sortationPanelDefaultStyling","Option","isDragging","optionContainer","_panelBackground","_panelBackgroundDragging","optionBorderRadius","optionBackgroundOpacity","optionBackgroundOpacityDragging","optionOutline","optionOutlineColor","_0_100_","rgbaFromHexAndOpacity","panelTextColor","panelTextColorDragging","rr","gg","bb","firstElementChild","userSelect","_baseColor","baseColorOpacity","_baseColorOpacity","baseOutline","baseOutlineColor","baseBorderRadius","direction","getBlocksByType","heading0","heading1","sortFrom","sortTo","array","floor","shuffle","order","setOrder","setIsLive","hasAttempt","localDirection","setLocalDirection","sortationResolved","alphabetToArray","optionsIds","isCorrectCurrentToScore","idDep","mq","onMQChange","onDragEnd","startIndex","endIndex","reordered","removed","source","destination","newOrder","provided","innerRef","isDragDisabled","snapshot","draggableProps","dragHandleProps","submitButtonElement","SortationHeading","SortationQuestionText","CC_Sortation_Placeholder_Panel_Media","SortationDisplay","FromToField","alignment","Slider","sliderMin","sliderMax","sliderStartValue","sliderTrackColor","sliderTrackOpacity","sliderHandleColor","showSliderStepMarkers","sliderStepMarkerColor","numberOfSliderSteps","sliderAnswerFormat","includeSliderAnswerInputBox","SliderAnswerTextColor","sliderContentColor","sliderInputBoxBackgroundColor","sliderInputBoxBackgroundOpacity","sliderInputBoxOutline","sliderInputBoxOutlineColor","includeFeedback","rgba","sliderInputR","sliderInputG","sliderInputB","sliderInputA","getSliderHandleColor","replaceHash","sliderHandle","sliderHandleSize","setValue","inputFieldHasFocus","setInputFieldHasFocus","setAttempt","setResolved","to","_value_","questionElement","showFeedbackSubscription","sliderThumb","appearance","sliderThumbFocus","step","marker","distance","markerPosition","defaultValue","MozAppearance","localValue","ColumnContent","SliderDisplay","modalPlaceholderImage","MatchingLayout","isOneColumn","setLayout","updateLayout","dCWidth","cWidth","screenReaderInstructions","draggable","cachedContent","getElementContent","item","announcements","onDragStart","draggableContent","onDragOver","over","droppableContent","onDragCancel","Layout","columns","reset","allPlaceHoldersResolved","setAllPlaceHoldersResolved","availableDropsIndex","NaN","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","currentCoordinates","droppableContainers","column_b","cB","getXY","dropTarget","code","column_a","autoScroll","accessibility","LayoutResponsiveContainer","matchDragsFocusable","reRenderedFeedback","Placeholder","Matching","MatchDrags","MatchDrops","setColumns","matchingDragIdToDropIdMap","eventType","collisions","dragId","dropId","dragIndex","drag","dropIndex","drop","updatedColumnB","updatedColumns","MatchDrag","isDropDisabled","panelBackgroundDraggingOpacity","panelShadow","initialMediaType","hoverHilite","useDraggable","listeners","setNodeRef","MatchDrop","useDroppable","isOver","getMediaParent","MatchPairs","MatchingDisplay","mediaDefault","TextAndImage","HotSpotTickedWhenSeen","inverseScale","displayAsRadio","cx","cy","WebkitFilter","outerPulse","keyframes","innerPulse","VisibleHotSpot","hotSpotsAnimated","hotSpotsVisible","hasBeenSeen","submitState","showSeenState","hotSpotFocus","focusStrokeWidth","showChecked","correctAnswers","radii","outer","inner","Infinity","Polygon","pointsToArray","xPoints","yPoints","minX","maxX","minY","mediaTypes","blue0","blue1","lightGrey","thumbnailsContainerHeight","FileUploader","getSVGSize","reject","w","variables","gql","FeatureFlag","InteractionType","isFeatureEnabled","feature","CreateImageInteraction","CreateFullPageTextInteraction","CreateMultipleChoiceInteraction","CreateFlipcardInteraction","CreateAccordionInteraction","CreateCarouselInteraction","CreateSortationInteraction","CreateMatchingInteraction","CreateHotspotInteraction","CreateFiveStarRatingInteraction","AddESVGImage","CreateResultsPageInteraction","CreateClickAndRevealInteraction","LandingPage","CreateTopicPortalInteraction","UseMyFeedbackApp","MultipleChoice","Hotspot","FiveStarRating","ResultsPage","ClickAndReveal","TopicPortal","Rectangle","currentHotspotId","rectangleBorderRadius","rectangleDisplayOutlineOnly","rectState","setRectState","startX","startY","tickPosition","HotSpotScorableContext","HotSpotScorable","feedbacks","hotspots","InteractionContextId","INITIAL","setSubmitState","updateAttempt","RESOLVED","updatedSelected","onMouseDown","drawing","startXY","clientY","onMouseMove","negY","updateRectangleHotspotLocalState","onMouseUp","persist","HotSpot","containerContext","ContainerContext","hotspotDefaultIMG_","hotspotQuizImg_","hotSpotLandingPageDefaultIMG_","_HotSpotScorableContext","setImgSize","imgLoading","setImgLoading","creating","setHotSpotFocus","SVGHasNoDimensionsError","setSVGHasNoDimensionsError","setScale","setCurrentHotspotId","landingPageSeenState","updateHotspotSeen","getParsedColor","names","updated","hotSpotFocusRef","hotSpotPoints","hotSpot","useHotSpotTransformOldToNew","hotspotsBlockId","hotspotId","hotSpotRoot","markers","svgImgWidth","svgImgHeight","finally","getMouseEvents","getShapeProps","preserveAspectRatio","xlinkHref","titleOrLabel","addHasBeenSeenTitleOrLabel","hotSpotFocusTrigger","HotspotSVGError","HotSpotElement","HotSpotIsolated","HotSpotDisplay","Message","onUpdateCallback","cssStyle","setHasValue","onUpdate","FiveStarRatingContext","resize","TextEntry","messageContainer","messageUnderline","messageTextColor","messageTextBackgroundColor","messageBorderRadius","messageBorderColor","messageFontFamily","messageFontSize","maxLinesBeforeScrolling","textArea","textAreaProxy","computedPadding","computedStyle","newLineCheck","textAreaHeight","shouldScroll","textAreaProxyHTML","sharedStyles","whiteSpace","marginTop","FeedbackSubmitted","collectFeedbackSubmitted","FiveStarList","FeedbackSubmittedEditable","useMyFeedbackApp","emailRequired","emailOptional","identityPlaceholder","anonymityRequired","include5StarRating","includeMessageText","messageTextBackgroundOpacity","reference","collectionKey","ratingEndpoint","learnerIdentity","showTextEntry","messageBorder","hasLearnerIdentity","Id","borderBottomColor","borderBottomStyle","borderBottomWidth","aria-autocomplete","showSubmissionFeedback","identity","alertLearnerIdentity","onUpdateRating","onUpdateLearnerIdentity","onUpdateMessage","hoverIndex","setHoverIndex","shapesRoot","shapesContainer","winWidth","scaleFactor","onHover","isHovered","Heart","styles","Diamond","Smiley","Star","isClicked","setIsClicked","star","heart","diamond","smiley","strokeWidths","onMouseLeave","myFeedbackApp","parsedMessage","encodeURIComponent","TextArea","FiveStarRatingDisplay","ResultsPageContent","displayPassFailContent","passFailContent","checkingSectionHeight","ResultsPageMedia","showImage","GraphCircle","animatedValue","setAnimatedValue","actualValue","setActualValue","strokeDasharray","ceil","GraphBar","GraphContainer","graphTextColor","printResultsInteractionData","ResultsPageContentPassed","ResultsPageContentFailed","ResultsPageResult","prettyPrintScoreData","getModuleBlock","ResultsPageDisplay","setDisplayPassFailContent","scoringByTopic","scoringByTopicPassmark","scoringInteractions","currentTopicBlock","interactionsInTopicScoring","interactionsInTopicIds","topicScoreData","cakes","landingPageCake_1","landingPageCake_2","landingPageCake_3","landingPageCake_4","landingPageCake_5","landingPageCake_6","ClickAndReveals","contextId","numPanels","updateClickAndRevealSeen","seen","reIndex","PanelColumn","ClickAndRevealSeenTick","imageDescription","doc","DOMParser","parseFromString","altTextForAnchorTag","labelContent","imgZoomIsActiveElement","includePanelBackground","includeLabel","clickAndRevealShowSeenStateBackgroundColor","clickAndRevealShowSeenStateTickColor","globalNavigation","panelImg","navigation","panelId","panelBlock","returnToLastFocused","findLastFocused","lastFocused","panel","panelLabel","Content","mediaChanged","setMediaChanged","minHeightInDev","ClickAndRevealContent","columnA","columnB","DOMLayout","clickAndReveals","modalPlaceholder","ColumnRowA","ColumnRowB","ClickAndRevealDisplay","EditCardWrapper","arrayToGridLike","Masonry","maxColumns","maxGridWidth","cells","imgsLoadedProgress","frame","callTickFromResize","cellMinWidth","tallestCell","cellHeights","cell","rowIndex","columnIndex","currentCell","updatedCells","cellAboveCurrentCell","offsetTop","baselines","baseline","grids","settings","uniformHeightBreakpoints","gridTemplateColumns","msGridColumns","getUniformHeightsLayout","gridCellCounter","uniformHeightsLayout","row","gridCell","msGridColumn","msGridRow","getBannerColumnsLayout","newChildren","bannerColumnsLayout","gridColumn","gridRow","gridTemplateRows","msGridColumnSpan","msGridRowSpan","bannerColumns","ContentCards","gridContainer","cardOrder","imagesInCards","cards","card","minCellWidth","checkBannerColumnsForDefaultImage","ButtonWrapper","ContentCard","mediaPadding","medias","mediaIndex","_props","includeCardBackground","contentcardBackgroundOpacity","includeButton","pdf","textMargin","mediaBorderRadius","ContentCardDisplay","selectedOptions","setSelectedOptions","optionQuestions","SelectOptionsContext","SelectOptionsRoot","dividerColor","dropDownBorderColor","optionsContainer","updatedSelectedOptions","borderBottom","data-select-options-parent-id","SelectOptions","SelectOption","dropDownTextColor","dropDownBorder","dropDownBorderRadius","dropDownBackgroundColor","selectOptionsContext","selectGroupIndex","menuIsOpen","nameId","isSearchable","control","textOverflow","components","innerProps","tick_mint","select","SelectOptionsDisplay","TopicIcon","topicIcon","isEditing","iconSelected","setIconSelected","TopicPanelDefaultIcon","TopicNameContainer","addImage","cardSize","shared","TopicPanel","imageFit","updateTopicComplete","displayedTopics","navigateToTopic","cardWidth","cardHeight","hideTopicsThatIncludeATopicPortal","completeInSequence","iconWidth","iconHeight","backgroundMedia","includeCustomText","positionTextBelow","iconSize","navigationEnabled","interactionsInTopicSeen","addTopicPortalMedia","topicPortalContainerBlock","topicPortalMediaBlock","topicPortalMediaBlockRef","_addTopicPortalMedia_","removeTopicPortalMedia","_removeTopicPortalMedia_","TopicPortalContainer","topicIncludesPortal","hiddenFromPortal","getTopicPortalContainerBlock","getTopicPortalContainerBlockChildrenData","addMedia","removeMedia","tId","updateTopicPortalMedia","topicMedia","topicPortal","TopicPortalMedia","TopicPortalDisplay","feedbackNonScoring","feedbackScoring","textAreaStyle","setTextAreaStyle","isSubmitted","updateTextAreaStyle","submitToCollect","chameleonTextElement","correctAnswerParsed","shouldDispatch","FeedbackNonScoring","TextAreaDynamicHeight","initialValue","setInit","characterHeightMeasured","setCharacterHeightMeasured","characterHeight","proxy","_style_","computedStyles","computedFontFamily","computedFontSize","TextEntryVariable","variableName","_submitBtn_","setIsSubmitted","TextEntryVariableDisplay","TextEntryQuiz","correctAnswerRequirement","_message_","setMessage","questionTextElement","Boolean","CC_Text_Entry_Quiz_Placeholder","TextEntryQuizDisplay","Assessment","AssessmentIntroduction","AssessmentQuestion","AssessmentResults","AssessmentQuestions","AssessmentDisplay","includeMedia","AssessmentIntroductionDisplay","SubmitContinue","AssessmentQuestionContext","singleSelect","hasUpdatedScoreRaw","assessmentContext","questionCounterColor","interactionsInAssessment","questionIndex","resultsPage","newSelected","optionIds","labels","CheckboxRadioBtn","assessmentQuestionContext","AssessmentQuestionOption","optionBackgroundColor","optionCheckboxColor","optionCheckboxSelectedColor","numOptions","qNum","noMargin","optionBackgroundColorIsWhite","AssessmentQuestionOptions","QuestionCounter","LearnMore","assessmentQuestionOptionsChildren","updatedCorrectOptions","interactionContextValue","AssessmentCorrect","AssessmentIncorrect","ScoreBar","hidden","ReVisitTryAgain","indexA","targetQuestion","resultsPercentTextColor","attemptCounterTextColor","questionTitleColor","showFeedbackText","backgroundPanelColor","backgroundPanelBorderRadius","backgroundPanelDropShadow","feedbackPassed","feedbackFailed","showCorrect","setShowCorrect","numCorrect","assessmentBlock","getQuestionsInAssessment","hasNotBeenAttempted","resultsKeys","attemptCounts","highestAttemptCount","getAttempt","allQuestionsMaxAttempted","enableRetryAssessmentBtn","visible","updatePassedFailed","resultsInDev","includeLearnMore","learnMoreLocation","indexB","hasUsedAllAttempts","unlockAssessment","retryAssessment","RetryAssessment","FeedbackPassed","FeedbackFailed","ContinueButtonBranching","defaultBtn","passedBtn","failedBtn","branchingBtn","FooterButtonsWrapper","AssessmentResultsDisplay","DragHandle","elementRef","inverseScaleFactor","isInput","move_cert_input","Drag_Icon_Blue","onPointerDown","offsetX","offsetY","onPointerMove","inverseScaleFactorClientX","inverseScaleFactorClientY","dragValueX","dragValueY","onPointerUp","ResizeHandle","onDrag","resize_cert_input","Resize_Icon","handle","handleSize","getBase64StringFromDataURL","dataURL","getImgSrcAsBase64String","reader","FileReader","onloadend","base64","readAsDataURL","base64ToArrayBuffer","binaryString","atob","bytes","Uint8Array","charCodeAt","buffer","blobToBase64","fileName","imgType","certificateType","onComplete","imgSrcAsBase64String","bkgImgBytes","html2canvas","allowTaint","useCORS","toBlob","newImg","revokeObjectURL","imgBytes","PDFDocument","pdfDoc","embedImgType","bkgImg","embedPng","page","addPage","drawImage","pdfBytes","download","Certificate_1_SVG","xmlnsXlink","xmlSpace","Certificate_2_SVG","Certificate_3_SVG","InputText","CertificateTemplateFields","date","courseName","coordinates","certificatePadding","learnerName","LearnerName","CertificateTemplate","certificateContext","CertificateContext","certificateTemplateIndex","certificateTemplateColor","certificateTemplateTitle","generatingPDF","chameleonLogoForCertificate","setCoordinates","logoCoords","svgContainer","learnerNameElement","courseNameElement","dateElement","changeColorElement","changeColorElements","logoScale","leftRight","CertificateTemplates","certificateDefaultSize","certificateContextValue","certificateRef","certificateImgSize","resetResponsiveStyles","Certificate","CertificateDefaultPNG","imgId","textFields","downloadBtn","setGeneratingPDF","setScaleFactor","certificateId","imgSrcToArray","certificateWidth","calculatedScaleFactor","data-html2canvas-ignore","generatePDFFromCanvas","CertificateMedia","Certificates","CertificateTextFields","CertificateTextField","txtProps","coords","txtDoc","spans","strong","em","u","italic","underline","initializeFontSizeScaleFactor","localCoords","setLocalCoords","delaySetBlockProps","defaultLeft","defaultWidth","defaultTop","fontStyle","parsedLeft","parsedTop","CertificateDisplay","InteractionComponents","FlipCard","Interactions_Editor","Interaction","getInteractionsSeen","Interactions","addNextInteractionToInteractionsSeen","ModuleHasAudioMessage","renderedModuleHasAudioMessageBlock","okBtn","Audio_Illustration","REVIEW_MODE_WINDOW","TopicContainer","_backgroundImage_","getModuleIsFreeScrollingDesktop","reviewToolPostMessage","postMessageData","postMessage","debounceScrolling","oldTopic","newTopic","topicUpdated","oldPosition","newPosition","windowScrollInfo","scrollDirection","inView","moduleHasAudio","ReadsHostingContext","hostingContext","session_data","learning_module_session","transformedAssessments","transformedScoreData","getSCORMVersion","chameleonOrigins","bookmarkState","editModuleHasAudioMessage","setEditModuleHasAudioMessage","setAudioAcknowledged","bookmarkingEnabled","topicList","interactionNameUpdates","scormBlock","runExit","TopicAssessmentContainer","showModuleHasAudioMessage","compareIds","topicInteraction","topicSid","targetTopic","targetInteraction","targetInteractionIndex","updatedInteractionsSeen","updatedInteractionsOpen","targetSectionId","targetSectionElement","navLoadingIndicator","loadingSpinnerChild","getNavLoadingIndicator","backgroundColorOrGradient","locationTimeOut","moduleTopicsAndInteractionsData","navToInteractionMessage","origin","setCurrentInteraction","firstInteractionId","Header_v2","Interactions_Module","parseFontUrl","chunks","fontName","fontExtension","fontFormat","ttf","otf","loadAssets","fontsFromThemeButtons","getCustomFonts","getCustomFontNames","f","fontFamilyMarks","anyFontOrFontFamilyPropOnABlock","fontFamilyMark","trimStart","trimEnd","userSelectedFonts","addFont","targetWindow","head","styleTag","onFontLoaded","IS_CHAMELEON_EDITOR","frames","fontIsCustomFont","WebFont","google","families","loading","inactive","fontloading","WebFontConfig","loadFonts","familyName","fvd","fontactive","fontinactive","getModuleImages","extension","require","smoothscroll","polyfill","hasRemote","loadTheme","checkFontFamilyDisplays","ccURL","HostingWrapper","moduleImages","ReactDOM","__assign","assign","__importStar","react_1","children_1","defaultModuleState","history","ModuleReducer","histf","_a","to_1","ti","int","topicID","histb","pop","_b","top_1","inter","goToPath","goBack","goForward","Select","useReducer","Fragment","displayName","__export","__makeTemplateObject","cooked","__importDefault","templateObject_1","styled_1","core_1","styled_system_1","Box","alignSelf","gridArea","backgroundRepeat","borderTop","borderRight","borderLeft","box_1","Flexbox","alignContent","flexBasis","variant","letterSpacing","defaultState","sidebarlist","EditContext","useSidebar","pushSidebarItem","sl","popSidebarItem","clearSidebarList","NavContext","boxed","search","networkRequestActive","networkAvailable","toggleMenu","Renderer","plugins","parsedPlugins","config","onRenderedBlock","renderRoot","editorPlugin","editableFields","Editable","creator_ui_1","useCarousel_1","carouselAnimator_1","carouselNavigation_1","interaction_1","useCarousel","complete","boxSizing","CarouselAnimator","CarouselNavigation","topic_1","autoComplete","TopicContext","_c","editableContainer","forwardRef","onKeyPress","templateObject_2","templateObject_3","templateObject_4","navbarLink_1","dropDown_1","navArrow_1","navbarContext_1","ListItem","DropDownList","ul","DropDownListItem","LogoIcon","NavItem","Link","paddingRight","NavArrow","DropDown","Core","__spreadArrays","il","jl","kind","elements","es","module_1","Topic","modCtx","Topics","Bar","BurgerIcon","showDrawer","setDrawer","Drawer","Overlay","DrawerLink","Item","DrawerItem","listStyle","Container","DropDownItem","DropDownCtx","onBodyClick","Logo","x1","y1","x2","y2","stopColor","I","navItem_1","Admin","profileImg","SearchBar","showSearch","NavigationList","Navigation","msMatchesSelector","webkitMatchesSelector","ancestor","documentElement","parentElement","URLs","local","development","staging","production","anz","qu","params","env","render_1","edit_1","useModule_1","useSidebar_1","frame_1","Editor","useModule","mr","Sidebar","BrowserWindow","Frame","flexbox_1","borders","buttonStyle","px","Card","Grid","gridGap","gridRowGap","gridColumnGap","gridAutoFlow","gridAutoRows","gridAutoColumns","gridTemplateAreas","text_1","Heading","Icon","WindowButton","Indicator","bg","atoms_1","__rest","getOwnPropertySymbols","propertyIsEnumerable","RowContainer","BackIcon","Animation","ScrollAnimator","AnimationGroup","BranchButton","CarouselReducer","Goto","num","initialSlide","goTo","carousel_1","heighAwareComponent_1","setHeight","slides","isLeft","forwardProps","HeightAwareComponent","others","measuredRef","only","indicators","Choice","Choices","align","_d","other","_e","help","Description","DragAndDrop","DragItem","DropItem","sticky","Paragraph","Quiz","Rating","Result","SingleChoice","contain","mx","Title","TopicTitle","returnFocus","requiredProps","fields","nativeEvent","Color","Enum","RichText","topics_1","block_1","Block","onReturn","cloneModule","Remove","react_frame_component_1","FrameContextConsumer","frameContext","Player","ExampleSerializedNestedRoot","ExampleSerializedNested","ExampleSerialized","new","user_1","search_1","logo_1","navigation_1","drawer_1","burger_1","bar_1","lock_1","divider_1","networkActivity_1","Navbar","toggler","currentUser","lock","showNetworkActivity","showLock","setDisplay","isMobileDisplay","Lock","NetworkActivity","showActivity","firstName","profileImage","Divider","LockedIcon","UnlockedIcon","LockIcon","locked","setLocked","loadingSpinner_1","emotion_1","Ring","SpinContainer","configurable","writable","queryParams","URLSearchParams","highlightActiveElement","currentActiveElement","ACTIVE_ELEMENT_MARKER","currentActiveElementIsSection","topOffset","leftOffset","widthOffset"],"mappings":"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M,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,EAAE,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAA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AAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,E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AM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,MAAM,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,MAAM,EA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AI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,MAAM,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CA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CA,eACA,eACA,aACA,SACA,cACA,YACA,sBACA,SACA,WACA,SACA,UACA,iBACA,WACA,WACA,mBACA,OACA,mBACA,UACA,YACA,YACA,WACA,UACA,YACA,SACA,mBACA,cACA,cACA,UACA,YACA,QACA,qBACA,UACA,aACA,kBACA,kBACA,mBACA,OACA,gBACA,SACA,mBACA,eACA,WACA,YACA,sBAGFA,GAAQzsB,MAAMmU,KAAK,IAAIC,IAAJ,cAAYqY,IAAZ,IC1GW,CAC5B,UACA,OACA,eACA,gBACA,WACA,OACA,QACA,UACA,aACA,kBACA,iBACA,mBACA,UACA,SACA,SACA,QACA,SACA,cACA,UACA,OACA,WACA,cACA,gBACA,mBACA,OACA,aACA,gBACA,QACA,QACA,gBACA,QACA,UACA,kBACA,UACA,SACA,UACA,WACA,mBACA,cACA,cACA,yBACA,WACA,WACA,YACA,YACA,QACA,QACA,QACA,UACA,aACA,SACA,mBACA,cACA,kBACA,gBACA,gBACA,eACA,aACA,iBACA,YACA,aACA,cACA,SACA,2BACA,gBACA,QACA,eACA,aACA,QACA,UACA,UACA,SACA,UACA,eACA,sBACA,UACA,gBACA,iBACA,kBACA,aACA,QACA,gBACA,QACA,WACA,SACA,UACA,WACA,OACA,OACA,OACA,iBACA,OACA,QACA,YACA,UACA,OACA,SACA,wBACA,OACA,aACA,SACA,YACA,aACA,UACA,eACA,sBACA,eACA,oBACA,qBACA,cACA,OACA,YACA,eACA,eACA,gBACA,gBACA,aACA,aACA,UACA,YACA,eACA,aACA,SACA,UACA,eACA,mBACA,iBACA,kBACA,aACA,gBACA,gBACA,kBACA,iBACA,gBACA,YACA,UACA,SACA,mBACA,wBACA,aACA,SACA,QACA,eACA,aACA,UACA,QACA,iBACA,cACA,aACA,WACA,YACA,UACA,UACA,eACA,YACA,QACA,UACA,kBACA,SACA,aACA,QACA,uBACA,wBACA,+BACA,4BACA,gCACA,6BACA,qBACA,gBACA,cACA,QACA,mBACA,WACA,oBACA,aACA,oBACA,UACA,SACA,0BACA,iBACA,gBACA,QACA,eACA,UACA,cACA,QACA,YACA,SACA,iBACA,WACA,aACA,gBACA,UACA,aACA,eACA,iBACA,cACA,OACA,UACA,SACA,kBACA,gBACA,iBACA,eACA,aACA,iBACA,QACA,kBACA,eACA,kBACA,aACA,QACA,UACA,YACA,iBACA,SACA,QACA,SACA,YACA,cACA,cACA,WACA,UACA,YACA,QACA,QACA,iBACA,oBACA,aACA,UACA,YACA,SACA,SACA,eACA,qBACA,cACA,eACA,SACA,aACA,SACA,aACA,QACA,aACA,WACA,qBACA,YACA,iBACA,SACA,UACA,oBACA,eACA,QACA,SACA,WACA,QACA,WACA,SACA,oBACA,iBACA,OACA,eACA,WACA,QACA,QACA,YACA,YACA,kBACA,aACA,cACA,eACA,cACA,YACA,UACA,eACA,cACA,SACA,QACA,SACA,YACA,YACA,qBACA,mBACA,eACA,oBACA,oBACA,YACA,gBACA,UACA,WACA,wBACA,eACA,YACA,cACA,cACA,eACA,gBACA,UACA,SACA,YACA,SACA,cACA,UACA,UACA,mBACA,gBACA,SACA,iBACA,UACA,mBACA,cACA,uBACA,WACA,QACA,kBACA,SACA,oBACA,iBACA,gBACA,WACA,aACA,WACA,gBACA,YACA,eACA,WACA,QACA,SACA,cACA,SACA,aACA,QACA,QACA,cACA,cACA,YACA,YACA,cACA,aACA,iBACA,QACA,YACA,QACA,yBACA,mBACA,kBACA,mBACA,yBACA,aACA,cACA,QACA,mBACA,cACA,eACA,cACA,wBACA,uBACA,iBACA,6BACA,4BACA,aACA,YACA,YACA,UACA,WACA,YACA,UACA,UACA,kBACA,QACA,MACA,QACA,gBACA,UACA,WACA,mBACA,eACA,QACA,SACA,YACA,mBACA,aACA,WACA,YACA,WACA,WACA,SACA,SACA,QACA,UACA,eACA,aACA,YACA,YACA,YACA,sBACA,4BACA,aACA,YACA,WACA,UACA,gBACA,aACA,gBACA,eACA,aACA,mBACA,QACA,eACA,mBACA,WACA,eACA,uBACA,UACA,cACA,WACA,SACA,UACA,UACA,YACA,UACA,gBACA,YACA,kBACA,WACA,QACA,SACA,SACA,WACA,UACA,eACA,UACA,WACA,UACA,eACA,QACA,gBACA,qBACA,oBACA,eACA,MACA,UACA,UACA,eACA,eACA,eACA,SACA,gBACA,WACA,iBACA,gBACA,SACA,oBACA,QACA,SACA,aACA,aACA,UACA,WACA,YACA,OACA,wBACA,eACA,cACA,WACA,cACA,eACA,aACA,eACA,cACA,iBACA,SACA,iBACA,UACA,SACA,SACA,QACA,OACA,SACA,SACA,WACA,YACA,SACA,iBACA,UACA,SACA,kBACA,UACA,eACA,UACA,UACA,eACA,YACA,eACA,QACA,cACA,aACA,uBACA,YACA,cACA,OACA,cACA,eACA,gBACA,gBACA,kBACA,iBACA,WACA,WACA,YACA,gBACA,gBACA,uBACA,0BACA,2BACA,uBACA,mBACA,qBACA,4BACA,iBACA,kBACA,qBACA,sBACA,yBACA,kBACA,qBACA,uBACA,0BACA,uBACA,0BACA,mBACA,UACA,UACA,QACA,kBACA,UACA,cACA,QACA,eACA,iBACA,QACA,iBACA,aACA,cACA,cACA,QACA,eACA,iBACA,YACA,WACA,YACA,OACA,mBACA,0BACA,QACA,iBACA,iBACA,OACA,aACA,eACA,WACA,YACA,eACA,eACA,OACA,WACA,MACA,SACA,QACA,kBACA,QACA,OACA,oBACA,0BACA,MACA,QACA,eACA,mBACA,cACA,iBACA,QACA,UACA,QACA,YACA,gBACA,YACA,QACA,QACA,UACA,iBACA,YACA,SACA,aACA,iBACA,aACA,aACA,QACA,QACA,QACA,QACA,QACA,iBACA,WACA,YACA,WACA,UACA,OACA,YACA,iBACA,eACA,SACA,cACA,YACA,SACA,SACA,QACA,SACA,YACA,OACA,QACA,aACA,YACA,oBACA,aACA,SACA,kBACA,UACA,QACA,cACA,UACA,WACA,SACA,SACA,OACA,iBACA,gBACA,gBACA,iBACA,eACA,SACA,SACA,QACA,WACA,SACA,cACA,aACA,cACA,cACA,cACA,cACA,eACA,oBACA,yBACA,mBACA,4BACA,iCACA,wBACA,2BACA,oBACA,eACA,uBACA,oBACA,iBACA,WACA,cACA,aACA,kBACA,YACA,cACA,WACA,mBACA,SACA,UACA,cACA,mBACA,kBACA,kBACA,iBACA,YACA,OACA,aACA,wBACA,oBACA,iBACA,eACA,WACA,UACA,kBACA,mBACA,WACA,gBACA,YACA,WACA,oBACA,oBACA,gBACA,UACA,qBACA,OACA,QACA,gBACA,UACA,qBACA,OACA,OACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,eACA,eACA,YACA,eACA,YACA,WACA,SACA,cACA,SACA,OACA,UACA,YACA,UACA,YACA,SACA,gBACA,aACA,eACA,SACA,cACA,cACA,WACA,eACA,eACA,oBACA,QACA,cACA,eACA,cACA,WACA,UACA,YACA,mBACA,OACA,UACA,UACA,eACA,QACA,iBACA,OACA,iBACA,mBACA,QACA,iBACA,QACA,SACA,UACA,QACA,QACA,WACA,UACA,uBACA,UACA,eACA,aACA,SACA,aACA,wBACA,uBACA,cACA,aACA,OACA,WACA,yBACA,gBACA,aACA,WACA,iBACA,sBACA,gBACA,UACA,QACA,cACA,cACA,cACA,SACA,UACA,eACA,UACA,gBACA,MACA,qBACA,eACA,sBACA,iBACA,mBACA,cACA,YACA,SACA,SACA,aACA,cACA,aACA,aACA,UACA,UACA,YACA,SACA,SACA,UACA,UACA,UACA,uBACA,eACA,aACA,mBACA,aACA,oBACA,qBACA,oBACA,YACA,kBACA,2BACA,kCACA,mBACA,qBACA,oBACA,qBACA,kBACA,sBACA,kBACA,oBACA,sBACA,mBACA,qBACA,kBACA,gCACA,mBACA,+BACA,mBACA,iBACA,qBACA,mBACA,sBACA,oBACA,oBACA,uBACA,oBACA,qBACA,iCACA,oBACA,oBACA,qBACA,uBACA,mBACA,oBACA,qBACA,0BACA,qBACA,eACA,4BACA,oBACA,mBACA,mBACA,6BACA,gCACA,kCACA,mCACA,eACA,qBACA,eACA,mBACA,oBACA,qBACA,uBACA,kBACA,mBACA,sBACA,gBACA,mBACA,kBACA,qBACA,qBACA,iBACA,mBACA,mBACA,qBACA,sBACA,oBACA,uBACA,oBACA,0BACA,iBACA,2BACA,wBACA,yBACA,qBACA,iBACA,iBACA,sBACA,iBACA,gBACA,oBACA,oBACA,iBACA,sBACA,wBACA,iBACA,kBACA,kBACA,qBACA,0BACA,uBACA,8BACA,uBACA,wBACA,wBACA,8BACA,uBACA,kBACA,kBACA,oBACA,yBACA,sBACA,wBACA,qBACA,uBACA,4BACA,mBACA,kBACA,eACA,sBACA,uBACA,oBACA,oBACA,oBACA,oBACA,oBACA,yBACA,oBACA,sBACA,yBACA,oBACA,sBACA,mBACA,eACA,oBACA,qBACA,mBACA,qBACA,qBACA,kBACA,kBACA,6BACA,mBACA,mBACA,iBACA,wBACA,qBACA,oBACA,qBACA,gBACA,mBACA,wBACA,eACA,6BACA,aACA,kBACA,sBACA,sBACA,qBACA,wBACA,qBACA,mBACA,sBACA,sBACA,qBACA,sBACA,sBACA,oBACA,gBACA,gBACA,qBACA,mBACA,iBACA,uBACA,qBACA,oCACA,gBACA,qBACA,gBACA,mBACA,oBACA,oBACA,kBACA,qBACA,oBACA,yBACA,WACA,YACA,YACA,YACA,aACA,cACA,YACA,cACA,SACA,SACA,cACA,YACA,cACA,iBACA,UACA,KACA,kBACA,YACA,MACA,cACA,yBACA,YACA,YACA,cACA,WACA,UACA,cACA,UACA,kBACA,SACA,SACA,mBACA,WACA,cACA,WACA,gBACA,MACA,UACA,SACA,cACA,UACA,UACA,kBACA,iBACA,WACA,mBACA,WACA,SACA,YACA,iBACA,WACA,UACA,aACA,cACA,cACA,oBACA,qBACA,eACA,kBACA,UACA,YACA,UACA,cACA,UACA,UACA,mBACA,WACA,sBACA,UACA,cACA,YACA,SACA,gBACA,aACA,UACA,OACA,WACA,mBACA,sBACA,oBACA,UACA,aACA,aACA,OACA,WACA,eACA,aACA,UACA,mBACA,mBACA,YACA,iBACA,SACA,QACA,cACA,iBACA,QACA,iBACA,WACA,SACA,aACA,cACA,cACA,eACA,UACA,eACA,SACA,SACA,WACA,eACA,oBACA,YACA,YACA,iBACA,UACA,kBACA,kBACA,eACA,SACA,WACA,SACA,UACA,eACA,aACA,WACA,SACA,eACA,cACA,WACA,SACA,QACA,OACA,YACA,eACA,aACA,YACA,kBACA,eACA,eACA,WACA,WACA,kBACA,YACA,YACA,gBACA,aACA,UACA,gBACA,SACA,gBACA,YACA,SACA,YACA,SACA,mBACA,cACA,cACA,eACA,cACA,YACA,YACA,gBACA,UACA,YACA,YACA,UACA,WACA,eACA,UACA,YACA,QACA,gBACA,gBACA,eACA,gBACA,iBACA,kBACA,gBACA,kBACA,OACA,SACA,cACA,SACA,aACA,iBACA,YACA,SACA,MACA,gBACA,aACA,UACA,OACA,QACA,kBACA,wBACA,uBACA,oBACA,QACA,UACA,WACA,UACA,kBACA,UACA,SACA,SACA,WACA,cACA,UACA,kBACA,kBACA,QACA,mBACA,aACA,YACA,iBACA,cACA,eACA,uBACA,MACA,eACA,YACA,cACA,qBACA,yBACA,WACA,SACA,QACA,aACA,kBACA,mBACA,sBACA,kBACA,qBACA,YACA,cACA,YACA,WACA,aACA,UACA,mBACA,YACA,aACA,UACA,gBACA,WACA,UACA,aACA,aACA,UACA,SACA,SACA,cACA,SACA,UACA,UACA,gBACA,aACA,QACA,SACA,aACA,aACA,OACA,mBACA,kBACA,gBACA,kBACA,iBACA,mBACA,gBACA,aACA,gBACA,WACA,cACA,aACA,YACA,SACA,SACA,cACA,mBACA,aACA,aACA,uBACA,WACA,WACA,cACA,YACA,gBACA,kBACA,QACA,iBACA,wBACA,uBACA,QACA,SACA,eACA,UACA,sBACA,WACA,gBACA,SACA,YACA,YACA,mBACA,OACA,UACA,YACA,cACA,qBACA,YACA,OACA,YACA,eACA,mBACA,UACA,YACA,WACA,SACA,QACA,UACA,OACA,QACA,qBACA,aACA,cACA,YACA,YACA,qBACA,eACA,SACA,UACA,UACA,QACA,cACA,wBACA,0BACA,2BACA,gBACA,eACA,aACA,cACA,YACA,gBACA,WACA,UACA,cACA,YACA,UACA,WACA,UACA,UACA,aACA,UACA,aACA,cACA,eACA,SACA,mBACA,cACA,QACA,QACA,iBACA,WACA,YACA,iBACA,qBACA,UACA,SACA,OACA,SACA,WACA,QACA,cACA,SACA,eACA,QACA,cACA,YACA,eACA,eACA,QACA,QACA,WACA,OACA,QACA,UACA,WACA,cACA,WACA,kBACA,0BACA,WACA,kBACA,SACA,cACA,YACA,YACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,oBACA,cACA,YACA,aACA,YACA,aACA,aACA,SACA,OACA,YACA,WACA,aACA,cACA,eACA,wBACA,gBACA,cACA,mBACA,WACA,0BACA,sBACA,gBACA,WACA,kBACA,iBACA,gBACA,SACA,gBACA,aACA,uBAEA,eACA,qBDjzCyD85C,OAE3D,IAiBe95C,ME7GAo8E,GAhBM,SAAAv7E,GACnB,IAAMw7E,EAASx7E,EAAIhc,WAAW8K,MAAM,OADV,EAEQ0sF,EAAOA,EAAOp2G,OAAS,GAAG0pB,MAAM,MAFxC,WAEnB2sF,EAFmB,KAETC,EAFS,KAS1B,MAAO,CACLD,WACAC,gBACAC,WARiB,CACjBC,IAAK,WACLC,IAAK,YACLH,K,4BCDJ,IAAMI,GAAa,G,qkBCEnB,IAAM1lG,GAAQD,KACN/M,GAAagN,GAAbhN,S,GACqDA,KAAW8E,M,MAAhE9C,mB,OAAa,G,SAAIsD,qB,OAAe,G,SAAIO,gB,OAAU,G,GAEhD8sG,GAAyB12G,OAAO0D,OAAOkG,IAAuBxF,KAClE,SAAAmvD,GACE,OAAOA,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E,oBACA,OAAbF,GACT,OAAO,Q,oBClBX9gH,EAAOD,QAAU+B,IAA0B,4B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,qC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,yB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,2B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,0B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,qC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,sC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,qB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,2B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,2C,oBCA3C9B,EAAOD,QAAU+B,IAA0B,iC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,oC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,kC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,2B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,yB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,2B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,gC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,oC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,wB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,sC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mD,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mD,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mD,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mD,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mD,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mD,oBCA3C9B,EAAOD,QAAU+B,IAA0B,uC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,oB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,0B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,qD,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,8B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,yB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,wB,oBCA3C9B,EAAOD,QAAU+B,IAA0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","file":"module.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([571,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"images/Square.png\";","module.exports = __webpack_public_path__ + \"images/Hotspot_Done.svg\";","import { Block, Blocks } from '@chameleoncreator/creator-app';\n\nexport enum TrackerState {\n DIRTY,\n CLEAN,\n DELETED,\n}\n\nexport interface Tracker {\n [key: string]: TrackerState;\n}\n\ninterface Timing {\n firstLoad: number;\n complete: number;\n buttonClick: { [key: string]: number };\n}\n\nexport interface Report {\n key?: number;\n id: string;\n question?: string | undefined;\n reportable: 'multichoice' | 'sortation' | 'likert' | 'fillin' | 'longfillin';\n type: string;\n response: string;\n correct?: string;\n result: 0 | 1;\n}\n\nexport interface AssessmentData {\n maxAttempts: number;\n scoring: boolean;\n score: number;\n passMark: number;\n passed: boolean;\n}\n\nexport interface QuestionData {\n id: string;\n questionName: string;\n answer?: string[];\n correctAnswer: string[];\n isCorrect?: boolean | undefined;\n attemptCount?: string | number;\n navigateToResults?: boolean;\n isLocked?: boolean;\n submitButtonLabel?: string;\n hasNotBeenAttempted?: boolean | undefined;\n}\n\nexport interface Question {\n [key: string]: QuestionData;\n}\n\nexport interface Assessment {\n [key: string]: {\n data?: AssessmentData;\n results?: {\n [key: string]: Question;\n };\n };\n}\n\nexport interface Assessments {\n [key: string]: Assessment;\n}\n\nexport type Audio = {\n id?: string;\n src: string;\n audioSrc: string;\n autoPlay?: boolean;\n controls?: boolean;\n delay?: number;\n pause?: boolean;\n} | null;\n\nexport type ModuleIsFreeScrolling = {\n desktop: boolean;\n device: boolean;\n};\n\nexport type IdSIdMapping = {\n idToSId: { [key: string]: Number };\n sIdToId: { [key: string]: string };\n};\n\nexport type LessonStatus = 'completed/incomplete' | 'passed/failed/incomplete';\n\nexport const themeButtonDefault = {\n label: undefined,\n shape: 'pill',\n backgroundColor: '#222222',\n backgroundOpacity: 100,\n backgroundColorOnHover: undefined,\n backgroundOpacityOnHover: 80,\n borderWidth: 1,\n focusColor: undefined,\n includeButtonBackground: true,\n useLargeButton: false,\n borderRadius: 0,\n textColor: '#fff',\n textColorOnHover: undefined,\n shadow: true,\n outline: false,\n outlineColor: undefined,\n fontFamily: undefined,\n fontSize: 14,\n bold: false,\n uppercase: false,\n};\n\nexport type TButton = typeof themeButtonDefault & {\n shape: 'pill' | 'rectangle' | 'circle';\n label: string | undefined;\n backgroundColorOnHover: string | undefined;\n focusColor: string | undefined;\n textColorOnHover: string | undefined;\n outlineColor: string | undefined;\n fontFamily: string | undefined;\n};\n\nexport type TButtons = {\n [key: string]: TButton;\n};\n\nexport type LandingPagesSeenState = {\n [sId: number | string]: number[];\n};\n\nexport interface NextState {\n apiError: { count: number; err: any };\n blocks: { [key: string]: Block };\n bookmarkLoaded: boolean;\n bookmarkLocation: string | undefined;\n currentInteraction?: string;\n currentInteractionBlockId?: string | null;\n currentTopic?: string;\n audio?: Audio;\n\n audioAcknowledged: boolean;\n customFonts: any[];\n error: any;\n exit: boolean;\n exitComplete: boolean;\n feedback: {\n [key: string]: {\n key: string;\n rating: number;\n message: string;\n identity: string;\n reference: string;\n };\n };\n focusedNodeId?: string;\n hasError: boolean;\n hideHeader: boolean;\n header?: Block;\n standardHeader?: Block;\n graphicHeader?: Block;\n standardHeaderLogo?: Block;\n graphicHeaderBackground?: Block;\n graphicHeaderLogo?: Block;\n interactionsLocked: string[];\n interactionsOpen: string[];\n interactionsSeen: string[];\n landingPagesSeenState: LandingPagesSeenState;\n isScrolling: boolean;\n lastFocusedNodeId?: string;\n links: any;\n mirrorActive: boolean;\n idToSIdMap: { [key: string]: number };\n sIdToIdMap: { [key: string]: number };\n topicsIdSIdMapping: IdSIdMapping;\n assessmentQuestionIdSIdMapping: IdSIdMapping;\n nextInteractionMap: { [key: string]: string };\n projectId?: string;\n rootBlockId: string | undefined;\n scormSettings: {\n passMark: number;\n setCompleteFromScore: boolean;\n setCompleteOnExit: boolean;\n setCompleteWhenAllPagesViewed: boolean;\n sendOnlySuccessStatus: boolean;\n lessonStatus: LessonStatus;\n };\n theme: {\n backgroundColor: string;\n buttonBackgroundColor: string;\n buttonBorderRadius: number;\n buttonOutline: boolean;\n buttonShadow: boolean;\n buttonShape: string;\n useLargeButton: boolean;\n buttonTextColor: string;\n buttonHover: string;\n buttons: TButtons;\n fontFamilies: any[];\n fontFamily: string;\n fontSize: number;\n lineHeight: number;\n padding: number;\n margin: number;\n paragraphSpacing: number;\n fontSizes: {\n 'Large screen': number;\n 'Medium screen': number;\n 'Small screen': number;\n };\n highContrast: boolean;\n recoloredChameleonImages: any;\n loadingSpinnerColor: string;\n textColor: string;\n useImagePreloader: boolean;\n enableBookmarking: boolean;\n textToSpeech: boolean;\n textToSpeechVoice: string;\n moduleIsFreeScrolling: ModuleIsFreeScrolling;\n giveFocusToFirstSectionOnLoad: boolean;\n disableLockDownInPreview: boolean;\n userPalette: any[];\n menu: {\n 'Menu background colour': string;\n 'Menu text and close colour': string;\n 'Menu text hover colour': string;\n 'Menu text active colour': string;\n };\n headings: {\n h1: string | number;\n h2: string | number;\n h3: string | number;\n h4: string | number;\n h5: string | number;\n h6: string | number;\n };\n links: {\n link: string;\n visited: string;\n hover: string;\n focus: string;\n active: string;\n };\n linksSecondary: {\n link: string;\n visited: string;\n hover: string;\n focus: string;\n active: string;\n };\n };\n themeId?: string;\n tracker: Tracker;\n userBehaviour: {\n interactionTiming: { [key: string]: Timing };\n score: { [key: string]: 0 | 1 };\n scormResponses: {\n [key: string]: Report;\n };\n };\n moduleVariables: { [key: string]: string };\n assessments: Assessments;\n}\n\nexport type State = NextState;\n\nexport type Action = { type: string; data: { [key: string]: any } };\n\nexport const initialState: NextState = {\n apiError: { count: 0, err: undefined },\n blocks: {},\n bookmarkLoaded: false,\n bookmarkLocation: undefined,\n currentInteraction: undefined,\n currentInteractionBlockId: undefined,\n currentTopic: undefined,\n audio: null,\n audioAcknowledged: false,\n customFonts: [],\n error: undefined,\n exit: false,\n exitComplete: false,\n focusedNodeId: undefined,\n feedback: {},\n hasError: false,\n hideHeader: false,\n standardHeader: undefined,\n graphicHeader: undefined,\n standardHeaderLogo: undefined,\n graphicHeaderBackground: undefined,\n graphicHeaderLogo: undefined,\n interactionsLocked: [],\n interactionsOpen: [],\n interactionsSeen: [],\n landingPagesSeenState: {},\n isScrolling: false,\n lastFocusedNodeId: undefined,\n links: {},\n mirrorActive: false,\n idToSIdMap: {},\n sIdToIdMap: {},\n topicsIdSIdMapping: {\n idToSId: {},\n sIdToId: {},\n },\n assessmentQuestionIdSIdMapping: {\n idToSId: {},\n sIdToId: {},\n },\n nextInteractionMap: {},\n projectId: undefined,\n rootBlockId: undefined,\n scormSettings: {\n passMark: 80,\n setCompleteFromScore: false,\n setCompleteOnExit: false,\n setCompleteWhenAllPagesViewed: true,\n sendOnlySuccessStatus: false,\n lessonStatus: 'completed/incomplete',\n },\n theme: {\n backgroundColor: '#ffffff',\n buttonBackgroundColor: '#060709',\n buttonBorderRadius: 0,\n buttonOutline: false,\n buttonShadow: false,\n buttonShape: 'pill',\n useLargeButton: false,\n buttonTextColor: '#ffffff',\n buttonHover: '',\n fontFamilies: [],\n fontFamily: '',\n fontSize: 16,\n lineHeight: 1.5,\n padding: 10,\n margin: 0,\n paragraphSpacing: 16,\n fontSizes: {\n 'Large screen': 16,\n 'Medium screen': 16,\n 'Small screen': 16,\n },\n loadingSpinnerColor: '#cea5f9',\n buttons: {\n main: themeButtonDefault as TButton,\n },\n highContrast: false,\n recoloredChameleonImages: {},\n textColor: '#060709',\n useImagePreloader: true,\n enableBookmarking: true,\n moduleIsFreeScrolling: {\n desktop: false,\n device: false,\n },\n giveFocusToFirstSectionOnLoad: true,\n textToSpeech: false,\n textToSpeechVoice: '',\n disableLockDownInPreview: false,\n userPalette: [],\n menu: {\n 'Menu background colour': '#ffffff',\n 'Menu text and close colour': '#000000',\n 'Menu text hover colour': '#0000ff',\n 'Menu text active colour': '#ff0000',\n },\n headings: {\n h1: 1,\n h2: 1,\n h3: 1,\n h4: 1,\n h5: 1,\n h6: 1,\n },\n links: {\n link: '#0000ff',\n visited: '#800080',\n hover: '#0000ff',\n focus: '#e59700',\n active: '#ff0000',\n },\n linksSecondary: {\n link: '#0000ff',\n visited: '#800080',\n hover: '#0000ff',\n focus: '#e59700',\n active: '#ff0000',\n },\n },\n themeId: undefined,\n tracker: {},\n userBehaviour: {\n score: {},\n interactionTiming: {},\n scormResponses: {},\n },\n moduleVariables: {},\n assessments: {},\n};\n","import { Block } from '@chameleoncreator/creator-app';\n\nconst findHeaderElementByType = (blocks, type) => {\n return Object.values(blocks).find(block => {\n return (block as Block).type === type;\n });\n};\n\nexport const addHeaderBlocksToStateAction = (dispatch, getState) => {\n const { blocks } = getState();\n\n const header = findHeaderElementByType(\n blocks,\n 'Header'\n ) as Block;\n\n const standardHeader = findHeaderElementByType(\n blocks,\n 'StandardHeader'\n ) as Block;\n\n const graphicHeader = findHeaderElementByType(\n blocks,\n 'GraphicHeader'\n ) as Block;\n\n const [standardHeaderLogo] = (\n (standardHeader?.children as Block[]) || []\n ).map(child => {\n return blocks[child.id];\n });\n\n const [graphicHeaderBackground, graphicHeaderLogo] = (\n (graphicHeader?.children as Block[]) || []\n ).map(child => {\n return blocks[child.id];\n });\n\n dispatch({\n type: 'ADD_HEADER_BLOCKS_TO_STATE',\n data: {\n header,\n standardHeader,\n graphicHeader,\n standardHeaderLogo,\n graphicHeaderBackground,\n graphicHeaderLogo,\n },\n });\n};\n","export const rehydrateAction = (data: any) => ({\n type: 'REHYDRATE',\n data: data,\n});\n","\nexport const setAPIErrorAction = err => {\n return {\n type: 'SET_API_ERROR',\n data: err,\n };\n};\n","import * as Sentry from '@sentry/browser';\nimport { setAPIErrorAction } from 'actions/setAPIErrorAction';\nimport { Dispatch } from 'redux';\nimport { NextState, TrackerState } from './store';\n\ninterface Callable {\n (dispatch: Dispatch, getState: () => NextState): Promise<Boolean>;\n}\n\nexport const queue = (fn: Callable): Callable => {\n let run = [false, false];\n\n let runner: Callable = async (\n dispatch: Dispatch,\n getState: () => NextState\n ): Promise<Boolean> => {\n let [isRunning] = run;\n\n if (isRunning) {\n run = [true, true];\n return false;\n }\n\n let next = true;\n while (next) {\n run = [true, false];\n await fn(dispatch, getState);\n\n let [_, runAgain] = run;\n if (!runAgain) {\n next = false;\n }\n }\n\n run = [false, false];\n return true;\n };\n\n return runner;\n};\n\nexport const mirror: Callable = async (\n dispatch,\n getState\n): Promise<Boolean> => {\n // Get the current tracker state\n const state = getState();\n const tracker = state.tracker;\n const blocks = state.blocks;\n\n dispatch({ type: 'MIRROR_ACTIVE', data: true });\n\n // Reset the tracker for async saving\n const newTracker = Object.keys(tracker)\n .map(k => {\n switch (tracker[k]) {\n case TrackerState.DIRTY:\n return TrackerState.CLEAN;\n case TrackerState.DELETED:\n return undefined;\n default:\n return TrackerState.CLEAN;\n }\n })\n .filter(r => !r);\n\n dispatch({\n type: 'SET_TRACKER',\n data: newTracker,\n });\n\n // SAVE and DELETE changes in tracker\n const toUpdate = Object.keys(tracker).filter(\n k => tracker[k] !== TrackerState.CLEAN\n );\n\n const toSet = toUpdate\n .filter(k => tracker[k] !== TrackerState.CLEAN)\n .map(k => blocks[k])\n .filter(b => b)\n .map(b => {\n if (tracker[b.id] === TrackerState.DELETED) {\n b.__delete = true;\n b.project_id = state.projectId;\n return b;\n } else {\n b.__isSaving = true;\n b.project_id = state.projectId;\n return b;\n }\n });\n\n let stop = false;\n\n await window.client.blocks\n .setMany(toSet, state.projectId)\n .then(result => {\n if (Array.isArray(result)) {\n result.forEach(b => {\n if (b.deleted_at) {\n // remove\n dispatch({ type: 'REMOVE_BLOCK_LOCAL', data: b });\n } else {\n // maybe validate\n }\n });\n }\n })\n .catch(err => {\n Sentry.withScope(scope => {\n scope.setExtra('message', err.err);\n Sentry.captureException(err);\n });\n\n dispatch(setAPIErrorAction(err));\n\n // RESTORE TRACKER\n const currentStore = getState();\n const currrentTracker = currentStore.tracker;\n\n const nextTracker = { ...tracker };\n Object.keys(currrentTracker).forEach(k => {\n switch (currrentTracker[k]) {\n case TrackerState.DELETED: {\n nextTracker[k] = TrackerState.DELETED;\n break;\n }\n case TrackerState.DIRTY: {\n nextTracker[k] = TrackerState.DIRTY;\n break;\n }\n default:\n break;\n }\n });\n\n dispatch({\n type: 'SET_TRACKER',\n data: nextTracker,\n });\n });\n\n dispatch({ type: 'MIRROR_ACTIVE', data: false });\n\n return true;\n};\n\nexport const Mirror = queue(mirror);\n","import { Blocks } from '@chameleoncreator/creator-app';\n\n\nexport const setBlocksLocalAction = (blocks: Blocks) => {\n return {\n type: 'SET_BLOCKS',\n data: blocks,\n };\n};\n","import { Blocks } from '@chameleoncreator/creator-app';\nimport { Mirror } from 'store/mirror';\nimport { remoteable } from 'store/next';\nimport { setBlocksLocalAction } from './setBlocksLocalAction';\n\nexport var setBlocksAction = (blocks: Blocks): any => {\n return async (dispatch, getState) => {\n const s = getState();\n\n const bs = Object.keys(blocks).map(key => {\n blocks[key].__isSaving = true;\n blocks[key].project_id = s.projectId;\n return blocks[key];\n });\n\n const localbs = bs.reduce((acc, b) => {\n acc[b.id] = b;\n return acc;\n }, {});\n\n dispatch(setBlocksLocalAction(localbs));\n\n if (remoteable()) {\n Mirror(dispatch, getState);\n }\n };\n};\n","import { State } from '../store/store';\nimport {\n Block,\n Blocks,\n BlockList,\n} from '@chameleoncreator/creator-app/build/utils/block';\n\nexport const getBlock = (blocks: Blocks, id: string): Block => {\n return blocks[id];\n};\n\nexport const getBlockFromState = (state: State, id: string): Block =>\n getBlock(state.blocks, id);\n\nexport type Selector = (block: Block) => boolean;\n\nexport const findBlocks = (blocks: Blocks, selector: Selector): Block[] => {\n const keys = Object.keys(blocks).filter(k => {\n return selector(blocks[k]);\n });\n\n return keys.map(k => blocks[k]).filter(i => i);\n};\n\n// using a BFS search filter blocks down to a single new root block provided\nexport const findBlocksIn = (\n blocks: Blocks,\n block: Block,\n selector: Selector\n): Block[] => {\n let toVisit = [] as string[];\n let discovered = [] as string[];\n\n // Find all initial block children as \"seeds\".\n if (block && block.children && Array.isArray(block.children)) {\n block.children.forEach(k => {\n toVisit.push(k.id);\n discovered.push(k.id);\n });\n }\n\n for (var i = 0; toVisit.length > 0; i++) {\n const b = blocks[toVisit.shift()!];\n if (b && b.children && Array.isArray(b.children)) {\n b.children.forEach(k => {\n toVisit.push(k.id);\n discovered.push(k.id);\n });\n }\n }\n\n const keys = discovered.filter(k => {\n return selector(blocks[k]);\n });\n\n return keys.map(k => blocks[k]);\n};\n\nconst getBlockChildren = (blocks: Blocks, block: Block): Blocks => {\n if (Array.isArray(block.children)) {\n // turn block children from refs into blocks\n const blockList = [] as Block[];\n\n block.children.forEach(block => {\n if (block.type === 'Ref') {\n blockList.push(blocks[block.id]);\n } else {\n blockList.push(block);\n }\n });\n\n // turn an array of blocks into object of blocks and include all the blocks\n // children\n return blockList.reduce((acc, cur) => {\n if (!cur) {\n return acc;\n }\n\n return {\n ...acc,\n ...{ [cur.id]: cur },\n ...getBlockChildren(blocks, cur),\n };\n }, {});\n }\n // no block children, just return an empty object\n return {};\n};\n\nexport const filterToNewRoot = (blocks: Blocks, rootBlock: Block): Blocks => {\n return getBlockChildren(blocks, rootBlock);\n};\n\nexport const getAllTopics = (blocks: Blocks): BlockList => {\n const keys = Object.keys(blocks).filter(k => {\n return blocks[k].type === 'Topic';\n });\n\n return keys.map(k => blocks[k]).filter(i => i);\n};\n\nexport const getTopicGroup = (blocks: Blocks): Block => {\n let groupBlock: Block;\n\n const possibleGroups = findBlocks(\n blocks,\n (b => b.meta && b.meta.subType === 'Topic') as Selector\n );\n\n if (possibleGroups.length === 1) {\n groupBlock = possibleGroups[0];\n } else {\n throw new Error('Multiple AnimationGroups found in list');\n }\n\n return groupBlock;\n};\n\nexport const getTopicInteractionGroup = (\n blocks: Blocks,\n block: Block\n): Block => {\n if (block.type !== 'Topic') {\n throw new Error(\n `Must provide a block of type: Topic; type \"${block.type}\" provided instead`\n );\n }\n\n let groupBlock: Block;\n const newRootBlockList = filterToNewRoot(blocks, block);\n const possibleGroups = findBlocks(\n newRootBlockList,\n (b => b.meta && b.meta.subType === 'Interaction') as Selector\n );\n\n if (possibleGroups.length === 1) {\n groupBlock = possibleGroups[0];\n } else {\n throw new Error('Multiple AnimationGroups found in list');\n }\n\n return groupBlock;\n};\n\nexport const getTopicGroupFromState = (state: State) =>\n getTopicGroup(state.blocks);\n\nexport const getTopicsFromGroup = (\n state: State,\n topicGroup: Block\n): BlockList => {\n if (Array.isArray(topicGroup.children)) {\n return topicGroup.children\n .map(c => {\n return state.blocks[c.id];\n })\n .filter(i => i);\n }\n return [];\n};\n\n//\nexport const getInteractionsFromTopicAndState = (\n state: State,\n topic: Block\n): BlockList => {\n const interactionGroup = getTopicInteractionGroup(state.blocks, topic);\n if (interactionGroup && Array.isArray(interactionGroup.children)) {\n let interactions = interactionGroup.children\n .map(c => {\n return state.blocks[c.id];\n })\n .filter(i => i);\n\n if (topic?.props?.asAssessment) {\n // console.log(topic.props, 'isAssessment');\n\n const introduction: Block | undefined = interactions.find(\n i => i?.props?.type === 'AssessmentIntroduction'\n );\n const questions: Block[] | undefined = interactions.filter(\n q => q?.props?.type === 'AssessmentQuestion'\n );\n const results: Block | undefined = interactions.find(\n i => i?.props?.type === 'AssessmentResults'\n );\n\n if (!introduction || !questions || !results) {\n throw new Error(\n 'NO ASSESSMENT WILL BE RETURNED HERE. MISSING : introduction || questions || results !!!'\n );\n }\n\n return [introduction, ...questions, results];\n }\n\n // return interactionGroup.children\n // .map(c => {\n // return state.blocks[c.id];\n // })\n // .filter(i => i);\n\n return interactions;\n }\n return [];\n};\n\n//\nlet allInteractions;\n\nexport const getAllInteractions = (state: State): BlockList => {\n if (!window.dev?.() && allInteractions) {\n return allInteractions;\n }\n\n allInteractions = getAllTopics(state.blocks)\n .map((topic: Block) => getInteractionsFromTopicAndState(state, topic))\n .reduce((acc, cur) => [...acc, ...cur], []);\n\n return allInteractions;\n};\n\n//\nlet allTopicsOrdered;\n\nexport const getAllTopicsOrdered = (blocks: Blocks): BlockList => {\n if (!window.dev?.() && allTopicsOrdered) {\n return allTopicsOrdered;\n }\n\n let groupBlock: Block;\n\n const possibleGroups = findBlocks(\n blocks,\n (b =>\n b.meta && b.type == 'AnimationGroup' && b.meta.subType === 'Topic') as any\n );\n\n if (possibleGroups.length === 1) {\n groupBlock = possibleGroups[0];\n } else {\n throw new Error('Multiple AnimationGroups found in list');\n }\n\n allTopicsOrdered = (groupBlock.children as Block[])\n .map((k: Block) => blocks[k.id])\n .filter(i => i);\n\n return allTopicsOrdered;\n};\n\n//\nlet allInteractionsOrdered;\n\nexport const getAllInteractionsOrdered = (state: State): BlockList => {\n if (!window.dev?.() && allInteractionsOrdered) {\n return allInteractionsOrdered;\n }\n\n allInteractionsOrdered = getAllTopicsOrdered(state.blocks)\n .map((topic: Block) => getInteractionsFromTopicAndState(state, topic))\n .reduce((acc, cur) => [...acc, ...cur], []);\n\n return allInteractionsOrdered;\n};\n\nexport const isRefBlock = (block: Block): boolean => {\n return block.type === 'Ref';\n};\n","import getStore from 'services/getStore';\nimport getTopics from 'services/apiHelpers/getTopics';\n\nlet cachedTopics;\n\nexport default () => {\n // console.time('getCurrentTopic');\n\n const state = getStore().getState();\n\n if (window.dev && !window?.dev() && !cachedTopics) {\n cachedTopics = getTopics();\n }\n\n const topics = cachedTopics || getTopics();\n const currentTopic = topics.find(t => t.id === state.currentTopic);\n\n // console.timeEnd('getCurrentTopic');\n\n return currentTopic || topics[0];\n};\n","import getStore from 'services/getStore';\nimport { getBlockFromState } from 'selectors/block';\n\nexport default id => getBlockFromState(getStore().getState(), id);\n","import getStore from 'services/getStore';\nimport { getTopicGroupFromState, getTopicsFromGroup } from 'selectors/block';\n\nexport default () => {\n const store = getStore && getStore();\n\n if (store) {\n const state = store.getState();\n if (state) {\n return getTopicsFromGroup(state, getTopicGroupFromState(state));\n }\n }\n\n return [];\n};\n","import getStore from 'services/getStore';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport { getBlock, getInteractionsFromTopicAndState } from 'selectors/block';\nimport { Block } from '@chameleoncreator/creator-app';\n\nlet cachedInteractions = {};\n\nexport default (topic: Block | null = null) => {\n const state = getStore().getState();\n const block = getBlock(\n state.blocks,\n topic ? topic.id : getCurrentTopic()!.id\n );\n\n if (\n window.dev &&\n !window?.dev() &&\n topic?.id &&\n !cachedInteractions[topic.id]\n ) {\n cachedInteractions[topic.id] = getInteractionsFromTopicAndState(\n state,\n block\n );\n\n return cachedInteractions[topic.id];\n }\n\n return getInteractionsFromTopicAndState(state, block);\n};\n","export const getTopicsNotHiddenFromNextAndBackNavigation = (topics: any[]) => {\n return topics.filter(topic => {\n // if the topic is hidden from next and back nav. nix it\n const { hiddenFromNextAndBackNavigation } = topic?.props;\n\n //\n return !hiddenFromNextAndBackNavigation;\n });\n};\n","import getTopics from 'services/apiHelpers/getTopics';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { getTopicsNotHiddenFromNextAndBackNavigation } from 'services/getTopicsNotHiddenFromNextAndBackNavigation';\n\nexport const ONLY_TOPICS_NOT_HIDDEN_FROM_NEXT_AND_BACK_NAVIGATION =\n 'ONLY_TOPICS_NOT_HIDDEN_FROM_NEXT_AND_BACK_NAVIGATION';\n\nexport default (\n onlyTopicsNotHiddenFromNextAndBackNavigation:\n | typeof ONLY_TOPICS_NOT_HIDDEN_FROM_NEXT_AND_BACK_NAVIGATION\n | undefined = undefined\n) => {\n let topics = getTopics();\n\n if (onlyTopicsNotHiddenFromNextAndBackNavigation) {\n topics = getTopicsNotHiddenFromNextAndBackNavigation(topics);\n }\n\n return topics.reduce((acc: Block[], curr: Block) => {\n return [...acc, ...getInteractionsInTopic(curr).map(i => i?.id)] as Block[];\n }, []);\n};\n","import { Block } from '@chameleoncreator/creator-app';\nimport getStore from 'services/getStore';\n\nexport function getAllAssessmentQuestions() {\n const state = getStore().getState();\n\n const allAssessmentQuestions = (Object.values(\n state.blocks\n ) as Block[]).reduce((acc, curr) => {\n return curr.type.toLowerCase() === 'assessmentquestion'\n ? [...acc, curr]\n : acc;\n }, [] as Block[]);\n\n return allAssessmentQuestions;\n}\n","import {\n Block,\n Blocks,\n cloneBlock,\n BlockList,\n} from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport uuid from 'uuidv4';\nimport { findBlocksIn } from 'selectors/block';\nimport getAllInteractionsOfType from 'services/apiHelpers/getAllInteractionsOfType';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport getAllInteractions from 'services/apiHelpers/getAllInteractions';\nimport { getAllAssessmentQuestions } from 'services/apiHelpers/getAllAssessmentQuestions';\nimport { getNameWithoutHashId } from 'services/getNameWithoutHashId';\n\nexport const flatten = (block: Block): [Blocks, string] => {\n let blocks: Blocks = {};\n const rootBlockId = block.id;\n const rootBlock = cloneBlock(block);\n blocks[rootBlockId] = rootBlock;\n\n if (Array.isArray(rootBlock.children)) {\n rootBlock.children.forEach(child => {\n if (child.type === 'Ref') {\n return;\n }\n\n const [childBlocks] = flatten(child);\n blocks = {\n ...blocks,\n ...childBlocks,\n };\n });\n }\n\n makeReference(blocks);\n\n return [blocks, rootBlockId];\n};\n\nexport const makeReference = (blocks: Blocks) => {\n Object.keys(blocks).forEach(k => {\n const children = blocks[k].children;\n if (Array.isArray(children)) {\n let c = children.map(child => ({ id: child.id, type: 'Ref' })) as Block[];\n blocks[k].children = c;\n }\n });\n};\n\n// TODO: Remove this function it is DANGEROUS because block is a JS REFERENCE POINTER\nexport const expand = (blocks: Blocks, block: Block): Block => {\n let b;\n\n if (block.type === 'Ref') {\n const fetchedBlock = blocks[block.id];\n b = cloneBlock(fetchedBlock);\n } else {\n b = cloneBlock(block);\n }\n if (b.children && Array.isArray(b.children)) {\n b.children = b.children.map(c => expand(blocks, c));\n }\n\n return b;\n};\n\nexport const expandBlock = (blocks: Blocks) => (block: Block): Block => {\n return expand(blocks, block);\n};\n\n// Using the known interactions, create a duplicated interactions name.\nexport const makeInteractionName = (\n type: string,\n dupCtx: duplicationCtx\n): string => {\n const iMap = {\n TextAndImage: 'Media',\n DragAndDrop: 'Matching',\n AssessmentQuestion: 'Question',\n };\n\n const typeName = iMap[type] || type;\n\n const prevDuplicationOfType = dupCtx.interactionDuplications[type] || 0;\n const totalTypeCount =\n getAllInteractionsOfType(type).length + prevDuplicationOfType;\n\n return `${typeName} #${totalTypeCount + 1}`;\n};\n\n// TODO: Change duplicate block to use block provided duplicate function\n// Take a single block and return a new block with all the appropriate data updated correctly\nexport const duplicateBlock = (\n block: Block,\n dupCtx: duplicationCtx,\n index?: number\n): Block => {\n // Clone Block\n const nextBlock = cloneBlock(block);\n\n // Reset ID (uuidv4())\n nextBlock.id = uuid();\n\n // Update relevant data within a block\n switch (block.type) {\n case 'Topic':\n //\n const topics = getTopics();\n let name;\n\n if (block.props?.asAssessment) {\n name = `Assessment #${topics.filter((t: Block) => t.props?.asAssessment)\n .length + 1}`;\n } else {\n name = `Topic #${topics.filter((t: Block) => !t.props?.asAssessment)\n .length + 1}`;\n }\n\n nextBlock.props!.name = name;\n\n // update with new sId\n nextBlock.props!.sId = getSId('topic'); // uuid();\n\n break;\n\n case 'Interaction':\n // we'll hit pause on this approach for the moment\n //\n // nextBlock.props!.name = makeInteractionName(\n // nextBlock.meta!.subType,\n // dupCtx\n // );\n\n const nameWithoutHashId = getNameWithoutHashId(nextBlock.props!.name);\n\n // update with new sId\n const nextSId = getSId('interaction');\n nextBlock.props!.sId =\n index === undefined ? nextSId : nextSId + (index - 1); // uuid();\n\n //\n // using the sId is as good as any other random hash\n // mostly meaningless to the author\n // will look to update with the sequence. . .\n nextBlock.props!.name = `${nameWithoutHashId} #${nextBlock.props!.sId}`;\n\n dupCtx.interactionDuplications[block.meta!.subType] =\n (dupCtx.interactionDuplications[block.meta!.subType] || 0) + 1;\n break;\n\n case 'AssessmentQuestion': {\n const nextSId = getSId('assessmentQuestion');\n nextBlock.props!.sId = nextSId;\n\n break;\n }\n // By default do nothing\n default:\n }\n\n // console.log(dupCtx);\n\n // Return new block\n return nextBlock;\n};\n\ninterface duplicationCtx {\n interactionDuplications: { [key: string]: number };\n}\n\n// Give a root block and all the blocks that we know about, duplicate a tree of blocks and return them\n// see selectors/block.ts for function findBlocksIn() using identity selector\nexport const duplicateBlocks = (\n root: Block,\n blocks: Blocks\n): [Blocks, string] => {\n // Create a duplication context. This is an object that keeps information relevant to this call\n // to duplicate. It is like temporary shared state, but shared by an object reference\n const dupCtx: duplicationCtx = {\n interactionDuplications: {},\n };\n\n // Find a list of all the blocks that use the provided root\n const list: Block[] = findBlocksIn(blocks, root, () => true);\n\n // create map for old to new ids\n const idMap: { [key: string]: string } = {};\n\n // Loop through all the blocks and duplicate them\n const nextBlocks: BlockList = [];\n list.forEach((b, index) => {\n const nextBlock = duplicateBlock(b, dupCtx, index);\n nextBlocks.push(nextBlock);\n idMap[b.id] = nextBlock.id;\n });\n\n // Loop through all the blocks a second time to update child refs\n const finalBlocksList = nextBlocks.map(child => {\n if (Array.isArray(child.children)) {\n child.children = child.children.map(ref => {\n return {\n type: 'Ref',\n id: idMap[ref.id],\n };\n });\n }\n return child;\n });\n\n // Update reference ID's\n const finalBlocks = finalBlocksList.reduce((accu: Blocks, curr: Block) => {\n accu[curr.id] = curr;\n return accu;\n }, {} as Blocks);\n\n // Duplicate provided root block\n const newRoot = duplicateBlock(root, dupCtx);\n if (Array.isArray(newRoot.children)) {\n newRoot.children = newRoot.children.map(ref => {\n return {\n type: 'Ref',\n id: idMap[ref.id],\n };\n });\n }\n\n // Add the new root to the object of\n finalBlocks[newRoot.id] = newRoot;\n\n // Return the new blocks\n return [finalBlocks, newRoot.id];\n};\n\nexport const getSId = (\n type: 'topic' | 'interaction' | 'assessmentQuestion',\n offset: number = 0\n) => {\n // when we were dealing with just the 2\n // const list =\n // type === 'topic'\n // ? getTopics()\n // : getAllInteractions()\n // .map(i => getBlockById(i))\n // .filter(i => i);\n\n // console.log({ type });\n\n let list: Block[];\n\n switch (type) {\n case 'topic': {\n list = getTopics();\n break;\n }\n\n case 'interaction': {\n list = getAllInteractions()\n .map(i => getBlockById(i))\n .filter(i => i);\n break;\n }\n\n case 'assessmentQuestion': {\n list = getAllAssessmentQuestions();\n break;\n }\n }\n\n //\n let SIds = list\n .map((entry: any) => {\n return entry.props.sId;\n })\n .filter((entry: any) => {\n return entry;\n });\n\n if (!SIds.length) {\n SIds = [0];\n }\n\n const nextSId = Math.max(...SIds) + 1 + offset;\n\n return nextSId;\n};\n","import uuid from 'uuidv4';\nimport { Block, cloneBlock } from '@chameleoncreator/creator-app';\n\nexport const createBlock = (\n type: string,\n children: Block[] = [],\n extra: any = {}\n): Block => {\n return {\n id: uuid(),\n type: type,\n props: extra.props,\n meta: extra.meta,\n animator: extra.animator,\n children: children,\n };\n};\n\nconst reorder = (list: any[], startIndex: number, endIndex: number): any[] => {\n const reordered = [...list];\n const [removed] = reordered.splice(startIndex, 1);\n reordered.splice(endIndex, 0, removed);\n\n return reordered;\n};\n\nexport const reorderChildren = (\n block: Block,\n startIndex: number,\n endIndex: number\n): Block => {\n if (Array.isArray(block.children)) {\n const newBlock = cloneBlock(block);\n newBlock.children = reorder(block.children, startIndex, endIndex);\n return newBlock;\n }\n return block;\n};\n","import { Block, Blocks } from '@chameleoncreator/creator-app';\nimport banner_primary_creator from 'assets/new_graphic_banner_default.png';\nimport graphic_header_logo from 'assets/chameleon_icon_white.svg';\nimport standard_header_logo from 'assets/Logo_updated.svg';\nimport { flatten } from 'factories/utils';\nimport { createBlock } from './block';\n\nexport type StandardHeader = {\n headerHeight: number;\n headerBackgroundColor: string;\n headerBackgroundOpacity: number;\n headerTextColor: string;\n backButton: boolean;\n topicName: boolean;\n progressBar: boolean;\n topicMenu: boolean;\n headerDropShadow: boolean;\n};\n\nexport type GraphicHeader = {\n headerHeight: number;\n headerBackgroundColor: string;\n headerBackgroundOpacity: number;\n includeHeaderOverlay: boolean;\n headerOverlayColor: string;\n headerOverlayOpacity: number;\n headerTextColor: string;\n backButton: boolean;\n topicName: boolean;\n progressBar: boolean;\n topicMenu: boolean;\n headerDropShadow: boolean;\n};\n\nexport const standardHeaderDefaults = {\n headerHeight: 70,\n headerBackgroundColor: '#ffffff',\n headerBackgroundOpacity: 100,\n headerTextColor: '#060709',\n backButton: true,\n topicName: true,\n progressBar: true,\n topicMenu: true,\n headerDropShadow: true,\n};\n\nexport const graphicHeaderDefaults = {\n headerHeight: 170,\n headerBackgroundColor: '#ffffff',\n headerBackgroundOpacity: 100,\n includeHeaderOverlay: false,\n headerOverlayColor: '#000000',\n headerOverlayOpacity: 70,\n headerTextColor: '#ffffff',\n backButton: true,\n topicName: true,\n progressBar: true,\n topicMenu: true,\n headerDropShadow: false,\n};\n\nexport const createHeader = (): Block => {\n return createBlock(\n 'Header',\n [\n createBlock('StandardHeader', [\n createBlock('Logo', [], { props: { src: standard_header_logo } }),\n ]),\n createBlock('GraphicHeader', [\n createBlock('Background', [], {\n props: { src: banner_primary_creator },\n }),\n createBlock('Logo', [], { props: { src: graphic_header_logo } }),\n ]),\n ],\n {\n props: {},\n }\n );\n};\n\nexport const addHeaders = (\n block: Block,\n props = {},\n logoProps = {}\n): [Block, Blocks?] => {\n if (block.type === 'Header') {\n const headersBlock = createBlock('Headers', [\n createBlock(\n 'StandardHeader',\n [\n createBlock('Logo', [], {\n props: {\n src: standard_header_logo,\n ...logoProps,\n },\n }),\n ],\n {\n props,\n }\n ),\n createBlock('GraphicHeader', [\n createBlock('Background', [], {\n props: { src: banner_primary_creator },\n }),\n createBlock('Logo', [], {\n props: {\n src: graphic_header_logo,\n ...logoProps,\n },\n }),\n ]),\n ]) as any;\n\n const headersBlockRef = {\n id: headersBlock.id,\n type: 'Ref',\n };\n\n const [newHeadersBlocks, rootId] = flatten(headersBlock);\n\n const nhb = newHeadersBlocks[rootId] as any;\n block.children = [...nhb.children];\n\n return [block, newHeadersBlocks];\n }\n return [block, undefined];\n};\n","import { Block } from '@chameleoncreator/creator-app';\nimport { setBlocksAction } from 'actions/setBlocksAction';\nimport { addHeaders } from 'factories/header';\nimport { State } from 'store/store';\n\nexport const updateThemeHeadersAction = async (dispatch, getState) => {\n // return async (getState, dispatch) => {\n const state = getState() as State;\n\n const hasStandardHeader = Object.values(state.blocks).find(block => {\n return block.type === 'StandardHeader';\n });\n\n if (hasStandardHeader) {\n // console.log('updated header exists');\n return state;\n }\n\n // console.log('header needs updating');\n\n // get saved theme from incoming module\n const { theme } = state;\n\n const {\n headerBackgroundColor,\n headerTextColor,\n backButton,\n progressBar,\n topicMenu,\n } = theme as any;\n\n const logo = Object.values(state.blocks).filter(\n (b: any) => b.type === 'Logo'\n )[0] as Block;\n\n const header = Object.values(state.blocks).find(block => {\n return block.type === 'Header';\n }) as Block;\n\n const [newBlock, newTree] = addHeaders(\n header,\n {\n headerBackgroundColor,\n headerTextColor,\n backButton,\n progressBar,\n topicMenu,\n },\n {\n src: logo?.props?.src,\n imageId: logo?.props?.imageId,\n }\n );\n\n // setNewBlockNewTree(newTree, newBlock, getStore(), setBlocksAction);\n\n newTree![newBlock.id] = newBlock;\n dispatch(setBlocksAction(newTree!));\n};\n// };\n","import { createBlock } from './block';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport uuid from 'uuidv4';\nimport { getSId } from './utils';\n\nexport const createTopic = (name: string | undefined): Block => {\n // console.log({\n // name,\n // asAssessment,\n // });\n\n return createBlock(\n 'Topic',\n [\n createBlock('AnimationGroup', [], {\n meta: {\n subType: 'Interaction',\n },\n }),\n ],\n {\n props: {\n name: name,\n sId: getSId('topic'),\n },\n }\n );\n};\n\n// Returns a new block that should be saved in a setBlock\nexport const addInteraction = (blocks: Blocks) => (\n topic: Block,\n interaction: Block,\n position: number\n): Block => {\n if (topic.type === 'Topic') {\n // console.log(blocks);\n // console.log(topic, interaction, position);\n\n const group = (topic.children as Block[]).find(child => {\n const block = blocks[child.id];\n return block.meta && block.meta.subType === 'Interaction';\n });\n\n const groupBlock = blocks[group!.id];\n\n return addInteractionToGroup(blocks)(groupBlock, interaction, position);\n }\n\n return topic;\n};\n\nexport const addInteractionToGroup = (blocks: Blocks) => (\n group: Block,\n interaction: Block,\n position: number\n) => {\n if (!group) {\n throw new Error(\n \"Interaction group missing from topic. That shouldn't happen\"\n );\n }\n\n if (!group.meta || group.meta.subType !== 'Interaction') {\n throw new Error('Group must have a subtype of Interaction');\n }\n\n const nextGroup = cloneBlock(blocks[group.id]);\n (nextGroup.children as Block[]).splice(position, 0, interaction);\n\n return nextGroup;\n};\n\n// return a new block that needs to be set in the state\n// TODO: Implement\nexport const removeInteractionFromGroup = (group: Block) => (\n interaction: Block\n): Block => {\n if (!group) {\n throw new Error(\n \"Interaction group missing from topic. That shouldn't happen\"\n );\n }\n if (group.meta!.subType !== 'Interaction') {\n throw new Error('Group must have a subtype of Interaction');\n }\n\n const nextBlock = cloneBlock(group);\n\n const index = (nextBlock.children as Block[]).findIndex(\n r => r.id === interaction.id\n );\n (nextBlock.children as Block[]).splice(index, 1);\n\n return nextBlock;\n};\n","import { createBlock } from './block';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { LessonStatus } from 'store/store';\n\nexport type ScoringCriteria =\n | 'PASSED_ASSESSMENTS'\n | 'ADDITIVE'\n | 'AVERAGE'\n | undefined;\nexport interface SCORMProps {\n shouldSendScoreWhen: string;\n moduleCompleteInterationRequirement: string;\n moduleCompleteScoreRequirement: boolean;\n scormExitMessage: string;\n scormExitDelay: boolean;\n scormControlledExit: boolean;\n sendOnlySuccessStatus: boolean;\n lessonStatus: LessonStatus;\n scoringCriteria: ScoringCriteria;\n}\n\nexport const createScorm = (\n props: SCORMProps = {\n scormExitMessage: 'logout',\n shouldSendScoreWhen: 'NEVER',\n moduleCompleteInterationRequirement: 'allInteractionsSeen',\n moduleCompleteScoreRequirement: false,\n scormControlledExit: false,\n scormExitDelay: false,\n sendOnlySuccessStatus: false,\n lessonStatus: 'completed/incomplete',\n scoringCriteria: 'ADDITIVE',\n }\n): Block => {\n return createBlock('SCORM', [], {\n props: {\n shouldSendScoreWhen: props.shouldSendScoreWhen,\n moduleCompleteInterationRequirement:\n props.moduleCompleteInterationRequirement,\n moduleCompleteScoreRequirement: props.moduleCompleteScoreRequirement,\n scormControlledExit: props.scormControlledExit,\n scormExitDelay: props.scormExitDelay,\n scormExitMessage: props.scormExitMessage,\n sendOnlySuccessStatus: props.sendOnlySuccessStatus,\n lessonStatus: props.lessonStatus,\n scoreCriteria: props.scoringCriteria,\n },\n });\n};\n","import { initialState, State, Action } from '../store/store';\n\nexport const mirrorActive = (state: State = initialState, { data }: Action): State => {\n return {\n ...state,\n mirrorActive: data as any,\n };\n};\n","const isAndroidSamsung = () => navigator.userAgent.match(/Android|SAMSUNG/g);\n\nexport default isAndroidSamsung;\n","// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vendor\n\nconst isAppleComputerInc = () => {\n return navigator.vendor === 'Apple Computer, Inc.';\n};\n\nexport default isAppleComputerInc;\n","export function removeUndefinedEntriesFromObject(obj: { [key: string]: any }) {\n return Object.keys(obj).reduce((acc, curr) => {\n return {\n ...acc,\n ...(![undefined, '', null].includes(obj[curr]) && {\n [curr]: obj[curr],\n }),\n };\n }, {});\n}\n","import { createBlock } from 'factories/block';\n\nexport const oldStylesToNewMap = {\n buttonShadow: 'shadow',\n buttonOutline: 'outline',\n buttonShape: 'shape',\n background: 'backgroundColor',\n buttonBackgroundOpacity: 'backgroundOpacity',\n buttonHover: 'backgroundColorOnHover',\n buttonHoverBackgroundOpacity: 'backgroundOpacityOnHover',\n color: 'textColor',\n textHoverColor: 'textColorOnHover',\n buttonOutlineColor: 'outlineColor',\n};\nexport const oldDataToNewMap = {\n id: 'id',\n label: 'label',\n location: 'location',\n linkData: 'linkData',\n fontFamily: 'fontFamily',\n // fontSize: 'fontSize',\n bold: 'bold',\n uppercase: 'uppercase',\n useLargeButton: 'useLargeButton',\n borderRadius: 'borderRadius',\n focusColor: 'focusColor',\n};\n\nexport const oldButtonPropsToNewMap = {\n buttonShadow: 'shadow',\n buttonOutline: 'outline',\n buttonShape: 'shape',\n background: 'backgroundColor',\n buttonBackgroundOpacity: 'backgroundOpacity',\n buttonHover: 'backgroundColorOnHover',\n buttonHoverBackgroundOpacity: 'backgroundOpacityOnHover',\n color: 'textColor',\n textHoverColor: 'textColorOnHover',\n buttonOutlineColor: 'outlineColor',\n //\n id: 'id',\n label: 'label',\n location: 'location',\n linkData: 'linkData',\n fontFamily: 'fontFamily',\n fontSize: 'fontSize',\n bold: 'bold',\n uppercase: 'uppercase',\n useLargeButton: 'useLargeButton',\n borderRadius: 'borderRadius',\n focusColor: 'focusColor',\n};\n\nexport const createContinueBtn = ({ ...props }) => {\n return createBlock('ContinueButton', 'Continue' as any, {\n props: {\n label: 'Continue',\n location: 'next',\n ...props,\n },\n meta: { subType: 'continue' },\n });\n};\n","import { Action, initialState, State } from 'store/store';\nimport {\n getAllTopicsOrdered,\n getInteractionsFromTopicAndState,\n} from 'selectors/block';\nimport { Block } from '@chameleoncreator/creator-app';\nimport isAndroidSamsung from 'services/isAndroidSamsung';\nimport isAppleComputerInc from 'services/isAppleComputerInc';\nimport { removeUndefinedEntriesFromObject } from 'services/removeUndefinedEntriesFromObject';\nimport {\n // updateButtonProps,\n oldStylesToNewMap,\n oldDataToNewMap,\n} from 'factories/interactions/continueBtn';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport getBlockById from 'services/apiHelpers/getBlockById';\n\nconst isDevice = isAppleComputerInc() || isAndroidSamsung();\n\nexport const preprocessModule = (\n state: State = initialState,\n { data }: Action\n): State => {\n const topics = getAllTopicsOrdered(state.blocks);\n const nextInteractionMap = {};\n const idToSIdMap = {};\n const sIdToIdMap = {};\n\n let interactionsOpen: string[] = [];\n let interactionsLocked: string[] = [];\n // *\n // when we're wanting to test this locally we need to include this line\n // since there's different timings to when savedState loads from scorm/localStorage\n // state.interactionsLocked || [];\n\n // it's likely ( for sure ) that moduleIsFreeScrolling will not exist on existing modules\n // that already have their state defined on the server\n const moduleIsFreeScrolling = state.theme?.moduleIsFreeScrolling || {\n desktop: false,\n device: false,\n };\n\n const {\n desktop: moduleIsFreeScrollingDesktop,\n device: moduleIsFreeScrollingDevice,\n } = moduleIsFreeScrolling;\n\n let topicsIdSIdMapping = {\n idToSId: {},\n sIdToId: {},\n };\n\n topics.forEach((topic: Block) => {\n const sId = topic.props?.sId;\n if (sId) {\n topicsIdSIdMapping.idToSId[topic.id] = sId;\n topicsIdSIdMapping.sIdToId[sId] = topic.id;\n }\n\n const interactions = getInteractionsFromTopicAndState(\n state as any,\n (Object.values(state.blocks) as any).find(($: any) => $.id === topic.id)\n );\n\n interactions.forEach((interaction, index) => {\n const { id } = interaction;\n const { sId, lockDown } = (interaction as any)?.props;\n\n if (!isDevice) {\n moduleIsFreeScrollingDesktop && interactionsOpen.push(id);\n !moduleIsFreeScrollingDesktop &&\n lockDown &&\n interactionsLocked.push(id);\n }\n\n if (isDevice) {\n moduleIsFreeScrollingDevice && interactionsOpen.push(id);\n !moduleIsFreeScrollingDevice && lockDown && interactionsLocked.push(id);\n }\n\n // if (lockDown) {\n // interactionsLocked.push(id);\n // }\n\n idToSIdMap[id] = sId;\n sIdToIdMap[sId] = id;\n\n if (index != interactions.length - 1) {\n nextInteractionMap[id] = interactions[index + 1].id;\n }\n\n if (interaction?.meta?.subType === 'TopicPortal') {\n const { selectedTopics } = interaction?.props || {};\n\n if (\n selectedTopics &&\n Array.isArray(selectedTopics) &&\n selectedTopics.some(entry => entry.toString().includes('-'))\n ) {\n //\n interaction.props!.selectedTopics = selectedTopics.map(\n entry => state.blocks[entry]?.props?.sId || entry\n );\n\n console.log(\n 'one time updating selected topics references from id to sId ?',\n interaction?.props?.selectedTopics\n );\n }\n }\n });\n });\n\n let assessmentQuestionIdSIdMapping = {\n idToSId: {},\n sIdToId: {},\n };\n\n Object.values(state.blocks).forEach((entry, i) => {\n const assessmentQuestion =\n entry.type.toLowerCase() === 'assessmentquestion';\n\n if (assessmentQuestion && entry?.props) {\n const { sId } = entry.props;\n assessmentQuestionIdSIdMapping.idToSId[entry.id] = sId;\n assessmentQuestionIdSIdMapping.sIdToId[sId] = entry.id;\n }\n\n const subType = entry?.meta?.subType;\n\n //\n // get the root certificate interaction\n if (subType && subType === 'Certificate') {\n const certificateInteraction = entry;\n\n // if it has ' imgSrc ' we can know it was added incorrectly\n // from the EditCertificate\n //\n const {\n imgSrc,\n imageId,\n imgWidth,\n imgHeight,\n } = (certificateInteraction as any)?.props;\n\n let certificate = state.blocks[(entry?.children?.[1] as Block)?.id]\n ?.children?.[0] as Block;\n\n certificate = certificate && state.blocks[certificate.id];\n\n // if the interaction has imgSrc. but we don't yet have img values on the certificate ( props ) itself\n // move them over\n if (imgSrc && !certificate?.props?.src) {\n certificate.props = {\n src: imgSrc,\n imageId,\n imgWidth,\n imgHeight,\n };\n\n delete certificateInteraction.props?.imgSrc;\n delete certificateInteraction.props?.imageId;\n delete certificateInteraction.props?.imgWidth;\n delete certificateInteraction.props?.imgHeight;\n }\n }\n\n if (entry?.type === 'SelectOptions') {\n (entry?.children as any[])?.forEach((option, index) => {\n const optionBlock = state.blocks[option.id] as Block;\n\n if (optionBlock && optionBlock?.props) {\n const { correctAnswer } = optionBlock.props;\n\n if (typeof correctAnswer === 'object') {\n console.log(\n '___ transform select option correctAnswer from object :',\n correctAnswer,\n '>>>'\n );\n optionBlock.props.correctAnswer = Object.values(correctAnswer)[0];\n //\n console.log('to index :', optionBlock.props.correctAnswer, '___');\n }\n }\n });\n }\n\n if (subType && ['continue', 'editableButton'].includes(subType)) {\n // return;\n\n //\n\n const { props = {} } = entry;\n const { version } = props;\n\n if (version && version === 1) {\n // console.log({ version });\n return;\n }\n\n const updatedStyleProps = Object.keys(props).reduce((acc, curr) => {\n const newKey = oldStylesToNewMap[curr];\n\n // move this out later. just want to see it inline for the moment\n // these are the 'local' properties that could be updated by the author in older modules\n //\n const hasLocalMap = {\n // the list of local props that can have been set in the editor\n\n // localBackgroundColor: true,\n // localColor: true,\n // localButtonHover: color ? true : false,\n // localButtonShadow: true,\n // localButtonOutline: true,\n // localUseLargeButton: true,\n // localShape: true,\n // localBorderRadius: true,\n\n background: 'localBackgroundColor',\n color: 'localColor',\n buttonHover: 'localButtonHover',\n buttonShadow: 'localButtonShadow',\n buttonOutline: 'localButtonOutline',\n useLargeButton: 'localUseLargeButton',\n buttonShape: 'localShape',\n borderRadius: 'localBorderRadius',\n };\n\n let hasValue = ![undefined, '', null].includes(props[curr]);\n\n if (hasLocalMap[curr] && !props[hasLocalMap[curr]]) {\n // if we have this legacy prop\n // and its value HAS NOT been set explicitly. the ' local ' prefix\n // then hasValue should be considered false\n\n // the intention is to strip out any default props / values that would interfere\n // with our updated theming\n\n // console.log({ curr });\n\n hasValue = false;\n }\n\n let updateBackgroundOpacityForOutline;\n\n // this is the dance to save real old buttons from the ' keyline ' style we went with\n // if theme.buttonOutline or prop.buttonOutline the rendered effect sets the backgroundOpacity\n // of the button to 0. but that's never reflected in the settings. only a runtime evaluation and display\n // so we're gonna actually update it on the prop so our settings are in sync\n //\n if (state.theme.buttonOutline || props.buttonOutline) {\n if ([undefined, '', null].includes(props.buttonBackgroundOpacity)) {\n updateBackgroundOpacityForOutline = true;\n }\n }\n\n const updatedProps = {\n ...acc,\n ...(newKey &&\n hasValue && {\n [newKey]: props[curr],\n }),\n ...(updateBackgroundOpacityForOutline && {\n backgroundOpacity: 0,\n }),\n };\n\n return updatedProps;\n }, {});\n\n const updatedDataProps = Object.keys(props).reduce((acc, curr) => {\n const newKey = oldDataToNewMap[curr];\n const hasValue = ![undefined, '', null].includes(props[curr]);\n\n return {\n ...acc,\n ...(newKey &&\n hasValue && {\n [newKey]: props[curr],\n }),\n };\n }, {});\n\n const $ = {};\n\n for (const prop in props) {\n if (oldDataToNewMap[prop]) {\n $[prop] = props[prop];\n }\n }\n\n entry.props = {\n ...props,\n ...updatedStyleProps,\n\n version: 1,\n // might want to tidy up and move 'legacy' props to\n // LEGACY_PROPS: props,\n };\n }\n });\n\n let mainButton;\n\n if (!state.theme?.buttons) {\n //\n console.log(\n `updating buttons and theme ( theme.buttons ) for 'legacy' modules on boot`.toUpperCase()\n );\n mainButton = getExistingButtonStylesFromTheme(state.theme);\n }\n\n return {\n ...state,\n ...data,\n interactionsOpen,\n interactionsLocked,\n ...{ nextInteractionMap },\n ...{ idToSIdMap },\n ...{ sIdToIdMap },\n topicsIdSIdMapping,\n assessmentQuestionIdSIdMapping,\n\n ...(mainButton && {\n theme: {\n ...state.theme,\n buttons: {\n ...state.theme.buttons,\n main: mainButton,\n },\n },\n }),\n };\n};\n\nfunction getExistingButtonStylesFromTheme(theme) {\n const {\n buttonBackgroundColor,\n buttonBorderRadius,\n buttonOutline,\n buttonShadow,\n buttonShape,\n useLargeButton,\n buttonTextColor,\n buttonHover,\n } = theme;\n\n return removeUndefinedEntriesFromObject({\n backgroundColor: buttonBackgroundColor,\n borderRadius: buttonBorderRadius,\n outline: buttonOutline,\n shadow: buttonShadow,\n shape: buttonShape,\n useLargeButton,\n textColor: buttonTextColor,\n backgroundColorOnHover: buttonHover,\n });\n}\n","import { getInteractionsFromTopicAndState } from 'selectors/block';\nimport { Action, initialState, State } from 'store/store';\n\nexport const updateInteractionsLocked = (\n state: State = initialState,\n { data }: Action\n): State => {\n const { id } = data;\n const { interactionsLocked } = state;\n const updatedInteractionsLocked = [...interactionsLocked];\n\n const indexOfId = updatedInteractionsLocked.indexOf(id);\n // console.log(id, interactionsLocked, indexOfId);\n\n if (indexOfId !== -1) {\n updatedInteractionsLocked.splice(indexOfId, 1);\n }\n\n return {\n ...state,\n interactionsLocked: updatedInteractionsLocked,\n };\n};\n","import { initialState, State, Action } from 'store/store';\n\nexport const addFeedBackData = (state: State = initialState, { data }: Action) => {\n return {\n ...state,\n feedback: {\n ...state.feedback,\n [data.key]: data,\n },\n };\n};\n","import { Block, Blocks } from '@chameleoncreator/creator-app';\nimport {\n Assessments,\n Assessment,\n QuestionData,\n State,\n AssessmentData,\n} from 'store/store';\n\nlet cachedBlocks: Blocks;\n\nfunction updateCachedBlocks(\n blocks: Blocks,\n types: string[] = ['AssessmentQuestion', 'AssessmentQuestionOptions']\n) {\n //\n if (cachedBlocks) {\n // console.log('cachedBlocks has been updated. returning cachedBlocks');\n return cachedBlocks;\n }\n\n cachedBlocks = Object.values(blocks).reduce((acc, curr) => {\n const block = types.includes(curr?.type);\n\n return {\n ...acc,\n\n ...(block && { [curr.id]: curr }),\n };\n }, {});\n\n // console.log('caching questionBlocks :', cachedBlocks);\n\n return cachedBlocks as Blocks;\n}\n\nexport const resultsKeyMapToSuspendData = {\n answer: 0,\n attemptCount: 1,\n correctAnswer: 2,\n id: 3,\n isCorrect: 4,\n isLocked: 5,\n navigateToResults: 6,\n questionName: 7,\n submitButtonLabel: 8,\n};\n\nexport const resultsKeyMapFromSuspendData = {\n 0: 'answer',\n 1: 'attemptCount',\n 2: 'correctAnswer',\n 3: 'id',\n 4: 'isCorrect',\n 5: 'isLocked',\n 6: 'navigateToResults',\n 7: 'questionName',\n 8: 'submitButtonLabel',\n};\n\nfunction getResultsMinified(results: QuestionData, blocks: Blocks) {\n const resultsMinified = Object.values(results).reduce(\n (accA, currA, index) => {\n const keysRemapped = Object.keys(currA).reduce((accB, currB, index) => {\n return {\n ...accB,\n [resultsKeyMapToSuspendData[currB]]: currA[currB],\n };\n }, {});\n\n // this feels kinda clumsy\n // but isolates the work we want to do on a given entry\n //\n for (const key in keysRemapped) {\n if (keysRemapped[key] === true) {\n keysRemapped[key] = 1;\n }\n\n if (keysRemapped[key] === false) {\n keysRemapped[key] = 0;\n }\n\n if (key === '7') {\n keysRemapped[key] = '';\n }\n\n if (key === '8') {\n keysRemapped[key] =\n keysRemapped[key].toLowerCase() === 'submit' ? 1 : 0;\n }\n\n const questionBlock = blocks[Object.keys(results)[index]];\n\n let questionBlockOptions:\n | ''\n | undefined\n | Block\n | Block[] = (questionBlock?.children as Block[])?.find(child => {\n const block = blocks[child.id];\n return block?.type === 'AssessmentQuestionOptions';\n });\n\n //\n\n const questionBlockOptionsId = questionBlockOptions?.id;\n questionBlockOptions =\n questionBlockOptionsId && blocks[questionBlockOptionsId];\n\n // these could be DRY'd up. leaving for the moment\n if (key === '0') {\n keysRemapped['0'] = keysRemapped['0'].map(entry => {\n return ((questionBlockOptions as Block)?.children as Block[])\n ?.map(child => child.id)\n .indexOf(entry);\n });\n }\n\n if (key === '2') {\n keysRemapped['2'] = keysRemapped['2'].map(entry => {\n return ((questionBlockOptions as Block)?.children as Block[])\n ?.map(child => child.id)\n .indexOf(entry);\n });\n }\n //\n }\n\n return {\n ...accA,\n // was object\n // [currA.id]: {\n // ...keysRemapped,\n // },\n //now array\n [currA.id]: Object.values(keysRemapped),\n };\n },\n {}\n );\n\n return resultsMinified;\n}\n\nfunction getResultsMaxified(results: QuestionData, blocks: Blocks) {\n const resultsMaxified = Object.values(results).reduce(\n (accA, currA, index) => {\n const keysRemapped = Object.keys(currA).reduce((accB, currB) => {\n return {\n ...accB,\n [resultsKeyMapFromSuspendData[currB]]: currA[currB],\n };\n }, {});\n\n // this feels kinda clumsy\n // but isolates the work we want to do on a given entry\n //\n for (const key in keysRemapped) {\n if (['isCorrect', 'isLocked', 'navigateToResults'].includes(key)) {\n if (keysRemapped[key] === 1) {\n keysRemapped[key] = true;\n }\n\n if (keysRemapped[key] === 0) {\n keysRemapped[key] = false;\n }\n }\n\n if (key === 'submitButtonLabel') {\n keysRemapped['submitButtonLabel'] =\n keysRemapped['submitButtonLabel'] === 1 ? 'Submit' : 'Continue';\n }\n\n const sId = Object.keys(results)[index];\n\n const questionBlock = Object.values(blocks).find(b => {\n return (\n b?.type === 'AssessmentQuestion' && b?.props?.sId === Number(sId)\n );\n });\n\n // my type garbage. needs fixing\n let questionBlockOptions:\n | ''\n | undefined\n | Block\n | Block[] = (questionBlock?.children as Block[])?.find(child => {\n const block = blocks[child.id];\n return block?.type === 'AssessmentQuestionOptions';\n });\n\n const questionBlockOptionsId = questionBlockOptions?.id;\n questionBlockOptions =\n questionBlockOptionsId && blocks[questionBlockOptionsId];\n\n if (key === 'answer' && questionBlockOptions) {\n keysRemapped['answer'] = keysRemapped['answer'].map(entry => {\n return ((questionBlockOptions as Block)?.children as Block[])[entry]\n ?.id;\n });\n }\n\n if (key === 'correctAnswer' && questionBlockOptions) {\n keysRemapped['correctAnswer'] = keysRemapped['correctAnswer'].map(\n entry => {\n return ((questionBlockOptions as Block)?.children as Block[])[\n entry\n ]?.id;\n }\n );\n }\n }\n\n // we'll check for the '3' before attempting to use it\n console.log(currA?.[3]);\n\n return {\n ...accA,\n ...(currA?.[3] && {\n [currA[3]]: {\n ...keysRemapped,\n },\n }),\n };\n },\n {}\n );\n\n return resultsMaxified;\n}\n\nfunction transformAssessmentsToSuspendData(\n assessments: Assessments,\n state: State = {} as State\n) {\n const assessmentsMinified = Object.keys(assessments).reduce((acc, key) => {\n const assessment = assessments[key];\n\n const sId =\n state.topicsIdSIdMapping.idToSId[key] || state.blocks[key]?.props?.sId;\n const assessmentSId = String(sId) || key;\n //\n\n const { data, results } = structuredClone(assessment);\n\n const resultsUpdatingIdToSId = {\n ...results,\n };\n\n //\n Object.keys(resultsUpdatingIdToSId as any).forEach(k => {\n if (state?.blocks) {\n //\n const sId =\n state.assessmentQuestionIdSIdMapping.idToSId[k] ||\n state.blocks[k]?.props?.sId;\n if (sId) {\n resultsUpdatingIdToSId[k]['id'] = sId;\n }\n //\n }\n });\n\n const resultsMinified = getResultsMinified(\n resultsUpdatingIdToSId as QuestionData,\n updateCachedBlocks(state.blocks)\n );\n\n const assessmentMinified = {\n d: {\n ...data,\n },\n r: {\n ...resultsMinified,\n },\n };\n\n return {\n ...acc,\n [assessmentSId]: assessmentMinified,\n };\n }, {});\n\n // console.log(\n // 'assessments minified bytes size ?',\n // JSON.stringify(assessmentsMinified).length\n // );\n\n // const assessmentsBytes = JSON.stringify(assessments).length;\n // const assessmentsMinifiedBytes = JSON.stringify(assessmentsMinified).length;\n // const savings =\n // ((assessmentsBytes - assessmentsMinifiedBytes) / assessmentsBytes) * 100;\n\n // console.log('% savings :', savings.toFixed());\n\n return assessmentsMinified;\n}\n\nfunction transformAssessmentsFromSuspendData(\n assessments: Assessments,\n state: State = {} as State\n) {\n return Object.keys(assessments).reduce((acc, key) => {\n const assessment = assessments[key];\n const assessmentId =\n state.topicsIdSIdMapping.sIdToId[key] ||\n Object.values(state.blocks).find(block => {\n return block?.props?.sId === Number(key);\n })?.id ||\n ''; // if we're undefined here. problems\n\n const { d, r } = assessment;\n const resultsUpdatingSIdToId = {\n ...r,\n } as QuestionData;\n\n //\n Object.values(resultsUpdatingSIdToId).forEach((entry: any) => {\n if (state?.blocks && entry?.['3']) {\n const id =\n state.assessmentQuestionIdSIdMapping.sIdToId[entry['3']] ||\n Object.values(state.blocks).find(block => {\n return block?.props?.sId === Number(entry['3']);\n })?.id;\n\n if (id) {\n entry['3'] = id;\n }\n //\n }\n });\n\n const resultsMaxified = getResultsMaxified(\n resultsUpdatingSIdToId as QuestionData,\n updateCachedBlocks(state.blocks)\n );\n\n const assessmentMaxified = {\n data: {\n ...d,\n },\n results: {\n ...resultsMaxified,\n },\n };\n\n return {\n ...acc,\n ...(assessmentId && {\n [assessmentId]: assessmentMaxified,\n }),\n };\n }, {});\n}\n\nexport {\n transformAssessmentsToSuspendData,\n transformAssessmentsFromSuspendData,\n};\n","import { Block } from '@chameleoncreator/creator-app';\nimport { State } from 'store/store';\n\n// export function transformListFromIdToSId(blocks, list: string[]): number[] {\n// const transformedList = list.map(id => {\n// const { sId } = blocks[id]?.props;\n// //\n// // we might want to save the original id if there's not an sId on the block ?\n\n// return sId;\n// });\n\n// return transformedList || (list as any);\n// }\n\n// export function transformListFromSIdToId(blocks, list: number[]): string[] {\n// const transformedList = list.map(sId => {\n// const block = Object.values(blocks).find(b => {\n// // based on the above\n// // if we don't have an sId on this block. for whatever reason. we've saved the id\n// // and we run some logic to load that back\n// return (b as Block)?.props?.sId === sId;\n// }) as Block;\n\n// return block?.id || block?.props?.id;\n// });\n\n// return transformedList;\n// }\n\nexport function transformListFromIdToSId(idToSIdMap, list: string[]): number[] {\n const transformedList = list.map(id => {\n return idToSIdMap[id];\n });\n\n return transformedList || (list as any);\n}\n\nexport function transformListFromSIdToId(sIdToIdMap, list: number[]): string[] {\n const transformedList = list.map(sId => {\n return sIdToIdMap[sId];\n });\n\n return transformedList;\n}\n","import { Store } from 'redux';\nimport { State } from './store';\nimport {\n transformListFromSIdToId,\n transformListFromIdToSId,\n} from 'services/transformListBetweenIdSId';\nimport {\n transformAssessmentsToSuspendData,\n transformAssessmentsFromSuspendData,\n} from 'services/transformAssessmentsToAndFromSuspendData';\n\nconst STORAGE_KEY = 'chameleon_v2';\n\nlet localStorageStateBookmark: string;\n\nexport const setLocalStorageStateBookmark = location => {\n localStorageStateBookmark = location;\n};\n\nif (window.location.hash.match('clear')) {\n const location = window.location.href.replace(/#.*$/, '');\n\n sessionStorage.clear();\n localStorage.clear();\n\n window.open(location, '_self');\n}\n\nexport const saveState = (store: Store) => () => {\n const state = { ...store.getState() };\n\n // Clear the undesired properties from the store\n delete state.focusedNodeId;\n delete state.lastFocusedNodeId;\n delete state.currentInteractionBlockId;\n\n delete state.currentInteraction;\n\n // TODO: use this as ' bookmarking '\n // to be moved to someplace else\n // delete state.currentTopic;\n\n // delete state.interactionsSeen;\n // delete state.interactionsOpen;\n\n delete state.audioAcknowledged;\n delete state.audio;\n delete state.header;\n delete state.stndardHeader;\n delete state.graphicHeader;\n delete state.standardHeaderLogo;\n delete state.graphicHeaderBackground;\n delete state.graphicHeaderLogo;\n\n delete state.userBehaviour;\n // state.assessments = {};\n\n state.interactionsSeen = transformListFromIdToSId(\n state.idToSIdMap,\n state.interactionsSeen\n );\n\n state.interactionsLocked = transformListFromIdToSId(\n state.idToSIdMap,\n state.interactionsLocked\n );\n\n const minifiedAssessments = transformAssessmentsToSuspendData(\n state.assessments,\n state\n );\n\n state.assessments = minifiedAssessments;\n\n // state.interactionsLocked = [];\n // state.interactionsOpen = [];\n // state.interactionsSeen = [];\n // state.landingPagesSeenState = {};\n\n // state.moduleVariables = {};\n // console.log(state.moduleVariables);\n\n localStorage.setItem(STORAGE_KEY, JSON.stringify(state));\n};\n\nexport const clearState = () => {};\n\nexport const getState = (): State | undefined => {\n if (window.savedStore) {\n const s = { ...window.savedStore };\n if (s.theme && Object.keys(s.theme).length <= 0) {\n delete s.theme;\n }\n return s;\n }\n return undefined;\n};\n\nexport const getLocalState = (): State => {\n let savedState = JSON.parse(localStorage.getItem('chameleon_v2')!) as State;\n\n if (savedState === null) {\n return {} as State;\n }\n\n const { sIdToIdMap } = savedState;\n\n let transformedInteractionsSeen: string[] = [];\n let transformedInteractionsLocked: string[] = [];\n\n if (savedState?.interactionsSeen?.length) {\n transformedInteractionsSeen = transformListFromSIdToId(\n sIdToIdMap,\n savedState.interactionsSeen as any\n );\n\n savedState.interactionsSeen = transformedInteractionsSeen;\n }\n\n if (savedState?.interactionsLocked?.length) {\n transformedInteractionsLocked = transformListFromSIdToId(\n sIdToIdMap,\n savedState.interactionsLocked as any\n );\n\n savedState.interactionsLocked = transformedInteractionsLocked;\n }\n\n const maximisedAssessments = transformAssessmentsFromSuspendData(\n savedState.assessments,\n // minifiedAssessments,\n savedState\n );\n\n // savedState.assessments = {};\n // maximisedAssessments;\n //\n // savedState.interactionsSeen = [];\n // savedState.interactionsLocked = [];\n // savedState.landingPagesSeenState = {};\n\n // console.log(savedState);\n return savedState;\n //\n};\n\ntype Callable = () => void;\n\nexport const watch = (store: Store): Callable => {\n let deBounce;\n\n const unsubscribe = store.subscribe(() => {\n clearTimeout(deBounce);\n deBounce = setTimeout(saveState(store), 250);\n });\n\n return unsubscribe;\n};\n","import { Block } from '@chameleoncreator/creator-app';\nimport { Mirror } from 'store/mirror';\nimport { remoteable } from 'store/next';\nimport { setBlockLocalAction } from \"./setBlockLocalAction\";\n\nexport const setBlockAction = (block: Block): any => {\n return (dispatch, getState) => {\n const s = getState();\n block.project_id = s.projectId;\n block.__isSaving = true;\n\n dispatch(setBlockLocalAction(block));\n\n if (remoteable()) {\n Mirror(dispatch, getState);\n }\n };\n};\n","import { Block } from '@chameleoncreator/creator-app';\n\n\nexport const setBlockLocalAction = (block: Block) => {\n return {\n type: 'SET_BLOCK',\n data: block,\n };\n};\n","import { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { createBlock } from './block';\nimport { flatten } from 'factories/utils';\n\nexport const createAdvancedEditing = (): Block => {\n return createBlock('AdvancedEditing', [], {\n props: {},\n });\n};\n\nexport const addAdvancedEditingBlock = (block: Block): [Block, Blocks?] => {\n if (block.type === 'Module') {\n const advancedEditingBlock = createAdvancedEditing();\n\n const advancedEditingBlockRef = {\n id: advancedEditingBlock.id,\n type: 'Ref',\n };\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).push(advancedEditingBlockRef);\n\n const [newBlocks] = flatten(advancedEditingBlock);\n\n return [nextBlock, newBlocks];\n }\n\n return [block, undefined];\n};\n","import { createBlock } from 'factories/block';\n\nexport const createEditableBtn = ({ ...props }) => {\n return createBlock('EditableButton', [], {\n props: {\n type: props.type || 'editableButton',\n label: props.label || 'Edit',\n ...props,\n },\n meta: { subType: 'editableButton' },\n });\n};\n","import { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { createBlock } from './block';\nimport { flatten } from 'factories/utils';\nimport { createEditableBtn } from './interactions/editableBtn';\n\nexport const createBookmark = (): Block => {\n return createBlock(\n 'Bookmark',\n [\n createBlock('Image', [], { props: {} }),\n createBlock('Text', [], {\n props: {\n // content: 'Would you like to return to where you left off?',\n },\n }),\n createEditableBtn({\n label: 'No',\n buttonOutline: true,\n color: '#060709',\n background: '#fff',\n localButtonOutline: true,\n localColor: true,\n }),\n createEditableBtn({\n label: 'Yes',\n }),\n ],\n {\n props: {},\n }\n );\n};\n\nexport const addBookmarkBlock = (\n block: Block,\n props = {}\n): [Block, Blocks?] => {\n if (block.type === 'Module') {\n const bookmarkBlock = createBookmark();\n\n const bookmarkBlockRef = {\n id: bookmarkBlock.id,\n type: 'Ref',\n };\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).push(bookmarkBlockRef);\n\n const [newBlocks] = flatten(bookmarkBlock);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n","import { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { createBlock } from './block';\nimport { flatten } from 'factories/utils';\nimport { createEditableBtn } from './interactions/editableBtn';\n\nexport const createModuleHasAudioMessage = (): Block => {\n return createBlock(\n 'ModuleHasAudioMessage',\n [\n createBlock('Image', [], { props: {} }),\n createBlock('Text'),\n createEditableBtn({\n label: 'Ok',\n }),\n ],\n {\n props: {},\n }\n );\n};\n\nexport const addModuleHasAudioMessageBlock = (\n block: Block,\n props = {}\n): [Block, Blocks?] => {\n if (block.type === 'Module') {\n const moduleHasAudioMessageBlock = createModuleHasAudioMessage();\n\n const moduleHasAudioMessageBlockRef = {\n id: moduleHasAudioMessageBlock.id,\n type: 'Ref',\n };\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).push(moduleHasAudioMessageBlockRef);\n\n const [newBlocks] = flatten(moduleHasAudioMessageBlock);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n","import { Block } from '@chameleoncreator/creator-app';\n\nimport { addAdvancedEditingBlock } from 'factories/advancedediting';\nimport { addBookmarkBlock } from 'factories/bookmark';\nimport { addModuleHasAudioMessageBlock } from 'factories/modulehasaudiomessage';\nimport { setBlocksAction } from 'actions/setBlocksAction';\n\nconst findBlockByType = (blocks, type) => {\n return Object.values(blocks).find(block => {\n return (block as Block).type === type;\n });\n};\n\nexport const addAdvancedEditingBlocksToStateAction = () => (\n dispatch,\n getState\n) => {\n const state = getState();\n const { blocks } = state;\n\n const [hasAdvancedEditing, hasBookmark, hasModuleHasAudioMessage] = [\n 'AdvancedEditing',\n 'Bookmark',\n 'ModuleHasAudioMessage',\n ].map(entry => findBlockByType(blocks, entry));\n\n if (hasAdvancedEditing && hasBookmark && hasModuleHasAudioMessage) {\n console.log('module has advancedEditing blocks');\n return;\n }\n\n // console.log('adding advancedEditing blocks to module');\n\n const Module = Object.values(blocks).find(\n (b: any) => b.type === 'Module'\n ) as Block;\n\n if (!hasAdvancedEditing) {\n var [newBlockA, newTreeA] = addAdvancedEditingBlock(Module);\n newTreeA![newBlockA.id] = newBlockA;\n }\n\n if (!hasBookmark) {\n var [newBlockB, newTreeB] = addBookmarkBlock(Module);\n newTreeB![newBlockB.id] = newBlockB;\n }\n\n if (!hasModuleHasAudioMessage) {\n var [newBlockM, newTreeM] = addModuleHasAudioMessageBlock(Module);\n newTreeM![newBlockM.id] = newBlockM;\n }\n\n // dispatch({\n // type: 'ADD_ADVANCED_EDITING_BLOCKS_TO_STATE',\n // data: {\n // ...(newTreeA || {}),\n // ...(newTreeB || {}),\n // ...(newTreeM || {}),\n // },\n // });\n\n // return;\n\n const data = {\n ...(newTreeA || {}),\n ...(newTreeB || {}),\n ...(newTreeM || {}),\n };\n\n requestAnimationFrame(() => {\n setBlocksAction && dispatch(setBlocksAction(data));\n });\n};\n","// resetModule\n\n// import { getInteractionsFromTopicAndState } from 'selectors/block';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { Action, initialState, State, NextState } from 'store/store';\n// import { getInteractionsFromTopicAndState } from 'selectors/block';\n\n// import getAllInteractions from 'services/apiHelpers/getAllInteractions';\nimport isAndroidSamsung from 'services/isAndroidSamsung';\nimport isAppleComputerInc from 'services/isAppleComputerInc';\nimport { unlockAssessment } from 'components/lib/AssessmentResults/unlockAssessment';\n\nconst isDevice = isAppleComputerInc() || isAndroidSamsung();\n\nexport const resetModule = (\n state: State = initialState,\n { data }: Action\n): State => {\n const interactionsOpen = [];\n const interactionsLocked = [];\n const landingPagesSeenState = {};\n\n Object.values(state.blocks).forEach(block => {\n if (block.type === 'Interaction') {\n const { id } = block;\n const lockDown = block?.props?.lockDown;\n\n const moduleIsFreeScrolling = state.theme.moduleIsFreeScrolling || {\n desktop: false,\n device: false,\n };\n\n const {\n desktop: moduleIsFreeScrollingDesktop,\n device: moduleIsFreeScrollingDevice,\n } = moduleIsFreeScrolling;\n\n if (!isDevice) {\n moduleIsFreeScrollingDesktop && interactionsOpen.push(id);\n !moduleIsFreeScrollingDesktop &&\n lockDown &&\n interactionsLocked.push(id);\n }\n\n if (isDevice) {\n moduleIsFreeScrollingDevice && interactionsOpen.push(id);\n !moduleIsFreeScrollingDevice && lockDown && interactionsLocked.push(id);\n }\n }\n });\n\n //\n\n // console.log(state.assessments);\n\n return {\n ...state,\n interactionsSeen: [],\n interactionsOpen: [],\n landingPagesSeenState: {},\n interactionsLocked,\n assessments: {},\n };\n};\n","import { Block } from '@chameleoncreator/creator-app';\nimport { addHeaderBlocksToStateAction } from 'actions/addHeaderBlocksToStateAction';\nimport { preprocessModuleAction } from 'actions/preprocessModuleAction';\nimport { rehydrateAction } from 'actions/rehydrate';\nimport { updateThemeHeadersAction } from 'actions/updateThemeHeadersAction';\nimport { createModule } from 'factories/module';\nimport { flatten } from 'factories/utils';\nimport { addHeaderBlocksToState } from 'reducers/addHeaderBlocksToState';\nimport { addScormResponse } from 'reducers/addScormResponse';\nimport { audioAcknowledged } from 'reducers/audioAcknowledged';\nimport { controlAudio } from 'reducers/controlAudio';\nimport { focusBlock } from 'reducers/focusBlock';\nimport { hideHeader } from 'reducers/hideHeader';\nimport { loadBookmarkData } from 'reducers/loadBookmarkData';\nimport { loadSuspendData } from 'reducers/loadSuspendData';\nimport { mirrorActive } from 'reducers/mirrorActive';\nimport { preprocessModule } from 'reducers/preprocessModule';\nimport { rehydrate } from 'reducers/rehydrate';\nimport { rehydrateFromLMS } from 'reducers/rehydrateFromLMS';\nimport { removeBlock } from 'reducers/removeBlock';\nimport { removeBlockLocal } from 'reducers/removeBlockLocal';\nimport { setActiveTopic } from 'reducers/setActiveTopic';\nimport { setAPIError } from 'reducers/setAPIError';\nimport { setBlock } from 'reducers/setBlock';\nimport { setBlocks } from 'reducers/setBlocks';\nimport { setCurrentInteraction } from 'reducers/setCurrentInteraction';\nimport { setError } from 'reducers/setError';\nimport { setExit } from 'reducers/setExit';\nimport { setExitComplete } from 'reducers/setExitComplete';\nimport { setFonts } from 'reducers/setFonts';\nimport { setIsScrolling } from 'reducers/setIsScrolling';\nimport { setLinks } from 'reducers/setLinks';\nimport { setProjectId } from 'reducers/setProjectId';\nimport { setRootBlock } from 'reducers/setRootBlock';\nimport { setTheme } from 'reducers/setTheme';\nimport { setThemeId } from 'reducers/setThemeId';\nimport { setTracker } from 'reducers/setTracker';\nimport { updateAssessment } from 'reducers/updateAssessment';\nimport { updateCourseTheme } from 'reducers/updateCourseTheme';\nimport { updateInteractionsOpen } from 'reducers/updateInteractionsOpen';\nimport { updateInteractionsSeen } from 'reducers/updateInteractionsSeen';\nimport { updateRecoloredChameleonImages } from 'reducers/updateRecoloredChameleonImages';\nimport { updateScore } from 'reducers/updateScore';\nimport { updateScormSettings } from 'reducers/updateScormSettigns';\nimport { updateUserPalette } from 'reducers/updateUserPallete';\nimport { updateInteractionsLocked } from 'reducers/updateInteractionsLocked';\nimport { applyMiddleware, compose, createStore } from 'redux';\nimport thunk from 'redux-thunk';\nimport { getTopicGroup } from 'selectors/block';\nimport { addFeedBackData } from '../reducers/addFeedBackData';\nimport { getLocalState, getState, watch } from './localStore';\nimport { Action, initialState, State } from './store';\nimport { updateLegacyBlocksWithSId } from 'services/updateLegacyBlocksWithSId';\nimport { addAdvancedEditingBlocksToStateAction } from 'actions/addAdvancedEditingBlocksToStateAction';\nimport { addAdvancedEditingBlocksToState } from 'reducers/addAdvancedEditingBlocksToState';\nimport { resetModule } from 'reducers/resetModule';\nimport { updateLandingPageSeenState } from 'reducers/updateLandingPageSeenState';\nimport { updateModuleVariables } from 'reducers/updateModuleVariables';\n\nconst hasMode = (mode: string): boolean => {\n const w = window.hasMode && window.hasMode(mode);\n return w;\n};\n\nexport const remoteable = (): boolean => {\n return hasMode('EDIT');\n};\n\nremoteable();\n\nif (hasMode('DEVELOPMENT')) {\n const mod = createModule('Example');\n const [flatMod, rootBlockId] = flatten(mod);\n const cur = (getTopicGroup(flatMod).children![0] as Block).id;\n\n initialState.blocks = flatMod;\n initialState.rootBlockId = rootBlockId;\n initialState.currentTopic = cur;\n}\n\nconst actionHandlers = {\n ADD_SCORM_RESPONSE: addScormResponse,\n FOCUS_BLOCK: focusBlock,\n HIDE_HEADER: hideHeader,\n LOAD_BOOKMARK_DATA: loadBookmarkData,\n LOAD_SUSPEND_DATA: loadSuspendData,\n MIRROR_ACTIVE: mirrorActive,\n PREPROCESS_MODULE: preprocessModule,\n REHYDRATE: rehydrate,\n REHYDRATE_FROM_LMS: rehydrateFromLMS,\n REMOVE_BLOCK: removeBlock,\n REMOVE_BLOCK_LOCAL: removeBlockLocal,\n SET_ACTIVE_TOPIC: setActiveTopic,\n SET_API_ERROR: setAPIError,\n SET_BLOCK: setBlock,\n SET_BLOCKS: setBlocks,\n SET_CURRENT_INTERACTION: setCurrentInteraction,\n SET_ERROR: setError,\n SET_EXIT: setExit,\n SET_EXIT_COMPLETE: setExitComplete,\n SET_FONTS: setFonts,\n SET_IS_SCROLLING: setIsScrolling,\n SET_LINKS: setLinks,\n SET_PROJECT_ID: setProjectId,\n SET_ROOT_BLOCK: setRootBlock,\n SET_THEME: setTheme,\n SET_THEME_ID: setThemeId,\n SET_TRACKER: setTracker,\n SUBMIT_FEEDBACK: addFeedBackData,\n UPDATE_COURSE_THEME: updateCourseTheme,\n UPDATE_INTERACTIONS_OPEN: updateInteractionsOpen,\n UPDATE_INTERACTIONS_SEEN: updateInteractionsSeen,\n UPDATE_RECOLORED_CHAMELEON_IMAGES: updateRecoloredChameleonImages,\n UPDATE_SCORE: updateScore,\n UPDATE_SCORM_SETTINGS: updateScormSettings,\n UPDATE_USER_PALETTE: updateUserPalette,\n UPDATE_ASSESSMENT: updateAssessment,\n CONTROL_AUDIO: controlAudio,\n AUDIO_ACKNOWLEDGED: audioAcknowledged,\n ADD_HEADER_BLOCKS_TO_STATE: addHeaderBlocksToState,\n ADD_ADVANCED_EDITING_BLOCKS_TO_STATE: addAdvancedEditingBlocksToState,\n UPDATE_INTERACTIONS_LOCKED: updateInteractionsLocked,\n RESET_MODULE: resetModule,\n UPDATE_MODULE_VARIABLES: updateModuleVariables,\n UPDATE_LANDING_PAGE_SEEN_STATE: updateLandingPageSeenState,\n};\n\n// translate actions into handlers (standard redux reducer)\nexport const reducer = (state: State = initialState, action: Action): State => {\n const handler = actionHandlers[action.type];\n return handler ? handler(state, action) : { ...state };\n};\n\n// create the store from the reducer above\n\nconst composeEnhancers =\n window['__REDUX_DEVTOOLS_EXTENSION_COMPOSE__'] || compose;\n\nconst store = createStore(reducer, composeEnhancers(applyMiddleware(thunk)));\n\n(() => {\n if (hasMode('PREVIEW')) {\n const savedStore = getState();\n\n // if we have saved state, lets load it in.\n if (savedStore && savedStore !== undefined) {\n store.dispatch(rehydrateAction(savedStore));\n store.dispatch(preprocessModuleAction());\n //\n updateThemeHeadersAction(store.dispatch, store.getState);\n }\n\n // needed to move this out of the savedStore checks for local dev\n addHeaderBlocksToStateAction(store.dispatch, store.getState);\n }\n\n if (hasMode('DEVELOPMENT')) {\n //\n\n // rehydrate\n const savedStore = getLocalState();\n\n // if we have saved state, lets load it in.\n if (savedStore && savedStore !== undefined) {\n store.dispatch(rehydrateAction(savedStore));\n store.dispatch(preprocessModuleAction());\n //\n updateThemeHeadersAction &&\n updateThemeHeadersAction(store.dispatch, store.getState);\n }\n\n // needed to move this out of the savedStore checks for local dev\n addHeaderBlocksToStateAction(store.dispatch, store.getState);\n\n addAdvancedEditingBlocksToStateAction()(store.dispatch, store.getState);\n\n updateLegacyBlocksWithSId(store);\n //Save changes\n watch(store as any);\n }\n})();\n\nexport default store;\n","import { Block, Blocks, cloneBlock } from '@chameleoncreator/creator-app';\nimport { createBlock } from './block';\nimport { createHeader } from './header';\nimport { createTopic } from './topic';\nimport { createScorm } from './scorm';\nimport { createAdvancedEditing } from './advancedediting';\nimport { createBookmark } from './bookmark';\nimport { createModuleHasAudioMessage } from './modulehasaudiomessage';\n\nexport const createModule = (title: string): Block => {\n return createBlock(\n 'Module',\n [\n createScorm(),\n createHeader(),\n // createAdvancedEditing(),\n // createBookmark(),\n // createModuleHasAudioMessage(),\n createBlock('AnimationGroup', [createTopic('Topic #1')], {\n meta: { subType: 'Topic' },\n }),\n ],\n {\n props: {\n passMark: 80,\n name: title,\n theme: {\n userPalette: [],\n },\n },\n }\n );\n};\n\nexport const addScormBlock = (mod: Block) => (scormBlock: Block): Block => {\n if (mod.type !== 'Module') {\n return mod;\n }\n\n const nextMod = cloneBlock(mod);\n (nextMod.children as Block[]).unshift(scormBlock);\n\n return nextMod;\n};\n\n// Returns a new block that should be saved. this will be the TopicGroup block\n// contained within the module\nexport const addTopic = (blocks: Blocks) => (mod: Block) => (\n topic: Block,\n position: number\n): Block => {\n if (mod.type !== 'Module') {\n return mod;\n }\n\n const group = (mod.children as Block[]).find(child => {\n const block = blocks[child.id];\n return block.meta && block.meta.subType === 'Topic';\n });\n\n if (!group) {\n throw new Error(\"Topic group missing from topic. That shouldn't happen\");\n }\n\n const nextGroup = cloneBlock(blocks[group.id]);\n (nextGroup.children as Block[]).splice(position, 0, topic);\n\n return nextGroup;\n};\n\nexport const addTopicToGroup = (blocks: Blocks) => (\n group: Block,\n topic: Block,\n position: number\n): Block => {\n // console.log(group);\n if (!group.meta || group.meta.subType !== 'Topic') {\n throw new Error('Group must contain Topics');\n }\n\n const nextGroup = cloneBlock(blocks[group.id]);\n (nextGroup.children as Block[]).splice(position, 0, topic);\n return nextGroup;\n};\n\nexport const removeTopic = (blocks: Blocks) => (\n mod: Block,\n id: string\n): Block => {\n if (mod.type !== 'Module') {\n return mod;\n }\n\n let group = (mod.children as Block[]).find(child => {\n const block = blocks[child.id];\n return block.meta && block.meta.subType === 'Topic';\n });\n\n if (!group) {\n throw new Error(\"Topic group missing from topic. That shouldn't happen\");\n }\n\n group = blocks[group.id];\n\n return removeTopicFromGroup(blocks)(group, id);\n};\n\nexport const removeTopicFromGroup = (blocks: Blocks) => (\n group: Block,\n id: string\n): Block => {\n if (!group) {\n throw new Error(\"Topic group missing from module. That shouldn't happen\");\n }\n\n if (!group.meta || group.meta.subType !== 'Topic') {\n throw new Error('Group must contain Topics');\n }\n\n const nextGroup = cloneBlock(blocks[group.id]);\n\n const index = (nextGroup.children as Block[]).findIndex(r => r.id === id);\n\n (nextGroup.children as Block[]).splice(index, 1);\n return nextGroup;\n};\n","import { initialState, State, Action } from 'store/store';\n\nexport const addScormResponse = (\n state: State = initialState,\n { data }: Action\n) => {\n return {\n ...state,\n userBehaviour: {\n ...state.userBehaviour,\n scormResponses: {\n ...state.userBehaviour.scormResponses,\n [data.id]: data,\n },\n },\n };\n};\n","import { Action, State } from 'store/store';\n\nexport const focusBlock = (state: State, { data }: Action): State => {\n const { focusedNodeId, lastFocusedNodeId, currentInteractionBlockId } = state;\n\n // if (data && data.id === 'advancedEditing') {\n // return {\n // ...state,\n // lastFocusedNodeId: lastFocusedNodeId === '' ? data.id : focusedNodeId,\n // focusedNodeId: data ? data.id : null,\n // currentInteractionBlockId: 'advancedEditing',\n // };\n // }\n\n const type = data && (state.blocks as any)[data.id].type;\n let updatedCurrentInteractionBlockId =\n type && type === 'Interaction'\n ? data.id\n : !data || data.id === null\n ? null\n : currentInteractionBlockId;\n\n return {\n ...state,\n lastFocusedNodeId: lastFocusedNodeId === '' ? data.id : focusedNodeId,\n focusedNodeId: data ? data.id : null,\n currentInteractionBlockId: updatedCurrentInteractionBlockId,\n };\n};\n","import { initialState, State, Action } from 'store/store';\n\nexport const hideHeader = (state: State = initialState, { data }: Action) => {\n return {\n ...state,\n hideHeader: data.hide,\n };\n};\n","import { initialState, State, Action } from 'store/store';\n\nexport const loadBookmarkData = (\n state: State = initialState,\n { data }: Action\n) => {\n const bookmarkLocation = data?.location ?? data;\n let bookmarkLoaded = true;\n\n if (data?.bookmarkLoaded !== undefined) {\n bookmarkLoaded = data?.bookmarkLoaded;\n }\n\n return {\n ...state,\n bookmarkLocation,\n bookmarkLoaded,\n // bookmarkLocation: data,\n // bookmarkLoaded: true,\n };\n};\n","import { initialState, State, Action } from '../store/store';\n\nexport const loadSuspendData = (\n state: State = initialState,\n { data }: Action\n): State => {\n console.log('loadSuspendData :', data);\n\n // we're gonna park this for the moment\n //\n const hasSavedAssessments =\n data?.assessments && Object.keys(data.assessments).length;\n\n let { interactionsLocked, landingPagesSeenState } = data;\n if (interactionsLocked === undefined || interactionsLocked?.length === 0) {\n interactionsLocked = state.interactionsLocked;\n }\n\n const { moduleVariables = {}, location = '' } = data;\n\n const newState = {\n ...state,\n ...{\n interactionsSeen: data.interactionsSeen,\n //\n interactionsLocked,\n landingPagesSeenState,\n //\n userBehaviour: {\n ...state.userBehaviour,\n ...{\n score: data.score,\n interactionsReporting: data.interactionsReporting,\n },\n },\n ...(hasSavedAssessments && { assessments: data.assessments }),\n //\n moduleVariables,\n location,\n },\n };\n\n return newState;\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const rehydrate = (state: State = initialState, { data }: Action): State => {\n return { ...state, ...data };\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const rehydrateFromLMS = (\n state: State = initialState,\n { data }: Action\n): State => {\n const { interactionsSeen } = data as any;\n\n return {\n ...state,\n ...interactionsSeen,\n } as any;\n};\n","import { Block } from \"@chameleoncreator/creator-app\";\nimport { findBlocksIn } from \"selectors/block\";\nimport { Action, initialState, State, TrackerState } from \"store/store\";\n\nexport const removeBlock = (state: State = initialState, { data }: Action): State => {\n const nextState = {\n ...state,\n blocks: { ...state.blocks },\n tracker: { ...state.tracker },\n };\n\n nextState.tracker[data.id] = TrackerState.DELETED;\n\n const all = findBlocksIn(nextState.blocks, data as Block, () => true);\n\n all.forEach(b => {\n nextState.tracker[b.id] = TrackerState.DELETED;\n });\n\n return nextState;\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const removeBlockLocal = (\n state: State = initialState,\n { data }: Action\n): State => {\n const nextState = {\n ...state,\n blocks: { ...state.blocks },\n };\n\n delete nextState.blocks[data.id];\n\n return nextState;\n};","import { Action, initialState, State } from \"store/store\";\n\nexport const setActiveTopic = (\n state: State = initialState,\n { data }: Action\n): State => {\n return {\n ...state,\n currentTopic: data.id,\n };\n};","import { initialState, State, Action } from '../store/store';\n\nexport const setAPIError = (state: State = initialState, { data }: Action): State => {\n const nextState = {\n ...state,\n apiError: {\n count: state.apiError.count + 1,\n err: data,\n },\n };\n\n if (nextState.apiError.count >= 3) {\n nextState.hasError = true;\n nextState.error = data;\n }\n\n return nextState;\n};\n","import { Block } from \"@chameleoncreator/creator-app\";\nimport { Action, initialState, State, TrackerState } from \"store/store\";\n\nexport const setBlock = (state: State = initialState, { data }: Action): State => {\n const nextState = {\n ...state,\n blocks: { ...state.blocks },\n tracker: { ...state.tracker },\n };\n nextState.blocks[data.id] = data as Block;\n nextState.tracker[data.id] = TrackerState.DIRTY;\n return nextState;\n};\n","import { Action, initialState, State, TrackerState } from \"../store/store\";\nimport { Blocks } from '@chameleoncreator/creator-app';\n\nexport const setBlocks = (state: State = initialState, { data }: Action): State => {\n const blocks = data as Blocks;\n const nextState = {\n ...state,\n blocks: { ...state.blocks },\n tracker: { ...state.tracker },\n };\n\n Object.keys(blocks).forEach(id => {\n const block = blocks[id];\n nextState.blocks[block.id] = block;\n nextState.tracker[block.id] = TrackerState.DIRTY;\n });\n\n return nextState;\n};","import { Action, initialState, State } from \"store/store\";\n\nexport const setCurrentInteraction = (\n state: State = initialState,\n { data }: Action\n): State => {\n return {\n ...state,\n ...(data.updateFocusedNodeId && {\n focusedNodeId: data.id,\n }),\n currentInteraction: data.id,\n };\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const setError = (state: State = initialState, { data }: Action) => {\n return {\n ...state,\n hasError: true,\n error: data,\n };\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const setExit = (state: State = initialState, { data }: Action) => {\n return {\n ...state,\n exit: data\n };\n};","import { Action, initialState, State } from \"store/store\";\n\nexport const setExitComplete = (state: State = initialState, { data }: Action) => {\n return {\n ...state,\n exitComplete: data\n };\n};","import { Action, initialState, State } from \"store/store\";\n\nexport const setFonts = (state: State = initialState, { data }: Action) => {\n return {\n ...state,\n customFonts: data as any,\n };\n};","import { Action, initialState, State } from \"store/store\";\n\nexport const setIsScrolling = (\n state: State = initialState,\n { data }: Action\n): State => {\n return {\n ...state,\n isScrolling: data.isScrolling,\n };\n};","import { Action, initialState, State } from \"store/store\";\n\nexport const setLinks = (state: State = initialState, { data }: Action) => {\n return {\n ...state,\n links: data,\n };\n};","import { initialState, State, Action } from '../store/store';\n\nexport const setProjectId = (state: State = initialState, { data }: Action): State => {\n const nextState = {\n ...state,\n projectId: data as any,\n };\n\n return nextState;\n};\n","import { Action, initialState, State } from '../store/store';\n\n//\nexport const setRootBlock = (state: State = initialState, { data }: Action): State => {\n const nextState = {\n ...state,\n rootBlockId: data as any,\n };\n return nextState;\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const setTheme = (state: State = initialState, { data }: Action): State => {\n const nextState = {\n ...state,\n themeId: data.id,\n theme: { ...(state as any).theme, ...data.data },\n };\n\n return nextState;\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const setThemeId = (state: State = initialState, { data }: Action): State => {\n const nextState = {\n ...state,\n themeId: (data as unknown) as string,\n };\n\n return nextState;\n};\n","import { initialState, State, Action } from 'store/store';\n\nexport const setTracker = (state: State = initialState, { data }: Action): State => {\n const nextState = {\n ...state,\n tracker: data,\n };\n\n return nextState;\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const updateCourseTheme = (\n state: State = initialState,\n { data }: Action\n): State => {\n const nextState = {\n ...state,\n theme: {\n ...(state as any).theme,\n ...data,\n },\n };\n\n return nextState;\n};","import { getInteractionsFromTopicAndState } from 'selectors/block';\nimport { Action, initialState, State } from 'store/store';\n\nexport const updateInteractionsOpen = (\n state: State = initialState,\n { data }: Action\n): State => {\n const { blocks, currentTopic, interactionsOpen, nextInteractionMap } = state;\n const currentInteractionId = (data as unknown) as string;\n\n // interactions in currentTopic\n // get the next interaction.id based on ( current ) data.id\n // add it to the list. . .\n\n // add the ability to update with an array\n\n if (Array.isArray(data)) {\n const newInteractionsOpen = data.length\n ? Array.from(new Set([...interactionsOpen, ...data]))\n : [];\n\n return {\n ...state,\n interactionsOpen: newInteractionsOpen,\n } as any;\n }\n\n const nextInteractionId = nextInteractionMap[currentInteractionId];\n\n if (!nextInteractionId) {\n return state;\n }\n\n if (interactionsOpen.includes(nextInteractionId)) {\n return state;\n } else {\n return {\n ...state,\n interactionsOpen: [...interactionsOpen, nextInteractionId],\n } as any;\n }\n};\n","import { Action, initialState, State } from 'store/store';\n\nexport const updateInteractionsSeen = (\n state: State = initialState,\n { data }: Action\n): State => {\n // return state;\n\n // console.log(data);\n\n let { interactionsSeen = [] } = state as any;\n\n // interactionsSeen = interactionsSeen.filter(i => {\n // return typeof i === 'string';\n // });\n\n //\n\n if (Array.isArray(data)) {\n const newInteractionsSeen = data.length\n ? Array.from(new Set([...interactionsSeen, ...data]))\n : [];\n\n // console.log({ newInteractionsSeen });\n\n return {\n ...state,\n // interactionsSeen: [\n // ...Array.from(new Set([...interactionsSeen, ...data])),\n // ],\n interactionsSeen: newInteractionsSeen,\n } as any;\n }\n\n if (interactionsSeen.includes(data.id)) {\n return state;\n } else {\n return {\n ...state,\n interactionsSeen: [...interactionsSeen, data.id],\n } as any;\n }\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const updateRecoloredChameleonImages = (\n state: State = initialState,\n { data }: Action\n): State => {\n const nextState = {\n ...state,\n theme: {\n ...(state as any).theme,\n recoloredChameleonImages: {\n ...(state as any).theme.recoloredChameleonImages,\n ...data,\n },\n },\n };\n\n return nextState;\n};\n","import { initialState, State, Action } from '../store/store';\n\nexport const updateScore = (state: State = initialState, { data }: Action) => {\n return {\n ...state,\n userBehaviour: {\n ...state.userBehaviour,\n score: {\n ...state.userBehaviour.score,\n [data.id]: data.score,\n },\n },\n };\n};\n","import { Action, initialState, State } from \"store/store\";\n\nexport const updateScormSettings = (\n state: State = initialState,\n { data }: Action\n): State => {\n const nextState = {\n ...state,\n scormSettings: {\n ...(state as any).scormSettings,\n ...data,\n },\n };\n\n return nextState;\n};","import { Action, initialState, State } from \"store/store\";\n\nexport const updateUserPalette = (\n state: State = initialState,\n { data }: Action\n): State => {\n const nextState = {\n ...state,\n theme: {\n ...(state as any).theme,\n userPalette: data,\n },\n };\n\n return nextState;\n};","import { Action, initialState, State } from 'store/store';\n\nexport const updateAssessment = (\n state: State = initialState,\n { data }: Action\n): State => {\n const { assessmentId, assessmentData, questionData } = data;\n\n // console.log({ assessmentId, assessmentData, questionData });\n\n const assessment = state.assessments[assessmentId];\n\n let nextState;\n\n if (data.delete) {\n // console.log(data);\n\n delete assessment.results[data.delete.questionId];\n //\n nextState = {\n ...state,\n };\n\n // console.log(nextState.assessments[assessmentId]);\n return nextState;\n }\n\n nextState = {\n ...state,\n\n assessments: {\n ...(state as any).assessments,\n\n [assessmentId]: {\n ...assessment,\n data: {\n ...assessment?.data,\n ...assessmentData,\n },\n results: {\n ...assessment?.results,\n ...questionData,\n },\n },\n },\n };\n\n // console.log(nextState.assessments);\n\n return nextState;\n};\n","import { Action, initialState, State, Audio } from 'store/store';\n\n// TODO - update with type for audio\n\nexport const controlAudio = (\n state: State = initialState,\n { data }: Action\n): State => {\n // if data is anything falsey or an empty object\n if (!data || !Object.keys(data).length) {\n return {\n ...state,\n audio: data as Audio,\n };\n }\n\n const newAudio = {\n ...state.audio,\n ...(data as Audio),\n };\n\n // console.log('controlAudio :', newAudio);\n\n const nextState = {\n ...state,\n audio: { ...newAudio },\n };\n\n return nextState as State;\n};\n","import { Action, initialState, State } from 'store/store';\n\nexport const audioAcknowledged = (\n state: State = initialState,\n { data }: Action\n): State => {\n console.log('audioAcknowledged :', data);\n\n const nextState = {\n ...state,\n audioAcknowledged: data as any,\n };\n\n return nextState;\n};\n","export const addHeaderBlocksToState = (state, { type, data }) => {\n if (type !== 'ADD_HEADER_BLOCKS_TO_STATE') {\n return state;\n }\n\n const newState = {\n ...state,\n ...data,\n };\n\n // console.log(\n // 'header blocks have been added to state :',\n // newState.header,\n // newState.standardHeader,\n // newState.graphicHeader,\n // newState.standardHeaderLogo,\n // newState.graphicHeaderBackground,\n // newState.graphicHeaderLogo\n // );\n\n return newState;\n};\n","export const addAdvancedEditingBlocksToState = (state, { type, data }) => {\n if (type !== 'ADD_ADVANCED_EDITING_BLOCKS_TO_STATE') {\n return state;\n }\n\n const newState = {\n ...state,\n blocks: {\n ...state.blocks,\n ...data,\n },\n };\n\n return newState;\n};\n","export const updateModuleVariables = (state, $) => {\n if ($.type === 'UPDATE_MODULE_VARIABLES') {\n const newState = {\n ...state,\n moduleVariables: {\n ...state.moduleVariables,\n ...$.data,\n },\n };\n\n // console.log(newState.moduleVariables);\n\n return newState;\n }\n\n return state;\n};\n","import { Action, initialState, State } from 'store/store';\n\nexport const updateLandingPageSeenState = (\n state: State = initialState,\n { data }: Action\n): State => {\n const { landingPagesSeenState = {} } = state;\n const { parentId, childIndex, clear } = data;\n\n if (!landingPagesSeenState[parentId]) {\n landingPagesSeenState[parentId] = [];\n }\n\n const updatedLandingPagesSeenState = {\n ...landingPagesSeenState,\n [parentId]: clear\n ? [childIndex]\n : Array.from(new Set([...landingPagesSeenState[parentId], childIndex])),\n };\n\n return {\n ...state,\n landingPagesSeenState: updatedLandingPagesSeenState,\n };\n};\n","export const preprocessModuleAction = () => ({\n type: 'PREPROCESS_MODULE',\n data: {},\n});\n","import { setBlockAction } from 'actions/setBlockAction';\nimport { cloneBlock, Block } from '@chameleoncreator/creator-app';\n\nfunction updateLegacyBlocksWithSId(store) {\n const { blocks } = store.getState();\n const blocksList = Object.values(blocks) as Block[];\n\n const topicBlocks = blocksList.filter(block => {\n return block.type.toLowerCase() === 'topic';\n });\n\n const interactionBlocks = blocksList.filter(block => {\n return block.type.toLowerCase() === 'interaction';\n });\n\n const assessmentQuestionBlocks = blocksList.filter(block => {\n return block.type.toLowerCase() === 'AssessmentQuestion'.toLowerCase();\n });\n\n let topicBlocksSIdCounter = Math.max(\n ...topicBlocks.map(topicBlock => topicBlock?.props?.sId || 0)\n );\n\n let interactionBlocksSIdCounter = Math.max(\n ...interactionBlocks.map(\n interactionBlock => interactionBlock?.props?.sId || 0\n )\n );\n\n //\n let assessmentQuestionBlocksSIdCounter = Math.max(\n ...assessmentQuestionBlocks.map(assessmentQuestionBlock => {\n const sId = assessmentQuestionBlock?.props?.sId;\n\n return sId || 0;\n })\n );\n\n const blocksUpdatedWithSId = (blocks: Block[]) => {\n // filter out the blocks that HAVE sId\n return blocks\n .filter((block: Block) => {\n if (block.props) {\n const { sId } = block.props;\n return !sId;\n }\n })\n .map((block: Block) => {\n const nextBlock = cloneBlock(block);\n\n let sId;\n\n switch (nextBlock.type.toLowerCase()) {\n case 'topic': {\n topicBlocksSIdCounter += 1;\n sId = topicBlocksSIdCounter;\n break;\n }\n\n case 'interaction': {\n interactionBlocksSIdCounter += 1;\n sId = interactionBlocksSIdCounter;\n break;\n }\n\n case 'assessmentquestion': {\n assessmentQuestionBlocksSIdCounter += 1;\n sId = assessmentQuestionBlocksSIdCounter;\n break;\n }\n }\n\n nextBlock.props = {\n ...nextBlock.props,\n sId,\n };\n\n return nextBlock;\n });\n };\n\n const updatedBlocks = [\n ...blocksUpdatedWithSId(topicBlocks),\n ...blocksUpdatedWithSId(interactionBlocks),\n ...blocksUpdatedWithSId(assessmentQuestionBlocks),\n ];\n\n if (!updatedBlocks.length) {\n return;\n }\n\n updatedBlocks.forEach((block: Block) => {\n if (block) {\n store.dispatch(setBlockAction(block));\n } else {\n console.log(`WTF. ${block} is not a block !?!?`);\n }\n });\n}\n\nexport { updateLegacyBlocksWithSId };\n","// import store from 'store';\nimport _store from 'store/next.ts';\n// that'll need to be updated. store will eventually become the default. . .\n\nexport default () => {\n if (parent === window) {\n return _store as any;\n }\n\n try {\n if (parent.getStore) {\n return parent.getStore();\n }\n } catch {\n return _store;\n }\n\n return _store;\n};\n","import getStore from 'services/getStore';\n\nconst store = getStore();\n\nconst values = {\n headerHeight: 70,\n};\n\nconst colors = {\n lPink: '#ff0063',\n lBlue0: '#b3cde0',\n softBlue: '#5596FF',\n lGrey0: '#282a2b',\n lGrey1: '#dee3f3',\n lGrey2: '#ecedf0',\n lGrey3: '#eaeffb',\n lGrey4: '#f5f8fa',\n lTeal0: '#3c95a4',\n lTeal1: '#32d0d0',\n lightBlueGrey: '#e8edff',\n //\n mint: '#00D9D3',\n chameleonMint: '#1D2026',\n purple: '#9E6CFF',\n};\n\nconst focusBorder = '1px solid #2684FF !important';\nconst focusBoxShadow = '0 0 0 1px #2684FF !important';\n\nfunction getButtonFocus(color, shadowBefore: any = null) {\n const { highContrast = false } = store.getState().theme;\n\n return !window.dev()\n ? `\n box-shadow: ${\n shadowBefore ? `${shadowBefore}, ` : ''\n }0 0 0 2px #fff, 0 0 0 ${highContrast ? 5 : 3}px ${color} !important;`\n : '';\n}\n\nconst CALCULATED_LINE_HEIGHT_OFFSET = 1.2;\n\nexport {\n values,\n colors,\n focusBorder,\n focusBoxShadow,\n getButtonFocus,\n CALCULATED_LINE_HEIGHT_OFFSET,\n};\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\n\nconst { lPink } = colors;\n\nconst EmptyBtn = ({\n label,\n tabIndex = null,\n ariaLabel = '',\n disabled,\n onClick,\n style = {},\n children,\n ...props\n}: {\n label?: string;\n tabIndex?: any;\n ariaLabel?: string;\n disabled?: boolean;\n style?: {};\n onClick?: any;\n children: any;\n}) => {\n //\n return (\n <button\n css={css`\n padding: 0;\n border: none;\n font: inherit;\n color: inherit;\n background-color: transparent;\n cursor: pointer;\n &:focus-visible {\n outline: 1px solid ${lPink};\n outline-offset: 3px;\n }\n `}\n style={style}\n {...props}\n disabled={disabled}\n onClick={onClick}\n tab-index={tabIndex}\n aria-label={ariaLabel}\n >\n {children || label}\n </button>\n );\n};\n\nexport default EmptyBtn;\n","/** @jsx jsx */\n\nimport React from 'react';\n// import { css as _css } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport EmptyBtn from 'components/UI/EmptyBtn';\nimport { colors } from 'styles/variables';\n\nconst { lPink, lGrey1 } = colors;\n\nconst EditorBtn = ({ label, onClick, style = {}, ...props }) => {\n let hoverOveride = null as any;\n if (style['hover']) {\n hoverOveride = Object.keys(style['hover'])\n .map(key => `${key}: ${style['hover'][key]} !important;`)\n .join('');\n }\n\n return (\n <EmptyBtn\n label={label}\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 35px;\n min-width: 100px;\n padding: 5px 15px;\n border-radius: 9999px;\n outline: none;\n background: ${lPink};\n color: #fff;\n transition: background 0.1s;\n &:hover {\n background: ${lGrey1} !important;\n color: #000 !important;\n\n ${hoverOveride && hoverOveride}\n }\n `}\n style={style}\n {...props}\n onClick={onClick}\n />\n );\n};\n\nexport default EditorBtn;\n","import React from 'react';\nimport { ErrorModal } from './errorModal';\nimport styled from '@emotion/styled';\nimport EditorBtn from './UI/EditorBtn';\nimport * as Sentry from '@sentry/browser';\n\nconst Cont = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n display: flex;\n`;\n\nconst Backdrop = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n`;\n\nconst Modal = styled.div`\n background: rgb(255, 255, 255);\n border-radius: 30px;\n padding: 32px;\n line-height: 1.6;\n z-index: 1001;\n max-width: 600px;\n box-shadow: 0 0 0 12px rgba(0, 0, 0, 0.2);\n\n & h1 {\n line-height: 2;\n }\n\n & div {\n line-height: 1.6;\n }\n\n & button {\n margin: 16px 0;\n }\n`;\n\nexport class ErrorBoundary extends React.Component<\n any,\n { hasError: boolean; error: any; eventId: any }\n> {\n constructor(props) {\n super(props);\n this.state = { hasError: false, error: undefined, eventId: undefined };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true, error: error };\n }\n\n componentDidCatch(error, info) {\n // You can also log the error to an error reporting service\n Sentry.withScope(scope => {\n scope.setExtras(info);\n const eventId = Sentry.captureException(error);\n this.setState({ eventId });\n });\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n <Cont>\n <Backdrop />\n <Modal>\n <div>\n <h1>Oh no :(</h1>\n <p>Something has gone wrong. The error message provided is:</p>\n <p>\n <strong>\"{this.state.error.toString()}\".</strong>\n </p>\n <p>\n We have been alerted to this error, however if it is\n consistently occuring please fell free to notify us by clicking\n on the support button in the bottom right hand corner.\n </p>\n </div>\n <EditorBtn\n label=\"Reload\"\n onClick={() => {\n window.location.reload();\n }}\n />\n </Modal>\n </Cont>\n );\n }\n\n return this.props.children;\n }\n}\n","import getSubscriptions from './getSubscriptions';\n\nlet subscriptions: any;\n\ntry {\n subscriptions = getSubscriptions() || {};\n} catch (err) {\n subscriptions = {};\n}\n\nconst exposeToChildFrames = () => {\n subscriptions = getSubscriptions(window as any);\n};\n\nconst pubSub = Object.freeze({\n subscribe(name, fN) {\n if (!subscriptions[name]) {\n subscriptions[name] = {\n subscribers: [],\n record: undefined,\n };\n }\n\n if (subscriptions[name].subscribers.includes(fN)) {\n return () => { };\n }\n\n subscriptions[name].subscribers.push(fN);\n\n return () =>\n subscriptions[name].subscribers.splice(\n subscriptions[name].subscribers.indexOf(fN),\n 1\n );\n },\n publish(name, data) {\n if (!subscriptions[name]) {\n return;\n }\n\n subscriptions[name].record = {\n ...subscriptions[name].record,\n ...data,\n };\n\n for (const $ of subscriptions[name].subscribers) {\n $(subscriptions[name].record);\n }\n },\n query(name) {\n return subscriptions[name]\n ? { ...subscriptions[name].store }\n : console.warn(\n `%c ${`there is no store to query on : '${name}' !!! `.toUpperCase()}`,\n 'background: #ff0000; color: #bada55'\n );\n },\n});\n\nexport default pubSub;\nexport { exposeToChildFrames };\n","export const CHAMELEON_CACHE_v1 = 'chameleon-cache-v1';\n\nexport const getCache = async () => {\n let $;\n // return caches.open(CHAMELEON_CACHE_v1);\n try {\n // throw 'ERRORz';\n\n $ = caches.open(CHAMELEON_CACHE_v1);\n } catch (err) {\n $ = {\n match() {\n return Promise.resolve(undefined);\n },\n add() {\n return Promise.resolve(undefined);\n },\n put() {\n return undefined;\n },\n delete() {\n return undefined;\n },\n };\n }\n\n return $;\n};\n","import uuid from 'uuidv4';\n\nconst getSubscriptionsWindow = (WINDOW = window) => {\n for (const key of Object.keys(WINDOW)) {\n const prefix = String(WINDOW.location);\n\n if (key.includes(prefix)) {\n const keyId = key.replace(prefix, '');\n const getId = WINDOW[key][keyId];\n\n const id = typeof getId === 'function' ? getId(true) : '.';\n\n if (keyId === id) {\n return WINDOW[key][id]();\n }\n }\n }\n\n if (WINDOW === WINDOW.parent) {\n return;\n }\n\n return getSubscriptionsWindow((WINDOW as any).parent);\n};\n\nconst getSubscriptions = (window: any = null) => {\n if (window) {\n const id = uuid();\n const _ = {};\n\n window[`${String(window.location)}${id}`] = {\n [id]($) {\n return $ ? id : _;\n },\n };\n }\n\n return getSubscriptionsWindow();\n};\n\nexport default getSubscriptions;\n","import { useState, useEffect } from 'react';\nimport pubSub from './pubSub';\n\nconst usePubSub = name => {\n const [state, setState] = useState(pubSub.query(name));\n\n useEffect(() => {\n const pS = pubSub.subscribe(name, setState);\n\n return () => pS();\n }, []);\n\n return [\n state,\n $ => {\n pubSub.publish(name, $);\n },\n ];\n};\n\nexport default usePubSub;\n","import pubSub, { exposeToChildFrames } from './pubSub';\nimport usePubSub from './usePubSub';\n\nexport default pubSub;\nexport { exposeToChildFrames, usePubSub };\n","function getIsValidHexColor(_hex_) {\n return /^#([0-9a-f]{3}){1,2}$/i.test(_hex_);\n}\n\nconst hexToRgb = (_hex_: string) => {\n const isValidHexColor = getIsValidHexColor(_hex_);\n\n if (!isValidHexColor) {\n // console.warn(\n // `%c ${_hex_ ||\n // 'undefined'} is not a valid hex color. rgb(0, 0, 0) will be returned.`,\n // 'background: #ff0000; color: #bada55'\n // );\n }\n\n let hex: string | string[] = isValidHexColor ? _hex_ : '#000';\n //\n if (hex.length === 4) {\n hex = hex.replace('#', '').split('');\n hex = `#${hex\n .map(entry => {\n return `${entry}${entry}`;\n })\n .join('')}`;\n }\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n return ['r', 'g', 'b'].reduce((acc, curr, i) => {\n return {\n ...acc,\n [curr]: !result ? 0 : parseInt(result[i + 1], 16),\n };\n }, {}) as any;\n};\n\nconst getHexToRgbWithDefaultFallback = (\n hex: string,\n defaultColor: string = '#fff'\n) => {\n const isValidHexColor = getIsValidHexColor(hex);\n\n if (!isValidHexColor) {\n console.warn(\n `%c ${hex ||\n 'undefined'} is not a valid hex color. the default color will be returned as rgb(. . .)`,\n 'background: #ff0000; color: #bada55'\n );\n }\n\n if (!isValidHexColor) {\n return hexToRgb(defaultColor);\n }\n\n return hexToRgb(hex);\n};\n\nexport default hexToRgb;\nexport { getHexToRgbWithDefaultFallback };\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { css, jsx } from '@emotion/core';\nimport lizard from 'assets/Loader_Logo_2.gif'; // KeyImage.png'; // lizard.svg';\nimport { colors } from 'styles/variables';\nimport 'services/elementRemovePolyfill';\nimport { getCache } from 'services/imageCache';\nimport { State } from 'store/store';\nimport { useSelector } from 'react-redux';\nimport pubSub from 'services/pubSub';\nimport hexToRGB from 'services/hexToRGB';\n\nconst { lGrey1, mint } = colors;\nconst moduleImagesPreloaderDomContainerId = 'module-images-preloader';\n\n// Image loading creates a new promise and wraps the DOM based\n// image loading element. IF there is an error, we just mark it as resolved and\n// move on, however we probably want to adjust this in the future to report on\n// possible failures\nconst loadImage = (src, cb): Promise<any> => {\n return new Promise(resolve => {\n const img = new Image();\n img.src = src;\n img.crossOrigin = 'anonymous';\n\n img.onload = () => {\n cb(src);\n resolve(src);\n };\n\n img.onerror = () => {\n cb(src);\n resolve(src);\n };\n });\n};\n\ninterface IModuleImagesPreloader {\n images: any[];\n}\n\nconst ModuleImagesPreloader = ({ images }: IModuleImagesPreloader) => {\n //\n const [imgsLoaded, setImgsLoaded] = useState(false);\n const [whichImagesLoaded, setImgAsLoaded] = useState<String[]>([]);\n const [minDisplayTime, setMinDisplayTime] = useState(false);\n const [boot, setBoot] = useState(false);\n\n const [showEditPreloader, setShowEditPreloader] = useState<boolean>(false);\n\n let giveFocusToFirstSectionOnLoad = useSelector((state: State) => {\n return state?.theme?.giveFocusToFirstSectionOnLoad;\n });\n\n // if we're launching an older module that won't yet have the entry on theme\n // undefined is a true\n if (giveFocusToFirstSectionOnLoad === undefined) {\n giveFocusToFirstSectionOnLoad = true;\n }\n\n // giveFocusToFirstSectionOnLoad = false; // for patching\n\n const modulePreloaderSettings = useSelector((state: State) => {\n const AdvancedEditing = Object.values(state.blocks).find(b => {\n return b.type === 'AdvancedEditing';\n });\n\n if (AdvancedEditing) {\n return AdvancedEditing.props?.modulePreloaderSettings || {};\n }\n\n return {};\n });\n\n const {\n modulePreloaderbackgroundColor = '#fff',\n moduleLoadingMessage = 'Module loading',\n } = modulePreloaderSettings;\n\n let progressBarColor = modulePreloaderSettings.progressBarColor || mint;\n const { r, g, b } = hexToRGB(progressBarColor);\n\n let src = lizard;\n\n if (modulePreloaderSettings.src) {\n src = modulePreloaderSettings.src;\n }\n\n const preLoader = useRef<any>(null);\n const documentTitle = useRef<string>(document.title);\n\n const moduleImagesPreloaderDomContainer = useRef(\n document.querySelector<HTMLDivElement>(\n `#${moduleImagesPreloaderDomContainerId}`\n )\n );\n\n if (!boot && !moduleImagesPreloaderDomContainer.current) {\n moduleImagesPreloaderDomContainer.current = document.createElement(\n 'div'\n ) as HTMLDivElement;\n\n moduleImagesPreloaderDomContainer.current.id = moduleImagesPreloaderDomContainerId;\n\n moduleImagesPreloaderDomContainer.current.style.position = 'fixed';\n moduleImagesPreloaderDomContainer.current.style.left = '0px';\n moduleImagesPreloaderDomContainer.current.style.top = '0px';\n moduleImagesPreloaderDomContainer.current.style.width = '100vw';\n moduleImagesPreloaderDomContainer.current.style.height = '100vh';\n moduleImagesPreloaderDomContainer.current.style.zIndex = '2147483647';\n //\n document.body.appendChild(moduleImagesPreloaderDomContainer.current);\n }\n\n useEffect(() => {\n const root = document.querySelector<HTMLDivElement>('#root');\n\n if (!boot && root) {\n document.title = 'Module loading';\n root.setAttribute('aria-hidden', 'true');\n root.setAttribute('tabindex', '-1');\n\n return;\n }\n\n document.title = documentTitle.current;\n root?.setAttribute('aria-hidden', 'false');\n root?.setAttribute('tabindex', '0');\n\n if (giveFocusToFirstSectionOnLoad === false) {\n if (document.activeElement) {\n (document.activeElement as HTMLElement)?.blur();\n }\n\n console.log('DO NOT GIVE CONTENT FOCUS', document.activeElement);\n\n return;\n }\n\n const sections = Array.from(\n document.querySelectorAll('section')\n ) as HTMLElement[];\n\n if (sections && sections[0]) {\n // might need to do something here if the page jumps to top\n // from giving first interaction focus\n //\n\n if (!window.location.hash) {\n const modalContainer = document.querySelector(\n '#modal-container'\n ) as HTMLElement;\n\n if (modalContainer?.hasChildNodes()) {\n // console.log('modal is active. do not take focus away from modal');\n return;\n }\n\n //\n sections[0].focus();\n }\n\n // if we have a hash and have navigated to it\n // we should give IT focus\n if (window.location.hash) {\n const section = sections.find(section => {\n return section.id === window.location.hash.replace('#', '');\n });\n\n if (section) {\n section.focus();\n return;\n }\n }\n\n //\n sections[0].focus();\n }\n\n return () => {\n // set the focus back to root ?\n // is doing it above. double tap it maybe ?\n };\n }, [boot]);\n\n // Show the loader for at least 1000 ms\n useEffect(() => {\n setTimeout(() => {\n !minDisplayTime && setMinDisplayTime(true);\n }, 1000);\n }, []);\n\n useEffect(() => {\n if (!imgsLoaded) {\n console.time('TIME TO IMAGES LOADED');\n } else {\n console.timeEnd('TIME TO IMAGES LOADED');\n }\n }, [imgsLoaded]);\n\n useEffect(() => {\n whichImagesLoaded.length === images.length && setImgsLoaded(true);\n }, [whichImagesLoaded]);\n\n // Preload Images on load\n useEffect(() => {\n const fun = async () => {\n const cacheAvailable = 'caches' in self;\n\n if (!cacheAvailable) {\n images.map((imgSrc: string) => {\n return loadImage(imgSrc, () => {\n setImgAsLoaded(whichImagesLoaded => [...whichImagesLoaded, imgSrc]);\n });\n });\n\n return;\n }\n\n const cache = await getCache();\n\n images.map(async (imgSrc: string) => {\n const resp = await cache.match(imgSrc);\n\n if (!resp) {\n try {\n await cache.add(imgSrc);\n } catch (err) {\n console.log(err);\n }\n }\n\n setImgAsLoaded(whichImagesLoaded => [...whichImagesLoaded, imgSrc]);\n });\n\n return;\n };\n\n fun();\n }, []);\n\n // Fade out the loading screen after the fade out is completed,\n // remove the loading screen from the DOM\n useEffect(() => {\n if (!preLoader.current) {\n return;\n }\n\n const fader = () => {\n setBoot(true);\n };\n\n preLoader.current?.addEventListener('transitionend', fader);\n\n return () => {\n preLoader.current?.removeEventListener('transitionend', fader);\n };\n }, []);\n\n useEffect(() => {\n // do the polyfill for ie ?\n\n if (boot) {\n moduleImagesPreloaderDomContainer.current?.remove();\n }\n }, [boot]);\n\n useEffect(() => {\n const pS = pubSub.subscribe(\n 'SHOW_EDIT_PRELOADER',\n ({ showEditPreloader }) => {\n setShowEditPreloader(showEditPreloader);\n }\n );\n\n return () => {\n setShowEditPreloader(false);\n pS();\n };\n }, []);\n\n const [mockPercentLoaded, setMockPercentLoaded] = useState<number>(0);\n\n useEffect(() => {\n if (!window.dev() || !showEditPreloader) {\n return;\n }\n\n let tick = setInterval(() => {\n setMockPercentLoaded(Math.round(Math.random() * 100));\n }, 1000);\n\n return () => {\n clearInterval(tick);\n };\n }, [showEditPreloader]);\n\n const percentLoaded = window.dev()\n ? mockPercentLoaded\n : (whichImagesLoaded.length / images.length) * 100;\n\n if (boot || !moduleImagesPreloaderDomContainer.current) {\n return null;\n }\n\n let opacity = `opacity: ${imgsLoaded ? 0 : 1};`;\n\n if (window.dev()) {\n if (!showEditPreloader) {\n // console.log('hide preloader. return null');\n\n if (moduleImagesPreloaderDomContainer.current) {\n moduleImagesPreloaderDomContainer.current.style.display = 'none';\n }\n return null;\n } else {\n // console.log('show preloader');\n\n if (moduleImagesPreloaderDomContainer.current) {\n moduleImagesPreloaderDomContainer.current.style.display = '';\n }\n opacity = '';\n }\n }\n\n return createPortal(\n <div\n ref={preLoader}\n css={css`\n position: fixed;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n left: 0;\n top: 0;\n width: 100vw;\n height: 100vh;\n background: ${modulePreloaderbackgroundColor};\n\n ${opacity}\n\n transition: opacity 0.35s;\n z-index: 2147483638;\n `}\n >\n <img\n src={src}\n alt=\"\"\n css={css`\n max-width: 265px;\n `}\n />\n\n <div\n css={css({\n width: 250,\n fontFamily: 'Poppins, Sans serif',\n fontWeight: 200,\n fontSize: 22,\n })}\n >\n <div\n css={css({\n textAlign: 'center',\n color: progressBarColor,\n })}\n tabIndex={0}\n aria-label={moduleLoadingMessage}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(percentLoaded)}\n role=\"progressbar\"\n >\n {moduleLoadingMessage}\n </div>\n\n <div\n css={css({\n width: '100%',\n height: 15,\n margin: '30px 0 0 0',\n borderRadius: 9999,\n overflow: 'hidden',\n background: `rgba(${r}, ${g}, ${b}, 0.2)`,\n })}\n >\n <div\n style={{\n width: `${percentLoaded}%`,\n height: 'inherit',\n borderRadius: 9999,\n background: progressBarColor,\n transition: 'width 0.5s',\n }}\n />\n </div>\n </div>\n </div>,\n moduleImagesPreloaderDomContainer.current\n );\n};\n\nexport default ModuleImagesPreloader;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { State } from 'store/store';\nimport styled from '@emotion/styled';\nimport EditorBtn from './UI/EditorBtn';\n\nconst Cont = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n justify-content: center;\n align-items: center;\n display: flex;\n`;\n\nconst Backdrop = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n`;\n\nconst Modal = styled.div`\n background: rgb(255, 255, 255);\n border-radius: 30px;\n padding: 32px;\n line-height: 1.6;\n z-index: 1001;\n max-width: 600px;\n box-shadow: 0 0 0 12px rgba(0, 0, 0, 0.2);\n\n & h1 {\n line-height: 2;\n }\n\n & div {\n line-height: 1.6;\n }\n\n & button {\n margin: 16px 0;\n }\n`;\n\nconst errorModal = ({ hasError, error, children }) => {\n if (hasError) {\n // You can render any custom fallback UI\n return (\n <Cont>\n <Backdrop />\n <Modal>\n {children(error)}\n <EditorBtn\n label=\"Reload\"\n onClick={() => {\n window.location.reload();\n }}\n />\n </Modal>\n </Cont>\n );\n }\n\n return null;\n};\n\nexport const ErrorModal = connect((state: State) => {\n return {\n hasError: state.hasError,\n error: state.error,\n };\n})(errorModal);\n","import getStore from 'services/getStore';\nimport { focusBlockAction } from 'actions/focusBlockAction';\n\nexport default block => {\n getStore().dispatch(focusBlockAction(block));\n};\n","import { Block } from '@chameleoncreator/creator-app';\n\nexport const focusBlockAction = (block: Block) => ({\n type: 'FOCUS_BLOCK',\n data: block,\n});\n","/** @jsx jsx */\r\n\r\nimport { jsx } from '@emotion/core';\r\nimport Edit from 'assets/edit.svg';\r\n\r\nconst EditMarker = ({ style = {} }) => {\r\n return (\r\n <div\r\n className=\"chameleon-edit-marker\"\r\n style={{\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n width: 16,\r\n height: 16,\r\n margin: 0,\r\n padding: 0,\r\n background: `url(${Edit}) no-repeat`,\r\n ...style,\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default EditMarker;\r\n","import getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\n\nconst getTopicSId = topic => {\n const topicId = topic.id;\n let topicSId = topic.props?.sId;\n\n topicSId = topicSId || topicId;\n\n const interactions = getInteractionsInTopic(topic);\n\n // only list topics that have interactions\n if (!interactions.length) {\n return undefined;\n }\n\n const interaction = interactions[0];\n const interactionId = interaction.id;\n let interactionSId = interaction.props?.sId;\n\n interactionSId = interactionSId || interactionId;\n\n const location = `${topicSId}/${interactionSId}`;\n // console.log('LOCATION:', location);\n\n return location;\n};\n\nexport default getTopicSId;\n","const getSectionInView = () => {\n const sections = Array.from(document.querySelectorAll('section'));\n\n // reverse the sections to find the section we want from ' bottom up '\n const sectionsReversed = sections.slice().reverse();\n\n //\n const section: any = sectionsReversed.find((i: any) => {\n const { height, top } = i.getBoundingClientRect();\n\n // if height ( is not 0 ). to ignore sections not yet rendered into view\n if (height && top < window.innerHeight / 2) {\n return i;\n }\n });\n\n return {\n sections,\n section,\n index: sections.indexOf(section),\n };\n};\n\nexport default getSectionInView;\n","import getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport getSectionInView from 'services/getSectionInView';\n\nconst getCurrentLocation = () => {\n const currentTopic: any = getCurrentTopic();\n const { sections, section, index } = getSectionInView();\n const interactions = getInteractionsInTopic(currentTopic);\n\n if (!interactions || interactions.length === 0) {\n return;\n }\n\n const interaction = interactions[index];\n\n return `${currentTopic.props.sId || currentTopic.id}/${interaction.props!.sId || interaction.id}`;\n};\n\nexport default getCurrentLocation;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\n\nconst CloseBtn = ({\n color,\n style = {},\n onClick,\n}: {\n color: string;\n style?: { [key: string]: any };\n onClick?: () => void;\n}) => (\n <div\n // css={css({\n // ':focus': {\n // background: 'blue',\n // },\n // })}\n style={{\n position: 'relative',\n width: 20,\n height: 20,\n transform: 'rotate(45deg)',\n cursor: 'pointer',\n ...style,\n }}\n onClick={onClick}\n >\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '100%',\n height: 1,\n background: color,\n }}\n />\n <div\n style={{\n position: 'absolute',\n left: '50%',\n top: 0,\n width: 1,\n height: '100%',\n background: color,\n }}\n />\n </div>\n);\n\nexport default CloseBtn;\n","import {\n graphicHeaderDefaults,\n standardHeaderDefaults,\n} from 'factories/header';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\n\nconst getHeaderElement = (blocks, element) => {\n return element ? blocks[element.id] : {};\n};\n\nconst reRenderSelector = (prev, next) => {\n if (window.dev()) {\n return next !== prev;\n }\n\n return true;\n};\n\nexport const useHeader = () => {\n const header = useSelector((state: State) => {\n return getHeaderElement(state.blocks, state.header);\n }, reRenderSelector);\n\n const standardHeader = useSelector((state: State) => {\n return getHeaderElement(state.blocks, state.standardHeader);\n }, reRenderSelector);\n\n const graphicHeader = useSelector((state: State) => {\n return getHeaderElement(state.blocks, state.graphicHeader);\n }, reRenderSelector);\n\n const standardHeaderLogo = useSelector((state: State) => {\n return getHeaderElement(state.blocks, state.standardHeaderLogo);\n }, reRenderSelector);\n\n const graphicHeaderBackground = useSelector((state: State) => {\n return getHeaderElement(state.blocks, state.graphicHeaderBackground);\n }, reRenderSelector);\n\n const graphicHeaderLogo = useSelector((state: State) => {\n return getHeaderElement(state.blocks, state.graphicHeaderLogo);\n }, reRenderSelector);\n\n return {\n block: header,\n props: {\n headerStyle: 'standard',\n ...header?.props,\n },\n\n standard: {\n block: standardHeader,\n props: {\n ...standardHeaderDefaults,\n ...standardHeader?.props,\n headerLogo: standardHeaderLogo?.props?.src,\n },\n logoBlock: standardHeaderLogo,\n },\n graphic: {\n block: graphicHeader,\n props: {\n ...graphicHeaderDefaults,\n ...graphicHeader?.props,\n headerBackgroundImage: graphicHeaderBackground?.props?.src,\n headerLogo: graphicHeaderLogo?.props?.src,\n },\n backgroundBlock: graphicHeaderBackground,\n logoBlock: graphicHeaderLogo,\n },\n } as any;\n};\n","/** @jsx jsx */\n\nimport { Fragment as _, useRef, useEffect, useMemo, useCallback } from 'react';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport getTopicSId from 'services/getTopicSId';\nimport getCurrentLocation from 'services/getCurrentLocation';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport { getButtonFocus } from 'styles/variables';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport CloseBtn from 'components/UI/CloseBtn';\nimport { useHeader } from 'services/useHeader';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport {\n Block,\n Blocks,\n BlockList,\n} from '@chameleoncreator/creator-app/build/utils/block';\n\nconst { lGrey0 } = colors;\n\nconst width = '24px';\n\nconst open_menu_kf = keyframes`\nfrom {\n\topacity: 0;\n\ttransform: translateX(100%);\n}\nto {\n\topacity: 1;\n\ttransform: translateX(-10px);\n}\n`;\n\nconst close_menu_kf = keyframes`\n0% {\n\topacity: 1;\n\ttransform: translateX(0%);\n}\n35% {\n\topacity: 1;\n\ttransform: translateX(-10%);\n}\n100% {\n\topacity: 0;\n\ttransform: translateX(100%);\n}\n`;\n\ninterface IMenuProps {\n menu?: boolean;\n color?: string;\n close?: () => void;\n}\n\nlet topics: BlockList;\nlet interactionsInTopics;\n\nconst getTopicsComplete = (interactionsInTopics, interactionsSeen) => {\n const temp = {};\n Object.keys(interactionsInTopics).forEach(key => {\n const interactions = interactionsInTopics[key];\n temp[key] = interactions.every(i => {\n return interactionsSeen.includes(i.id);\n });\n });\n\n return temp;\n};\n\n// const cleanName = name => {\n// return name?.toLowerCase()?.replace(/ /g, '');\n// };\n\nconst getAnchorId = (a, prefix = 'topic-id-') => {\n if (!a) {\n return '';\n }\n\n return a?.id?.replace(prefix, '');\n};\n\nconst Menu = ({ menu, color = lGrey0, close }) => {\n const init = useRef<boolean>(false);\n const nav = useRef<HTMLDivElement | null>(null);\n const tabIndex = useRef<number>(-1);\n const scrollableContainer = useRef<HTMLDivElement>(null);\n const menuItemsContainer = useRef<HTMLUListElement>(null);\n const anchors = useRef<HTMLElement[]>([]);\n const closeButton = useRef<HTMLButtonElement | null>(null);\n\n const currentTopicId = useSelector((state: State) => {\n return state.currentTopic;\n });\n\n if (window.dev() || !topics) {\n // console.log('get topics only once in output');\n topics = getTopics();\n }\n\n if (window.dev() || !interactionsInTopics) {\n // console.log('get interactionsInTopics only once in output');\n //\n interactionsInTopics = topics.reduce((acc, curr, index) => {\n let topicName = curr?.props?.name;\n //\n return {\n ...acc,\n [curr.id]: getInteractionsInTopic(curr),\n };\n }, {});\n }\n\n const {\n menuBackgroundColor,\n menuTextAndCloseColor,\n menuTextHoverColor,\n menuTextActiveColor,\n } = useSelector((state: State) => {\n const menuColors = ((state.theme.menu as unknown) as any) || {};\n\n return {\n menuBackgroundColor: menuColors['Menu background colour'] || '#fff',\n menuTextAndCloseColor: menuColors['Menu text and close colour'] || '#000',\n menuTextHoverColor: menuColors['Menu text hover colour'] || '#0000ff',\n menuTextActiveColor: menuColors['Menu text active colour'] || '#ff0000',\n };\n });\n\n const header = useHeader();\n //\n\n const { disableNavigationToIncompleteTopics } = header[\n header.props.headerStyle\n ].props;\n\n const interactionsSeen = useSelector((state: State) => {\n return state.interactionsSeen;\n });\n\n const topicsComplete = getTopicsComplete(\n interactionsInTopics,\n interactionsSeen\n );\n\n useEffect(() => {\n if (closeButton.current && menu) {\n closeButton.current.focus();\n }\n }, [menu]);\n\n useEffect(() => {\n if (menu) {\n // we set the tabIndex at -1 so the first tab action enters the menu at index 0\n tabIndex.current = -1;\n window.addEventListener('keydown', keyOverrides);\n }\n\n function keyOverrides(e) {\n switch (e.key) {\n case 'Escape': {\n return close();\n }\n\n case 'Tab': {\n e.preventDefault();\n\n if (nav.current && !anchors.current.length) {\n //\n //\n anchors.current = [\n ...Array.from(nav.current.querySelectorAll('a'))\n .filter((a, index) => {\n //\n if (!disableNavigationToIncompleteTopics) {\n return true;\n }\n\n return topicsComplete[getAnchorId(a)];\n })\n .filter((a, index) => {\n return getAnchorId(a) !== currentTopicId;\n }),\n ];\n }\n\n if (e.shiftKey) {\n if (tabIndex.current > 0) {\n tabIndex.current = tabIndex.current - 1;\n }\n } else {\n //\n if (tabIndex.current < anchors.current.length - 1) {\n tabIndex.current = tabIndex.current + 1;\n } else {\n // loop back around to the close btn\n\n tabIndex.current = 0;\n }\n }\n\n if (\n closeButton.current &&\n !anchors.current.includes(closeButton.current)\n ) {\n // once we tab into the actual anchors / menu items list\n // we add the close btn to that list\n // then we can nav to it with the usual tab flow\n //\n\n anchors.current = [closeButton.current, ...anchors.current];\n tabIndex.current = 1;\n //\n }\n\n anchors.current[tabIndex.current]?.focus();\n }\n }\n }\n\n return () => {\n // clear the anchors out so we can start fresh on next menu open\n anchors.current = [];\n window.removeEventListener('keydown', keyOverrides);\n };\n }, [menu]);\n\n useEffect(() => {\n if (!nav.current) {\n return;\n }\n\n const onAnimationEnd = (e: any) => {\n const { target } = e;\n if (target == nav.current) {\n // why wouldn't it be ???\n if (!menu && init.current) {\n requestAnimationFrame(() => {\n if (nav.current) {\n nav.current.style.visibility = 'hidden';\n }\n });\n }\n }\n };\n\n nav.current.addEventListener('animationend', onAnimationEnd);\n\n return () => {\n nav.current &&\n nav.current.removeEventListener('animationend', onAnimationEnd);\n };\n }, [menu]);\n\n useEffect(() => {\n if (menu && !init.current) {\n init.current = true;\n }\n }, [menu]);\n\n useEffect(() => {\n //\n // this is so we can that nicer bit of padding around the content\n // when scrolling kicks in\n // otherwise it butts right up against the scrollBar\n if (scrollableContainer.current && menuItemsContainer.current) {\n const { height } = menuItemsContainer.current.getBoundingClientRect();\n const maxHeight: number = window.innerHeight - 175;\n\n scrollableContainer.current.style.padding = `0 ${\n height > maxHeight ? 10 : 0\n }px 0 0`;\n }\n }, [menu]);\n\n let closeBtnFocus: any = getButtonFocus(menuTextAndCloseColor);\n\n closeBtnFocus = closeBtnFocus?.split(',')[1]?.trim();\n\n return (\n <nav\n ref={nav}\n aria-hidden={!menu}\n aria-label=\"navigation\"\n css={css`\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: 30px;\n\t\t\t\t\ttop: 10px;\n\t\t\t\t\tmin-width: 300px;\n\t\t\t\t\tpadding: 65px 20px 20px 20px;\n\t\t\t\t\tbackground: ${menuBackgroundColor};\n\t\t\t\t\t${!menu &&\n !init.current &&\n `\n visibility: hidden;`}\n\n\t\t\t\t\tanimation: ${menu ? open_menu_kf : close_menu_kf} 0.3s forwards;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n\n @media (max-width: 480px) {\n right: 25px;\n top: 5px;\n width: calc(100vw - 10px);\n padding: 45px 10px 20px 15px;\n }\n `}\n style={{\n ...(menu &&\n init.current && {\n visibility: 'visible',\n }),\n }}\n tabIndex={-1}\n >\n <button\n ref={closeButton}\n className=\"fader_1s\"\n css={css({\n outline: 'none',\n border: 'none',\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n right: 20,\n top: 13,\n width,\n height: width,\n background: 'transparent',\n ':focus': {\n boxShadow: `0 0 0 2px ${menuBackgroundColor}, ${closeBtnFocus}`,\n },\n\n '@media (max-width: 480px)': {\n right: 10,\n top: 8,\n },\n })}\n onClick={() => {\n close();\n }}\n aria-label=\"close menu\"\n >\n <CloseBtn\n color={menuTextAndCloseColor}\n style={{ width, height: width }}\n />\n </button>\n\n <div\n ref={scrollableContainer}\n css={css({\n maxHeight: 'calc(100vh - 175px)',\n overflowY: 'auto',\n })}\n >\n <ul ref={menuItemsContainer}>\n {topics\n .filter((t: any) => {\n return !t.props.hiddenFromMenu;\n })\n .map((t: any, index: number, arr: any) => {\n const { id } = t;\n const { name } = t.props;\n const isCurrentTopic = id === currentTopicId;\n\n let disableNav = '';\n if (disableNavigationToIncompleteTopics) {\n if (!topicsComplete[id]) {\n disableNav = `\n color: ${menuTextAndCloseColor};\n opacity: 0.5;\n pointer-events: none;\n `;\n }\n }\n\n return (\n <li\n key={id}\n css={css`\n margin: 5px 0;\n text-align: right;\n cursor: pointer;\n list-style: none;\n // font-weight: ${isCurrentTopic ? 700 : 'normal'};\n \n line-height: ${1.2 * 1.5}em;\n pointer-events: ${isCurrentTopic ? 'none' : 'auto'};\n\n a:link {\n color: ${\n isCurrentTopic\n ? menuTextActiveColor\n : menuTextAndCloseColor\n };\n }\n \n a:hover {\n color: ${menuTextHoverColor};\n }\n\n a:focus {\n opacity: 1 !important;\n color: ${menuTextHoverColor};\n }\n\n ${disableNav}\n \n `}\n >\n <a\n id={`topic-id-${id}`}\n href={!disableNav ? `#${id}` : undefined}\n onClick={e => {\n e.preventDefault();\n\n const topic = topics.find((t: any) => {\n return t.id === id;\n });\n\n const targetLocation = getTopicSId(topic);\n\n if (!targetLocation) {\n return;\n }\n\n (window as any).locationHistory = getCurrentLocation();\n //\n\n window.location.hash = targetLocation;\n }}\n onKeyUp={e => {\n if (e.key === ' ') {\n e.currentTarget.click();\n }\n }}\n {...(id === getCurrentTopic()?.id\n ? { 'aria-current': 'page' }\n : {})}\n role={disableNav ? 'link' : undefined}\n aria-disabled={disableNav ? true : undefined}\n >\n {name || id}\n </a>\n </li>\n );\n })}\n </ul>\n </div>\n </nav>\n );\n};\n\nexport { Menu };\n","import styled from '@emotion/styled';\n\nexport const VisuallyHidden = styled.span`\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n`;\n\nexport const VisuallyHiddenLink = styled.a`\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n`;\n","/** @jsx jsx */\n\nimport { useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport getStore from 'services/getStore';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport setCurrentTopic from 'services/apiHelpers/setCurrentTopic';\nimport isIE from 'services/isIE';\nimport { VisuallyHidden } from 'components/UI/VisuallyHidden';\nimport pubSub from 'services/pubSub';\nimport onScrollEnds from 'services/onScrollEnds';\nimport getSectionInView from 'services/getSectionInView';\nimport { getTopicsNotHiddenFromNextAndBackNavigation } from 'services/getTopicsNotHiddenFromNextAndBackNavigation';\n\nconst store = getStore();\nconst { lGrey2 } = colors;\n\nlet firstSection;\nlet scrolling;\n\nexport const backBtnOnClick = () => {\n // are we in an assessment ?\n const { blocks } = store.getState();\n\n const interaction = blocks[window['sectionInView'].id];\n const interactionIsAnAssessmentQuestion =\n interaction?.meta?.subType === 'AssessmentQuestion';\n\n if (window.locationHistory && !interactionIsAnAssessmentQuestion) {\n const locationHistory = window.locationHistory;\n\n window.location.hash = locationHistory;\n\n const checkHistory = setInterval(() => {\n if (locationHistory !== window.locationHistory) {\n clearInterval(checkHistory);\n\n requestAnimationFrame(\n () =>\n (window.location.hash = Math.random()\n .toString(16)\n .substr(2, 8))\n );\n\n (window as any).locationHistory = null;\n }\n }, 1000 / 60);\n\n return;\n }\n //\n\n const { sections, index } = getSectionInView();\n\n const prevSection = sections[index - 1];\n\n if (prevSection) {\n prevSection.scrollIntoView({\n behavior: 'smooth',\n });\n\n onScrollEnds(() => {\n prevSection.focus();\n });\n } else {\n navToPrevTopic();\n }\n};\n\nconst Arrow = ({ color }) => {\n return (\n <svg width=\"9px\" height=\"15px\" viewBox=\"0 0 9 15\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g\n transform=\"translate(-1206.000000, -566.000000)\"\n stroke={color}\n strokeWidth=\"2\"\n >\n <polyline\n transform=\"translate(1210.000000, 573.500000) rotate(-90.000000) translate(-1210.000000, -573.500000)\"\n points=\"1216.5 570.5 1210 576.5 1203.5 570.5\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nconst navToPrevTopic = () => {\n let { currentTopic } = store.getState();\n const topics = getTopics();\n\n const topicsNotHiddenFromNextAndBackNavigation = getTopicsNotHiddenFromNextAndBackNavigation(\n topics\n );\n\n const prevTopic =\n topicsNotHiddenFromNextAndBackNavigation[\n topicsNotHiddenFromNextAndBackNavigation.findIndex(\n t => t.id === currentTopic\n ) - 1\n ];\n\n if (!prevTopic) return;\n\n setCurrentTopic(prevTopic.id);\n\n requestAnimationFrame(() => {\n window.scrollTo(0, document.body.scrollHeight);\n\n const sections = Array.from(document.querySelectorAll('section'));\n\n const lastSection = sections[sections.length - 1];\n // console.log(lastSection);\n\n if (lastSection) {\n // const hBB = lastSection.querySelector(\n // `#hidden-back-button-${lastSection.id}`\n // ) as HTMLButtonElement;\n // console.log({ hBB });\n\n lastSection.scrollIntoView({\n behavior: 'instant',\n });\n\n // hBB?.focus();\n }\n });\n};\n\nconst BackBtn = ({ currentTopic, topics, color, outline = false }) => {\n if (!currentTopic) {\n currentTopic = topics[0]?.id;\n }\n\n const backBtn = useRef<HTMLAnchorElement | null>(null);\n\n useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n // if we're not in the first topic. return;\n if (topics.findIndex(t => t.id === currentTopic.id) !== 0) {\n return;\n }\n\n if (!firstSection) {\n firstSection = document.querySelector('section');\n if (!firstSection) {\n return;\n }\n }\n\n const onScroll = () => {\n clearTimeout(scrolling);\n\n scrolling = setTimeout(() => {\n const { top } = firstSection.getBoundingClientRect();\n\n if (top < 0) {\n backBtn.current!.style.opacity = '1';\n backBtn.current!.style.pointerEvents = 'auto';\n backBtn.current!.setAttribute('aria-hidden', 'false');\n } else {\n backBtn.current!.style.opacity = '0.1';\n backBtn.current!.style.pointerEvents = 'none';\n backBtn.current!.setAttribute('aria-hidden', 'true');\n }\n\n // console.log(backBtn.current!.getAttribute('aria-hidden'));\n }, 100);\n };\n\n onScroll();\n window.addEventListener('scroll', onScroll);\n\n return () => {\n firstSection = null;\n window.removeEventListener('scroll', onScroll);\n };\n }, [currentTopic]);\n\n useEffect(() => {\n pubSub.subscribe('HILITE_CHAMELEON_BACK_BUTTON', ({ toggle }) => {\n backBtn.current!.style.boxShadow = toggle\n ? `0 0 0 2px #fff, 0 0 0 3px ${color}`\n : '';\n });\n }, []);\n\n // const onClick = () => {\n // // are we in an assessment ?\n // const { blocks } = store.getState();\n\n // const interaction = blocks[window['sectionInView'].id];\n // const interactionIsAnAssessmentQuestion =\n // interaction?.meta?.subType === 'AssessmentQuestion';\n\n // if (window.locationHistory && !interactionIsAnAssessmentQuestion) {\n // const locationHistory = window.locationHistory;\n\n // window.location.hash = locationHistory;\n\n // const checkHistory = setInterval(() => {\n // if (locationHistory !== window.locationHistory) {\n // clearInterval(checkHistory);\n\n // requestAnimationFrame(\n // () =>\n // (window.location.hash = Math.random()\n // .toString(16)\n // .substr(2, 8))\n // );\n\n // (window as any).locationHistory = null;\n // }\n // }, 1000 / 60);\n\n // return;\n // }\n // //\n\n // const { sections, index } = getSectionInView();\n\n // const prevSection = sections[index - 1];\n\n // if (prevSection) {\n // prevSection.scrollIntoView({\n // behavior: 'smooth',\n // });\n\n // onScrollEnds(() => {\n // prevSection.focus();\n // });\n // } else {\n // navToPrevTopic();\n // }\n // };\n\n return (\n <a\n ref={node => {\n if (!backBtn.current) backBtn.current = node;\n }}\n id=\"chameleon-back-button\"\n // href=\"#go-back\"\n title=\"Return to previous interaction\"\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n transform: scaleX(-1);\n transition: opacity 0.2s;\n cursor: pointer;\n -webkit-backface-visibility: hidden;\n transition: all 0.2s;\n\n &:hover {\n background-color: ${lGrey2};\n }\n\n &:focus {\n ${getButtonFocus(color)}\n }\n\n ${outline &&\n `\n border: 1px solid ${color};\n\n &:hover {\n background-color: rgba(255, 255, 255, 0.1);\n }\n\n `}\n `}\n onClick={backBtnOnClick}\n >\n <VisuallyHidden>Go Back</VisuallyHidden>\n <Arrow color={color} />\n </a>\n );\n};\n\nexport default BackBtn;\n","import getStore from 'services/getStore';\nimport { setActiveTopicAction } from \"actions/setActiveTopicAction\";\n\nexport default id => {\n getStore().dispatch(setActiveTopicAction(id));\n};\n","\nexport const setActiveTopicAction = (id: string) => {\n return {\n type: 'SET_ACTIVE_TOPIC',\n data: { id: id },\n };\n};\n","const onScrollEnds = (callback, t = 250) => {\n window.removeEventListener('scroll', checkScrolling);\n //\n let scrolling;\n\n window.addEventListener('scroll', checkScrolling);\n\n function checkScrolling() {\n clearTimeout(scrolling);\n\n scrolling = setTimeout(() => {\n callback();\n window.removeEventListener('scroll', checkScrolling);\n }, t);\n }\n};\n\nexport default onScrollEnds;\n","/** @jsx jsx */\n\nimport { useMemo } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport getAllInteractions, {\n ONLY_TOPICS_NOT_HIDDEN_FROM_NEXT_AND_BACK_NAVIGATION,\n} from 'services/apiHelpers/getAllInteractions';\nimport { useSelector } from 'react-redux';\n\nconst { lGrey0 } = colors;\n\nconst ProgressBar = ({ color = lGrey0 }) => {\n const interactionsSeen = useSelector((state: any) => {\n return state.interactionsSeen;\n });\n const allInteractions = useMemo(() => {\n return getAllInteractions(\n ONLY_TOPICS_NOT_HIDDEN_FROM_NEXT_AND_BACK_NAVIGATION\n );\n }, []);\n\n const percent = (\n (interactionsSeen.length / allInteractions.length) *\n 100\n ).toFixed();\n\n return (\n <div\n role=\"progressbar\"\n aria-valuenow={Number(percent)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label=\"Module progress (%)\"\n css={css`\n position: relative;\n width: 100%;\n height: 10px;\n border: 1px solid ${color};\n border-radius: 5px;\n overflow: hidden;\n `}\n >\n <div\n css={css`\n position: absolute;\n left: 0px;\n top: 0px;\n width: ${percent}%;\n height: 10px;\n background: ${color};\n transition: width 0.2s;\n `}\n />\n\n <span className=\"sr-only\">Progress: {percent}%</span>\n </div>\n );\n};\n\nexport default ProgressBar;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport logo from 'assets/Logo_updated.svg';\nimport { Menu } from 'components/TopicMenu/Menu';\nimport { VisuallyHidden } from 'components/UI/VisuallyHidden';\nimport { Fragment as _, useCallback, useEffect, useRef, useState } from 'react';\nimport { connect, useSelector } from 'react-redux';\nimport isIE from 'services/isIE';\nimport { colors, getButtonFocus, values } from 'styles/variables';\nimport BackBtn from 'components/Header/BackBtn';\nimport ProgressBar from 'components/Header/ProgressBar';\nconst { lPink, lGrey0 } = colors;\nconst { headerHeight } = values;\n\ninterface IColumn {\n justifyContent?: 'flex-start' | 'center' | 'flex-end' | undefined;\n children: any;\n}\n\nconst Column = ({ children, justifyContent = undefined }: IColumn) => {\n return (\n <div\n css={css({\n display: 'flex',\n flex: 1,\n alignItems: 'center',\n ...(justifyContent && {\n justifyContent,\n }),\n height: '100%',\n })}\n >\n {children}\n </div>\n );\n};\n\nexport const HeaderLayout = props => {\n const {\n headerRef,\n height,\n responsiveHeight,\n backButton,\n currentTopicIndex,\n topics,\n headerTextColor,\n topicName,\n currentTopicName,\n includeLogo = true,\n headerLogo,\n progressBar,\n topicMenu,\n menu,\n setMenuState,\n background,\n Burger,\n } = props;\n\n return (\n <header\n ref={node => {\n if (headerRef) {\n headerRef(node);\n }\n }}\n aria-label=\"Module header\"\n css={css({\n position: 'fixed',\n left: 0,\n top: 0,\n width: '100vw',\n height,\n zIndex: 1,\n\n '@media (max-width: 480px)': {\n height: responsiveHeight,\n },\n })}\n >\n {background}\n <div\n css={css({\n position: 'relative',\n display: 'flex',\n width: '100%',\n height: 70,\n padding: '10px 30px',\n zIndex: 2,\n\n '@media (max-width: 480px)': {\n height: 50,\n padding: '5px 15px',\n },\n })}\n >\n <Column>\n {backButton && (\n <BackBtn\n key={currentTopicIndex}\n currentTopic={topics[currentTopicIndex]}\n topics={topics}\n color={headerTextColor}\n outline={true}\n />\n )}\n\n {topicName && (\n <div\n css={css({\n marginLeft: backButton ? 10 : 0,\n color: headerTextColor,\n '@media (max-width: 480px)': {\n display: 'none',\n },\n })}\n >\n <VisuallyHidden>Current Topic: </VisuallyHidden>\n {currentTopicName}\n </div>\n )}\n </Column>\n\n {includeLogo && (\n <Column>\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n\n '@media (max-width: 480px)': {\n minWidth: 'calc(100vw - 100px)',\n },\n })}\n >\n <img\n src={headerLogo || logo}\n alt=\"\"\n css={css({\n position: 'relative',\n maxHeight: '100%',\n })}\n />\n </div>\n </Column>\n )}\n\n <Column justifyContent=\"flex-end\">\n <div\n css={css({\n display: 'flex',\n flex: 1,\n alignItems: 'center',\n justifyContent: 'flex-end',\n })}\n >\n {progressBar && (\n <div\n css={css`\n flex: 1;\n max-width: 250px;\n margin-right: ${topicMenu ? '30' : '0'}px;\n\n @media (max-width: 480px) {\n display: none;\n }\n `}\n >\n <ProgressBar color={headerTextColor} />\n </div>\n )}\n\n {topicMenu && (\n <_>\n <Burger\n color={headerTextColor}\n onClick={() => {\n setMenuState(true);\n }}\n />\n\n <div\n css={css({\n position: 'absolute',\n right: -30,\n top: 0,\n })}\n >\n <Menu\n menu={menu}\n close={() => {\n // console.log('close');\n setMenuState(false);\n }}\n />\n </div>\n </_>\n )}\n </div>\n </Column>\n </div>\n </header>\n );\n};\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { Fragment as _, useCallback, useEffect, useRef, useState } from 'react';\nimport { connect, useSelector } from 'react-redux';\nimport { colors, getButtonFocus, values } from 'styles/variables';\nimport { HeaderLayout } from 'components/Header_v2/HeaderLayout';\n\nconst { lPink, lGrey0 } = colors;\nconst { headerHeight } = values;\n\ninterface IHeader {\n currentTopicIndex: number;\n topics: any[];\n theme: any;\n}\n\nconst SkipToContent = () => {\n const [skipToContent, setSkipToContent] = useState(false);\n\n const a = useRef<HTMLAnchorElement>(null);\n\n return (\n <a\n ref={a}\n css={css`\n position: absolute;\n left: 30px;\n top: 80px;\n padding: 5px 25px;\n font-size: 12px;\n color: ${lGrey0};\n\n border-radius: 9999px;\n background: #fff;\n\n text-decoration: none;\n\n ${!skipToContent &&\n `border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n `}\n `}\n href={`#main`}\n onKeyUp={e => {\n if (![' ', 'Enter'].includes(e.key)) {\n return;\n }\n\n a.current!.click();\n }}\n onFocus={() => {\n setSkipToContent(true);\n }}\n onBlur={() => {\n setSkipToContent(false);\n }}\n >\n Skip to content\n </a>\n );\n};\n\nconst Background = props => {\n const {\n headerHeight = 70,\n background = '#fff',\n opacity = 100,\n headerDropShadow = true,\n } = props;\n\n return (\n <div\n css={css({\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: headerHeight,\n background,\n opacity: opacity * 0.01,\n\n zIndex: 0,\n\n '@media (max-width: 480px)': {\n height: headerHeight - 20,\n },\n\n ...(headerDropShadow && {\n ':after': {\n content: `\"\"`,\n display: 'block',\n position: 'absolute',\n left: 0,\n top: headerHeight - 10,\n width: '100%',\n height: 10,\n boxShadow: '0 2px 10px rgba(0, 0, 0, 0.1)',\n clipPath: `polygon(0% 10px, 100% 10px, 100% 20px, 0% 20px)`,\n\n '@media (max-width: 480px)': {\n top: headerHeight - 30,\n },\n },\n }),\n })}\n />\n );\n};\n\nconst Burger = props => {\n const width = 24;\n const { color = '#2a2c2d', onClick } = props;\n\n return (\n <div\n css={css({\n outline: 'none',\n border: 'none',\n background: 'transparent',\n ':focus': {\n boxShadow: getButtonFocus(color).replace('box-shadow: ', ''),\n },\n })}\n onClick={onClick}\n >\n <div\n className=\"fader_-5s\"\n css={css({\n width: 24,\n cursor: 'pointer',\n })}\n >\n {[0, 1, 2].map(i => (\n <div\n key={i}\n css={css`\n width: ${width};\n height: 4px;\n background: ${color};\n margin: 2px 0;\n `}\n />\n ))}\n </div>\n </div>\n );\n};\n\nconst Header = props => {\n const { currentTopicIndex = 0, topics, headerProps } = props;\n\n const [menu, setMenuState] = useState(false);\n const currentTopicName = topics[currentTopicIndex]\n ? topics[currentTopicIndex].props.name\n : 'unknown';\n\n let {\n headerBackgroundColor = '#fff',\n headerBackgroundOpacity = 100,\n headerTextColor = lGrey0,\n headerDropShadow = true,\n backButton = true,\n topicName = true,\n progressBar = true,\n topicMenu = true,\n includeLogo = true,\n headerLogo,\n } = headerProps;\n\n const hideHeader = useSelector((state: any) => {\n return state.hideHeader;\n });\n\n const hideMenu = useCallback(() => {\n setMenuState(false);\n requestAnimationFrame(() =>\n document.removeEventListener('click', hideMenu)\n );\n }, []);\n\n useEffect(() => {\n menu && document.addEventListener('click', hideMenu);\n }, [menu]);\n\n if (hideHeader) {\n return null;\n }\n\n return (\n <HeaderLayout\n height={70}\n responsiveHeight={50}\n backButton={backButton}\n currentTopicIndex={currentTopicIndex}\n topics={topics}\n headerTextColor={headerTextColor}\n topicName={topicName}\n currentTopicName={currentTopicName}\n includeLogo={includeLogo}\n headerLogo={headerLogo}\n progressBar={progressBar}\n topicMenu={topicMenu}\n menu={menu}\n setMenuState={setMenuState}\n background={\n <Background\n headerHeight={headerHeight}\n background={headerBackgroundColor}\n opacity={headerBackgroundOpacity}\n headerDropShadow={headerDropShadow}\n />\n }\n Burger={Burger}\n />\n );\n};\n\nexport default connect(({ theme }: any) => ({ theme }))(Header);\n","import Header from './Header';\n\nexport default Header;\n","/** @jsx jsx */\n\nimport { Fragment as _ } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport { useHeader } from 'services/useHeader';\n\nconst HeaderBackground = props => {\n // const theme = useSelector((state: State) => {\n // return state.theme;\n // });\n\n // const {\n // headerStyle,\n // headerHeight,\n // headerBackgroundColor,\n // headerBackgroundImage,\n // headerBackgroundOpacity,\n // headerOverlayColor,\n // headerOverlayOpacity,\n // headerTextColor,\n // headerLogo,\n // } = theme;\n\n // const { headers } = useSelector((state: State) => {\n // return state.theme;\n // });\n\n const { graphic } = useHeader();\n\n const {\n headerBackgroundColor,\n headerBackgroundImage,\n headerBackgroundOpacity,\n includeHeaderOverlay,\n headerOverlayColor,\n headerOverlayOpacity,\n } = graphic.props;\n\n return (\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n }}\n >\n <div\n css={css({\n position: 'absolute',\n width: '100%',\n height: '100%',\n background: `url('${headerBackgroundImage}') no-repeat`,\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n opacity: headerBackgroundOpacity * 0.01,\n })}\n />\n {includeHeaderOverlay && (\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n background: headerOverlayColor,\n opacity: headerOverlayOpacity * 0.01,\n }}\n />\n )}\n </div>\n );\n};\n\nexport { HeaderBackground };\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { Fragment as _, useCallback, useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport getStore from 'services/getStore';\nimport { State } from 'store/store';\nimport { colors, getButtonFocus, values } from 'styles/variables';\nimport { HeaderBackground } from './HeaderBackground';\nimport { HeaderLayout } from 'components/Header_v2/HeaderLayout';\n\nconst store = getStore();\n\nconst { lPink, lGrey0 } = colors;\nconst { headerHeight } = values;\n\ninterface IHeader {\n currentTopicIndex: number;\n topics: any[];\n theme: any;\n}\n\nconst Burger = props => {\n const width = 24;\n\n // need to get color from theme\n const { color = '#2a2c2d', onClick } = props;\n\n return (\n <div\n css={css({\n outline: 'none',\n border: 'none',\n background: 'transparent',\n ':focus': {\n boxShadow: getButtonFocus(color).replace('box-shadow: ', ''),\n },\n })}\n onClick={onClick}\n >\n <div\n className=\"fader_-5s\"\n css={css({\n width: 24,\n cursor: 'pointer',\n })}\n >\n {[0, 1, 2].map(i => (\n <div\n key={i}\n css={css`\n width: ${width};\n height: 4px;\n background: ${color};\n margin: 2px 0;\n `}\n />\n ))}\n </div>\n </div>\n );\n};\n\nconst HeaderGraphic = props => {\n const {\n currentTopicIndex = 0,\n topics,\n headerProps,\n isFirstInteraction,\n } = props;\n\n const [menu, setMenuState] = useState(false);\n const currentTopicName = topics[currentTopicIndex]\n ? topics[currentTopicIndex].props.name\n : 'unknown';\n\n const { theme } = useSelector((state: State) => {\n return state;\n });\n\n const {\n headerHeight,\n headerBackgroundColor,\n headerBackgroundOpacity,\n includeHeaderOverlay,\n headerOverlayColor,\n headerOverlayOpacity,\n headerTextColor,\n backButton,\n topicName,\n progressBar,\n topicMenu,\n headerDropShadow,\n headerBackground,\n includeLogo = true,\n headerLogo,\n } = headerProps;\n\n const header = useRef<HTMLElement | null>(null);\n\n const hideHeader = useSelector((state: any) => {\n return state.hideHeader;\n });\n\n const hideMenu = useCallback(() => {\n setMenuState(false);\n requestAnimationFrame(() =>\n document.removeEventListener('click', hideMenu)\n );\n }, []);\n\n useEffect(() => {\n menu && document.addEventListener('click', hideMenu);\n }, [menu]);\n\n useEffect(() => {\n if (!header.current || window.dev()) {\n return;\n }\n\n // working on a better solution to all this bouncing around headerHeight stuff\n // feels like using the prop headerHeight for the graphic isn't the right thing\n // might better be named expandedHeight or something that indicates it's temp nature\n // since for the duration of module beyond first interaction the ACTUAL headerHeight becomes\n // 70 > 50 px like the standard\n // could remove headerHeight from both headers props since they're all defaulting to those values ( 70 > 50 )\n // and only graphic header has that expandedHeight\n\n if (screen.availWidth <= 480) {\n header.current.style.height = '50px';\n return;\n }\n\n if (currentTopicIndex > 0) {\n header.current.style.height = '70px';\n return;\n }\n\n // this'll come in a frame later. so the scroll listener below still kicks in\n // needs to be that little bit later to account for the scrollY being 0 when entering the topic\n // but then immediately scrolling to the bottom of the page to satisfy the navigation\n // skinning cats one way\n requestAnimationFrame(() => {\n if (!header.current) {\n return;\n }\n //\n if (window.scrollY > headerHeight) {\n // this check for screen 'should' not be needed since returning above. but...\n header.current.style.height =\n screen.availWidth <= 480 ? '50px' : '70px';\n return;\n }\n });\n\n //\n //\n\n const onScroll = () => {\n if (!header.current) {\n return;\n }\n\n const { scrollY } = window;\n\n if (scrollY > window.innerHeight) {\n return;\n }\n\n let invertedScrollY = headerHeight - scrollY;\n\n if (scrollY > headerHeight - 70) {\n invertedScrollY = 70;\n }\n\n header.current.style.height = `${invertedScrollY}px`;\n };\n\n window.addEventListener('scroll', onScroll);\n onScroll();\n\n return () => {\n window.removeEventListener('scroll', onScroll);\n };\n }, [currentTopicIndex]);\n\n if (hideHeader) {\n return null;\n }\n\n return (\n <HeaderLayout\n headerRef={node => {\n if (node) {\n header.current = node;\n }\n }}\n height={`${!isFirstInteraction ? 70 : headerHeight}px`}\n responsiveHeight={`${\n !isFirstInteraction ? 50 : screen.availWidth >= 480 ? headerHeight : 50\n }px`}\n backButton={backButton}\n currentTopicIndex={currentTopicIndex}\n topics={topics}\n headerTextColor={headerTextColor}\n topicName={topicName}\n currentTopicName={currentTopicName}\n includeLogo={includeLogo}\n headerLogo={headerLogo}\n progressBar={progressBar}\n topicMenu={topicMenu}\n menu={menu}\n setMenuState={setMenuState}\n background={<HeaderBackground />}\n Burger={Burger}\n />\n );\n};\n\nexport { HeaderGraphic };\n","import getBlockById from './apiHelpers/getBlockById';\n\n// we can swap out the implementation of this for the faster / cleaner check\nexport const getIsFirstInteraction = (topics, currentInteraction): boolean => {\n const firstInteraction = getBlockById(topics[0]?.children[0]?.id)\n ?.children?.[0] as any;\n\n // console.log(firstInteraction.id, currentInteraction);\n\n if (currentInteraction) {\n return currentInteraction === firstInteraction?.id;\n }\n\n return false;\n};\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useState,\n createContext,\n useContext,\n memo,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector } from 'react-redux';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport EditMarker from 'components/UI/EditMarker';\nimport HeaderStandard from 'components/Header';\nimport { HeaderGraphic } from './HeaderGraphic';\nimport { useHeader } from 'services/useHeader';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { getIsFirstInteraction } from 'services/getIsFirstInteraction';\n\nconst defaultHeaderHeight = 70;\n\nconst Header = (props: any) => {\n const { currentTopicIndex, topics } = props;\n const header = useHeader();\n const headerId = header?.block?.id;\n const { standard, graphic } = header;\n const { headerStyle = 'standard' } = header.props;\n\n const currentHeader = headerStyle === 'standard' ? standard : graphic;\n\n const { currentInteraction, focusedNodeId } = useSelector((state: any) => {\n return {\n currentInteraction: state.currentInteraction,\n focusedNodeId: state.focusedNodeId,\n } as any;\n });\n\n // this check is for first FIRST run. where the header might not yet be ' ready '\n const selected = headerId ? focusedNodeId === headerId : false;\n\n const { headerHeight = defaultHeaderHeight } = currentHeader?.props;\n const editWrapperMargin = 3;\n\n const isFirstInteraction = getIsFirstInteraction(topics, currentInteraction);\n\n const height =\n headerStyle === 'standard'\n ? 60 + editWrapperMargin\n : (!isFirstInteraction ? defaultHeaderHeight : headerHeight) -\n editWrapperMargin * 2;\n\n return (\n <_>\n {headerStyle === 'standard' ? (\n <HeaderStandard\n currentTopicIndex={currentTopicIndex}\n topics={topics}\n headerProps={standard.props}\n />\n ) : (\n <HeaderGraphic\n currentTopicIndex={currentTopicIndex}\n topics={topics}\n headerProps={graphic.props}\n isFirstInteraction={isFirstInteraction}\n />\n )}\n\n {window.dev() && (\n <div\n style={{\n position: 'fixed',\n left: 0,\n top: 0,\n width: '100vw',\n height,\n // setting the index at 1 seems to keep it on top of\n // 2147483647 < max zIndex not needed\n zIndex: 1,\n }}\n >\n <div\n css={css({\n position: 'absolute',\n left: editWrapperMargin,\n top: editWrapperMargin,\n width: `calc(100vw - ${editWrapperMargin * 2}px)`,\n height: '100%',\n boxShadow: `0 0 0 1px ${\n selected ? '#ff0063' : 'rgba(0,0,0, 0.2)'\n }`,\n transition: 'box-shadow 0.2s',\n ...(!selected && {\n cursor: 'pointer',\n ':hover': {\n boxShadow: `0 0 0 1px rgba(0,0,0,0.1)`,\n },\n }),\n zIndex: 1,\n })}\n onClick={() => {\n setCurrentBlock({ id: headerId });\n }}\n >\n {!selected && <EditMarker />}\n </div>\n </div>\n )}\n </_>\n );\n};\n\nexport default Header;\n// () => null;\n// Header;\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useEffect, useRef } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { State } from 'store/store';\nimport { killAllAudio } from 'services/killAllAudio';\n\nexport const AudioPlayer = () => {\n //\n const audio = useSelector((state: State) => {\n return state.audio;\n });\n\n const {\n id,\n audioSrc,\n autoPlay = false,\n controls = true,\n delay = 0,\n pause = false,\n } = (audio || {}) as any;\n\n // const [showAudio, setShowAudio] = useState<boolean>(window.dev() || false);\n // const [playAudio, setPlayAudio] = useState<boolean>(window.dev() || false);\n\n const audioPlayer = useRef<HTMLAudioElement>(null);\n const delayAudioPlay = useRef<ReturnType<typeof setTimeout>>();\n\n useEffect(() => {\n if (audioSrc && autoPlay) {\n delayAudioPlay.current && clearTimeout(delayAudioPlay.current);\n delayAudioPlay.current = setTimeout(() => {\n //\n // setPlayAudio(true);\n audioPlayer.current && audioPlayer.current.play();\n }, delay * 1000);\n return;\n }\n\n // setPlayAudio(false);\n }, [audioSrc, autoPlay]);\n\n useEffect(() => {\n if (!audioPlayer.current) {\n return;\n }\n\n if (pause) {\n audioPlayer.current.pause();\n }\n }, [pause]);\n\n useEffect(() => {\n let wait;\n let tick;\n\n const onFullScreenChange = e => {\n clearInterval(wait);\n\n if (document.fullscreenElement) {\n tick = setInterval(() => {\n if (!audioPlayer.current) {\n return;\n }\n\n if (!audioPlayer.current.paused) {\n wait = setTimeout(() => {\n clearInterval(tick);\n }, 3000);\n\n audioPlayer.current.pause();\n }\n }, 100);\n }\n };\n\n document.addEventListener('fullscreenchange', onFullScreenChange);\n\n return () => {\n clearTimeout(wait);\n clearInterval(tick);\n document.removeEventListener('fullscreenchange', onFullScreenChange);\n };\n }, []);\n\n return audioSrc ? (\n <div\n className=\"fader_-2s\"\n css={css({\n position: 'fixed',\n display: 'flex',\n justifyContent: 'center',\n left: 0,\n bottom: window.dev() ? 40 : 20,\n width: '100%',\n maxWidth: 320,\n height: 35,\n padding: '0 20px',\n zIndex: 100000,\n\n '@media (max-width: 768px)': {\n maxWidth: '100%',\n },\n })}\n >\n <audio\n ref={audioPlayer}\n src={audioSrc}\n onPlay={() => {\n // setIsPlaying(true);\n }}\n onPause={() => {\n // setIsPlaying(false);\n }}\n css={css({\n width: '100%',\n height: 35,\n })}\n autoPlay={window.dev() ? false : autoPlay}\n controls={window.dev() ? true : controls}\n />\n </div>\n ) : null;\n};\n","\n\nexport const setCurrentInteractionAction = (\n id: string,\n updateFocusedNodeId\n) => {\n return {\n type: 'SET_CURRENT_INTERACTION',\n data: { id: id, updateFocusedNodeId },\n };\n};\n","export const theme = {\n breakpoints: ['40em', '52em', '64em'],\n fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 96, 128],\n space: [\n // margin and padding\n 0,\n 4,\n 8,\n 16,\n 32,\n 64,\n 128,\n 256,\n ],\n colors: {},\n fonts: {\n default: \"'Poppins', sans-serif\",\n },\n Text: {\n color: '#122212',\n },\n};\n","export const updateScoreAction = (id: string, score: 0 | 1) => {\n return {\n type: 'UPDATE_SCORE',\n data: { id, score },\n };\n};\n","import React, {\n createContext,\n PropsWithChildren,\n useContext,\n useEffect,\n useState,\n} from 'react';\n\nconst readCookie = (name: string) => {\n var nameEQ = name + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n};\n\ntype HostingContext = ReturnType<typeof createSignalServer> & {};\n\nexport const HostingContext = createContext<HostingContext | undefined>(\n undefined\n);\n\nexport interface SessionState {\n currentSession: Session;\n}\n\nexport const HostingProvider = ({\n url,\n projectId,\n children,\n}: PropsWithChildren<{ url: string; projectId: string }>) => {\n const [state, setState] = useState<SessionState | null>(null);\n\n const signaler = createSignalServer({\n url,\n projectId,\n setSession(session) {\n setState(() => ({\n currentSession: session,\n }));\n },\n });\n\n // Start a new session\n useEffect(() => {\n signaler.start();\n }, []);\n\n return (\n <HostingContext.Provider value={{ ...signaler }}>\n {children}\n </HostingContext.Provider>\n );\n};\n\nexport interface Session {}\n\ninterface Event {}\n\nconst createSignalServer = ({ url, projectId, setSession }) => {\n return {\n // Start will either\n // - create a new session\n // - create a new session from a bookmark\n async start(): Promise<Session> {\n const csrfToken = decodeURIComponent(\n readCookie('X-CSRF-TOKEN') as string\n );\n\n const req = await fetch(`${url}/harp/hosting/${projectId}/session`, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'X-CSRF-Token': csrfToken,\n Accept: 'application/json',\n },\n body: JSON.stringify({ session: { action: 'start' } }),\n });\n const json = await req.json();\n\n setSession(json);\n return json;\n },\n\n // Pause the current Session. this will cause the application to create a bookmark\n // and store the current session.\n async pause(): Promise<boolean> {\n try {\n const csrfToken = decodeURIComponent(\n readCookie('X-CSRF-TOKEN') as string\n );\n\n const req = await fetch(`${url}/harp/hosting/${projectId}/session`, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'X-CSRF-Token': csrfToken,\n Accept: 'application/json',\n },\n body: JSON.stringify({ session: { action: 'pause' } }),\n });\n const json = await req.json();\n return true;\n } catch (e) {\n console.log(e);\n return false;\n }\n },\n\n // Resume the current session\n async resume(): Promise<boolean> {\n try {\n const csrfToken = decodeURIComponent(\n readCookie('X-CSRF-TOKEN') as string\n );\n\n const req = await fetch(`${url}/harp/hosting/${projectId}/session`, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'X-CSRF-Token': csrfToken,\n Accept: 'application/json',\n },\n body: JSON.stringify({ session: { action: 'resume' } }),\n });\n const json = await req.json();\n setSession(json);\n return true;\n } catch (e) {\n console.log(e);\n return false;\n }\n },\n\n // end should use sendBeacon as it might be called on window close\n async end(): Promise<void> {\n try {\n const csrfToken = decodeURIComponent(\n readCookie('X-CSRF-TOKEN') as string\n );\n\n const headers = {\n type: 'application/json',\n 'X-CSRF-Token': csrfToken,\n };\n\n navigator.sendBeacon(\n `${url}/harp/hosting/${projectId}/session`,\n new Blob([JSON.stringify({ session: { action: 'end' } })], headers)\n );\n } catch (e) {\n console.log(e);\n }\n },\n // Gets the current session\n async current(): Promise<Session> {\n const req = await fetch(`${url}/harp/hosting/${projectId}/session`, {\n method: 'GET',\n credentials: 'include',\n });\n const json = await req.json();\n setSession(json);\n return json;\n },\n\n //\n async data(event: Event): Promise<void> {\n const csrfToken = decodeURIComponent(\n readCookie('X-CSRF-TOKEN') as string\n );\n\n const req = await fetch(`${url}/harp/hosting/${projectId}/session`, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'X-CSRF-Token': csrfToken,\n Accept: 'application/json',\n },\n body: JSON.stringify({ session: { action: 'data', event: event } }),\n });\n const json = await req.json();\n return json;\n },\n };\n};\n\nexport const useHostingSession = () => {\n const ctx = useContext(HostingContext);\n return ctx;\n};\n","export default {\n '2004': {\n exit: 'cmi.exit',\n entry: 'cmi.entry',\n location: 'cmi.location',\n scoreMin: 'cmi.score.min',\n scoreMax: 'cmi.score.max',\n scoreScaled: 'cmi.score.scaled',\n scoreRaw: 'cmi.score.raw',\n success: 'cmi.success_status',\n completion: 'cmi.completion_status',\n suspend_data: 'cmi.suspend_data',\n result: {\n 0: \"incorrect\",\n 1: \"correct\"\n }\n },\n '1.2': {\n exit: 'cmi.core.exit',\n entry: 'cmi.core.entry',\n location: 'cmi.core.lesson_location',\n scoreMin: 'cmi.core.score.min',\n scoreMax: 'cmi.core.score.max',\n scoreRaw: 'cmi.core.score.raw',\n completion: 'cmi.core.lesson_status',\n suspend_data: 'cmi.suspend_data',\n result: {\n 0: \"wrong\",\n 1: \"correct\"\n }\n },\n};\n","let SCORMToCollectValues: any = {};\nlet delay;\n\nconst SCORMToCollect = ($: object, key: null | string = null) => {\n const isHosted = (window as any).getParams().hosted;\n if (!isHosted) {\n return isHosted;\n }\n\n if (key) {\n SCORMToCollectValues = {\n ...SCORMToCollectValues,\n [key]: {\n ...SCORMToCollectValues[key],\n ...$,\n },\n };\n } else {\n SCORMToCollectValues = {\n ...SCORMToCollectValues,\n ...$,\n };\n }\n\n clearTimeout(delay);\n delay = setTimeout(() => {\n const raw = JSON.stringify({\n hosting: { learning_module_session_data: SCORMToCollectValues },\n });\n\n const myHeaders = new Headers();\n myHeaders.append('Accept', 'application/json');\n myHeaders.append('Content-Type', 'application/json');\n\n const requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow',\n };\n\n const projectId = (window as any).getParams().projectId;\n\n const endPoint =\n `${window.chameleon.CHAMELEON_URL}/harp/hosting/${projectId}/data` ||\n `https://development.chameleoncreator.com/harp/hosting/${projectId}/data`;\n\n fetch(endPoint, requestOptions)\n .then(response => {\n // console.log({ response });\n return response.text();\n })\n .then(result => {\n console.log(result);\n })\n .catch(error => {\n console.log('error', error);\n console.log(raw);\n });\n }, 1000 / 60);\n};\n\nexport default SCORMToCollect;\n","import { State } from 'store/store';\n\nexport function transformScoreDataFromIdToSId(\n scoreData: { [key: string]: true | false | 0 | 1 },\n state: State\n) {\n const { blocks } = state;\n const idToSid = Object.keys(scoreData).reduce((acc, curr) => {\n let sId = blocks[curr]?.props?.sId;\n\n return {\n ...acc,\n // if we can't get an sId we default to the id ( curr )\n [sId || curr]: tF(scoreData[curr]),\n };\n }, {});\n\n return idToSid;\n}\n\nexport function transformScoreDataFromSIdToId(\n scoreData: { [key: string]: 't' | 'f' | 0 | 1 },\n state: State\n) {\n const sIdToId = Object.keys(scoreData).reduce((acc, curr) => {\n const blockWithSIdOrId = Object.values(state.blocks).find(block => {\n if (block?.props?.sId === Number(curr)) {\n return true;\n }\n\n return block?.id === curr;\n });\n\n if (!blockWithSIdOrId) {\n return acc;\n }\n\n return {\n ...acc,\n [blockWithSIdOrId.id]: tF(scoreData[curr]),\n };\n }, {});\n\n return sIdToId;\n}\n\nfunction tF(value: 't' | 'f' | true | false | 1 | 0) {\n switch (value) {\n case 't': {\n return true;\n }\n\n case 'f': {\n return false;\n }\n\n case true: {\n return 't';\n }\n\n case false: {\n return 'f';\n }\n\n default: {\n return value;\n }\n }\n}\n","import { Block, Blocks } from '@chameleoncreator/creator-app';\nimport { setExitCompleteAction } from 'actions/setExitCompleteAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport { ModuleContext } from 'components/Module/Module_v2';\nimport { SCORMProps, ScoringCriteria } from 'factories/scorm';\nimport { useHostingSession } from 'hosting/context';\nimport pipwerks, { SCORM } from 'pipwerks-scorm-api-wrapper';\nimport { useContext, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport getAssessments from 'services/apiHelpers/getAssessments';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport getCurrentLocation from 'services/getCurrentLocation';\n\nimport { setLocalStorageStateBookmark } from 'store/localStore';\n\nimport getStore from 'services/getStore';\nimport pubSub from 'services/pubSub';\nimport { Report, Assessments, State, LessonStatus } from 'store/store';\nimport { LandingPagesSeenState } from 'store/store';\nimport {\n findBlocksIn,\n getAllInteractionsOrdered,\n} from '../../../selectors/block';\nimport API from '../../../services/scorm/API';\nimport SCORMToCollect from './SCORMToCollect';\nimport {\n transformListFromSIdToId,\n transformListFromIdToSId,\n} from 'services/transformListBetweenIdSId';\nimport {\n transformAssessmentsToSuspendData,\n transformAssessmentsFromSuspendData,\n} from 'services/transformAssessmentsToAndFromSuspendData';\nimport { Assessment, AssessmentData, QuestionData } from 'store/store';\nimport {\n transformScoreDataFromIdToSId,\n transformScoreDataFromSIdToId,\n} from 'services/transformScoreData';\n\nconst API_KEYS = API;\n\nenum Version {\n OnePointTwo = '1.2',\n TwoThousandAndFour = '2004',\n}\n\nenum SuccessString {\n Passed = 'passed',\n Failed = 'failed',\n}\n\nenum CompletionString {\n Complete = 'completed',\n Incomplete = 'incomplete',\n}\n\nenum ShouldSendScore {\n Always = 'ALWAYS',\n Never = 'NEVER',\n OnComplete = 'COMPLETE',\n}\n\nexport enum ReportableInteractions {\n Multichoice = 'multichoice',\n Sortation = 'sortation',\n Likert = 'likert',\n FillIn = 'fillin',\n LongFillIn = 'longfillin',\n // quiz ?\n}\n\nlet scormInitialized;\nexport const getSCORMInitialized = () => {\n return scormInitialized;\n};\n\nconst getResult = (version, result) => {\n if (version === Version.OnePointTwo) {\n return result ? 'correct' : 'wrong';\n }\n\n return result ? 'correct' : 'incorrect';\n};\n\nconst asPercent = (number: number, total: number) => {\n return ((number || 0) / total) * 100 || 0;\n};\n\n// TO not DO.\n// for sam. discusss this bit\n// boolean to ensure we only run the scoreData reloading once\nlet hasReloadedScoreData: boolean = false;\n\n// initialize location here and / so as it's updated\n// is available to module\n// sending to suspend_data for example. which comes after a timeout\nlet location = '';\n\n/**\n * ExitProps\n *\n * When the module is preparing to exit, it needs to make sure that all the appropriate\n * controls are triggered in the SCORM container. The data in ExitProps is a complete\n * representation of this data and as such can be used to toggle saving behaviours further\n * down the chain\n */\ninterface ExitProps {\n lastInteractionSeen: boolean;\n allInteractionsSeen: boolean;\n passed: boolean;\n isComplete: boolean;\n hasExited: boolean;\n scoreRaw: number;\n scoreMax: number;\n scorePercent: number;\n percentComplete: number;\n sendScore: boolean;\n moduleCompleteInterationRequirement: string;\n moduleCompleteScoreRequirement: boolean;\n shouldSendScoreWhen: string;\n sendOnlySuccessStatus: boolean;\n lessonStatus: LessonStatus;\n scoringCriteria: ScoringCriteria;\n}\n\n/**\n * scormFunc\n *\n * A scorm function is a chainable side effect function. It takes some data, possibly performs\n * and action that changes remote data (eg. scorm container function call) updating the props in\n * the process and then returns a new ExitProps object.\n *\n * By chaining these functions we can create easy to follow processes for saving data on exit\n */\ntype scormFunc = (e: ExitProps) => ExitProps;\n\ntype SuspendData = {\n interactionsSeen: string[];\n interactionsLocked?: string[];\n landingPagesSeenState?: LandingPagesSeenState;\n // 'loosely' typed types here\n interactionsReporting: { [key: string]: any };\n scoreData: { [key: string]: any };\n assessments: Assessments;\n moduleVariables: { [key: string]: string };\n location: string;\n};\n\nconst assessmentScoringAverageOrFirstPassed = (data: {\n scorm: SCORM;\n version: string;\n scoringCriteria: ScoringCriteria;\n lessonStatus: LessonStatus;\n moduleCompleteScoreRequirement: boolean;\n}) => {\n const {\n scorm,\n version,\n scoringCriteria,\n lessonStatus,\n moduleCompleteScoreRequirement,\n } = data;\n\n // get fresh state\n const state = getStore().getState();\n\n // get the passMark on module props\n // can we get this from somewhere else ? prior\n const module = Object.values(state.blocks).find(b => {\n return (b as Block)?.type === 'Module';\n }) as Block;\n\n const passMark = module?.props?.passMark;\n\n // get all the assessments from state\n const { assessments } = state;\n // filter for scoring\n const scoringAssessments = Object.keys(assessments)\n .filter(key => {\n return assessments[key].data?.scoring;\n })\n .map(id => {\n return {\n [id]: assessments[id],\n };\n });\n\n // break them down as follows. . .\n //\n const passingAssessmentsIds = Object.keys(assessments).filter(key => {\n const { name, scoring, passed } = assessments[key]?.data || {};\n\n return scoring && passed;\n });\n\n const passingAssessments = passingAssessmentsIds.map(id => {\n return assessments[id];\n });\n\n // we use the first assessment. passingAssessments[0]\n // might be that at some time later we want to calculate for more than the first\n const passingAssessment = passingAssessments[0];\n\n const passingAssessmentResults =\n (passingAssessments?.length &&\n Object.values(passingAssessment.results).map(r => {\n return r as QuestionData;\n })) ||\n [];\n\n let scoreMax = 0;\n let scoreRaw = 0;\n let passed = false;\n\n if (scoringCriteria === 'AVERAGE') {\n scoreMax = scoringAssessments.length;\n scoreRaw = passingAssessments.length;\n passed = asPercent(scoreRaw, scoreMax) >= passMark;\n }\n\n if (scoringCriteria === 'PASSED_ASSESSMENTS') {\n scoreMax = passingAssessmentResults.length;\n\n //\n if (passingAssessment && passingAssessment.data) {\n scoreRaw = passingAssessment.data.score;\n passed = passingAssessment.data.passed;\n //\n }\n }\n\n const isComplete = passed;\n\n if (version === '1.2' && lessonStatus === 'passed/failed/incomplete') {\n const completionString = isComplete\n ? 'passed'\n : moduleCompleteScoreRequirement\n ? 'failed'\n : 'incomplete';\n\n scorm.set(API[version].completion, completionString);\n\n return {\n scoreMax,\n scoreRaw,\n passed,\n sendScore: passed,\n };\n }\n\n scorm.set(\n API[version].completion,\n isComplete ? CompletionString.Complete : CompletionString.Incomplete\n );\n\n return {\n scoreMax,\n scoreRaw,\n passed,\n sendScore: passed,\n };\n};\n/**\n * setScoreData\n *\n * saves the score to scorm container IF required\n */\nconst setScoreData = (scorm: SCORM, version: string): scormFunc => props => {\n const { scoringCriteria } = props;\n\n let { scoreRaw, scoreMax, passed, sendScore } = props;\n\n if (\n (['AVERAGE', 'PASSED_ASSESSMENTS'] as ScoringCriteria[]).includes(\n scoringCriteria\n )\n ) {\n const assessmentScoringData = assessmentScoringAverageOrFirstPassed({\n scorm,\n version,\n ...props,\n });\n\n scoreRaw = assessmentScoringData.scoreRaw;\n scoreMax = assessmentScoringData.scoreMax;\n passed = assessmentScoringData.passed;\n sendScore = assessmentScoringData.sendScore;\n }\n\n const shouldSendSuccess = props[props.moduleCompleteInterationRequirement];\n //\n\n if (!sendScore) {\n return props;\n }\n\n scorm.set(API[version].scoreMin, 0);\n scorm.set(API[version].scoreMax, 100);\n\n scorm.set(API[version].scoreRaw, asPercent(scoreRaw, scoreMax));\n\n if (version === Version.TwoThousandAndFour) {\n scorm.set(API[version].scoreScaled, scoreRaw / scoreMax);\n\n if (shouldSendSuccess) {\n scorm.set(\n API[version].success,\n passed ? SuccessString.Passed : SuccessString.Failed\n );\n }\n }\n\n return props;\n};\n\n/**\n * setSCORMCompletion\n *\n * If the module has been completed, declare it so.\n */\nconst setSCORMCompletion = (scorm: SCORM, version: string) => (\n isComplete: boolean,\n props = {} as ExitProps\n): void => {\n // bail !!!\n const scormCompletionString = scorm.get(API[version].completion);\n\n if (['completed', 'passed'].includes(scormCompletionString)) {\n return;\n }\n\n const { passed, moduleCompleteScoreRequirement, lessonStatus } = props;\n\n if (version === '1.2' && lessonStatus === 'passed/failed/incomplete') {\n const completionString = isComplete\n ? 'passed'\n : moduleCompleteScoreRequirement\n ? 'failed'\n : 'incomplete';\n\n console.log({ completionString });\n\n scorm.set(API[version].completion, completionString);\n\n return;\n }\n\n scorm.set(\n API[version].completion,\n isComplete ? CompletionString.Complete : CompletionString.Incomplete\n );\n};\n\n/**\n * setCompletionStatus\n *\n * chainable version of setSCORMCompletion\n */\nconst setCompletionStatus = (\n scorm: SCORM,\n version: string\n): scormFunc => props => {\n const { isComplete } = props;\n\n if (version === '2004' && props.sendOnlySuccessStatus) {\n console.log(\n { sendOnlySuccessStatus: props.sendOnlySuccessStatus },\n 'we bail early and do not send completion'\n );\n return props;\n }\n\n if (props[props.moduleCompleteInterationRequirement]) {\n setSCORMCompletion(scorm, version)(isComplete, props);\n }\n\n return props;\n};\n\n/**\n * saveAndQuit\n *\n * shut down the scorm container (should be called last)\n */\nconst save = (scorm: SCORM): scormFunc => props => {\n scorm.save();\n\n return props;\n};\n\n/**\n * setIsComplete\n *\n * determins whether or not the module is completed based on props\n */\nconst setIsComplete: scormFunc = props => {\n const interactionCompletion =\n props[props.moduleCompleteInterationRequirement];\n const scoreCompletion = props.moduleCompleteScoreRequirement\n ? props.passed\n : true;\n\n const isComplete = interactionCompletion && scoreCompletion;\n\n return { ...props, isComplete };\n};\n\n/**\n * setShouldSendScore\n *\n * using data provided, decided if we should be sending the score to the scorm container\n * @param props\n */\nconst setShouldSendScore: scormFunc = props => {\n let shouldSendScore = false;\n\n switch (props.shouldSendScoreWhen) {\n case ShouldSendScore.Never:\n shouldSendScore = false;\n break;\n case ShouldSendScore.Always:\n shouldSendScore = true;\n break;\n case ShouldSendScore.OnComplete:\n shouldSendScore = props.isComplete;\n break;\n }\n\n return {\n ...props,\n sendScore: shouldSendScore ? true : false,\n };\n};\n\n/**\n * setCompleteOnExitOps\n *\n * the chain of operations for saving\n */\nconst setCompleteOnExitOps = (\n scorm: SCORM,\n version: string,\n exitProps: ExitProps\n) => {\n const funcs = [\n setIsComplete,\n setShouldSendScore,\n setScoreData(scorm, version),\n setCompletionStatus(scorm, version),\n save(scorm),\n ];\n\n return funcs.reduce((cur: ExitProps, next: scormFunc) => {\n const props = next(cur);\n\n return props;\n }, exitProps);\n};\n\n/**\n * q contains all the data that an interaction sends when it wants to report to\n * the scorm container\n */\n\ntype q = Report & { success: string };\n\ntype qFunc = (p: q) => void;\n\n// returning early on all of these for testing\nconst qid: qFunc = ({ id, key }) => {\n SCORM.set(`cmi.interactions.${key}.id`, id);\n};\n\nconst qdesc: qFunc = ({ key, question = '' }) => {\n SCORM.set(`cmi.interactions.${key}.description`, question?.substring(0, 250));\n};\n\nconst qtype: qFunc = ({ key, type }) => {\n SCORM.set(`cmi.interactions.${key}.type`, type);\n};\n\nconst qstudent: qFunc = ({ key, response }) => {\n SCORM.set(`cmi.interactions.${key}.student_response`, response);\n};\n\nconst qlearner: qFunc = ({ key, response }) => {\n SCORM.set(`cmi.interactions.${key}.learner_response`, response);\n};\n\nconst qcorrect: qFunc = ({ key, correct }) => {\n SCORM.set(`cmi.interactions.${key}.correct_responses.0.pattern`, correct);\n};\n\nconst qresult: qFunc = ({ key, result }) => {\n SCORM.set(`cmi.interactions.${key}.result`, result);\n};\n\nconst qsave: qFunc = () => {\n SCORM.save();\n};\n\ntype InteractionsReportingSequence = {\n [key in Version]: {\n [key in ReportableInteractions]: qFunc[];\n };\n};\n\n/**\n * cmiInteractions is a nested map that contains the sequence functions needed\n * to send interaction reporting data to the SCORM container.\n */\nconst cmiInteractions: InteractionsReportingSequence = {\n [Version.OnePointTwo]: {\n [ReportableInteractions.Multichoice]: [\n qid,\n qtype,\n qcorrect,\n qstudent,\n qresult,\n qsave,\n ],\n [ReportableInteractions.Sortation]: [\n qid,\n qtype,\n qcorrect,\n qstudent,\n qresult,\n qsave,\n ],\n [ReportableInteractions.Likert]: [\n qid,\n qtype,\n qcorrect,\n qstudent,\n qresult,\n qsave,\n ],\n [ReportableInteractions.FillIn]: [\n qid,\n qtype,\n qstudent,\n qcorrect,\n qresult,\n qsave,\n ],\n [ReportableInteractions.LongFillIn]: [\n qid,\n qtype,\n qstudent,\n qcorrect,\n qresult,\n qsave,\n ],\n },\n [Version.TwoThousandAndFour]: {\n [ReportableInteractions.Multichoice]: [\n qid,\n qdesc,\n qtype,\n qlearner,\n qcorrect,\n qresult,\n qsave,\n ],\n [ReportableInteractions.Sortation]: [\n qid,\n qdesc,\n qtype,\n qlearner,\n qcorrect,\n qresult,\n qsave,\n ],\n [ReportableInteractions.Likert]: [\n qid,\n qdesc,\n qtype,\n qlearner,\n qcorrect,\n qresult,\n qsave,\n ],\n [ReportableInteractions.FillIn]: [\n qid,\n qdesc,\n qtype,\n qlearner,\n qcorrect,\n qresult,\n qsave,\n ],\n [ReportableInteractions.LongFillIn]: [\n qid,\n qdesc,\n qtype,\n qlearner,\n qcorrect,\n qresult,\n qsave,\n ],\n },\n};\n\n/**\n * setCMIInteractions is an internal function for saving an interaction into the scorm container\n *\n * @param interactionType the type of interaction ( Multichoice | Sortation )\n * @param version version of scorm that we are targeting (1.2 | 2004)\n */\nconst setCMIInteractions = (\n interactionType: ReportableInteractions,\n version: Version\n) => ({\n id,\n question,\n type,\n response,\n correct,\n result,\n reportable,\n}: Report) => {\n let count = SCORM.get('cmi.interactions._count');\n const resultParsed = getResult(version, result);\n\n const qProps: q = {\n key: count,\n id,\n question,\n type,\n reportable,\n response: response ? response : 'pending',\n correct: correct ? correct : 'pending',\n result: resultParsed as any, // this is BAD\n success: API_KEYS[version].result[result],\n };\n\n cmiInteractions[version][interactionType].reduce((_, next) => {\n next(qProps);\n return true;\n }, false);\n};\n\n/**\n * activeBlockSelector finds blocks that are accessible from the root block\n */\nconst activeBlockSelector = (blocks: Blocks, rootId: string): Block[] => {\n return findBlocksIn(blocks, blocks[rootId], (i: any) => i);\n};\n\n/**\n * scoringBlocks finds all the blocks that are scorable and have it turned on\n */\nconst scoringBlocks = (blocks: Block[]): string[] => {\n const moduleBlock = (Object.values(\n getStore().getState().blocks\n ) as Block[]).find(b => b.type === 'Module');\n\n const includeAllScoringInteractions = false;\n\n const assessments = getAssessments();\n\n const scoringAssessments = assessments.filter((a: Block) => {\n return a?.props?.scoring;\n });\n\n let assessmentsQuestions: string[] = [];\n\n if (scoringAssessments.length) {\n scoringAssessments.forEach((a: any) => {\n const interactionsInTopic = getInteractionsInTopic(a);\n\n assessmentsQuestions = [\n ...assessmentsQuestions,\n ...interactionsInTopic\n .filter((q, i) => {\n return i > 0 && i < interactionsInTopic.length - 1;\n })\n .map(q => {\n return q.id;\n }),\n ];\n //\n });\n }\n\n if (assessmentsQuestions.length) {\n return assessmentsQuestions;\n }\n\n const sB = [\n ...blocks\n .filter((b: any) => {\n return b?.props?.score && b.props.score === true;\n })\n .map((b: any) => b.id),\n ];\n\n return sB;\n};\n\n/**\n * This selector pulls out all the active blocks from the store\n */\nconst loadActiveBlocks = createSelector(\n [(state: State) => state.blocks, (state: State) => state.rootBlockId!],\n activeBlockSelector\n);\n\nconst loadScoringBlocks = createSelector(loadActiveBlocks, scoringBlocks);\n\n/**\n * call exit on scorm based on the options provided to the block\n */\nconst exit = (initialised, scorm, version, exitProps) => {\n if (!initialised) {\n return;\n }\n\n setCompleteOnExitOps(scorm, version, exitProps);\n\n scorm.save();\n scorm.quit();\n};\n\n/**\n * This block is responsible for ALL scorm interaction. The core parts are\n *\n * - saving and loading current users progress\n * - saving score and behaviour into the CMI.interactions\n * - setting the score\n * - provide an exit facility ?? (i'm not convinced of this one)\n *\n * @param props\n */\n\nconst PIPWERKS = pipwerks as any;\n//\nexport const SCORMRenderer = (props: Block) => {\n // kill all the debug noise in dev\n if (window.location.toString().match('localhost:') && PIPWERKS?.debug) {\n PIPWERKS.debug.isActive = false;\n }\n\n const scormSettings = props.props;\n\n const {\n shouldSendScoreWhen,\n moduleCompleteInterationRequirement,\n moduleCompleteScoreRequirement,\n scormExitMessage = 'logout',\n scormControlledExit = false,\n scormExitDelay,\n sendOnlySuccessStatus = false,\n lessonStatus = 'completed/incomplete',\n scoringCriteria,\n } = scormSettings as SCORMProps;\n\n const dispatch = useDispatch();\n const hostingCtx = useHostingSession();\n\n let { passMark } = useContext(ModuleContext);\n\n const [initialised, setInitialized] = useState(false);\n const [version, setVersion] = useState<Version>(Version.OnePointTwo);\n\n const [lastInteractionSeen, setLastInteractionSeen] = useState(false);\n\n const [reportedInteractions, setReportedInteractions] = useState({});\n\n const {\n interactionsSeen,\n interactionsLocked,\n landingPagesSeenState,\n interactionsReporting,\n scoreData = {},\n feedback = {},\n exiting,\n exitComplete,\n assessments,\n moduleVariables,\n //\n enableBookmarking,\n } = useSelector((state: State) => {\n const { enableBookmarking } = state.theme;\n\n return {\n interactionsSeen: state.interactionsSeen,\n interactionsLocked: state.interactionsLocked,\n landingPagesSeenState: state.landingPagesSeenState,\n interactionsReporting: state.userBehaviour.scormResponses,\n scoreData: state.userBehaviour.score,\n feedback: state.feedback,\n exiting: state.exit,\n exitComplete: state.exitComplete,\n assessments: state.assessments,\n moduleVariables: state.moduleVariables,\n //\n enableBookmarking:\n enableBookmarking === undefined ? true : enableBookmarking,\n };\n });\n\n const allInteractions = useSelector(getAllInteractionsOrdered); //\n\n const scoringInteractions = useSelector(loadScoringBlocks);\n const numberOfScorableInteractions = scoringInteractions.length;\n\n useEffect(() => {\n if (!allInteractions.length) {\n return;\n }\n if (!interactionsSeen.length) {\n return;\n }\n\n const lastInteraction = allInteractions[allInteractions.length - 1].id;\n\n if (interactionsSeen.includes(lastInteraction)) {\n setLastInteractionSeen(() => true);\n }\n }, [interactionsSeen, allInteractions, setLastInteractionSeen]);\n\n const allInteractionsSeen =\n interactionsSeen &&\n allInteractions &&\n interactionsSeen.length === allInteractions.length;\n\n let scoreRaw = Object.values(scoreData as { [key: string]: number }).reduce<\n number\n >((acc, curr) => {\n // initialize _curr_ default\n let _curr_ = curr;\n\n // in the case where we might have exisitng minimized vales of 't' || 'f'\n //\n switch (_curr_.toString()) {\n case 't': {\n _curr_ = 1;\n break;\n }\n case 'f': {\n _curr_ = 0;\n break;\n }\n // and tap it again for good measure\n default:\n _curr_ = curr;\n }\n //\n\n // in the case where there could still exist a boolean\n // calculates fine implicitly but lets explicitly numberify it\n return acc + Number(_curr_);\n }, 0);\n\n let scorePercent = ((scoreRaw || 0) / numberOfScorableInteractions) * 100;\n\n // we'll default the score to 100 if. . . ?\n if (!moduleCompleteScoreRequirement) {\n // scorePercent = 100;\n }\n\n if (numberOfScorableInteractions <= 0) {\n scorePercent = 100;\n }\n\n const percentComplete =\n (interactionsSeen.length / allInteractions.length) * 100;\n\n const exitProps: ExitProps = {\n lastInteractionSeen,\n allInteractionsSeen,\n\n scoreRaw,\n scoreMax: numberOfScorableInteractions,\n passed: scorePercent >= Number(passMark),\n scorePercent,\n percentComplete,\n isComplete: false,\n sendScore: false,\n hasExited: exiting,\n shouldSendScoreWhen,\n moduleCompleteInterationRequirement,\n moduleCompleteScoreRequirement,\n sendOnlySuccessStatus,\n lessonStatus,\n scoringCriteria,\n };\n\n // Refactor this to respond to events\n SCORMToCollect({\n ...setShouldSendScore(setIsComplete(exitProps)),\n feedback,\n });\n\n // Initialise SCORM\n\n useEffect(() => {\n if (!initialised && !(window as any).hosted) {\n try {\n // TODO find a solution to this\n SCORM.version = (window as any).scormVersion || Version.OnePointTwo;\n\n scormInitialized = SCORM.init();\n\n setInitialized(scormInitialized);\n\n // if any of the interactionsSeen contain sIds that do not exist we nuke:\n // suspend_data\n // cmi.location\n const remoteData = SCORM.get(API[version].suspend_data);\n\n if (remoteData) {\n const remoteDataJSONParsed = JSON.parse(remoteData) || {};\n\n const { interactionsSeen = [] } = remoteDataJSONParsed;\n\n const sIds = (Object.values(getStore().getState().blocks) as Block[])\n .filter(entry => {\n return entry?.type === 'Interaction' && entry?.props?.sId;\n })\n .map(entry => {\n return entry?.props?.sId;\n });\n\n if (interactionsSeen.some(entry => !sIds.includes(entry))) {\n //\n console.warn(\n 'saved data contains interaction references that no longer exist in module. clearing out suspend_data and lessonLocation to reset'\n );\n\n SCORM.set(API[version].suspend_data, '');\n SCORM.set(API[version].location, '');\n }\n }\n\n //\n } catch (err) {\n window.console.log('scorm aint happy outside of LMS');\n }\n\n setVersion((SCORM.version as Version) || Version.TwoThousandAndFour);\n }\n }, [initialised]);\n\n // LOAD SAVED DATA\n useEffect(() => {\n if (window.location.href === 'http://localhost:3011/module.html') {\n return;\n }\n\n if (!initialised) {\n return;\n }\n\n // force incomplete if not explicitly marked as complete\n const completionStatus = SCORM.get(API_KEYS[version].completion);\n if (completionStatus !== CompletionString.Complete) {\n setSCORMCompletion(SCORM, version)(false);\n }\n\n //Get the latest suspend data\n const remoteData = SCORM.get(API[version].suspend_data);\n\n //\n let suspendedData: SuspendData = {\n interactionsSeen: [],\n interactionsLocked: [],\n landingPagesSeenState: {},\n interactionsReporting: {},\n scoreData: {},\n assessments: {},\n moduleVariables: {},\n location: '',\n };\n\n const state = getStore().getState();\n const { idToSIdMap, sIdToIdMap } = state;\n\n if (remoteData) {\n try {\n const remoteDataJSONParsed = JSON.parse(remoteData);\n\n let transformedInteractionsSeen: string[] = [];\n let transformedInteractionsLocked: string[] = [];\n\n if (remoteDataJSONParsed?.interactionsSeen?.length) {\n transformedInteractionsSeen = transformListFromSIdToId(\n sIdToIdMap,\n remoteDataJSONParsed.interactionsSeen\n );\n\n remoteDataJSONParsed.interactionsSeen = transformedInteractionsSeen;\n }\n\n if (remoteDataJSONParsed?.interactionsLocked?.length) {\n transformedInteractionsLocked = transformListFromSIdToId(\n sIdToIdMap,\n remoteDataJSONParsed.interactionsLocked\n );\n\n remoteDataJSONParsed.interactionsLocked = transformedInteractionsLocked;\n }\n\n let scoreData = remoteDataJSONParsed?.scoreData;\n if (scoreData) {\n remoteDataJSONParsed.scoreData = transformScoreDataFromSIdToId(\n scoreData,\n state\n );\n }\n\n let assessments = remoteDataJSONParsed?.assessments || {};\n if (Object.keys(assessments).length) {\n remoteDataJSONParsed.assessments = transformAssessmentsFromSuspendData(\n assessments,\n state\n );\n }\n\n suspendedData = {\n ...suspendedData, // defaults\n ...remoteDataJSONParsed,\n };\n } catch (err) {\n // console.log(err);\n suspendedData = {} as SuspendData;\n }\n }\n\n const entry = SCORM.get(API[version].entry);\n\n if (entry !== 'ab-initio' && enableBookmarking) {\n const location =\n SCORM.get(API[version].location) || suspendedData.location;\n\n //\n\n dispatch({\n type: 'LOAD_BOOKMARK_DATA',\n data: location,\n });\n }\n\n if (suspendedData && enableBookmarking) {\n dispatch({\n type: 'LOAD_SUSPEND_DATA',\n data: suspendedData,\n });\n\n dispatch({\n type: 'UPDATE_INTERACTIONS_SEEN',\n data: suspendedData?.interactionsSeen,\n });\n }\n\n const reported = Object.keys(\n suspendedData?.interactionsReporting || {}\n ).reduce((k, next: string) => {\n return {\n ...k,\n [next]: true,\n };\n }, {});\n\n setReportedInteractions(reported);\n\n // for the moment we're disabling the rehydration of scoreData\n // well. we're gonna not save any so there'd be nada to rehydrate from\n // return;\n //\n if (\n suspendedData?.scoreData &&\n !hasReloadedScoreData\n // &&\n // enableBookmarking\n ) {\n // UPDATE !!!\n // we're gonna reload scoreData in all cases now\n // && suspendedData?.assessments\n //\n //\n // we check and only reload the scoreData if we have any scoring assessments\n // why ?\n // each question in an assessment locks when it's resolved ( correct. or has met max attempts )\n // so we can't ' double up ' on the score\n // if we're scoring mutlichoice / sortation and they're not locking on return\n // we want them to just do their scroing thing like on first run\n // so any results pages etc are reading the current session score correctly etc\n //\n const { scoreData } = suspendedData;\n\n if (scoreData) {\n // instead of putting this in a loop\n // could update the action > reducer to accept a single object ?\n // or add a new action > reducer to handle that case ?\n //\n\n console.log(scoreData, 'is dispatched and reloaded ?');\n\n Object.keys(scoreData).forEach((entry: any, index) => {\n //\n dispatch(updateScoreAction(entry, scoreData[entry]));\n });\n }\n\n hasReloadedScoreData = true;\n }\n\n //\n }, [initialised]);\n\n useEffect(() => {\n // clear saved data\n\n pubSub.subscribe('RESET_MODULE', () => {\n SCORM.set(API[version].suspend_data, '');\n });\n }, []);\n\n /**\n * This piece of code needs to change\n *\n * The goal is to execute this only once; and only when requested.\n *\n * Possible solution is to listen for events. This makes sense BUT\n * it seems to not work natively in redux; and that makes sense as\n * it creates quite a hard dependency\n *\n * Another possible solution is to use the store\n */\n\n useEffect(() => {\n let unloaded = false;\n\n const un = () => {\n if (unloaded || !initialised) {\n return;\n }\n\n if (exitComplete) {\n return;\n }\n\n const props = setCompleteOnExitOps(SCORM, version, exitProps);\n SCORMToCollect(props);\n\n unloaded = true;\n\n if (!scormControlledExit) {\n SCORM.handleExitMode = false;\n\n const completion = SCORM.get(API_KEYS[version].completion);\n\n let checkedScormExitMessage = '';\n //\n if (version === '1.2' && lessonStatus === 'passed/failed/incomplete') {\n // if passed || failed. send the scormExitMessage\n // else suspend\n\n checkedScormExitMessage = ['passed', 'failed'].includes(completion)\n ? scormExitMessage\n : 'suspend';\n } else {\n // do the thing we were already doing\n checkedScormExitMessage =\n completion !== CompletionString.Complete\n ? 'suspend'\n : scormExitMessage;\n }\n\n SCORM.set(API[version].exit, checkedScormExitMessage); // scormExitMessage\n SCORM.save();\n SCORM.quit();\n }\n };\n\n window.addEventListener('beforeunload', un);\n window.addEventListener('unload', un);\n\n return () => {\n window.removeEventListener('beforeunload', un);\n window.removeEventListener('unload', un);\n };\n }, [\n initialised,\n version,\n SCORM,\n exitProps,\n exitComplete,\n scormControlledExit,\n lastInteractionSeen,\n ]);\n\n useEffect(() => {\n if (!initialised) {\n return;\n }\n\n if (!exiting) {\n return;\n }\n\n if (exitComplete) {\n return;\n }\n\n const exitPropsProcessed = setCompleteOnExitOps(SCORM, version, exitProps);\n\n SCORMToCollect({\n ...exitPropsProcessed,\n feedback,\n });\n\n SCORM.handleExitMode = false;\n\n SCORM.set(API[version].exit, scormExitMessage);\n SCORM.save();\n\n let timeoutQuit;\n\n if (scormExitDelay) {\n SCORM.quit();\n } else {\n timeoutQuit = setTimeout(() => {\n SCORM.quit();\n }, 200);\n }\n\n const timeout = setTimeout(() => {\n if (scormControlledExit) {\n dispatch(setExitCompleteAction());\n }\n }, 1000);\n\n return () => {\n clearTimeout(timeout);\n clearTimeout(timeoutQuit);\n };\n }, [exiting, exitComplete, version, SCORM, exitProps]);\n\n /**\n * END SOLUTION REQUIREMENT\n */\n\n // SAVE LOCAL DATA ON CHANGES\n useEffect(() => {\n // TODO: remove the magic number here\n const delaySetSCORM = setTimeout(() => {\n //\n // my thinking here is we remove the question and response entries at the 'last minute'\n const editedInteractionsReporting = Object.keys(\n interactionsReporting\n ).reduce((acc, curr) => {\n const { question, response, ...$ } = interactionsReporting[curr];\n\n return {\n ...acc,\n [curr]: $,\n };\n }, {});\n\n const state = getStore().getState();\n const { idToSIdMap, sIdToIdMap, moduleVariables } = state;\n\n const assessmentsWithDataRemoved = structuredClone(assessments);\n\n for (const entry in assessmentsWithDataRemoved) {\n if (assessmentsWithDataRemoved[entry].data) {\n assessmentsWithDataRemoved[entry].data = {};\n }\n }\n\n const assessmentsToSuspendData =\n assessmentsWithDataRemoved &&\n transformAssessmentsToSuspendData(assessmentsWithDataRemoved, state);\n\n const suspendData = {\n //\n // if we're not caring about rehydrating score...\n scoreData: transformScoreDataFromIdToSId(scoreData, state),\n //\n interactionsSeen: transformListFromIdToSId(\n idToSIdMap,\n interactionsSeen\n ),\n interactionsLocked: transformListFromIdToSId(\n idToSIdMap,\n interactionsLocked\n ),\n\n landingPagesSeenState,\n //\n // saving on LMS 'bandwidth'\n // disabling the sending of these for the moment\n // interactionsReporting data will appear in the cmi.interactions\n // interactionsReporting: editedInteractionsReporting,\n //\n // this will need to come back i think when we add in\n // the more targetted 'what assessment are we scoring'\n assessments: assessmentsToSuspendData,\n\n moduleVariables,\n //\n // !!!\n // location is not saved on state. but is directly stored in suspend_data\n // we need to ' cycle ' it back through so as not to be overridden to non-existent / '' / undefined\n location,\n };\n\n SCORMToCollect(suspendData, 'data');\n\n if (initialised) {\n SCORM.set(API[version].suspend_data, JSON.stringify(suspendData));\n }\n\n const props = setCompleteOnExitOps(SCORM, version, exitProps);\n SCORMToCollect(props);\n }, 100);\n\n return () => {\n clearTimeout(delaySetSCORM);\n };\n }, [\n initialised,\n interactionsSeen,\n landingPagesSeenState,\n interactionsLocked,\n interactionsReporting,\n lastInteractionSeen,\n assessments,\n moduleVariables,\n ]);\n\n const [ri, setRI] = useState<string[]>([]);\n\n // Interaction Reporting\n // Store information about a session and user doing sortations and\n // multichoices\n useEffect(() => {\n const completed = Object.keys(reportedInteractions);\n const reported = Object.keys(interactionsReporting);\n\n const delivered = reported\n .filter(x => !ri.includes(x))\n .filter(x => !completed.includes(x))\n .map(r => {\n const rep = interactionsReporting[r];\n\n if (initialised) {\n setCMIInteractions(\n rep.reportable as ReportableInteractions,\n version\n )(rep);\n }\n\n const resultParsed = getResult(version, rep.result);\n\n const qp = {\n id: rep.id,\n question: rep.question,\n type: rep.type,\n reportable: rep.reportable,\n response: rep.response ? rep.response : 'pending',\n correct: rep.correct ? rep.correct : 'pending',\n result: resultParsed as any, // this is BAD\n success: API_KEYS[version].result[rep.result],\n };\n\n SCORMToCollect({ [rep.id]: qp }, 'interactions');\n\n return r;\n });\n\n setRI([...ri, ...delivered]);\n }, [initialised, interactionsReporting]);\n\n // SAVE FEEDBACK AS INTERACTION REPORTING\n useEffect(() => {\n if (!initialised) {\n return;\n }\n\n const qid: qFunc = ({ id, key }) => {\n SCORM.set(`cmi.interactions.${key}.id`, id);\n };\n\n const qtype: qFunc = ({ key, type }) => {\n SCORM.set(`cmi.interactions.${key}.type`, type);\n };\n\n const qstudent: qFunc = ({ key, response }) => {\n SCORM.set(`cmi.interactions.${key}.student_response`, response);\n };\n\n for (const [key, value] of Object.entries(feedback)) {\n let count = SCORM.get('cmi.interactions._count');\n\n qid({ id: `rating-${key}-fill-in`, key: count } as any);\n qtype({ key: count, type: 'fill-in' } as any);\n qstudent({ key: count, response: `${value.rating}` } as any);\n\n SCORM.save();\n\n count = SCORM.get('cmi.interactions._count');\n qid({ id: `message-${key}`, key: count } as any);\n qtype({ key: count, type: 'fill-in' } as any);\n qstudent({ key: count, response: value.message } as any);\n\n SCORM.save();\n }\n }, [initialised, feedback]);\n\n // BOOKMARKING\n // when the section comes into view, store that in the scorm so that\n // we can get back there later\n useEffect(() => {\n // if there's only 1 interaction in the entire module. NO BOOKMARK\n if (allInteractions.length === 1) {\n console.log(\n 'there is only 1 interaction in the module. nothing to bookmark'\n );\n return;\n }\n\n const setLocationOnSuspendData = location => {\n let suspend_data = SCORM.get(API[version].suspend_data);\n\n if (suspend_data) {\n suspend_data = JSON.parse(suspend_data);\n\n SCORM.set(\n API[version].suspend_data,\n JSON.stringify({\n ...suspend_data,\n location,\n })\n );\n }\n };\n\n const unsubscribe: any = pubSub.subscribe(\n 'SECTION_IN_VIEW',\n ({ sectionInView }) => {\n const currentLocation = getCurrentLocation() as string;\n\n if (initialised && allInteractions[0]?.id === sectionInView?.id) {\n //\n // is first ' page ' of module. some logic to clear bookmarking ? set location to empty string'\n\n location = '';\n SCORM.set(API[version].location, location);\n setLocationOnSuspendData(location);\n\n return;\n }\n\n const [topicSId, interactionSId] =\n (currentLocation && currentLocation.split('/')) || [];\n const topic = getCurrentTopic();\n const interaction = getInteractionsInTopic(topic).find((b: any) => {\n const block = getBlockById(b.id);\n //\n return block && block?.props?.sId == interactionSId;\n }) as Block;\n\n // ignore any bookmarking that might happen within the quizEssment ( questions )\n\n const subType = interaction?.meta?.subType;\n\n if (topic?.props?.hiddenFromNextAndBackNavigation) {\n // DO NOT BOOKMARK WITHIN TOPICS THAT ARE hiddenFromNextAndBackNavigation !!!\n\n return;\n }\n\n if (\n subType &&\n ['AssessmentQuestion', 'AssessmentResults'].includes(subType)\n ) {\n return;\n }\n //\n\n location = currentLocation;\n\n SCORMToCollect({\n location,\n });\n\n // adding a temp kinda bookmark on the localStorageState\n // uncomment etc as needed\n // setLocalStorageStateBookmark(location);\n\n if (initialised) {\n SCORM.set(API[version].location, location);\n //\n\n setLocationOnSuspendData(location);\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }, [initialised]);\n\n return null;\n};\n","import getTopics from 'services/apiHelpers/getTopics';\nimport { Block } from '@chameleoncreator/creator-app';\n\nexport default () => {\n return getTopics().filter((t: Block) => {\n return t?.props?.asAssessment;\n });\n};\n","\nexport const setExitCompleteAction = () => {\n return {\n type: 'SET_EXIT_COMPLETE',\n data: true,\n };\n};\n","export const updateAssessmentAction = assessment => {\n // console.log(assessment);\n\n return {\n type: 'UPDATE_ASSESSMENT',\n data: assessment,\n };\n};\n","import { on } from 'process';\nimport { useState, useEffect } from 'react';\nimport { CHAMELEON_CACHE_v1 } from 'services/imageCache';\n\ntype Src = string | undefined;\n\nexport const useCachedResource = (\n cacheName: string = CHAMELEON_CACHE_v1,\n\n src: string\n): Src => {\n const [$, $$] = useState<Src>(undefined);\n\n // i think it's these early returns that are breaking it\n\n // if (!('caches' in self)) {\n // return src;\n // }\n\n // if (!src) {\n // return undefined;\n // }\n\n // caches.has(cacheName).then(hasCacheName => {\n // if (!hasCacheName) {\n // console.warn(`!caches.has(${cacheName})`);\n // return src;\n // }\n // });\n\n // knowing that we're sensitive to this being an antipattern\n // we need something that at least achieves a ' cancel ' of the setState\n // since the async / fetch etc\n const setStateIfMounted = value => {\n $$(value);\n };\n\n useEffect(() => {\n if (!('caches' in self)) {\n $$(src);\n return;\n }\n\n if (!src) {\n $$(undefined);\n return;\n }\n\n try {\n // console.log('caches.has(cacheName) ?');\n // throw 'ERRORzzz !!!';\n\n caches.has(cacheName).then(hasCacheName => {\n if (!hasCacheName) {\n console.warn(`!caches.has(${cacheName})`);\n $$(src);\n return;\n }\n });\n } catch (err) {\n console.log('_ _ _ _ _');\n console.warn(err);\n console.log('_ _ _ _ _');\n\n $$(src);\n return;\n }\n //\n\n // carry on. . .\n\n caches.open(cacheName).then(cache => {\n cache\n .match(src as RequestInfo)\n .then(response => {\n if (response) {\n if (!response.ok) {\n throw Error('invalid response');\n }\n\n return response.blob().then(blob => {\n const objectURL = URL.createObjectURL(blob);\n $$(objectURL);\n });\n } else {\n return fetch(src as RequestInfo)\n .then(response => {\n if (!response.ok) {\n throw Error('invalid response');\n }\n\n const clonedResponse = response.clone();\n cache.put(src as RequestInfo, response);\n return clonedResponse;\n })\n .then(response => {\n return response.blob();\n })\n .then(blob => {\n const objectURL = URL.createObjectURL(blob);\n $$(objectURL);\n });\n }\n })\n .catch(err => {\n console.warn(err);\n // if there IS an error we'll return src\n cache.delete(src);\n $$(src);\n });\n });\n\n return () => {\n //\n // need to figure some solid way to bail from the promise\n };\n }, [cacheName, src]);\n\n return $;\n};\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n createContext,\n useLayoutEffect,\n useRef,\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { Box } from '@chameleoncreator/creator-ui';\nimport useImageLoader from 'hooks/useImageLoader';\nimport { updateAssessmentAction } from 'actions/updateAssessmentAction';\nimport { useDispatch } from 'react-redux';\nimport { useCachedResource } from 'services/useCachedResource';\nimport { CHAMELEON_CACHE_v1 } from 'services/imageCache';\n\nconst Background = ({\n background,\n backgroundImageOpacity,\n backgroundBlur = 0,\n}) => {\n let cachedBackgroundImage = useCachedResource(CHAMELEON_CACHE_v1, background);\n\n return (\n <div\n style={{\n position: 'fixed',\n left: 0,\n top: 0,\n width: '100vw',\n height: '100vh',\n ...(background && {\n background: `url('${cachedBackgroundImage ||\n background}') center / cover no-repeat`,\n }),\n\n opacity: backgroundImageOpacity / 100,\n filter: `blur(${backgroundBlur}px)`,\n // scale the thing up to not have blurry edges\n ...(backgroundBlur > 0 && {\n transformOrigin: 'center',\n transform: 'scale(1.1)',\n }),\n pointerEvents: 'none',\n }}\n />\n );\n};\n\nconst BackgroundWithParallax = props => {\n const {\n state,\n interactions,\n background,\n backgroundImageOpacity,\n backgroundBlur = 0,\n parallaxValue = 10,\n width,\n height,\n } = props;\n\n const cachedBackgroundImage = useCachedResource(\n CHAMELEON_CACHE_v1,\n background\n );\n\n const [\n refreshParallaxScrollOnTopicChange,\n setRefreshParallaxScrollOnTopicChange,\n ] = useState<boolean>(false);\n\n const img = useRef<HTMLImageElement | null>(null);\n const setImageRef = useCallback(node => {\n img.current = node;\n }, []);\n\n const minHeight = `${100 + parallaxValue}vh`;\n\n useEffect(() => {\n if (!img.current) {\n return;\n }\n\n const parallaxThrottler = () => {\n // we can implement whatever more specific throttling approach...\n requestAnimationFrame(parallax);\n };\n\n const parallax = () => {\n if (!img.current) {\n return;\n }\n\n const { innerHeight, scrollY } = window;\n const imgTravel = img.current.offsetHeight - innerHeight;\n const scrollTravel = innerHeight * (interactions.length - 1);\n const scrollUnit = imgTravel / scrollTravel;\n const scrollValue = scrollY * scrollUnit;\n\n if (scrollValue > imgTravel) {\n return;\n }\n\n //\n img.current.style.transform = `translateY(-${scrollValue}px)`;\n };\n //\n\n window.addEventListener('scroll', parallaxThrottler);\n window.addEventListener('resize', parallaxThrottler);\n parallax();\n\n return () => {\n window.removeEventListener('scroll', parallaxThrottler);\n window.removeEventListener('resize', parallaxThrottler);\n };\n }, [setImageRef, refreshParallaxScrollOnTopicChange]);\n\n useEffect(() => {\n if (!img.current) {\n return;\n }\n\n let tick;\n\n if (document.body.scrollHeight > window.innerHeight) {\n const imgHeightOnLoad = img.current.offsetHeight;\n\n let checkLimit = 0;\n\n tick = setInterval(() => {\n if (!img.current) {\n return;\n }\n\n if (img.current.offsetHeight !== imgHeightOnLoad) {\n clearInterval(tick);\n setRefreshParallaxScrollOnTopicChange(true);\n }\n\n //\n if (checkLimit >= 300) {\n clearInterval(tick);\n }\n checkLimit += 1;\n //\n }, 1);\n }\n\n return () => {\n clearInterval(tick);\n };\n }, [setImageRef, setRefreshParallaxScrollOnTopicChange]);\n\n return (\n <_>\n <div\n style={{\n position: 'fixed',\n left: 0,\n top: 0,\n width: '100vw',\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n pointerEvents: 'none',\n }}\n >\n <img\n ref={setImageRef}\n src={cachedBackgroundImage || background}\n style={{\n all: 'initial',\n position: 'absolute',\n objectFit: 'cover',\n minWidth: '100vw',\n minHeight,\n opacity: backgroundImageOpacity / 100,\n filter: `blur(${backgroundBlur}px)`,\n }}\n />\n </div>\n </_>\n );\n};\n\n// could / would / should put this in the store / redux\ninterface IAssessmentContext {\n assessmentId: string;\n submitted: {\n [id: string]: {\n answer: string[];\n correctAnswer: string[];\n isCorrect: boolean | undefined;\n attemptCount: number;\n };\n };\n resetQuestion: (id: string) => void;\n setSubmitted: (\n id: string,\n answer: string[],\n correctAnswer: string[],\n isCorrect: boolean\n ) => void;\n maxAttempts: undefined | number;\n answersWrappingAlignment?: string;\n saveData?: boolean;\n learnMoreResetsAssessment?: boolean;\n name: string;\n scoring: boolean | undefined;\n}\n\nconst GradientBackground = ({ backgroundGradientData }) => {\n const {\n backgroundPrimaryColor,\n backgroundSecondaryColor,\n backgroundGradientAngle = 0,\n } = backgroundGradientData || {};\n\n return (\n <div\n css={css({\n position: 'fixed',\n width: '100vw',\n height: '100vh',\n background: `linear-gradient(${backgroundGradientAngle}deg, ${backgroundSecondaryColor}, ${backgroundPrimaryColor})`,\n })}\n />\n );\n};\n\nconst AssessmentContext = createContext<IAssessmentContext>({\n assessmentId: '',\n submitted: {},\n resetQuestion: () => {},\n setSubmitted: () => {},\n maxAttempts: undefined,\n answersWrappingAlignment: 'center',\n saveData: false,\n learnMoreResetsAssessment: false,\n name: '',\n scoring: undefined,\n});\n\nconst AssessmentContainer = props => {\n const {\n // state,\n theme,\n topic: assessment,\n children,\n } = props as any;\n\n //\n const {\n maxAttempts,\n answersWrappingAlignment,\n saveData = false,\n learnMoreResetsAssessment = false,\n } = assessment?.props;\n\n const dispatch = useDispatch();\n\n const [submitted, setSubmitted] = useState<{\n [id: string]: {\n answer: string[];\n correctAnswer: string[];\n isCorrect: boolean;\n attemptCount: number;\n };\n }>({});\n\n const block: any = getBlockById(assessment.id);\n\n const { name, scoring } = assessment.props;\n\n let {\n sId,\n src,\n backgroundImage,\n backgroundImageOpacity = 100,\n\n width,\n height,\n backgroundBlur = 0,\n parallax = false,\n parallaxValue = 10,\n backgroundGradient,\n backgroundSecondaryColor,\n backgroundGradientAngle = 0,\n backgroundGradientFullHeight = false,\n }: any = getBlockById(assessment.id).props;\n\n // dirty gotta try and cover for legacy backgroundImage\n if (src) {\n backgroundImage = src;\n }\n\n let backgroundColor =\n block.props.backgroundColor || theme.backgroundColor || '';\n\n if (backgroundGradient && backgroundGradientFullHeight) {\n backgroundColor = `linear-gradient(${backgroundGradientAngle}deg, ${backgroundSecondaryColor}, ${block.props.backgroundColor})`;\n }\n\n const textColor = block.props.textColor || theme.textColor || '';\n\n const opacity = backgroundImageOpacity / 100;\n\n return (\n <AssessmentContext.Provider\n value={\n {\n assessmentId: assessment.id,\n name: assessment.props.name,\n scoring: assessment.props.scoring,\n submitted,\n resetQuestion(id: string) {\n const updatedSubmissions = JSON.parse(JSON.stringify(submitted));\n delete updatedSubmissions[id];\n\n setSubmitted(updatedSubmissions);\n //\n },\n setSubmitted(\n id: string,\n answer: string[],\n correctAnswer: string[],\n isCorrect: boolean\n ) {\n return;\n\n // move all this into the question itself since using state\n\n const attemptCount = submitted[id] ? submitted[id].attemptCount : 0;\n\n dispatch(\n updateAssessmentAction({\n assessmentId: assessment.id,\n questionData: {\n [id]: {\n answer,\n correctAnswer,\n isCorrect,\n attemptCount: attemptCount + 1,\n },\n },\n })\n );\n\n setSubmitted({\n ...submitted,\n [id]: {\n answer,\n correctAnswer,\n isCorrect,\n attemptCount: attemptCount + 1,\n },\n });\n },\n maxAttempts,\n answersWrappingAlignment,\n saveData,\n learnMoreResetsAssessment,\n } as IAssessmentContext\n }\n >\n <Box\n className=\"fader_-5s\"\n id=\"main\"\n tabindex=\"-1\"\n css={css`\n position: relative;\n // width: 100vw;\n // height: 100vh;\n background: ${backgroundColor};\n `}\n >\n {backgroundGradient && !backgroundGradientFullHeight && (\n <GradientBackground\n backgroundGradientData={{\n backgroundGradientAngle,\n backgroundPrimaryColor: backgroundColor,\n backgroundSecondaryColor,\n }}\n />\n )}\n\n {window.dev() || !parallax ? (\n <Background\n background={backgroundImage}\n backgroundImageOpacity={backgroundImageOpacity}\n backgroundBlur={backgroundBlur}\n />\n ) : (\n <BackgroundWithParallax\n // state={state}\n interactions={children.props.interactions}\n background={backgroundImage}\n backgroundImageOpacity={backgroundImageOpacity}\n backgroundBlur={backgroundBlur}\n parallaxValue={parallaxValue}\n width={width}\n height={height}\n />\n )}\n\n {children}\n </Box>\n </AssessmentContext.Provider>\n );\n};\n\nexport default AssessmentContainer;\nexport { AssessmentContext };\n","import { isValidElement } from 'react';\n\n/**\n * detect IE\n * returns version of IE or false, if browser is not Internet Explorer\n */\nfunction isIE() {\n var ua = window.navigator.userAgent;\n\n // Test values; Uncomment to check result …\n\n // IE 10\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\n\n // IE 11\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\n\n // Edge 12 (Spartan)\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\n\n // Edge 13\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\n\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n // var edge = ua.indexOf('Edge/');\n // if (edge > 0) {\n // \t// Edge (IE 12+) => return version number\n // \treturn parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n // }\n\n // other browser\n return false;\n}\n\nexport default isIE;\n","import isIE from 'services/isIE';\n\nconst ie11VerticalFlexCenterFix = height =>\n\tisIE()\n\t\t? `\n&::before {\n\tdisplay: block;\n\tcontent: '';\n\t${height}\n}`\n\t\t: '';\n\nexport default ie11VerticalFlexCenterFix;\n","function ReplaceWithPolyfill() {\n 'use-strict'; // For safari, and IE > 10\n var parent = this.parentNode,\n i = arguments.length,\n currentNode;\n if (!parent) return;\n if (!i)\n // if there are no arguments\n parent.removeChild(this);\n while (i--) {\n // i-- decrements i and returns the value of i before the decrement\n currentNode = arguments[i];\n if (typeof currentNode !== 'object') {\n currentNode = this.ownerDocument.createTextNode(currentNode);\n } else if (currentNode.parentNode) {\n currentNode.parentNode.removeChild(currentNode);\n }\n // the value of \"i\" below is after the decrement\n if (!i)\n // if currentNode is the first argument (currentNode === arguments[0])\n parent.replaceChild(currentNode, this);\n // if currentNode isn't the first\n else parent.insertBefore(currentNode, this.previousSibling);\n }\n}\nif (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = ReplaceWithPolyfill;\nif (!CharacterData.prototype.replaceWith)\n CharacterData.prototype.replaceWith = ReplaceWithPolyfill;\nif (!DocumentType.prototype.replaceWith)\n DocumentType.prototype.replaceWith = ReplaceWithPolyfill;\n","import { emptyString } from 'react-select/src/utils';\nimport isIE from 'services/isIE';\nimport 'services/replaceWithPolyfill';\nimport 'services/removePolyfill';\nimport { CALCULATED_LINE_HEIGHT_OFFSET } from 'styles/variables';\nimport getStore from 'services/getStore';\n\nlet linksShouldPopup = false;\n\nconst lineBreak = () => {\n const _ = document.createElement('span');\n _.className = 'chameleon-line-break';\n _.style.display = 'block';\n _.style.visibility = 'hidden';\n _.innerHTML = '';\n\n return _;\n};\n\nconst updateReadOnlyText = containerElement => {\n if (!containerElement) {\n return;\n }\n\n // adding in the selector for multichoice answers\n // so they can receive the same formatting\n // they have always had the chamelon-text class removed because their styles are local\n //\n const chameleonText = Array.from(\n containerElement.querySelectorAll(\n '.chameleon-text *, .chameleon-text-multichoice-answer *'\n )\n );\n\n chameleonText.forEach((entry: any) => {\n // updated\n // if entry is a paragraph specifically and has no content\n // that's slate adding the empty p ( which would have no height )\n // we replace it with our lineBreak\n\n if (entry.tagName.toLowerCase() === 'p' && !entry.innerText.toString()) {\n entry.replaceWith(lineBreak());\n }\n\n // since we need to clear out any other tags that could interfere with screen readers\n //\n if (\n ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(entry.tagName.toLowerCase())\n ) {\n // because slate wraps the p tag ( which is the content ) with the alignment div\n // we remove the div and set the appropriate textAlign style on the heading itself\n const textAlignments = Array.from(entry.querySelectorAll('div'));\n textAlignments.forEach((div: any) => {\n if (div.className.includes('chameleon-text-align')) {\n let dataType = div.getAttribute('data-type');\n\n const rE = new RegExp(\n `<div class=\"${div.className}\" data-type=\"${dataType}\">`,\n 'g'\n );\n\n div.outerHTML = div.outerHTML.replace(rE, '');\n\n if (dataType) {\n dataType = dataType.replace('textAlign', '').toLowerCase();\n }\n\n entry.style.textAlign = dataType;\n }\n });\n\n const pTags = Array.from(entry.querySelectorAll('p'));\n pTags.forEach((p: any) => {\n if (p.innerText.toString()) {\n p.outerHTML = p.outerHTML\n .replace(/\\<p data-type=\\\"paragraph\\\"\\>/g, '')\n .replace(/\\<\\/p\\>/g, '<br>');\n }\n });\n }\n\n if (entry.dataset.type === 'indent') {\n const closestLi = entry.closest('li');\n\n if (closestLi) {\n closestLi.classList.add('indent');\n } else {\n entry.classList.add('indent-alt');\n }\n }\n\n // if ul, ol is empty. remove it\n if (['ul', 'ol'].includes(entry.tagName.toLowerCase())) {\n if (!entry.innerHTML || !entry.innerText) {\n // entry.remove();\n // console.log(entry);\n }\n }\n\n // if li doesn't have a span wrapping content. is old way\n // update\n if (entry.tagName.toLowerCase() === 'li') {\n entry.classList.remove('chameleon-li');\n const liInnerHTML = entry.innerHTML;\n entry.innerHTML = `<span>${liInnerHTML}</span>`;\n }\n\n if (entry.tagName.toLowerCase() === 'a') {\n const spans = Array.from(entry.querySelectorAll('span'));\n spans.forEach((span: any) => {\n // we remove the color if it's been set\n // since it creates conflict with the link colors and causes confusion\n span.style.color = '';\n });\n }\n\n const fontSizeSpans = Array.from(\n entry.querySelectorAll('[data-type=\"fontSize\"]')\n );\n\n fontSizeSpans.forEach((s: any) => {\n const fontSize = parseInt(window.getComputedStyle(s).fontSize, 10);\n const calculatedLineHeight =\n fontSize <= 18 ? 1.5 : fontSize * CALCULATED_LINE_HEIGHT_OFFSET;\n //\n s.style.lineHeight = `${calculatedLineHeight}px`;\n });\n\n if (isIE()) {\n if (entry.style.fontFamily === '') {\n entry.style.fontFamily = '';\n }\n }\n });\n\n chameleonText.forEach((entry: any) => {\n entry.innerHTML = entry.innerHTML\n .replace(/…/g, '…')\n .replace(/—/g, '—')\n .replace(/–/g, '–');\n });\n\n chameleonText.forEach((entry: any) => {\n entry.innerHTML = entry.innerHTML\n .replace(/…/g, '…')\n .replace(/—/g, '—')\n .replace(/–/g, '–');\n });\n\n // chameleonText.forEach((entry: any) => {\n // entry.innerHTML = entry.innerHTML.replace(\n // /\\$\\$(.*?)\\$\\$/g,\n // // getStore().getState().moduleVariables?.learnerName\n // window['moduleVariables']?.learnerName\n // );\n // });\n\n const ulols: HTMLElement[] = Array.from(\n containerElement.querySelectorAll(\n '.chameleon-text div > ul, .chameleon-text div > ol, .chameleon-text-multichoice-answer div > ul, .chameleon-text-multichoice-answer div > ol'\n )\n );\n\n // console.log(ulols);\n\n ulols.forEach((ulol: HTMLElement) => {\n let ulol_: HTMLElement[] = Array.from(ulol.querySelectorAll('ul, ol'));\n ulol_.reverse();\n // const chameleonTextReversed = [...Array.from(ulol_)].reverse();\n\n ulol_.forEach((entry: HTMLElement) => {\n if (['ul', 'ol'].includes(entry.tagName.toLowerCase())) {\n // console.log(entry, entry.previousSibling);\n\n const previousSibling = entry.previousSibling as HTMLElement;\n\n if (!previousSibling) {\n return;\n }\n\n let closestLi;\n\n const previousSiblingTagName = previousSibling?.tagName?.toLowerCase();\n\n if (previousSiblingTagName === 'li') {\n closestLi = previousSibling;\n } else if (['ul', 'ol'].includes(previousSiblingTagName)) {\n // console.log(previousSibling, 'is of type :', previousSibling.tagName);\n closestLi = previousSibling.lastChild;\n }\n\n if (closestLi) {\n closestLi.appendChild(entry);\n }\n }\n });\n });\n\n if (!linksShouldPopup) {\n let IS_POPUP;\n\n const oldWidth = window.innerWidth;\n const oldHeight = window.innerHeight;\n\n window.resizeBy(-1, -1);\n\n setTimeout(() => {\n const newWidth = window.innerWidth;\n const newHeight = window.innerHeight;\n\n if (newWidth !== oldWidth && newHeight !== oldHeight) {\n IS_POPUP = true;\n window.resizeBy(1, 1);\n }\n }, 1000 / 60);\n\n document.addEventListener('click', (e: any) => {\n if (e.target.tagName.toLowerCase() === 'a') {\n const link = e.target;\n const { href, target } = link;\n\n if (IS_POPUP && target === '_blank') {\n // if we're in a popup context. . .\n e.preventDefault();\n //\n link.setAttribute('target', 'popup');\n\n window.open(\n href,\n 'popup',\n 'width=' + screen.width + ', height=' + screen.height\n );\n }\n }\n });\n linksShouldPopup = true;\n }\n\n console.log();\n};\n\nexport default updateReadOnlyText;\n","import { Block } from '@chameleoncreator/creator-app';\n\nexport interface InteractionStyle {\n background?: string;\n foreground?: string;\n buttonBackground?: string;\n buttonForeground?: string;\n}\n\nexport interface InteractionProps {\n name: string;\n columnCount: number;\n columnsReversed: boolean;\n style: InteractionStyle;\n}\n\nexport const reverse = <T = any>(a: T, b: T, reversed: boolean): [T, T] => {\n return reversed ? [a, b] : [b, a];\n};\n\nexport const repeat = (a: () => Block, count: number): Block[] => {\n return Array.from(Array(count)).map(a);\n};\n","import { Block, cloneBlock } from '@chameleoncreator/creator-app';\nimport { createBlock } from './block';\nimport { reverse } from './interactions/interaction';\n\nexport type contentFor = (i: number) => () => Block;\n\nexport const createLayout = (\n content: (i: number) => () => Block,\n count: number,\n reversed: boolean\n): Block => {\n const layout = [\n (content: contentFor, reversed: boolean): Block => {\n return createBlock(\n 'SingleColumnLayout',\n reverse(\n createBlock('Column', [content(0)()]),\n createBlock('Column', [content(1)()]),\n reversed\n )\n );\n },\n (content: contentFor, reversed: boolean) => {\n return createBlock(\n 'TwoColumnLayout',\n reverse(\n createBlock('Column', [content(0)()]),\n createBlock('Column', [content(1)()]),\n reversed\n )\n );\n },\n ];\n\n return layout[count](content, reversed);\n};\n\n// returns a new block to be saved\n// TODO: Implement\nconst swapColumnOrder = (block: Block): Block => {\n const newBlock = cloneBlock(block);\n const newChildren = [\n newBlock.children![1] as Block,\n newBlock.children![0] as Block,\n ];\n newBlock.children = newChildren;\n\n return newBlock;\n};\n\n// returns a new block to be saved\nconst changeColumnCount = (block: Block, count: number): Block => {\n const newBlock = cloneBlock(block);\n\n if (count === 2) {\n newBlock.type = 'TwoColumnLayout';\n } else {\n newBlock.type = 'SingleColumnLayout';\n }\n return newBlock;\n};\n\nconst isOneColumn = (str: string): boolean => {\n if (str.includes('OneColumn')) {\n return true;\n }\n\n return false;\n};\n\nconst isReversed = (str: string): boolean => {\n if (str.includes('Reversed')) {\n return true;\n }\n\n return false;\n};\n\nexport const changeLayout = (\n block: Block,\n currentLayout: string,\n change: string\n): Block => {\n // console.log(currentLayout, change);\n\n let newBlock = block;\n if (currentLayout === change) {\n return block;\n }\n\n if (isReversed(currentLayout) !== isReversed(change)) {\n newBlock = swapColumnOrder(newBlock);\n }\n\n if (isOneColumn(currentLayout) !== isOneColumn(change)) {\n if (isOneColumn(change)) {\n newBlock = changeColumnCount(block, 1);\n } else {\n newBlock = changeColumnCount(block, 2);\n }\n }\n\n return newBlock;\n};\n","import pdf_default from 'assets/pdf_thumbnail_26012023.png';\nimport { createBlock } from 'factories/block';\nimport { createEditableBtn } from './editableBtn';\n\n// defaults to true\n// useBackgroundControls: useBackgroundControls !== undefined ? useBackgroundControls : true,\n\nexport type MediaBlock = {\n child?: number;\n src?: string;\n name?: string;\n style?: { [key: string]: number | string };\n removeTypes?: string[];\n forceInclude?: string[];\n useBackgroundControls?: boolean;\n bulletColor?: string;\n fit?: string;\n imgPlaceholderIndex?: number;\n isAdditionalMedia?: boolean;\n type?: string;\n};\n\nconst createTranscriptBlock = useBackgroundControls => {\n return createBlock(\n 'Transcript',\n [\n createBlock('Text', [], {\n props: {\n useBackgroundControls:\n useBackgroundControls !== undefined ? useBackgroundControls : true,\n },\n }),\n createEditableBtn({ label: 'Continue' }),\n ],\n {}\n );\n};\n\nexport const createMediaBlock = (props: MediaBlock) => {\n const {\n child = 1,\n src = undefined,\n removeTypes = [],\n forceInclude = [],\n useBackgroundControls,\n bulletColor,\n fit,\n imgPlaceholderIndex,\n isAdditionalMedia,\n } = props;\n\n // if is an image\n // image specific props;\n\n return createBlock(\n 'Media',\n [\n createBlock('Text', [], {\n props: {\n useBackgroundControls:\n useBackgroundControls !== undefined ? useBackgroundControls : true,\n bulletColor,\n },\n }),\n\n createBlock('Image', [], {\n props: {\n src: child === 1 && src ? src : undefined,\n fit,\n },\n }),\n\n createBlock('Video', [createTranscriptBlock(useBackgroundControls)], {\n props: {\n src: child === 2 && src ? src : 'https://vimeo.com/512335672',\n },\n }),\n createBlock('SVG', [], {\n props: {\n src: child === 3 && src,\n },\n }),\n createBlock('Embed', [], {\n props: {\n src: child === 4 && src,\n },\n }),\n createBlock('Audio', [createTranscriptBlock(useBackgroundControls)], {\n props: {\n src:\n child === 5 && src\n ? src\n : 'https://www.bensound.com/bensound-music/bensound-dubstep.mp3',\n },\n }),\n createBlock(\n 'PDF',\n [\n createBlock(\n 'OpenPDF',\n [\n createBlock('Text', [], {\n props: {},\n }),\n ],\n {\n props: {\n src: pdf_default,\n fit: 'cover',\n },\n }\n ),\n ],\n {\n props: {\n src: child === 6 && src ? src : '',\n displayInline: false,\n },\n }\n ),\n ],\n {\n props: {\n name: props.name || '',\n style: props.style || {},\n child,\n removeTypes,\n forceInclude,\n src,\n imgPlaceholderIndex,\n isAdditionalMedia,\n },\n meta: {\n subType: 'Media',\n },\n }\n );\n};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { findBlocksIn } from 'selectors/block';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { colors } from 'styles/variables';\nimport { createContinueBtn } from './continueBtn';\nimport { getSId } from '../utils';\nimport { createMediaBlock } from './media';\nimport placeholder from 'assets/addImg@3x.svg';\n\nconst { lGrey0 } = colors;\n\nexport enum ImageChoice {\n Left = 'Left',\n Right = 'Right',\n Fill = 'Fill',\n None = 'None',\n}\n\nexport type AccordionInteractionProps = InteractionProps & {\n numberOfAccordions: number;\n imgChoice: ImageChoice;\n};\n\nconst makeLeftChoice = (imgBlock: Block, textBlock: Block): Block[] => {\n return [\n createBlock('Column', [imgBlock]),\n createBlock('Column', [textBlock]),\n ];\n};\n\nconst makeRightChoice = (imgBlock: Block, textBlock: Block): Block[] => {\n return [\n createBlock('Column', [textBlock]),\n createBlock('Column', [imgBlock]),\n ];\n};\n\nconst makeFillChoice = (imgBlock: Block, textBlock: Block): Block[] => {\n return [createBlock('Column', [imgBlock, textBlock])];\n};\n\nconst makeNoneChoice = (textBlock: Block): Block[] => {\n return [createBlock('Column', [textBlock])];\n};\n\nconst createChoice = (choice: ImageChoice = ImageChoice.None): Block[] => {\n const media = [\n createBlock('Image'),\n createMediaBlock({\n child: 1,\n type: 'Accordion_Media',\n removeTypes: ['Embed'],\n }),\n ][1];\n\n switch (choice) {\n case ImageChoice.Left: {\n return makeLeftChoice(media, createBlock('Text'));\n }\n case ImageChoice.Right: {\n return makeRightChoice(media, createBlock('Text'));\n }\n case ImageChoice.Fill: {\n return makeFillChoice(media, createBlock('Text'));\n }\n case ImageChoice.None: {\n return makeNoneChoice(createBlock('Text'));\n }\n }\n};\n\nconst collectLeftChoice = (b: Block, blocks: Blocks): Block[] => {\n const bs = b.children as Block[];\n\n if (bs.length === 1) {\n // if this is the case then we got broken somewhere\n // return the content with no image. repeating for right and fill layouts also\n return collectNoneChoice(b, blocks);\n }\n\n const bs0 = (blocks[bs[0].id].children as Block[])[0];\n const bs1 = (blocks[bs[1].id].children as Block[])[0];\n\n return [bs0, bs1];\n};\n\nconst collectRightChoice = (b: Block, blocks: Blocks): Block[] => {\n const bs = b.children as Block[];\n\n if (bs.length === 1) {\n return collectNoneChoice(b, blocks);\n }\n\n const bs0 = (blocks[bs[0].id].children as Block[])[0];\n const bs1 = (blocks[bs[1].id].children as Block[])[0];\n return [bs1, bs0];\n};\n\nconst collectFillChoice = (b: Block, blocks: Blocks): Block[] => {\n const bs = b.children as Block[];\n const bs0 = (blocks[bs[0].id].children as Block[])[0];\n const bs1 = (blocks[bs[0].id].children as Block[])[1];\n\n return [bs0, bs1];\n};\n\nconst collectNoneChoice = (b: Block, blocks: Blocks): Block[] => {\n const bs = b.children as Block[];\n const bs0 = (blocks[bs[0].id].children as Block[])[0];\n\n return [\n createMediaBlock({\n child: 1,\n type: 'Accordion_Media',\n src: placeholder,\n removeTypes: ['Embed'],\n }),\n bs0,\n ];\n};\n\nconst collectFromChoice = (\n choice: ImageChoice,\n b: Block,\n blocks: Blocks\n): Block[] => {\n switch (choice) {\n case ImageChoice.Left: {\n return collectLeftChoice(b, blocks);\n }\n case ImageChoice.Right: {\n return collectRightChoice(b, blocks);\n }\n case ImageChoice.Fill: {\n return collectFillChoice(b, blocks);\n }\n case ImageChoice.None: {\n return collectNoneChoice(b, blocks);\n }\n }\n};\n\nexport const createAccordionFieldBlock = (img: ImageChoice) => (): Block => {\n return createBlock('AccordionField', [\n createBlock('AccordionHeader', [createBlock('Text')]),\n createBlock('AccordionBody', [...createChoice(img)], {\n meta: { imageChoice: img },\n }),\n ]);\n};\n\nexport const createAccordionBlock = (\n count: number,\n img: ImageChoice\n): Block => {\n const createAFB = createAccordionFieldBlock(img);\n return createBlock('Accordion', [...repeat(createAFB, count)]);\n};\n\nexport const removeAccordionField = (block: Block, position: number): Block => {\n if (block.type !== 'Accordion') {\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n return nextBlock;\n }\n\n return block;\n};\n\nexport const addAccordionField = (block: Block, position: number): Block => {\n if (block.type !== 'Accordion') {\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(\n position,\n 0,\n createAccordionFieldBlock(ImageChoice.None)()\n );\n return nextBlock;\n }\n return block;\n};\n\n// TODO: Test\nexport const changeImageChoice = (blocks: Blocks) => (\n block: Block,\n imgChoice: ImageChoice\n): [Block, Blocks] => {\n if (block.type !== 'Interaction' || block.meta!.subType !== 'Accordion') {\n throw new Error('Must pass an accordion interaction');\n }\n\n const newIBlock = cloneBlock(block);\n const abBlocks = findBlocksIn(\n blocks,\n newIBlock,\n r => r.type === 'AccordionBody'\n );\n\n const newBlocks = abBlocks\n .map(\n (b: Block): Blocks => {\n const newBlock = cloneBlock(b);\n const meta = block.meta as any;\n\n const current = collectFromChoice(\n meta.imageChoice || 'Left',\n newBlock,\n blocks\n );\n\n const currentText =\n blocks[current[1].id].type === 'Text' ? current[1] : current[0];\n const currentImage =\n blocks[current[1].id].type === 'Text' ? current[0] : current[1];\n\n let newChoice;\n\n switch (imgChoice) {\n case ImageChoice.Left: {\n newChoice = [\n createBlock('Column', [currentImage]),\n createBlock('Column', [currentText]),\n ];\n break;\n }\n case ImageChoice.Right: {\n newChoice = [\n createBlock('Column', [currentText]),\n createBlock('Column', [currentImage]),\n ];\n break;\n }\n case ImageChoice.Fill: {\n newChoice = [createBlock('Column', [currentImage, currentText])];\n break;\n }\n case ImageChoice.None: {\n newChoice = [createBlock('Column', [currentText])];\n break;\n }\n }\n\n newBlock.children = newChoice;\n\n const [newBlocks] = flatten(newBlock);\n\n return newBlocks;\n }\n )\n .reduce((acc, c) => ({ ...acc, ...c }), {} as Blocks);\n\n newIBlock.meta = { ...newIBlock.meta, imageChoice: imgChoice } as any;\n\n return [newIBlock, newBlocks];\n};\n\nconst contentForColumn = (count: number, imgChoice: ImageChoice) => (\n i: number\n) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n }),\n () =>\n createBlock('InteractionColumn', [\n createAccordionBlock(count, imgChoice),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const removeAccordionPanel = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'Accordion') {\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock];\n }\n return [block, undefined];\n};\n\nexport const addAccordionPanel = (\n block: Block,\n position: number,\n choice: ImageChoice\n): [Block, Blocks?] => {\n if (block.type === 'Accordion') {\n const accordionPanelBlock = createAccordionFieldBlock(choice)();\n const accordionPanelBlockRef = { id: accordionPanelBlock.id, type: 'Ref' };\n const [newBlocks] = flatten(accordionPanelBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 0, accordionPanelBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createAccordionInteractionBlock = (\n props: AccordionInteractionProps\n) => {\n const {\n headingTextColor = '#fff',\n headingColor = lGrey0,\n fieldBodyTextColor,\n fieldBodyBackgroundColor = '#fff',\n lockDown = 0,\n style,\n } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props.numberOfAccordions, props.imgChoice),\n props.columnCount,\n props.columnsReversed\n ),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n headingTextColor,\n headingColor,\n fieldBodyTextColor,\n fieldBodyBackgroundColor,\n lockDown,\n },\n meta: {\n subType: 'Accordion',\n layout: `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n imageChoice: props.imgChoice,\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { colors } from 'styles/variables';\nimport { createMediaBlock } from './media';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createContinueBtn } from './continueBtn';\nimport { getSId } from '../utils';\n\nconst { lGrey0 } = colors;\n\nlet parsedFlipCardLayout;\n\nexport type FlipcardInteractionProps = InteractionProps & {\n answerCount: number;\n};\n\nexport const createFlipcardsBlock = (count: number) => {\n requestAnimationFrame(() => (parsedFlipCardLayout = null));\n\n return createBlock('Flipcards', [\n ...repeat(\n () =>\n createBlock('Flipcard', [\n createMediaBlock({\n src: undefined,\n child: parsedFlipCardLayout[0],\n useBackgroundControls: false,\n }),\n createMediaBlock({\n src: undefined,\n child: parsedFlipCardLayout[1],\n useBackgroundControls: false,\n }),\n ]),\n count\n ),\n ]);\n};\n\nexport const addFlipcard = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'Flipcards') {\n const flipcardBlock = createBlock('Flipcard', [\n createMediaBlock({\n src: undefined,\n child: 1,\n useBackgroundControls: false,\n }),\n createMediaBlock({\n src: undefined,\n child: 0,\n useBackgroundControls: false,\n bulletColor: '#fff',\n }),\n ]);\n\n const flipcardBlockRef = { id: flipcardBlock.id, type: 'Ref' };\n const [newBlocks] = flatten(flipcardBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 0, flipcardBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeFlipcard = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'Flipcards') {\n const flipcardBlock = createBlock('Flipcard', [\n createMediaBlock({\n src: undefined,\n child: 1,\n useBackgroundControls: false,\n }),\n createMediaBlock({\n src: undefined,\n child: 0,\n useBackgroundControls: false,\n bulletColor: '#fff',\n }),\n ]);\n\n const [newBlocks] = flatten(flipcardBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n }),\n () =>\n createBlock('InteractionColumn', [\n createFlipcardsBlock(count),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const createFlipcardInteractionBlock = (\n props: FlipcardInteractionProps\n) => {\n const {\n flipcardFrontColor = '#fff',\n flipcardBackColor = lGrey0,\n flipcardFrontTextColor = lGrey0,\n flipcardBackTextColor = '#fff',\n flipcardWidth = 300,\n flipcardHeight = 300,\n alignTextTop = 0,\n flipcardLayout,\n lockDown = 0,\n style,\n } = props as any;\n\n //\n // this is super dirty. so need to find the ' right ' way to get these props up there\n parsedFlipCardLayout = {\n imageText: [1, 0],\n imageImage: [1, 1],\n textText: [0, 0],\n }[flipcardLayout || 'imageText'];\n //\n //\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(props.answerCount), 0, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n flipcardFrontColor,\n flipcardBackColor,\n flipcardFrontTextColor,\n flipcardBackTextColor,\n flipcardWidth,\n flipcardHeight,\n alignTextTop,\n lockDown,\n },\n meta: {\n subType: 'FlipCard',\n layout: 'OneColumnReversed',\n },\n }\n );\n};\n\nexport const create = createFlipcardInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createMediaBlock } from './media';\nimport { createContinueBtn } from './continueBtn';\nimport { getSId } from '../utils';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst contentForColumn = props => (i: number) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n }),\n () =>\n createBlock('InteractionColumn', [\n createMediaBlock(props),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const createImageInteractionBlock = (props: any) => {\n // will fix this up later with the ' prop 'er definitions etc\n\n const { lockDown = 0, style } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props),\n props.columnCount,\n props.columnsReversed\n ),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n lockDown,\n },\n meta: {\n subType: 'TextAndImage',\n layout: `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { InteractionProps, reverse, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { colors } from 'styles/variables';\nimport { flatten } from 'factories/utils';\nimport { createContinueBtn } from './continueBtn';\nimport { getSId } from '../utils';\nimport { createMediaBlock } from './media';\n\nconst { lGrey0 } = colors;\n\nexport type CarouselInteractionProps = InteractionProps & {\n numberOfSlides: number;\n};\n\nexport const createSlideBlock = (): Block => {\n return createBlock('Slide', [\n createBlock('Image', [], {\n props: {\n src: undefined,\n fit: 'contain', // was cover\n },\n }),\n\n createBlock('Text'),\n ]);\n};\n\nexport const createCarouselBlock = (count: number): Block => {\n return createBlock('Carousel', [...repeat(createSlideBlock, count)]);\n};\n\nexport const removeCarouselSlide = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'Carousel') {\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, undefined];\n }\n return [block, undefined];\n};\n\nexport const addCarouselSlide = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'Carousel') {\n const slideBlock = createSlideBlock();\n const slideBlockRef = { id: slideBlock.id, type: 'Ref' };\n const [newBlocks] = flatten(slideBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 0, slideBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nconst contentForColumn = (slideCount: number) => (i: number) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n }),\n () =>\n createBlock('InteractionColumn', [\n createCarouselBlock(slideCount),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const createCarouselInteractionBlock = (\n props: CarouselInteractionProps\n) => {\n const {\n carouselColor = '#fff',\n carouselTextColor = lGrey0,\n lockDown = 0,\n style,\n } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props.numberOfSlides),\n props.columnCount,\n props.columnsReversed\n ),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n carouselColor,\n carouselTextColor,\n lockDown,\n },\n meta: {\n subType: 'Carousel',\n layout: `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport Correct_default from 'assets/CC_Correct.png';\n//CC_Scorable Images_Correct.png';\nimport Incorrect_default from 'assets/CC_Incorrect.png';\n// CC_Scorable Images_Incorrect.png';\nimport Attempt_default from 'assets/CC_TryAgain.png';\n// CC_Scorable Images_Number of Atempts.png';\nimport { createMediaBlock } from './media';\n\nexport const createFeedbackBlock = ({ ...props }) => {\n const label = props.label || 'Continue';\n\n return createBlock(\n 'Feedback',\n [\n createBlock(\n 'Correct',\n [\n createMediaBlock({\n src: Correct_default,\n child: 1,\n useBackgroundControls: false,\n }),\n createBlock('Text'),\n createContinueBtn({\n unlocked: true,\n removeable: false,\n }),\n ],\n {\n props: { type: 'Correct_Feedback' },\n meta: {\n subType: 'Correct_Feedback',\n },\n }\n ),\n createBlock(\n 'Incorrect',\n [\n createMediaBlock({\n src: Incorrect_default,\n child: 1,\n useBackgroundControls: false,\n }),\n createBlock('Text'),\n createContinueBtn({\n unlocked: true,\n removeable: false,\n }),\n ],\n {\n props: { type: 'Incorrect_Feedback' },\n meta: {\n subType: 'Incorrect_Feedback',\n },\n }\n ),\n createBlock(\n 'Attempt',\n [\n createMediaBlock({\n src: Attempt_default,\n child: 1,\n useBackgroundControls: false,\n }),\n\n createBlock('Text'),\n createEditableBtn({\n type: 'Feedback_Button_Attempt',\n label: 'Try again',\n }),\n ],\n {\n props: { type: 'Attempt_Feedback' },\n meta: {\n subType: 'Attempt_Feedback',\n },\n }\n ),\n createEditableBtn({ type: 'Feedback_Button', label }),\n ],\n {\n props: {\n type: 'Feedback',\n name: props.name || '',\n style: props.style || {},\n },\n meta: {\n subType: 'Feedback',\n },\n }\n );\n};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createFeedbackBlock } from './feedback';\nimport { colors } from 'styles/variables';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport { createMediaBlock } from './media';\nimport { getSId } from '../utils';\n\nconst { lGrey0 } = colors;\n\nexport type MultichoiceInteractionProps = InteractionProps & {\n answerCount: number;\n isMultichoiceMedia?: boolean;\n};\n\nconst createMultichoiceMediaOption = () => {\n return createBlock('MultichoiceMedia', [\n createMediaBlock({\n child: 1,\n }),\n createBlock('Text'),\n ]);\n};\n\nexport const createMultichoiceBlock = (count: number, isMultichoiceMedia) => {\n return createBlock('Multichoice', [\n ...repeat(\n () =>\n createBlock('Answer', [\n isMultichoiceMedia\n ? createMultichoiceMediaOption()\n : createBlock('Text', [], {\n props: {\n bulletColor: '#fff',\n },\n }),\n createFeedbackBlock({}),\n ]),\n count\n ),\n ]);\n};\n\nexport const createMultichoiceBlockWithText = (\n count: number,\n isMultichoiceMedia,\n sharedQuestionMedia\n) => {\n return createBlock('MultichoiceWithText', [\n sharedQuestionMedia,\n createEditableBtn({\n type: 'Submit_Button',\n label: 'Submit',\n }),\n createMultichoiceBlock(count, isMultichoiceMedia),\n\n createEditableBtn({\n type: 'ReviewFeedback',\n label: 'Review feedback',\n }),\n ]);\n};\n\nconst contentForColumn = (\n count: number,\n isMultichoiceMedia,\n sharedQuestionMedia\n) => (i: number) => {\n return [\n () =>\n isMultichoiceMedia\n ? createBlock('ColumnContentForMultichoiceMedia', [\n createMediaBlock({\n child: 1,\n }),\n sharedQuestionMedia,\n ])\n : createMediaBlock({\n child: 1,\n }),\n\n () =>\n createBlock('InteractionColumn', [\n createMultichoiceBlockWithText(\n count,\n isMultichoiceMedia,\n sharedQuestionMedia\n ),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const removeMultichoiceOption = (\n block: Block,\n position: number,\n isMultichoiceMedia\n): [Block, Blocks?] => {\n if (block.type === 'Multichoice') {\n const optionBlock = createBlock('Answer', [\n isMultichoiceMedia ? createMultichoiceMediaOption() : createBlock('Text'),\n createFeedbackBlock({}),\n ]);\n const [newBlocks] = flatten(optionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const addMultichoiceOption = (\n block: Block,\n position: number,\n isMultichoiceMedia\n): [Block, Blocks?] => {\n if (block.type === 'Multichoice') {\n const optionBlock = createBlock('Answer', [\n isMultichoiceMedia ? createMultichoiceMediaOption() : createBlock('Text'),\n createFeedbackBlock({}),\n ]);\n const optionBlockRef = { id: optionBlock.id, type: 'Ref' };\n const [newBlocks] = flatten(optionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 0, optionBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createMultichoiceInteractionBlock = (\n props: MultichoiceInteractionProps\n) => {\n const {\n textColor = '',\n checkboxColor = '#fff',\n correctOptions = '1',\n numberOfAttempts = 1,\n lockDown = 0,\n showCorrectAnswer = 1,\n useUniqueOptionFeedback = false,\n score = true,\n style,\n isMultichoiceMedia,\n } = props as any;\n\n const panelBackground = isMultichoiceMedia ? '#fff' : lGrey0;\n const optionTextColor = isMultichoiceMedia ? '#000' : '#fff';\n\n const sharedQuestionMedia = createMediaBlock({\n child: 0,\n imgPlaceholderIndex: 1,\n });\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(\n props.answerCount,\n isMultichoiceMedia,\n sharedQuestionMedia\n ),\n isMultichoiceMedia ? 0 : props.columnCount,\n isMultichoiceMedia ? true : props.columnsReversed\n ),\n createFeedbackBlock({}),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n textColor,\n correctOptions,\n numberOfAttempts,\n lockDown,\n showCorrectAnswer,\n useUniqueOptionFeedback,\n score,\n isMultichoiceMedia,\n },\n meta: {\n subType: 'Multichoice',\n layout: isMultichoiceMedia\n ? 'OneColumnReversed'\n : `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n },\n }\n );\n};\n\nexport const create = createMultichoiceInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createFeedbackBlock } from './feedback';\nimport { colors } from 'styles/variables';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport Correct_default from 'assets/Correct_loop.gif'; // Correct_default.svg';\nimport Incorrect_default from 'assets/Incorrect_loop.gif'; // Incorrect_default.svg';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\nimport { createMediaBlock } from './media';\n\nconst { lPink, lGrey0, lGrey2, lTeal0 } = colors;\n\nexport type SortationInteractionProps = InteractionProps & {\n answerCount: number;\n};\n\nconst createSortationContainerBlock = (count: number) => {\n return createBlock('SortationContainer', [\n createBlock('Text'),\n createBlock('SortationAnswers', [\n ...repeat(\n () => createBlock('SortationAnswer', [createBlock('Text')]),\n count\n ),\n ]),\n createBlock('Text'),\n ]);\n};\n\nconst createSortationFeedbackBlock = type => {\n return createBlock(\n 'Feedback',\n [\n createBlock('Image', [], {\n props: {\n src: type === 'Correct' ? Correct_default : Incorrect_default,\n },\n }),\n createBlock('Text'),\n createEditableBtn({ label: 'Continue' }),\n ],\n {\n props: {\n type,\n },\n }\n );\n};\n\nconst createAnswerBlock = () => {\n return createBlock('Answer', [\n createBlock('Text'),\n createBlock('SortableImage', [createBlock('Image')], {\n props: { isSortableImg: true },\n }),\n ]);\n};\n\nexport const createSortationBlock = (count: number) => {\n return createBlock('Sortation', [\n createBlock('SortationQuestionText', [createBlock('Text')], {\n props: {\n type: 'SortationQuestionText',\n },\n }),\n createBlock('SortationHeading0', [createBlock('Text')]),\n createBlock('SortationHeading1', [createBlock('Text')]),\n createEditableBtn({ label: 'Submit' }),\n ...repeat(() => createAnswerBlock(), count),\n ]);\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () => createMediaBlock({ child: 1 }),\n () =>\n createBlock('InteractionColumn', [\n createSortationBlock(count),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const addSortationOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'Sortation') {\n const sortationOptionBlock = createAnswerBlock();\n\n const sortationOptionBlockRef = {\n id: sortationOptionBlock.id,\n type: 'Ref',\n };\n const [newBlocks] = flatten(sortationOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(\n position,\n 0,\n sortationOptionBlockRef\n );\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeSortationOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'Sortation') {\n const sortationOptionBlock = createAnswerBlock();\n\n const [newBlocks] = flatten(sortationOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createSortationInteractionBlock = (\n props: SortationInteractionProps\n) => {\n const {\n panelBackgroundDragging = lGrey0,\n textColorDragging = '#fff',\n baseColor = lGrey2,\n numberOfAttempts = 1,\n showCorrectAnswer = 0,\n lockDown = 0,\n score = true,\n style,\n } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props.answerCount),\n props.columnCount,\n props.columnsReversed\n ),\n createFeedbackBlock({}),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n baseColor,\n numberOfAttempts,\n showCorrectAnswer,\n lockDown,\n score,\n },\n meta: {\n subType: 'Sortation',\n layout: `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n },\n }\n );\n};\n\nexport const create = createSortationInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { createEditableBtn } from './editableBtn';\n\nexport const createModalWithEditableBtn = ({ ...props }) => {\n return createBlock('Modal', [createEditableBtn({})], {\n props: { type: 'ModalWithEditableBtn' },\n meta: {\n subType: 'ModalWithEditableBtn',\n },\n });\n};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createFeedbackBlock } from './feedback';\nimport { colors } from 'styles/variables';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport { createModalWithEditableBtn } from './modalWithEditableBtn';\nimport { createMediaBlock } from './media';\nimport Media_default from 'assets/Media_default.svg';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nexport type DragAndDropInteractionProps = InteractionProps & {\n answerCount: number;\n};\n\nconst createDragAndDropElement = () => {\n return createBlock(\n 'DragAndDropElement',\n [\n createBlock(\n 'Drag',\n [\n createMediaBlock({\n src: Media_default,\n child: 1,\n }),\n ],\n {\n props: {\n type: 'Drag',\n },\n meta: {\n subType: 'Drag',\n },\n }\n ),\n createBlock(\n 'Drop',\n [\n createMediaBlock({\n src: Media_default,\n child: 0,\n }),\n ],\n {\n props: {\n type: 'Drop',\n },\n meta: {\n subType: 'Drop',\n },\n }\n ),\n createFeedbackBlock({}),\n ],\n {\n props: {\n type: 'DragAndDropElement',\n },\n meta: {\n subType: 'DragAndDropElement',\n },\n }\n );\n};\n\nexport const createDragAndDropBlock = (count: number) => {\n return createBlock('DragAndDrop', [\n createEditableBtn({ label: 'SUBMIT' }),\n createModalWithEditableBtn({}),\n ...repeat(() => createDragAndDropElement(), count),\n ]);\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [() => createBlock('Text'), () => createDragAndDropBlock(count)][i];\n};\n\nexport const addDragAndDropOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'DragAndDrop') {\n const dragAndDropOptionBlock = createDragAndDropElement();\n\n const dragAndDropOptionBlockRef = {\n id: dragAndDropOptionBlock.id,\n type: 'Ref',\n };\n const [newBlocks] = flatten(dragAndDropOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(\n position,\n 0,\n dragAndDropOptionBlockRef\n );\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeDragAndDropOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'DragAndDrop') {\n\n const dragAndDropOptionBlock = createDragAndDropElement();\n\n const [newBlocks] = flatten(dragAndDropOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createDragAndDropInteractionBlock = (\n props: DragAndDropInteractionProps\n) => {\n const {\n panelBackground = '#fff' || lPink,\n panelBackgroundDragging = lGrey0,\n textColorDragging = '#fff',\n dropZoneColor = lGrey1,\n baseColor = lGrey2,\n numberOfAttempts = 1,\n lockDown = 0,\n score = false,\n style,\n } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props.answerCount),\n 0,\n true\n ),\n createFeedbackBlock({}),\n createBlock('SingleColumnLayout', [\n createBlock(\n 'Column',\n [\n createContinueBtn(style),\n ],\n {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }\n ),\n ]),\n ],\n {\n props: {\n name: props.name,\n style: props.style,\n panelBackground,\n panelBackgroundDragging,\n textColorDragging,\n dropZoneColor,\n baseColor,\n numberOfAttempts,\n lockDown,\n score,\n },\n meta: {\n subType: 'DragAndDrop',\n layout: 'OneColumnReversed',\n },\n }\n );\n};\n\nexport const create = createDragAndDropInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { colors } from 'styles/variables';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport { createMediaBlock } from './media';\nimport Media_default from 'assets/Media_default.svg';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\nimport Correct_default from 'assets/Correct_loop.gif'; // Correct_default.svg';\n\nconst { lPink, lGrey0, lGrey1, lGrey2, lTeal0 } = colors;\n\nexport type MatchingInteractionProps = InteractionProps & {\n answerCount: number;\n};\n\nconst createFeedbackBlock = ({ feedbackId }) => {\n console.log('createFeedbackBlock for matching', feedbackId);\n\n return createBlock(\n 'Feedback',\n [\n createMediaBlock({ child: 1 }),\n createBlock('Text'),\n createEditableBtn({\n type: 'Feedback_Button_Correct',\n label: 'Continue',\n }),\n ],\n {\n props: { type: 'Correct_Feedback', feedbackId },\n meta: {\n subType: 'Correct_Feedback',\n },\n }\n );\n};\n\nconst createMatchPairs = (): [\n string, // shared id\n Block, // drag\n Block, // drop\n Block // feedback\n] => {\n const id = uuid();\n return [\n id,\n createBlock(\n 'MatchDrag',\n [\n createMediaBlock({\n src: undefined,\n child: 1,\n }),\n ],\n {\n props: {\n draggableId: id,\n },\n }\n ),\n createBlock(\n 'MatchDrop',\n [\n createMediaBlock({\n src: undefined,\n child: 0,\n }),\n ],\n {\n props: {\n droppableId: id,\n },\n }\n ),\n createFeedbackBlock({\n feedbackId: id,\n }),\n ];\n};\n\nexport const createMatchingBlock = (count: number) => {\n const DragContainer = createBlock('DragContainer');\n const DropContainer = createBlock('DropContainer');\n const AnswerContainer = createBlock('AnswerContainer');\n\n Array.from(Array(count)).map(() => {\n const [, dragBlock, dropBlock, feedback] = createMatchPairs();\n DragContainer.children = [\n ...(DragContainer.children as Block[]),\n dragBlock,\n ];\n DropContainer.children = [\n ...(DropContainer.children as Block[]),\n dropBlock,\n ];\n AnswerContainer.children = [\n ...(AnswerContainer.children as Block[]),\n feedback,\n ];\n });\n\n return createBlock('Matching', [\n DragContainer,\n DropContainer,\n AnswerContainer,\n ]);\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n }),\n\n () =>\n createBlock('InteractionColumn', [\n createMatchingBlock(count),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const addMatchPairs = (\n block: Block,\n position: number,\n blocks: Blocks\n): [Block, Blocks?] => {\n if (block.type === 'Matching') {\n const [, dragBlock, dropBlock, feedbackBlock] = createMatchPairs();\n const [\n dragContainerRef,\n dropContainerRef,\n answerContainerRef,\n ] = block.children as Block[];\n\n const dragContainer = cloneBlock(blocks[dragContainerRef.id]);\n const dropContainer = cloneBlock(blocks[dropContainerRef.id]);\n const answerContainer = cloneBlock(blocks[answerContainerRef.id]);\n\n const dragRef = {\n id: dragBlock.id,\n type: 'Ref',\n };\n\n const dropRef = {\n id: dropBlock.id,\n type: 'Ref',\n };\n\n const feedbackRef = {\n id: feedbackBlock.id,\n type: 'Ref',\n };\n\n (dragContainer.children as Block[]).splice(position, 0, dragRef);\n (dropContainer.children as Block[]).splice(position, 0, dropRef);\n (answerContainer.children as Block[]).splice(position, 0, feedbackRef);\n\n const [newBlocksDrag] = flatten(dragBlock);\n const [newBlocksDrop] = flatten(dropBlock);\n const [newBlocksFeedback] = flatten(feedbackBlock);\n\n const newBlocks = {\n ...newBlocksDrag,\n ...newBlocksDrop,\n ...newBlocksFeedback,\n ...{ [dragContainer.id]: dragContainer },\n ...{ [dropContainer.id]: dropContainer },\n ...{ [answerContainer.id]: answerContainer },\n };\n\n const nextBlock = cloneBlock(block);\n nextBlock.children = [...(nextBlock.children as Block[])];\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeMatchPairs = (\n block: Block,\n position: number,\n blocks: Blocks\n): [Block, Blocks?] => {\n if (block.type === 'Matching') {\n const [\n dragContainerRef,\n dropContainerRef,\n answerContainerRef,\n ] = block.children as Block[];\n\n const dragContainer = cloneBlock(blocks[dragContainerRef.id]);\n const dropContainer = cloneBlock(blocks[dropContainerRef.id]);\n const answerContainer = cloneBlock(blocks[answerContainerRef.id]);\n\n (dragContainer.children as Block[]).splice(position, 1);\n (dropContainer.children as Block[]).splice(position, 1);\n (answerContainer.children as Block[]).splice(position, 1);\n\n const newBlocks = {\n ...{ [dragContainer.id]: dragContainer },\n ...{ [dropContainer.id]: dropContainer },\n ...{ [answerContainer.id]: answerContainer },\n };\n\n const nextBlock = cloneBlock(block);\n nextBlock.children = [...(nextBlock.children as Block[])];\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createMatchingInteractionBlock = (\n props: MatchingInteractionProps\n) => {\n const {\n panelBackground = '#fff' || lPink,\n panelBackgroundDragging = lGrey0,\n textColorDragging = '#fff',\n dropZoneColor = lGrey1,\n panelWidth = 250,\n panelHeight = 250,\n baseColor = lGrey2,\n lockDown = 0,\n style,\n } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(props.answerCount), 0, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n panelBackground,\n panelBackgroundDragging,\n textColorDragging,\n dropZoneColor,\n panelWidth,\n panelHeight,\n baseColor,\n lockDown,\n },\n meta: {\n subType: 'Matching',\n layout: 'OneColumnReversed',\n },\n }\n );\n};\n\nexport const create = createMatchingInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps } from './interaction';\nimport { colors } from 'styles/variables';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createEditableBtn } from './editableBtn';\nimport { createMediaBlock } from './media';\nimport hotspotDefaultSVG from 'assets/HotspotDefault_v3.svg';\n\nconst { lPink } = colors;\n\nexport type HotSpotInteractionProps = InteractionProps & {\n answerCount: number;\n};\n\n// should add the option to include image in ' popUp '\n// ? createFeedbackBlock({}) : ...\nconst createHotSpotElement = ({ name = '', points = [], ...props }) => {\n return createBlock(\n 'HotSpotElement',\n [\n createMediaBlock({\n child: 1,\n }),\n createMediaBlock({\n child: 0,\n }),\n createEditableBtn({ label: 'Continue' }),\n ],\n {\n props: {\n type: 'HotSpotElement',\n name,\n points,\n ...props,\n },\n meta: {\n subType: 'HotSpotElement',\n },\n }\n );\n};\n\nexport const createHotSpotBlock = props => {\n const {\n numberOfAttempts = 1,\n lockDown = 0,\n score = false,\n image,\n hotspotType = 'circle',\n hotSpotColor = lPink,\n hotSpotSize = 50,\n hotSpots = {},\n style,\n src,\n } = props as any;\n\n return createBlock('HotSpotIsolated', [], {\n props: {\n name: props.name,\n style: props.style,\n numberOfAttempts,\n lockDown,\n score,\n image,\n hotspotType,\n hotSpotColor,\n hotSpotSize,\n src,\n },\n meta: {\n subType: 'HotSpotIsolated',\n },\n });\n};\n\nexport const addHotSpotOption = (\n block: Block,\n position: number,\n props\n): [Block, Blocks?] => {\n if (block.type === 'HotSpotIsolated') {\n const hotSpotOptionBlock = createHotSpotElement(props);\n\n const hotSpotOptionBlockRef = {\n id: hotSpotOptionBlock.id,\n type: 'Ref',\n };\n const [newBlocks] = flatten(hotSpotOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 0, hotSpotOptionBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeHotSpotOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'HotSpotIsolated') {\n const hotSpotOptionBlock = createHotSpotElement({});\n\n const [newBlocks] = flatten(hotSpotOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeAllHotSpotOptions = (\n block: Block\n): [Block, Blocks?] | undefined => {\n if (block.type === 'HotSpotIsolated') {\n const hotSpotOptionBlock = createHotSpotElement({});\n\n const [newBlocks] = flatten(hotSpotOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(0);\n\n return [nextBlock, newBlocks];\n }\n};\n\nexport const getNextHotSpotBlock = (\n block: Block\n): [Block, Blocks?] | undefined => {\n if (block.type === 'HotSpotIsolated') {\n const hotSpotOptionBlock = createHotSpotElement({});\n\n const [newBlocks] = flatten(hotSpotOptionBlock);\n\n const nextBlock = cloneBlock(block);\n\n return [nextBlock, newBlocks];\n }\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createContinueBtn } from './continueBtn';\nimport { createHotSpotBlock } from './hotspot_isolated';\nimport { createFeedbackBlock } from './feedback';\nimport { getSId } from '../utils';\nimport { createMediaBlock } from './media';\n\nexport type HotSpotInteractionProps = InteractionProps & {\n answerCount: number;\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n }),\n\n () =>\n createBlock('InteractionColumn', [\n createBlock('HotSpotScorable', [\n createHotSpotBlock({}),\n createFeedbackBlock({\n label: 'Submit',\n }),\n ]),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const createHotSpotInteractionBlock = (\n props: HotSpotInteractionProps\n) => {\n const {\n lockDown = 0,\n style,\n score,\n immediateFeedback,\n isGlobalNavigation,\n isHotspotLandingPage,\n } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(props.answerCount), 0, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n lockDown,\n score,\n immediateFeedback,\n isGlobalNavigation,\n isHotspotLandingPage,\n },\n meta: {\n subType: 'HotSpot',\n layout: 'OneColumnReversed',\n },\n }\n );\n};\n\nexport const create = createHotSpotInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { colors } from 'styles/variables';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\n\nconst { lPink } = colors;\n\nexport type FiveStarRatingInteractionProps = InteractionProps & {\n //\n};\n\nexport const createFiveStarRatingBlock = (count: number) => {\n return createBlock('FiveStarRating', [\n createBlock('FiveStarList', [\n ...repeat(() => createBlock('Star'), count || 5),\n ]),\n createBlock('TextArea'),\n createEditableBtn({ label: 'Submit' }),\n createBlock('FeedbackSubmitted', [\n createBlock('Image'),\n createBlock('Text'),\n ]),\n ]);\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () => createBlock('Text', [], { props: { useBackgroundControls: true } }),\n () => createFiveStarRatingBlock(count),\n ][i];\n};\n\nexport const createFiveStarRatingInteractionBlock = (\n props: FiveStarRatingInteractionProps\n) => {\n const {\n starColor = lPink,\n submissionEmailDestination = '',\n subject = '',\n lockDown = 0,\n style,\n isTextEntry = false,\n } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(0), 0, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n type: 'FiveStarRating',\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n starColor,\n submissionEmailDestination,\n subject,\n lockDown,\n isTextEntry,\n },\n meta: {\n subType: 'FiveStarRating',\n layout: 'OneColumnReversed',\n },\n }\n );\n};\n\nexport const create = createFiveStarRatingInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { colors } from 'styles/variables';\nimport { createContinueBtn } from './continueBtn';\nimport resultsPassed from 'assets/Correct_loop.gif';\nimport resultsFailed from 'assets/Incorrect_loop.gif';\nimport { createMediaBlock } from './media';\nimport { getSId } from '../utils';\n\nconst { lPink } = colors;\n\nexport type ResultsPageProps = InteractionProps & {\n //\n};\n\nexport const createResultsPageContentBlock = (count: number) => {\n return createBlock('ResultsPageContent', [\n createBlock('ResultsPageContentPassed', [\n createMediaBlock({\n child: 0,\n }),\n createMediaBlock({\n src: resultsPassed,\n type: 'passed',\n child: 1,\n useBackgroundControls: true,\n }),\n ]),\n createBlock('ResultsPageContentFailed', [\n createMediaBlock({\n child: 0,\n }),\n createMediaBlock({\n src: resultsFailed,\n type: 'failed',\n child: 1,\n useBackgroundControls: true,\n }),\n ]),\n ]);\n};\n\nexport const createResultsPageMediaBlock = (count: number) => {\n return createBlock('ResultsPageMedia', [\n createMediaBlock({\n src: resultsPassed,\n type: 'passed',\n child: 1,\n useBackgroundControls: true,\n }),\n createMediaBlock({\n src: resultsFailed,\n type: 'failed',\n child: 1,\n useBackgroundControls: true,\n }),\n ]);\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () => createResultsPageContentBlock(0),\n () =>\n createBlock('InteractionColumn', [\n createBlock('ResultsPageResult'),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const createResultsPageInteractionBlock = (props: ResultsPageProps) => {\n const { graphType = 'circle', graphColor = lPink, style } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(0), 0, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n type: 'ResultsPage',\n name: props.name,\n sId: getSId('interaction'),\n graphType,\n graphColor,\n style: props.style,\n },\n meta: {\n subType: 'ResultsPage',\n layout: `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n },\n }\n );\n};\n\nexport const create = createResultsPageInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { colors } from 'styles/variables';\nimport { createMediaBlock } from './media';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport { getSId } from '../utils';\n\nconst { lGrey0, lGrey2 } = colors;\n\nconst createClickAndRevealBlock = props => {\n return createBlock('ClickAndReveal', [\n createMediaBlock({\n src: undefined,\n child: 1,\n fit: 'cover',\n useBackgroundControls: false,\n }),\n createBlock('Text', [], { props: { useBackgroundControls: false } }),\n createBlock('Content', [\n createMediaBlock({ name: 'ColumnRowA', child: 0 }),\n createMediaBlock({ name: 'ColumnRowB', child: 1 }),\n createEditableBtn({\n type: 'ClickAndRevealContentButton',\n label: 'Continue',\n }),\n ]),\n ]);\n};\n\nexport const createClickAndRevealsBlock = (count: number) => {\n return createBlock('ClickAndReveals', [\n ...repeat(() => createClickAndRevealBlock({}), count),\n ]);\n};\n\nexport const addClickAndReveal = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'ClickAndReveals') {\n const clickAndRevealBlock = createClickAndRevealBlock({});\n\n const clickAndRevealBlockRef = { id: clickAndRevealBlock.id, type: 'Ref' };\n const [newBlocks] = flatten(clickAndRevealBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 0, clickAndRevealBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeClickAndReveal = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'ClickAndReveals') {\n const clickAndRevealBlock = createClickAndRevealBlock({});\n\n const [newBlocks] = flatten(clickAndRevealBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n }),\n () =>\n createBlock('InteractionColumn', [\n createClickAndRevealsBlock(count),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const createClickAndRevealInteractionBlock = props => {\n const {\n backgroundColor,\n clickAndRevealPanelTextColor = lGrey0,\n clickAndRevealLabelTextColor = lGrey0,\n width = 260,\n height = 210,\n borderRadius = 10,\n borderColor = lGrey2,\n layout = 'One column reversed',\n lockDown = 0,\n style,\n } = props as any;\n\n const useGlobalNavigation = props.useGlobalNavigation || false;\n const isLandingPage = props.isLandingPage || false;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(props.answerCount), 0, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n backgroundColor,\n clickAndRevealPanelTextColor,\n clickAndRevealLabelTextColor,\n borderRadius,\n borderColor,\n width,\n height,\n layout,\n lockDown,\n ...(useGlobalNavigation && {\n useGlobalNavigation,\n }),\n ...(isLandingPage && {\n isLandingPage,\n }),\n },\n meta: {\n subType: 'ClickAndReveal',\n layout: 'OneColumn',\n },\n }\n );\n};\n\nexport const create = createClickAndRevealInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { createLayout } from 'factories/layout';\nimport { createContinueBtn } from './continueBtn';\nimport { getSId } from '../utils';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createMediaBlock } from './media';\n\nexport const addTopicPortalMedia = (\n block: Block,\n position: number,\n topicId\n): [Block, Blocks?] => {\n if (block.type === 'TopicPortalContainer') {\n const topicPortalMediaBlock = createBlock(\n 'TopicPortalMedia',\n [\n createMediaBlock({\n src: undefined,\n child: 1,\n fit: 'cover',\n useBackgroundControls: false,\n }),\n createMediaBlock({\n src: undefined,\n child: 0,\n fit: 'cover',\n useBackgroundControls: false,\n bulletColor: '#fff',\n }),\n ],\n {\n props: {\n topicId,\n },\n }\n );\n\n const topicPortalMediaBlockRef = {\n id: topicPortalMediaBlock.id,\n type: 'Ref',\n };\n\n const [newBlocks] = flatten(topicPortalMediaBlock);\n\n const nextBlock = cloneBlock(block);\n\n (nextBlock.children as Block[]).splice(\n position,\n 0,\n topicPortalMediaBlockRef\n );\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeTopicPortalMedia = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'TopicPortalContainer') {\n const topicPortalMediaBlock = createBlock('TopicPortalMedia', [\n createMediaBlock({\n src: undefined,\n child: 1,\n fit: 'cover',\n useBackgroundControls: false,\n }),\n createMediaBlock({\n src: undefined,\n child: 0,\n fit: 'cover',\n useBackgroundControls: false,\n bulletColor: '#fff',\n }),\n ]);\n\n const [newBlocks] = flatten(topicPortalMediaBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n imgPlaceholderIndex: 1,\n }),\n () =>\n createBlock('InteractionColumn', [\n createBlock('TopicPortalContainer', [], {}),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const createTopicPortalInteractionBlock = props => {\n const { style } = props as any;\n\n //\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(0), 0, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n },\n meta: {\n subType: 'TopicPortal',\n layout: 'OneColumnReversed',\n },\n }\n );\n};\n\nexport const create = createTopicPortalInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { InteractionProps, reverse } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createMediaBlock } from './media';\nimport { createContinueBtn } from './continueBtn';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst createAssessmentIntroduction = (props?: {}) => {\n return createBlock(\n 'AssessmentIntroduction',\n [createMediaBlock({}), createBlock('Text')],\n { props: {} }\n );\n};\n\nexport const createAssessmentIntroductionInteractionBlock = (\n props: any,\n offset: number = 0\n) => {\n return createBlock(\n 'Interaction',\n [\n createAssessmentIntroduction(),\n\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(props.style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n type: 'AssessmentIntroduction',\n name: props.name,\n sId: getSId('interaction', offset),\n style: props.style || {},\n },\n meta: {\n subType: 'AssessmentIntroduction',\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, reverse } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createMediaBlock } from './media';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst createAssessmentQuestionOption = (props?: {}) => {\n return createBlock('AssessmentQuestionOption', [createBlock('Text')], {\n props: {},\n });\n};\n\nconst createAssessmentQuestion = (props?: {}) => {\n return createBlock(\n 'AssessmentQuestion',\n [\n createMediaBlock({ child: 1 }),\n createMediaBlock({ child: 0 }),\n createBlock(\n 'AssessmentQuestionOptions',\n [0, 1, 2, 3].map(option => createAssessmentQuestionOption())\n ),\n\n createContinueBtn({\n label: 'Submit',\n unlocked: true,\n }),\n createBlock('LearnMore', [], {\n props: {\n location: '',\n },\n }),\n ],\n {\n props: {\n sId: getSId('assessmentQuestion'),\n },\n }\n );\n};\n\nexport const addAssessmentQuestionOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'AssessmentQuestionOptions') {\n const assessmentOptionBlock = createAssessmentQuestionOption({});\n\n const contentCardBlockRef = { id: assessmentOptionBlock.id, type: 'Ref' };\n const [newBlocks] = flatten(assessmentOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 0, contentCardBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeAssessmentQuestionOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'AssessmentQuestionOptions') {\n const assessmentOptionBlock = createAssessmentQuestionOption({});\n\n const [newBlocks] = flatten(assessmentOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createAssessmentQuestionInteractionBlock = (\n props,\n offset: number = 0\n) => {\n return createBlock(\n 'Interaction',\n [\n createAssessmentQuestion(),\n\n createBlock('SingleColumnLayout', [\n createBlock('Column', [], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n type: 'AssessmentQuestion',\n name: props.name,\n sId: getSId('interaction', offset),\n style: props.style || {},\n },\n meta: {\n subType: 'AssessmentQuestion',\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, reverse } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createMediaBlock } from './media';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\nimport { colors } from 'styles/variables';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport Correct_default from 'assets/Correct_loop.gif';\nimport Incorrect_default from 'assets/Incorrect_loop.gif';\n\nconst { lPink, lGrey0, lGrey1, mint, purple } = colors;\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst createAssessmentResults = (props?: {}) => {\n return createBlock(\n 'AssessmentResults',\n [\n createFeedbackBlock('FeedbackPassed'),\n createFeedbackBlock('FeedbackFailed'),\n ],\n { props: {} }\n );\n};\n\nconst createFeedbackBlock = type => {\n return createBlock(type, [\n createMediaBlock({\n src: type === 'FeedbackPassed' ? Correct_default : Incorrect_default,\n }),\n createBlock('Text'),\n createContinueBtn({}),\n ]);\n};\n\nconst createContinueButtonBranchingBlock = props => {\n return createBlock('ContinueButtonBranching', [\n createContinueBtn({ ...props?.style, removeable: false }),\n createContinueBtn({\n style: props?.style,\n label: 'Passed',\n removeable: false,\n }),\n createContinueBtn({\n style: props?.style,\n label: 'Failed',\n removeable: false,\n }),\n ]);\n};\n\nexport const addNewContinueButtonBranching = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.meta!.subType === 'ButtonBlock') {\n const buttonBlock = createContinueButtonBranchingBlock({});\n\n const buttonBlockRef = { id: buttonBlock.id, type: 'Ref' };\n const [newBlocks] = flatten(buttonBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).push(buttonBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createAssessmentResultsInteractionBlock = (\n props,\n offset: number = 0\n) => {\n return createBlock(\n 'Interaction',\n [\n createAssessmentResults(),\n\n createBlock('SingleColumnLayout', [\n createBlock(\n 'Column',\n [\n createBlock('RetryAssessment', [], {\n props: {\n type: 'RetryAssessment',\n label: 'Retry assessment',\n background: '#fff',\n color: '#060709',\n localColor: true,\n buttonOutline: true,\n localButtonOutline: true,\n removeable: false,\n },\n }),\n createContinueButtonBranchingBlock(props),\n ],\n {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }\n ),\n ]),\n ],\n {\n props: {\n type: 'AssessmentResults',\n name: props.name,\n sId: getSId('interaction', offset),\n style: props.style || {},\n graphColor: mint,\n showAttemptCounter: true,\n enableLearnMore: true,\n enableTryAgain: true,\n enableReVisit: true,\n includeResultsGraph: true,\n addAssessmentRetry: true,\n enableBranching: false,\n correctColor: mint,\n incorrectColor: purple,\n lockDown: 1,\n },\n meta: {\n subType: 'AssessmentResults',\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\r\nimport { repeat } from './interaction';\r\nimport { createLayout } from 'factories/layout';\r\nimport contentCard_default from 'assets/Card_Test.png';\r\nimport { colors } from 'styles/variables';\r\nimport { createMediaBlock } from './media';\r\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\r\nimport { flatten } from 'factories/utils';\r\nimport { createContinueBtn } from './continueBtn';\r\nimport { getSId } from '../utils';\r\n\r\nconst { lPink, lGrey0, lGrey2, lTeal0 } = colors;\r\n\r\nconst createContentCardBlock = props => {\r\n return createBlock('ContentCard', [\r\n createMediaBlock({\r\n src: undefined,\r\n child: 1,\r\n fit: 'cover',\r\n useBackgroundControls: false,\r\n }),\r\n createBlock('Text', [], { props: { useBackgroundControls: true } }),\r\n createContinueBtn({\r\n label: 'Add navigation',\r\n removeable: false,\r\n disableLastPageMessage: true,\r\n }),\r\n ]);\r\n};\r\n\r\nexport const createContentCardsBlock = (count: number) => {\r\n return createBlock('ContentCards', [\r\n ...repeat(() => createContentCardBlock({}), count),\r\n ]);\r\n};\r\n\r\nexport const addContentCard = (\r\n block: Block,\r\n position: number\r\n): [Block, Blocks?] => {\r\n if (block.type === 'ContentCards') {\r\n const contentCardBlock = createContentCardBlock({});\r\n\r\n const contentCardBlockRef = { id: contentCardBlock.id, type: 'Ref' };\r\n const [newBlocks] = flatten(contentCardBlock);\r\n\r\n const nextBlock = cloneBlock(block);\r\n (nextBlock.children as Block[]).splice(position, 0, contentCardBlockRef);\r\n\r\n return [nextBlock, newBlocks];\r\n }\r\n return [block, undefined];\r\n};\r\n\r\nexport const removeContentCard = (\r\n block: Block,\r\n position: number\r\n): [Block, Blocks?] => {\r\n if (block.type === 'ContentCards') {\r\n const contentCardBlock = createContentCardBlock({});\r\n\r\n const [newBlocks] = flatten(contentCardBlock);\r\n\r\n const nextBlock = cloneBlock(block);\r\n (nextBlock.children as Block[]).splice(position, 1);\r\n\r\n return [nextBlock, newBlocks];\r\n }\r\n return [block, undefined];\r\n};\r\n\r\nconst contentForColumn = (count: number) => (i: number) => {\r\n return [\r\n () =>\r\n createMediaBlock({\r\n child: 0,\r\n }),\r\n () =>\r\n createBlock('InteractionColumn', [\r\n createContentCardsBlock(count),\r\n createMediaBlock({\r\n child: 0,\r\n isAdditionalMedia: true,\r\n }),\r\n ]),\r\n ][i];\r\n};\r\n\r\nexport const createContentCardInteractionBlock = props => {\r\n //\r\n const {\r\n grid = 'masonry',\r\n contentCardBackgroundColor = '#fff',\r\n contentCardPanelTextColor = lGrey0,\r\n contentCardContentTextColor = lGrey0,\r\n width = 33,\r\n height = 0,\r\n borderRadius = 20,\r\n outline = false,\r\n borderColor = lGrey0,\r\n imagePosition = 'top',\r\n includeText = true,\r\n includeShadow = true,\r\n uniformHeight = false,\r\n numColumns = 3,\r\n style,\r\n } = props as any;\r\n\r\n return createBlock(\r\n 'Interaction',\r\n [\r\n createLayout(contentForColumn(props.numberOfCards), 0, true),\r\n\r\n createBlock('SingleColumnLayout', [\r\n createBlock('Column', [createContinueBtn(style)], {\r\n props: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexWrap: 'wrap',\r\n },\r\n meta: {\r\n subType: 'ButtonBlock',\r\n },\r\n }),\r\n ]),\r\n ],\r\n {\r\n props: {\r\n name: props.name,\r\n sId: getSId('interaction'),\r\n style: props.style,\r\n grid,\r\n contentCardBackgroundColor,\r\n contentCardPanelTextColor,\r\n contentCardContentTextColor,\r\n width,\r\n height,\r\n outline,\r\n borderRadius,\r\n borderColor,\r\n imagePosition,\r\n includeText,\r\n includeShadow,\r\n uniformHeight,\r\n numColumns,\r\n },\r\n meta: {\r\n subType: 'ContentCards',\r\n\r\n layout: 'OneColumn',\r\n },\r\n }\r\n );\r\n};\r\n\r\nexport const create = createContentCardInteractionBlock;\r\nexport const interactionConfig = {};\r\n\r\nexport { contentCard_default };\r\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createFeedbackBlock } from './feedback';\nimport { colors } from 'styles/variables';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport Correct_default from 'assets/Correct_loop.gif'; // Correct_default.svg';\nimport Incorrect_default from 'assets/Incorrect_loop.gif'; // Incorrect_default.svg';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\nimport { createMediaBlock } from './media';\n\nconst { lPink, lGrey0, lGrey2, lTeal0 } = colors;\n\nexport type SelectOptionsInteractionProps = InteractionProps & {\n answerCount: number;\n};\n\nexport const createSelectOptionBlock = () => {\n return createBlock('SelectOption', [createBlock('Text')], {\n props: {\n type: 'SelectOption',\n values: ['Option 1', 'Option 2', 'Option 3'],\n correctAnswer: 0,\n },\n });\n};\n\nexport const createSelectOptionsBlock = (count: number) => {\n return createBlock('SelectOptionsRoot', [\n createBlock('Question', [createBlock('Text')]),\n\n createBlock('SelectOptions', [\n ...repeat(() => createSelectOptionBlock(), count),\n ]),\n createEditableBtn({ type: 'Submit_Button', label: 'Submit' }),\n\n createFeedbackBlock({}),\n ]);\n};\n\nconst contentForColumn = (count: number) => (i: number) => {\n return [\n () =>\n createMediaBlock({\n src: undefined,\n child: 1,\n useBackgroundControls: true,\n }),\n () =>\n createBlock('InteractionColumn', [\n createSelectOptionsBlock(count),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const addSelectOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'SelectOptions') {\n const selectOptionBlock = createSelectOptionBlock();\n\n const selectOptionBlockRef = {\n id: selectOptionBlock.id,\n type: 'Ref',\n };\n const [newBlocks] = flatten(selectOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 0, selectOptionBlockRef);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeSelectOption = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'SelectOptions') {\n const selectOptionBlock = createSelectOptionBlock();\n const [newBlocks] = flatten(selectOptionBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createSelectOptionsInteractionBlock = (\n props: SelectOptionsInteractionProps\n) => {\n const {\n numberOfAttempts = 1,\n showCorrectAnswer = 0,\n lockDown = 0,\n score = true,\n style,\n } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props.answerCount),\n props.columnCount,\n props.columnsReversed\n ),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n\n numberOfAttempts,\n showCorrectAnswer,\n lockDown,\n score,\n },\n meta: {\n subType: 'SelectOptions',\n layout: `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n },\n }\n );\n};\n\nexport const create = createSelectOptionsInteractionBlock;\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, reverse } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createContinueBtn } from './continueBtn';\nimport { createFeedbackBlock } from './feedback';\nimport { createMediaBlock } from './media';\n\nconst contentForColumn = (count: number, sharedQuestionMedia) => (\n i: number\n) => {\n return [\n () =>\n createBlock('ColumnContent', [\n createMediaBlock({\n child: 1,\n }),\n sharedQuestionMedia,\n ]),\n\n () =>\n createBlock('InteractionColumn', [\n createBlock('Slider', [\n sharedQuestionMedia,\n createBlock('Text'),\n createBlock('Text'),\n createFeedbackBlock({ label: 'Submit' }),\n ]),\n createMediaBlock({\n child: 0,\n isAdditionalMedia: true,\n }),\n ]),\n ][i];\n};\n\nexport const createSliderInteractionBlock = props => {\n const sharedQuestionMedia = createMediaBlock({ child: 0 });\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(0, sharedQuestionMedia), 0, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn({})], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n style: props.style,\n },\n meta: {\n subType: 'Slider',\n layout: 'OneColumnReversed',\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, repeat } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { colors } from 'styles/variables';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport resultsPassed from 'assets/Correct_loop.gif';\nimport resultsFailed from 'assets/Incorrect_loop.gif';\nimport { createMediaBlock } from './media';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\n\nconst { lPink } = colors;\n\nconst certificateTextField = (isInputField?: boolean) => {\n return createBlock(\n 'CertificateTextField',\n [\n createBlock('Text', [], {\n props: {\n isInputField,\n placeholder: isInputField\n ? 'Add placeholder text here...'\n : undefined,\n isCertificateField: true,\n },\n }),\n ],\n {\n props: {\n ...(isInputField && {\n isInputField,\n }),\n },\n }\n );\n};\n\nexport const createCertificateBlock = () => {\n return createBlock('Certificate', [\n createBlock('CertificateTextFields', [certificateTextField()]),\n\n createEditableBtn({\n label: 'Download',\n }),\n ]);\n};\n\nexport const createCertificateTemplatesBlock = () => {\n // these would get their own 'names' (types) maybe. . .\n // just genericized for now\n return createBlock('CertificateTemplates', [\n createBlock('CertificateTemplate', [\n createBlock('Text'),\n createBlock('Text'),\n ]),\n createBlock('CertificateTemplate', [\n createBlock('Text'),\n createBlock('Text'),\n ]),\n createBlock('CertificateTemplate', [\n createBlock('Text'),\n createBlock('Text'),\n ]),\n ]);\n};\n\nexport const addCertificateTextField = (\n block: Block,\n position: number,\n isInputField: boolean\n): [Block, Blocks?] => {\n if (block.type === 'CertificateTextFields') {\n const certificateTextFieldBlock = certificateTextField(isInputField);\n\n const certificateTextFieldBlockRef = {\n id: certificateTextFieldBlock.id,\n type: 'Ref',\n };\n const [newBlocks] = flatten(certificateTextFieldBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(\n position,\n 0,\n certificateTextFieldBlockRef\n );\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const removeCertificateTextField = (\n block: Block,\n position: number\n): [Block, Blocks?] => {\n if (block.type === 'CertificateTextFields') {\n const certificateTextFieldBlock = certificateTextField();\n\n const [newBlocks] = flatten(certificateTextFieldBlock);\n\n const nextBlock = cloneBlock(block);\n (nextBlock.children as Block[]).splice(position, 1);\n\n return [nextBlock, newBlocks];\n }\n return [block, undefined];\n};\n\nexport const createCertificateInteractionBlock = props => {\n const { style } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createBlock('CertificateMedia', [createMediaBlock({ child: 0 })]),\n createBlock('Certificates', [createCertificateBlock()]),\n\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n type: 'Certificate',\n name: props.name,\n sId: getSId('interaction'),\n\n style: props.style,\n },\n meta: {\n subType: 'Certificate',\n layout: `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n },\n }\n );\n};\n\nexport const create = createCertificateInteractionBlock;\nexport const interactionConfig = {};\n","import {\n createAccordionInteractionBlock,\n ImageChoice,\n} from 'factories/interactions/accordion';\nimport { createImageInteractionBlock } from 'factories/interactions/image';\nimport { createCarouselInteractionBlock } from 'factories/interactions/carousel';\nimport { createFlipcardInteractionBlock } from 'factories/interactions/flipcard';\nimport { createFullPageTextBlock } from 'factories/interactions/fullpagetext';\nimport { createMultichoiceInteractionBlock } from 'factories/interactions/multichoice';\nimport { createMultichoiceImageInteractionBlock } from 'factories/interactions/multichoiceimage';\nimport { createSortationInteractionBlock } from 'factories/interactions/sortation';\nimport { createDragAndDropInteractionBlock } from 'factories/interactions/draganddrop';\n// import { createMatchingInteractionBlock } from 'factories/interactions/matching';\nimport { createMatchingInteractionBlock } from 'factories/interactions/matching_v2';\nimport { createHotSpotInteractionBlock } from 'factories/interactions/hotspot';\nimport { createFiveStarRatingInteractionBlock } from 'factories/interactions/fivestarrating';\nimport { createResultsPageInteractionBlock } from 'factories/interactions/resultspage';\nimport { createClickAndRevealInteractionBlock } from 'factories/interactions/clickandreveal';\nimport { createTopicPortalInteractionBlock } from 'factories/interactions/topicportal';\nimport { createAssessmentInteractionBlock } from 'factories/interactions/assessment';\nimport { createAssessmentIntroductionInteractionBlock } from 'factories/interactions/assessmentintroduction';\nimport { createAssessmentQuestionInteractionBlock } from 'factories/interactions/assessmentquestion';\nimport { createAssessmentResultsInteractionBlock } from 'factories/interactions/assessmentresults';\nimport { createContentCardInteractionBlock } from 'factories/interactions/contentcard';\nimport { createTextEntryInteractionBlock } from 'factories/interactions/textentry';\nimport { createTextEntryVariableInteractionBlock } from 'factories/interactions/textentryvariable';\nimport { createTextEntryQuizInteractionBlock } from 'factories/interactions/textentryquiz';\nimport { createSelectOptionsInteractionBlock } from 'factories/interactions/selectoptions';\nimport { createSliderInteractionBlock } from 'factories/interactions/slider';\nimport { createCertificateInteractionBlock } from 'factories/interactions/certificate';\n\nimport { addInteraction } from 'factories/topic';\nimport store from 'store/next';\nimport { flatten } from 'factories/utils';\nimport { getBlock, getInteractionsFromTopicAndState } from 'selectors/block';\nimport { ContainerProperties } from './NewSectionWizard';\nimport { InteractionProps } from 'factories/interactions/interaction';\n\nconst ccount = {\n center: 0,\n centerReversed: 0,\n left: 1,\n right: 1,\n};\nconst creversed = {\n center: false,\n centerReversed: true,\n // center: true,\n // centerReversed: false,\n left: false,\n right: true,\n // left: true,\n // right: false,\n};\n\nconst transformProperties = (\n name: string,\n props: ContainerProperties\n): InteractionProps => ({\n name,\n columnCount: ccount[props.layout],\n columnsReversed: creversed[props.layout],\n style: {\n background: props.background,\n foreground: props.textColor,\n buttonBackground: props.buttonColor,\n buttonForeground: props.buttonTextColor,\n },\n});\n\nconst newInteractions = {\n accordion({\n numberOfItems = 3,\n layout,\n containerProperties,\n name,\n ...interactionProperties\n }) {\n return createAccordionInteractionBlock({\n ...containerProperties,\n name,\n numberOfAccordions: numberOfItems,\n imgChoice: {\n left: ImageChoice.Left,\n right: ImageChoice.Right,\n fill: ImageChoice.Right,\n none: ImageChoice.None,\n }[layout || 'left'],\n ...interactionProperties,\n });\n },\n image({ name, layout, containerProperties, ...interactionProperties }) {\n return createImageInteractionBlock({\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n carousel({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n return createCarouselInteractionBlock({\n numberOfSlides: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'flip card'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createFlipcardInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n 'full page text'({\n name,\n numberOfItems = 1,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n return createFullPageTextBlock({\n numberOfSlides: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'content cards'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n return createContentCardInteractionBlock({\n numberOfCards: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'multiple choice'({\n numberOfItems = 3,\n layout,\n containerProperties,\n name,\n ...interactionProperties\n }) {\n return createMultichoiceInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'multiple choice media'({\n numberOfItems = 3,\n layout,\n containerProperties,\n name,\n ...interactionProperties\n }) {\n return createMultichoiceInteractionBlock({\n // createMultichoiceImageInteractionBlock\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n sortation({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n // console.log('sortation name', name);\n return createSortationInteractionBlock({\n answerCount: numberOfItems,\n layout,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n slider({\n // numberOfItems = 3,\n layout,\n containerProperties,\n name,\n ...interactionProperties\n }) {\n return createSliderInteractionBlock({\n answerCount: 0,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'drag and drop'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n return createDragAndDropInteractionBlock({\n answerCount: numberOfItems,\n layout,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n matching({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n return createMatchingInteractionBlock({\n answerCount: numberOfItems,\n layout,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n hotspot({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n //\n return createHotSpotInteractionBlock({\n answerCount: numberOfItems,\n layout,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n '5 star rating'({\n name,\n numberOfItems = 0,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n //\n return createFiveStarRatingInteractionBlock({\n answerCount: numberOfItems,\n layout,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'results page'({\n name,\n numberOfItems = 0,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n //\n return createResultsPageInteractionBlock({\n answerCount: numberOfItems,\n layout,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n certificate({\n name,\n numberOfItems = 0,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n //\n return createCertificateInteractionBlock({\n answerCount: numberOfItems,\n layout,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'click and reveal'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createClickAndRevealInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n 'landing page'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createClickAndRevealInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n 'text entry'({\n name,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n //createTextEntryInteractionBlock\n return createFiveStarRatingInteractionBlock({\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'text entry variable'({\n name,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n return createTextEntryVariableInteractionBlock({\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'text entry quiz'({\n name,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n //createTextEntryInteractionBlock\n return createTextEntryQuizInteractionBlock({\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n },\n 'select options'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createSelectOptionsInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n 'topic portal'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createTopicPortalInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n assessment({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createAssessmentInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n 'assessment introduction'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createAssessmentIntroductionInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n 'assessment question'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createAssessmentQuestionInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n 'assessment results'({\n name,\n numberOfItems = 3,\n layout,\n containerProperties,\n ...interactionProperties\n }) {\n const data = createAssessmentResultsInteractionBlock({\n answerCount: numberOfItems,\n ...containerProperties,\n name,\n ...interactionProperties,\n });\n\n return data;\n },\n};\n\nconst createInteraction = ({\n blocks,\n topic,\n containerProperties,\n interactionProperties,\n setBlocks,\n setBlock,\n}) => {\n const topicBlock = getBlock(blocks, topic.id);\n const p = transformProperties('', containerProperties);\n\n let { type } = interactionProperties;\n\n if (type === 'hotspot quiz') {\n type = 'hotspot';\n }\n\n if (type === 'hotspot landing page') {\n type = 'hotspot';\n }\n\n const newInteraction = newInteractions[type]({\n containerProperties: p,\n ...interactionProperties,\n });\n\n const [newBlocks, rootId] = flatten(newInteraction);\n\n const newInteractionRef = {\n type: 'Ref',\n id: rootId,\n };\n\n const newTopicBlock = addInteraction(blocks)(\n topicBlock,\n newInteractionRef,\n getInteractionsFromTopicAndState(store.getState() as any, topicBlock).length\n );\n\n setBlocks(newBlocks).then(() => {\n setBlock(newTopicBlock);\n });\n};\n\nexport default createInteraction;\n","import { createBlock } from 'factories/block';\nimport { InteractionProps, reverse } from './interaction';\nimport { createContinueBtn } from './continueBtn';\nimport { getSId } from '../utils';\nimport { createMediaBlock } from './media';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nexport const createFullPageTextBlock = (props: any) => {\n // will fix this up later with the ' prop 'er definitions etc\n const { lockDown = 0, style } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createBlock('FullPageText', [\n createMediaBlock({\n child: 0,\n }),\n ]),\n\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n type: 'FullPageText',\n name: props.name,\n sId: getSId('interaction'),\n style: props.style || {},\n lockDown,\n },\n meta: {\n subType: 'FullPageText',\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createMediaBlock } from './media';\nimport { createContinueBtn } from './continueBtn';\nimport { getSId } from '../utils';\nimport { createEditableBtn } from './editableBtn';\nimport { createFeedbackBlock } from './feedback';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst contentForColumn = props => (i: number) => {\n return [\n () =>\n createBlock('TextEntryVariable', [\n createEditableBtn({\n label: 'Submit',\n }),\n ]),\n () =>\n createBlock('ColumnImageAndText', [\n createMediaBlock({ child: 1 }),\n createBlock('Text'),\n ]),\n ][i];\n};\n\nexport const createTextEntryVariableInteractionBlock = (props: any) => {\n // will fix this up later with the ' prop 'er definitions etc\n\n const { lockDown = 0, style } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(0), 0, false),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n lockDown,\n },\n meta: {\n subType: 'TextEntryVariable',\n layout: 'OneColumnReversed',\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { InteractionProps } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createMediaBlock } from './media';\nimport { createContinueBtn } from './continueBtn';\nimport { getSId } from '../utils';\nimport { createEditableBtn } from './editableBtn';\nimport { createFeedbackBlock } from './feedback';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst contentForColumn = props => (i: number) => {\n return [\n () =>\n createBlock('TextEntryQuiz', [\n createBlock('Text'),\n createEditableBtn({\n label: 'Submit',\n }),\n\n createFeedbackBlock({}),\n ]),\n () =>\n createMediaBlock({\n child: 1,\n }),\n ][i];\n};\n\nexport const createTextEntryQuizInteractionBlock = (props: any) => {\n // will fix this up later with the ' prop 'er definitions etc\n\n const { lockDown = 0, style } = props as any;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(contentForColumn(props), props.columnCount, true),\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n name: props.name,\n sId: getSId('interaction'),\n style: props.style,\n lockDown,\n },\n meta: {\n subType: 'TextEntryQuiz',\n layout: `${props.columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n props.columnsReversed ? 'Reversed' : ''\n }`,\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","import { createBlock } from 'factories/block';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { InteractionProps, reverse } from './interaction';\nimport { createLayout } from 'factories/layout';\nimport { createMediaBlock } from './media';\nimport { createContinueBtn } from './continueBtn';\nimport uuid from 'uuidv4';\nimport { getSId } from '../utils';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst createAssessmentIntroduction = (props?: {}) => {\n return createBlock('AssessmentIntroduction', [], { props: {} });\n};\n\nconst createAssessmentQuestion = (props?: {}) => {\n return createBlock('AssessmentQuestion', [], { props: {} });\n};\n\nconst createAssessmentResults = (props?: {}) => {\n return createBlock('AssessmentResults', [], { props: {} });\n};\n\nexport const createAssessmentInteractionBlock = props => {\n return createBlock(\n 'Interaction',\n [\n createBlock('Assessment', [\n createAssessmentIntroduction(),\n createAssessmentQuestion(),\n createAssessmentResults(),\n ]),\n\n createBlock('SingleColumnLayout', [\n createBlock('Column', [createContinueBtn(props.style)], {\n props: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n meta: {\n subType: 'ButtonBlock',\n },\n }),\n ]),\n ],\n {\n props: {\n type: 'Assessment',\n name: props.name,\n sId: getSId('interaction'),\n style: props.style || {},\n },\n meta: {\n subType: 'Assessment',\n },\n }\n );\n};\n\nexport const interactionConfig = {};\n","/** @jsx jsx */\n\nimport { useState, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { values, colors } from 'styles/variables';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport Plus from 'assets/Plus.svg';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { Block } from '@chameleoncreator/creator-app';\nimport createInteraction from 'components/Editor/NewSectionWizard/createInteraction';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { setBlockAction } from 'actions/setBlockAction';\nimport { setBlocksAction } from 'actions/setBlocksAction';\nimport { State } from 'store/store';\nimport preview from 'assets/previewInteractionIcon.svg';\n//preview_interaction.svg';\nimport pubSub from 'services/pubSub';\nimport reviewToolReviewsBubble from 'assets/reviewToolReviewsBubble.svg';\nimport { Bubble } from 'components/Editor/EditorUtilities/UI/Bubble';\n\nconst { lPink, mint } = colors;\n// const { headerHeight } = values;\n\nconst color = mint || lPink;\nconst size = 40;\nconst bottomPadding = 30;\nconst getBoxShadow = hover =>\n `box-shadow: 0 3px 10px rgba(0, 0, 0, ${hover ? 0.25 : 0});`;\n\nconst Wrapper = ({ id, focusedNodeId, headerHeight = 70 }) => {\n const [reviewToolToggleOn, setReviewToolToggleOn] = useState<boolean>(false);\n const [hover, setHover] = useState(false);\n\n const topic = getCurrentTopic() as any;\n const topicAsAssessment = topic?.props?.asAssessment;\n\n const state = useSelector((state: State) => {\n return state;\n });\n\n const [infoBubble, setInfoBubble] = useState<{\n element: HTMLElement;\n content: string;\n } | null>();\n\n const dispatch = useDispatch();\n\n const setBlock = block => {\n dispatch(setBlockAction(block));\n };\n const setBlocks = blocks => dispatch(setBlocksAction(blocks));\n\n return (\n <div\n css={css`\n position: absolute;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n padding: ${headerHeight + 3}px 3px ${bottomPadding}px 3px;\n pointer-events: none;\n\n * {\n font-family: 'Poppins';\n }\n `}\n >\n <div\n css={css`\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px\n ${focusedNodeId === id ? color : hover ? color : 'lightGrey'};\n transition: box-shadow 0.25s;\n `}\n />\n\n {!topicAsAssessment && (\n <div\n css={css`\n position: absolute;\n left: 50%;\n bottom: ${bottomPadding - size / 2}px;\n width: ${size}px;\n height: ${size}px;\n transform: translateX(-50%);\n border-radius: 50%;\n background: ${color} url('${Plus}') no-repeat;\n \n background-size: 40%;\n background-position: center;\n cursor: pointer;\n pointer-events: auto;\n\n transition: all 0.3s;\n\n ${getBoxShadow(false)}\n\n &:hover {\n ${getBoxShadow(true)}\n }\n \n `}\n onClick={() => {\n if (topicAsAssessment) {\n const topicAnimationGroup = getBlockById(\n topic.children[0].id\n ) as Block;\n if (topicAnimationGroup && topicAnimationGroup.children) {\n const numQuestions = topicAnimationGroup.children.length - 2;\n\n createInteraction({\n blocks: state.blocks,\n topic,\n containerProperties: {},\n interactionProperties: {\n type: 'assessment question',\n name: `Question #${numQuestions + 1}`,\n layout: null,\n },\n setBlocks,\n setBlock,\n });\n }\n\n return;\n }\n\n parent.setNewSectionWizard && parent.setNewSectionWizard(true);\n }}\n // onMouseEnter={e => {\n // setInfoBubble({\n // element: e.currentTarget,\n // content: 'Add new interaction',\n // });\n // }}\n // onMouseLeave={e => {\n // setInfoBubble(null);\n // }}\n\n data-info-bubble=\"Add new interaction\"\n />\n )}\n\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n right: ${175 / 2}px;\n bottom: ${bottomPadding - size / 2}px;\n width: 175px;\n height: ${size}px;\n\n border-radius: 9999px;\n background: ${color};\n\n cursor: pointer;\n pointer-events: auto;\n\n color: #fff;\n font-size: 14px;\n transition: all 0.3s;\n\n ${getBoxShadow(false)}\n\n &:hover {\n ${getBoxShadow(true)}\n }\n `}\n onMouseOver={() => setHover(true)}\n onMouseOut={() => setHover(false)}\n onClick={() => {\n setCurrentBlock(focusedNodeId !== id ? { id } : null);\n }}\n >\n Settings\n </div>\n\n <button\n css={css({\n all: 'unset',\n //\n position: 'absolute',\n right: 25,\n bottom: 10,\n\n width: size,\n height: size,\n background: `${mint} url(${preview}) no-repeat`,\n // backgroundSize: `44%`,\n backgroundSize: '100%',\n backgroundPosition: 'center',\n borderRadius: '50%',\n cursor: 'pointer',\n pointerEvents: 'auto',\n\n transition: 'all 0.3s',\n\n boxShadow: `0 3px 10px rgba(0, 0, 0, 0)`,\n ':hover': {\n boxShadow: `0 3px 10px rgba(0, 0, 0, 0.25)`,\n },\n })}\n onClick={() => {\n //\n\n if (state.currentTopic && state.currentInteraction) {\n const topicSId = state.blocks[state.currentTopic]?.props?.sId;\n const currentInteractionSId =\n state.blocks[state.currentInteraction]?.props?.sId;\n\n const previewLocation = `#${topicSId}/${currentInteractionSId}`;\n\n const { links } = state;\n const previewLink = links.preview;\n const newWindowUrl = previewLink ? `${previewLink}` : `module.html`;\n //\n window.open(`${newWindowUrl}${previewLocation}`, 'preview');\n }\n }}\n // onMouseEnter={e => {\n // setInfoBubble({\n // element: e.currentTarget,\n // content: 'Preview this interaction',\n // });\n // }}\n // onMouseLeave={e => {\n // setInfoBubble(null);\n // }}\n\n data-info-bubble=\"Preview this interaction\"\n />\n\n {window.reviewModeEnabled && !reviewToolToggleOn && (\n <button\n className=\"fader_-2s\"\n css={css({\n all: 'unset',\n //\n position: 'absolute',\n left: 25,\n bottom: 10,\n width: size,\n height: size,\n background: `#F88198 url('${reviewToolReviewsBubble}')no-repeat`,\n backgroundSize: '50%',\n backgroundPosition: 'center',\n borderRadius: '50%',\n cursor: 'pointer',\n pointerEvents: 'auto',\n transition: 'all 0.3s',\n\n boxShadow: `0 3px 10px rgba(0, 0, 0, 0)`,\n ':hover': {\n boxShadow: `0 3px 10px rgba(0, 0, 0, 0.25)`,\n },\n })}\n onClick={() => {\n const pS = pubSub.publish('SHOW_REVIEW_TOOL', {\n showReviewTool: true,\n setReviewToolToggleOff() {\n setReviewToolToggleOn(false);\n },\n });\n\n setReviewToolToggleOn(true);\n }}\n />\n )}\n </div>\n );\n};\n\nexport default Wrapper;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useState, useEffect, useRef } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport { useSelector } from 'react-redux';\nimport pubSub from 'services/pubSub';\nimport getStore from 'services/getStore';\nimport { backBtnOnClick } from 'components/Header/BackBtn';\n\nconst store = getStore();\n\nconst HiddenBackButton = ({ id }) => {\n const [disabled, setDisabled] = useState(false);\n const currentTopic = useSelector(({ currentTopic }: any) => currentTopic);\n\n const isMounted = useRef(true);\n\n const getInteractions = () => {\n return Array.from(document.querySelectorAll('[data-section]'));\n };\n\n const getPrevSection = () => {\n const interactions = getInteractions();\n\n const currentSectionIndex = interactions.findIndex(\n (i: any) => i.id === `i${id}`\n );\n\n const prevSection = interactions[currentSectionIndex - 1];\n\n return prevSection;\n };\n\n const isModulesFirstInteraction = () => {\n const isTopic0 =\n getTopics().findIndex((t: any) => t.id === currentTopic) === 0;\n const hasPrevSection = !!getPrevSection();\n\n if (isTopic0) {\n if (!hasPrevSection) {\n return true;\n }\n }\n\n return false;\n };\n\n useEffect(() => {\n if (isModulesFirstInteraction()) {\n setDisabled(true);\n }\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return (\n <button\n id={`hidden-back-button-${id}`}\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: 0;\n height: 0;\n border: 0;\n outline: 0;\n overflow: hidden;\n `}\n disabled={disabled}\n onClick={backBtnOnClick}\n onFocus={() => {\n pubSub.publish('HILITE_CHAMELEON_BACK_BUTTON', { toggle: true });\n }}\n onBlur={() => {\n pubSub.publish('HILITE_CHAMELEON_BACK_BUTTON', { toggle: false });\n }}\n aria-label=\"Go back\"\n >\n {/* {id} */}\n Go back\n </button>\n );\n};\n\nexport default HiddenBackButton;\n","/** @jsx jsx */\n\nimport { jsx } from '@emotion/core';\nimport { useCachedResource } from 'services/useCachedResource';\nimport { CHAMELEON_CACHE_v1 } from 'services/imageCache';\n\nconst Background = ({\n backgroundImage,\n backgroundImageOpacity,\n backgroundBlur = 0,\n}) => {\n const backgroundImageURL = backgroundImage\n .split(/\\(|\\)/g)[1]\n .replace(/'/g, '');\n\n const cachedBackgroundImage = useCachedResource(\n CHAMELEON_CACHE_v1,\n backgroundImageURL\n );\n\n return (\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: `url('${cachedBackgroundImage ||\n backgroundImageURL}') center / cover no-repeat`,\n opacity: backgroundImageOpacity / 100,\n filter: `blur(${backgroundBlur}px)`,\n // scale the thing up to not have blurry edges\n ...(backgroundBlur > 0 && {\n transformOrigin: 'center',\n transform: 'scale(1.1)',\n }),\n }}\n />\n );\n};\n\nexport default Background;\n","import getTopics from 'services/apiHelpers/getTopics';\nimport getStore from 'services/getStore';\nimport { updateInteractionsOpenAction } from 'actions/updateInteractionsOpenAction';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport setCurrentTopic from 'services/apiHelpers/setCurrentTopic';\nimport onScrollEnds from 'services/onScrollEnds';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { getTopicsNotHiddenFromNextAndBackNavigation } from 'services/getTopicsNotHiddenFromNextAndBackNavigation';\n\nconst store = getStore();\n\nlet checkWindowHasScrolled;\n\nconst navToNextTopic = () => {\n const topics = getTopics();\n\n const topicsNotHiddenFromNextAndBackNavigation = getTopicsNotHiddenFromNextAndBackNavigation(\n topics\n );\n\n const nextTopic =\n topicsNotHiddenFromNextAndBackNavigation[\n topicsNotHiddenFromNextAndBackNavigation.findIndex(\n t => t.id === (getCurrentTopic() as Block).id\n ) + 1\n ];\n\n if (!nextTopic) return;\n\n setCurrentTopic(nextTopic.id);\n\n window.scrollTo(0, 0);\n\n if (\n window['CHAMELEON_EVENTS_API'] &&\n typeof window['CHAMELEON_EVENTS_API'] === 'function'\n ) {\n window['CHAMELEON_EVENTS_API']('NAVIGATION_TO_NEXT_TOPIC');\n }\n};\n\nconst next = (sId: number, id: string) => l => {\n if (l !== 'next') {\n // console.log('branching');\n\n window.location.hash = l;\n return;\n }\n\n (window as any).locationHistory = null;\n\n store.dispatch(updateInteractionsOpenAction(id));\n\n const getNextInteraction = () => {\n // being more specific with the selector here since it appears that certain extensions ' you know loom you are. . . '\n // are injecting section elements onto the page\n\n // we only want sections that are within a chameleon topic container\n const topicContainer =\n document.querySelector('[class*=\"TopicContainer\"]') ||\n document.querySelector('[class*=\"AssessmentContainer\"]');\n //\n // console.log(topicContainer);\n\n if (!topicContainer) {\n return;\n }\n\n const interactions = Array.from(topicContainer.querySelectorAll('section'));\n\n const nextInteraction: HTMLElement =\n interactions[interactions.findIndex(i => i.id === `i${id}`) + 1];\n\n // console.log(`'next' navigates to next interaction ?`, nextInteraction);\n\n return nextInteraction;\n };\n\n requestAnimationFrame(() => {\n const nextInteraction = getNextInteraction();\n\n const windowScrollY = window.scrollY;\n\n clearTimeout(checkWindowHasScrolled);\n\n if (nextInteraction) {\n nextInteraction.scrollIntoView({\n behavior: 'smooth',\n });\n\n checkWindowHasScrolled = setTimeout(() => {\n if (window.scrollY === windowScrollY) {\n nextInteraction.scrollIntoView();\n // console.log(\n // 'smooth scrolling failed so we attempt to snap to the nextInteraction'\n // );\n } else {\n // console.log('we have smooth scrolled to the next interaction');\n }\n }, 300);\n\n //\n\n onScrollEnds(() => {\n nextInteraction.focus({\n preventScroll: true,\n });\n });\n //\n } else {\n navToNextTopic();\n }\n });\n};\n\nexport default next;\n","\nexport const updateInteractionsOpenAction = (id: string) => {\n return {\n type: 'UPDATE_INTERACTIONS_OPEN',\n data: id,\n };\n};\n","import getStore from 'services/getStore';\n\nconst store = getStore();\n\nconst getFontSize = (base, h) => {\n return `\n font-size: ${base + (h > 1 ? h / 10 : 0)}rem;\n `;\n //\n};\n\nfunction halfwayBetween2Numbers(a: number, b: number) {\n return (a + b) / 2;\n}\n\nconst headingsTable = {\n h1: [4.5, halfwayBetween2Numbers(4.5, 2), 2],\n h2: [3.5, halfwayBetween2Numbers(3.5, 2), 2],\n h3: [3, halfwayBetween2Numbers(3, 2), 2],\n h4: [2.6, halfwayBetween2Numbers(2.6, 2), 2],\n h5: [2, halfwayBetween2Numbers(2, 1.2), 1.2],\n h6: [1.6, halfwayBetween2Numbers(1.6, 1.2), 1.2],\n};\n\nconst getLineHeight = (heading: keyof typeof headingsTable, index) => {\n //\n // H1 - 4.5 Rem\n // H2 - 3.5 Rem\n // H3 - 3 Rem\n // H4 - 2.6 Rem\n // H5 - 2 Rem\n // H6 - 1.6 Rem\n\n const defaultLineHeight = 1.5;\n const { lineHeight = defaultLineHeight } = store.getState().theme;\n const calculatedLineHeight =\n (headingsTable[heading][index] / defaultLineHeight) * lineHeight;\n\n return `\n line-height: ${calculatedLineHeight}rem;\n `;\n};\n\nconst headingStyles = ({ h1, h2, h3, h4, h5, h6 }) => `\n h1 {\n ${getFontSize(2, h1)}\n ${getLineHeight('h1', 2)}\n }\n\n h2 {\n ${getFontSize(1.5, h2)}\n ${getLineHeight('h2', 2)}\n }\n\n h3 {\n ${getFontSize(1.3, h3)}\n ${getLineHeight('h3', 2)}\n \n }\n\n h4 {\n ${getFontSize(1, h4)}\n ${getLineHeight('h4', 2)}\n }\n\n h5 {\n ${getFontSize(1 || 0.8, h5)}\n ${getLineHeight('h5', 2)}\n }\n\n h6 {\n ${getFontSize(1 || 0.6, h6)}\n ${getLineHeight('h6', 2)}\n }\n\n @media(min-width: 480px) {\n h1 {\n ${getFontSize(2.5, h1)}\n ${getLineHeight('h1', 1)}\n }\n\n h2 {\n ${getFontSize(2, h2)}\n ${getLineHeight('h2', 1)}\n }\n\n h3 {\n ${getFontSize(1.8, h3)}\n ${getLineHeight('h3', 1)}\n }\n\n h4 {\n ${getFontSize(1.5, h4)}\n ${getLineHeight('h4', 1)}\n }\n\n h5 {\n ${getFontSize(1, h5)}\n ${getLineHeight('h5', 1)}\n }\n \n h6 {\n ${getFontSize(1 || 0.8, h6)}\n ${getLineHeight('h6', 1)}\n }\n}\n\n @media(min-width: 767px) {\n h1 {\n ${getFontSize(3.5, h1)}\n ${getLineHeight('h1', 0)}\n }\n\n h2 {\n ${getFontSize(2.5, h2)}\n ${getLineHeight('h2', 0)}\n }\n\n h3 {\n ${getFontSize(2, h3)}\n ${getLineHeight('h3', 0)}\n }\n\n h4 {\n ${getFontSize(1.7, h4)}\n ${getLineHeight('h4', 0)}\n }\n \n h5 {\n ${getFontSize(1.2, h5)}\n ${getLineHeight('h5', 0)}\n }\n \n h6 {\n ${getFontSize(1, h6)}\n ${getLineHeight('h6', 0)}\n }\n}\n`;\n\nexport default headingStyles;\n","export const getScrollBarWidth = () => {\n return window.innerWidth - document.body.clientWidth;\n};\n","/** @jsx jsx */\n\n// TODO if we change the location of the burger exitCode\n// then the fauxFocus needs to be updated\n\nimport {\n Fragment as _,\n useState,\n useEffect,\n useRef,\n useMemo,\n useLayoutEffect,\n ReactElement,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { createPortal } from 'react-dom';\nimport { Menu } from '../TopicMenu/Menu';\nimport { getButtonFocus } from 'styles/variables';\nimport { useHeader } from 'services/useHeader';\nimport { getScrollBarWidth } from 'services/getScrollBarWidth';\n\nconst width = 24;\n\ninterface IMenuContainerProps {\n id: string;\n rootSelector: string;\n}\n\nconst MenuContainer = (props: IMenuContainerProps) => {\n const { id, rootSelector } = props;\n const [root, setRoot] = useState<HTMLElement | null>(null);\n const [fauxFocus, setFauxFocus] = useState<boolean>(false);\n const [menu, setMenu] = useState<boolean>(false);\n\n const header = useHeader();\n\n const currentHeaderProps = header[header.props.headerStyle].props;\n\n const {\n topicMenu,\n headerBackgroundColor,\n headerTextColor,\n } = currentHeaderProps;\n\n const hiddenButton = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n const root = document.querySelector(rootSelector) as HTMLElement;\n\n if (root) {\n setRoot(root);\n }\n\n return () => {\n setRoot(null);\n };\n }, []);\n\n let fauxFocusColor: any = getButtonFocus(headerTextColor);\n\n fauxFocusColor = fauxFocusColor?.split(',')[1]?.trim();\n\n return (\n <_>\n <button\n type=\"button\"\n ref={hiddenButton}\n id={`hidden-button-menu-${id}`}\n css={css({\n outline: 'none',\n border: 'none',\n //\n position: 'fixed',\n\n right: 33,\n top: 70,\n width: 18,\n height: 1,\n //\n background: 'transparent',\n overflow: 'hidden',\n\n '@media (max-width: 480px)': {\n right: 18,\n },\n })}\n onFocus={() => {\n setFauxFocus(true);\n\n const section = hiddenButton.current?.closest(\n 'section'\n ) as HTMLElement;\n }}\n onBlur={() => {\n setFauxFocus(false);\n\n // return;\n // give focus to the ACTUAL content container in the section\n const section = hiddenButton.current?.closest(\n 'section'\n ) as HTMLElement;\n\n if (section) {\n const contentContainer = section.querySelector(\n `#i${id}-content-container`\n ) as HTMLElement;\n }\n }}\n onClick={() => {\n setMenu(menu => !menu);\n }}\n aria-label=\"open menu\"\n // NOTE: removed as potentially the cause of JAWS jumping into form mode. . .\n // aria-haspopup=\"true\"\n />\n\n {\n (root\n ? createPortal(\n <div\n css={css({\n position: 'fixed',\n right: 0,\n top: 0,\n zIndex: 2147483647,\n })}\n >\n {fauxFocus && (\n <div\n css={css({\n position: 'fixed',\n right: 30 - getScrollBarWidth(),\n top: 25,\n width: width,\n height: width - 4,\n\n boxShadow: `0 0 0 2px ${headerBackgroundColor}, ${fauxFocusColor}`,\n\n '@media (max-width: 480px)': {\n right: 15,\n top: 14.5,\n },\n })}\n />\n )}\n <div\n style={{\n position: 'fixed',\n right: -30 - getScrollBarWidth(),\n }}\n >\n <Menu\n menu={menu}\n close={() => {\n hiddenButton.current?.focus();\n setMenu(false);\n }}\n />\n </div>\n </div>,\n root\n )\n : null) as ReactElement\n }\n </_>\n );\n};\n\nexport { MenuContainer };\n","export const controlAudioAction = audioData => {\n // console.log(audioData);\n\n return {\n type: 'CONTROL_AUDIO',\n data: audioData,\n };\n};\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { css as _css } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\n\nconst { mint } = colors;\n\nconst Bubble = ({ data }) => {\n let { element, content } = data;\n\n const [bubbleCoords, setBubbleCoords] = useState<any>({\n x: 0,\n y: window.innerHeight * 2,\n width: 0,\n height: 0,\n });\n\n const bubble = useRef<HTMLDivElement>(null);\n const arrow = useRef<SVGPolylineElement>(null);\n\n const arrowData = useRef({\n width: 20,\n height: 10,\n location: 'bottomLeft',\n });\n\n useEffect(() => {\n if (!bubble.current || !arrow.current) {\n return;\n }\n\n const { width, height } = bubble.current.getBoundingClientRect();\n const arrowCoords = arrow.current.getBBox();\n\n const {\n left: x,\n top: y,\n width: elementWidth,\n height: elementHeight,\n } = element.getBoundingClientRect();\n\n let bubbleAlign = 'left';\n if (x + width >= window.innerWidth) {\n bubbleAlign = 'right';\n arrowData.current.location = 'bottomRight';\n }\n\n setBubbleCoords({\n x: x - arrowData.current.width / 2,\n y: y - (height + 15),\n ...(bubbleAlign === 'right' && {\n x: x + elementWidth + 10 - width,\n }),\n width,\n height,\n });\n }, []);\n\n return createPortal(\n <div\n ref={bubble}\n className=\"fader_-2s\"\n css={css({\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n left: 0,\n top: 0,\n maxWidth: 320,\n minHeight: 40,\n padding: '10px 20px',\n transform: `translate3d(${bubbleCoords.x}px, ${bubbleCoords.y}px, 0px)`,\n background: 'transparent',\n color: '#fff',\n fontSize: 12,\n transition: 'opacity 0.2s',\n pointerEvents: 'none',\n\n '*': {\n fontFamily: 'Poppins !important',\n },\n })}\n >\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: bubbleCoords.width,\n height: bubbleCoords.height,\n }}\n >\n <svg\n viewBox={`0 0 ${bubbleCoords.width + 0} ${bubbleCoords.height + 0}`}\n style={{\n filter: 'drop-shadow(5px 10px 10px rgba(0, 0, 0, 0.2))',\n overflow: 'visible',\n }}\n >\n <g>\n <rect\n width={bubbleCoords.width + 0}\n height={bubbleCoords.height}\n rx={20}\n style={{\n fill: mint,\n }}\n />\n <g\n style={{\n transform: `translateX(${\n {\n bottomLeft: 20,\n bottomRight: bubbleCoords.width - 40,\n }[arrowData.current.location]\n }px)`,\n }}\n >\n <polyline\n ref={arrow}\n points={`\n 0,${bubbleCoords.height} \n ${arrowData.current.width},${bubbleCoords.height} \n ${arrowData.current.width / 2},${bubbleCoords.height +\n arrowData.current.height}\n 0,${bubbleCoords.height} \n `}\n style={{\n fill: mint,\n }}\n />\n </g>\n </g>\n </svg>\n </div>\n\n <div\n style={{\n position: 'relative',\n }}\n >\n {content}\n </div>\n </div>,\n document.body\n );\n};\n\nconst InfoBubbleContainer = () => {\n const [bubbleData, setShowBubbleData] = useState<{} | null>(null);\n\n useEffect(() => {\n const onMouseOver = e => {\n const { target } = e;\n const data = target.dataset.infoBubble;\n\n if (!data) {\n return;\n }\n\n setShowBubbleData({\n element: target,\n content: data,\n });\n };\n\n const onMouseOut = e => {\n if (!e.target.dataset.infoBubble) {\n return;\n }\n\n setShowBubbleData(null);\n };\n\n document.body.addEventListener('mouseover', onMouseOver);\n document.body.addEventListener('mouseout', onMouseOut);\n\n return () => {\n document.body.removeEventListener('mouseover', onMouseOver);\n document.body.removeEventListener('mouseout', onMouseOut);\n };\n }, []);\n\n return bubbleData ? <Bubble data={bubbleData} /> : null;\n};\n\nexport { InfoBubbleContainer, Bubble };\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n useContext,\n useRef,\n useEffect,\n useLayoutEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport getStore from 'services/getStore';\nimport Modal from 'components/UI/Modal';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport { useSelector } from 'react-redux';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport EditorBtn from 'components/UI/EditorBtn';\nimport Tick from 'components/UI/Tick';\nimport { getBoundingClientObj } from 'react-select/src/utils';\n\nconst { lPink, lGrey0, lGrey1, lTeal0 } = colors;\nconst [darkGrey, lightGrey, blue] = ['#28292b', '#f3f6ff', '#98add9'];\nconst topicPanelWidth = 190;\n\nexport const moduleNavigationActions = {\n NEXT: 'next',\n EXIT: 'exit',\n SET_MODULE_COMPLETE: 'setModuleComplete',\n SET_MODULE_COMPLETE_AND_EXIT: 'setModuleCompleteAndExit',\n RESET_MODULE: 'resetModule',\n};\n\nexport const moduleNavigationActionsList = Object.values(\n moduleNavigationActions\n);\n\nconst {\n NEXT,\n EXIT,\n SET_MODULE_COMPLETE,\n SET_MODULE_COMPLETE_AND_EXIT,\n RESET_MODULE,\n} = moduleNavigationActions;\n\nconst TopicPanel = ({ name, color = darkGrey, children }) => {\n const [titleHeight, setTitleHeight] = useState(30);\n const height = 135;\n\n const title = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n if (title.current) {\n const { height } = title.current.getBoundingClientRect();\n setTitleHeight(height);\n }\n }, []);\n\n return (\n <div\n css={css`\n width: ${topicPanelWidth}px;\n height: ${height}px;\n margin: 5px;\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 0 0 1px ${color};\n `}\n >\n <div\n ref={title}\n css={css`\n display: flex;\n align-items: center;\n width: 100%;\n min-height: ${titleHeight}px;\n padding: 10px;\n background: ${color};\n font-size: 12px;\n color: #fff;\n `}\n >\n {name}\n </div>\n <div\n css={css`\n height: ${height - titleHeight}px;\n overflow-y: auto;\n `}\n >\n {children}\n </div>\n </div>\n );\n};\n\nconst InteractionPanel = ({\n interaction,\n usingExternalURL,\n isCurrentLocation,\n isTargetLocation,\n onClick,\n}) => {\n const { id } = interaction;\n const { sId, name } = interaction.props;\n\n return (\n <div\n css={css`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n width: 100%;\n min-height: 30px;\n padding: 10px;\n\n font-size: 12px;\n\n ${isCurrentLocation &&\n `\n color: ${blue};\n pointer-events: none;\n `}\n\n ${!usingExternalURL &&\n isTargetLocation &&\n `\n background: ${lightGrey};\n `}\n\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover {\n opacity: 0.45;\n }\n `}\n onClick={onClick}\n >\n <div\n css={css`\n padding: 0 10px 0 0;\n `}\n >\n {name}\n {isCurrentLocation ? ' (current)' : ''}\n </div>\n\n {!usingExternalURL && isTargetLocation && <Tick width={6} height={8} />}\n </div>\n );\n};\n\nconst ModuleGlobalNavigation = ({\n noActions = false,\n noDefaults = false,\n usingExternalURL = false,\n location = '1/1',\n onUpdate = (value: {}) => {},\n onClose,\n}) => {\n const [localLocation, setLocalLocation] = useState<string>(location);\n\n const topics = getTopics();\n\n const { currentInteraction } = useSelector((state: any) => state);\n\n const topicPanelsContainer = useRef<any>(null);\n\n // set to false on init\n // true only when we legit click to update\n const hasUpdated = useRef<boolean>(false);\n\n const getLocationAsArray = () => {\n if (\n // [NEXT, EXIT, SET_MODULE_COMPLETE, SET_MODULE_COMPLETE_AND_EXIT].includes(\n moduleNavigationActionsList.includes(localLocation)\n ) {\n return null;\n }\n\n return localLocation.split('/');\n };\n\n const updateLocalLocation = location => {\n hasUpdated.current = true;\n setLocalLocation(location);\n };\n\n const actions = {\n id: null,\n name: 'Actions',\n };\n\n useLayoutEffect(() => {\n if (!topicPanelsContainer.current) {\n return;\n }\n\n const topicPanelsContainerHeight = topicPanelsContainer.current.getBoundingClientRect()\n .height;\n\n if (topicPanelsContainerHeight >= 455) {\n topicPanelsContainer.current.style.height = '455px';\n }\n }, []);\n\n useEffect(() => {\n if (!hasUpdated.current) {\n return;\n }\n\n onUpdate({\n location: localLocation,\n });\n }, [localLocation]);\n\n return (\n <div\n css={css({\n width: '100%',\n })}\n >\n <div\n css={css({\n position: 'relative',\n width: '100%',\n maxHeight: 170 * 2,\n })}\n >\n <div\n ref={topicPanelsContainer}\n css={css`\n left: 0;\n top: 0;\n width: 100%;\n max-height: inherit;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n overflow-y: auto;\n `}\n >\n {!noActions && (\n <TopicPanel name=\"Actions\" color={blue}>\n <InteractionPanel\n interaction={{\n id: 'next',\n props: {\n name: 'Next',\n },\n }}\n usingExternalURL={usingExternalURL}\n isCurrentLocation={null}\n isTargetLocation={localLocation === NEXT}\n onClick={() => {\n updateLocalLocation(localLocation === NEXT ? location : NEXT);\n }}\n />\n <InteractionPanel\n interaction={{\n id: 'exit',\n props: {\n name: 'Exit',\n },\n }}\n usingExternalURL={usingExternalURL}\n isCurrentLocation={null}\n isTargetLocation={localLocation === EXIT}\n onClick={() => {\n updateLocalLocation(localLocation === EXIT ? location : EXIT);\n }}\n />\n\n <InteractionPanel\n interaction={{\n id: 'set-module-complete',\n props: {\n name: 'Set module complete',\n },\n }}\n usingExternalURL={usingExternalURL}\n isCurrentLocation={null}\n isTargetLocation={localLocation === SET_MODULE_COMPLETE}\n onClick={() => {\n updateLocalLocation(\n localLocation === SET_MODULE_COMPLETE\n ? location\n : SET_MODULE_COMPLETE\n );\n }}\n />\n\n <InteractionPanel\n interaction={{\n id: 'set-module-complete-and-exit',\n props: {\n name: 'Set module complete\\nand exit',\n },\n }}\n usingExternalURL={usingExternalURL}\n isCurrentLocation={null}\n isTargetLocation={\n localLocation === SET_MODULE_COMPLETE_AND_EXIT\n }\n onClick={() => {\n updateLocalLocation(\n localLocation === SET_MODULE_COMPLETE_AND_EXIT\n ? location\n : SET_MODULE_COMPLETE_AND_EXIT\n );\n }}\n />\n\n <InteractionPanel\n interaction={{\n id: 'reset-module',\n props: {\n name: 'Reset module',\n },\n }}\n usingExternalURL={usingExternalURL}\n isCurrentLocation={null}\n isTargetLocation={localLocation === RESET_MODULE}\n onClick={() => {\n updateLocalLocation(\n localLocation === RESET_MODULE ? location : RESET_MODULE\n );\n }}\n />\n </TopicPanel>\n )}\n {topics\n .filter((t: any, topicIndex) => {\n return getInteractionsInTopic(t)?.length;\n })\n .map((t: any, topicIndex) => {\n const topicSId = t.props.sId || t.id;\n\n const interactions = getInteractionsInTopic(t);\n\n return (\n <TopicPanel key={topicSId} name={t.props.name}>\n {interactions.map((i: any, interactionIndex) => {\n const interactionSId = i.props.sId || i.id;\n\n let interactionLocation: any = getLocationAsArray();\n if (interactionLocation) {\n interactionLocation = interactionLocation[1];\n }\n\n return (\n <InteractionPanel\n key={interactionSId}\n interaction={i}\n usingExternalURL={usingExternalURL}\n isCurrentLocation={i.id === currentInteraction}\n isTargetLocation={interactionSId == interactionLocation}\n onClick={() => {\n updateLocalLocation(\n interactionSId == interactionLocation\n ? location\n : `${topicSId}/${interactionSId}`\n );\n }}\n />\n );\n })}\n </TopicPanel>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ModuleGlobalNavigation;\n","export function buttonLayouts(buttonPosition) {\n switch (buttonPosition) {\n case 'start': {\n return `\n justify-content: start !important;\n ${\n window.dev()\n ? ''\n : `\n margin: 0; \n margin-left: -2px;`\n }\n `;\n }\n\n case 'center': {\n return '';\n }\n\n case 'end': {\n return `\n justify-content: end !important;\n ${\n window.dev()\n ? ''\n : `\n margin: 0; \n margin-right: -2px;`\n }\n `;\n }\n\n case 'default': {\n return '';\n }\n }\n}\n","interface IUpdateGlobalFontStylesFromTheme {\n fontSize: number;\n lineHeight: number;\n parsedTextColor?: string;\n headingsStyles?: () => string;\n}\n\nexport function updateGlobalFontStylesFromTheme({\n fontSize = 16,\n lineHeight = 1.5,\n parsedTextColor = '#000',\n headingsStyles,\n}: IUpdateGlobalFontStylesFromTheme) {\n return `\n .chameleon-text {\n ${parsedTextColor && `color: ${parsedTextColor};`}\n }\n\n .chameleon-text > div {\n p:not(h1 p, h2 p, h3 p, h4 p, h5 p, h6 p, .chameleon-certificate-text p) {\n font-size: ${fontSize}px !important;\n line-height: ${(fontSize / 16) * lineHeight}rem;\n }\n\n li:not(h1 li, h2 li, h3 li, h4 li, h5 li, h6 li, .chameleon-certificate-text li) {\n font-size: ${fontSize}px !important;\n line-height: ${(fontSize / 16) * lineHeight}rem;\n }\n\n // \n ${headingsStyles && headingsStyles()}\n }\n\n li > span {\n ${parsedTextColor && `color: ${parsedTextColor};`}\n }\n\n `;\n}\n","let webGLEnabled;\n\nexport const getWebGLEnabled = () => {\n if (webGLEnabled) {\n return webGLEnabled;\n }\n\n const canvas = document.createElement('canvas');\n const webgl =\n canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n\n webGLEnabled = webgl instanceof WebGLRenderingContext;\n\n return webGLEnabled;\n};\n","/** @jsx jsx */\n\nimport { jsx, css } from '@emotion/core';\n//\nimport * as PIXI from 'pixi.js-legacy';\n// 'pixi.js';\nimport { KawaseBlurFilter } from '@pixi/filter-kawase-blur';\nimport SimplexNoise from 'simplex-noise';\nimport tinycolor from 'tinycolor2';\nimport hsl from 'hsl-to-hex';\nimport { useEffect, useRef } from 'react';\nimport hexToRGB from 'services/hexToRGB';\nimport { getWebGLEnabled } from 'services/getWebGLEnabled';\n\n// https://codepen.io/georgedoescode/pen/XWNmvro\n\nexport type TAnimatedOrbDefaultValues = {\n primaryOrbColor: string;\n secondaryOrbColor: string;\n tertiaryOrbColor: string;\n orbOpacity: number;\n orbBlurStrength: number;\n orbSpeed: number;\n};\n\nexport const getAnimatedOrbsDefaultValues = (\n props?: TAnimatedOrbDefaultValues\n) => {\n return {\n primaryOrbColor: props?.primaryOrbColor || '#87B5FF' || '#FD7EB8',\n secondaryOrbColor: props?.secondaryOrbColor || '#B14FEC',\n tertiaryOrbColor: props?.tertiaryOrbColor || '#00d9d3',\n orbOpacity: (props?.orbOpacity || 100) * 0.01,\n orbBlurStrength: props?.orbBlurStrength || 30,\n orbSpeed: (props?.orbSpeed || 2) * 0.001,\n };\n};\n\nfunction debounce(func, delay) {\n let timeoutId;\n\n return function(...args) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n // @ts-ignore\n func.apply(this, args);\n }, delay);\n };\n}\n\nfunction random(min, max) {\n return Math.random() * (max - min) + min;\n}\n\nfunction map(n, start1, end1, start2, end2) {\n return ((n - start1) / (end1 - start1)) * (end2 - start2) + start2;\n}\n\nconst simplex = new SimplexNoise();\n\n// ColorPalette class\nclass ColorPalette {\n hue: number;\n complimentaryHue1: string | number;\n complimentaryHue2: string | number;\n saturation: number;\n lightness: number;\n baseColor: string;\n complimentaryColor1: string;\n complimentaryColor2: string;\n colorChoices: string[];\n\n constructor() {\n this.setColors();\n this.setCustomProperties();\n }\n\n setColors() {\n this.hue = ~~random(220, 360);\n this.complimentaryHue1 = this.hue + 30;\n this.complimentaryHue2 = this.hue + 60;\n this.saturation = 95;\n this.lightness = 50;\n\n this.baseColor = hsl(this.hue, this.saturation, this.lightness);\n this.complimentaryColor1 = hsl(\n this.complimentaryHue1,\n this.saturation,\n this.lightness\n );\n\n this.complimentaryColor2 = hsl(\n this.complimentaryHue2,\n this.saturation,\n this.lightness\n );\n\n this.colorChoices = [\n this.baseColor,\n this.complimentaryColor1,\n this.complimentaryColor2,\n ];\n }\n\n randomColor() {\n return this.colorChoices[~~random(0, this.colorChoices.length)].replace(\n '#',\n '0x'\n );\n }\n\n setCustomProperties() {\n //\n }\n}\n\n// Orb class\nclass Orb {\n bounds;\n scale: string | number;\n fill: string | number;\n radius: string | number;\n xOff: number;\n yOff: number;\n inc: number;\n x: number;\n y: number;\n graphics;\n\n // Pixi takes hex colors as hexidecimal literals (0x rather than a string with '#')\n constructor(fill = 0x000000, orbSpeed = 0.002) {\n // bounds = the area an orb is \"allowed\" to move within\n this.bounds = this.setBounds();\n\n // initialise the orb's { x, y } values to a random point within it's bounds\n this.x = random(this.bounds['x'].min, this.bounds['x'].max);\n this.y = random(this.bounds['y'].min, this.bounds['y'].max);\n\n // how large the orb is vs it's original radius (this will modulate over time)\n this.scale = 1;\n\n // what color is the orb?\n this.fill = fill;\n\n // the original radius of the orb, set relative to window height\n this.radius = random(window.innerHeight / 6, window.innerHeight / 3);\n\n // starting points in \"time\" for the noise/self similar random values\n this.xOff = random(0, 1000);\n this.yOff = random(0, 1000);\n\n // how quickly the noise/self similar random values step through time\n this.inc = orbSpeed;\n\n // PIXI.Graphics is used to draw 2d primitives (in this case a circle) to the canvas\n this.graphics = new PIXI.Graphics();\n this.graphics.alpha = 0.825;\n\n // 250ms after the last window resize event, recalculate orb positions.\n window.addEventListener(\n 'resize',\n debounce(() => {\n this.bounds = this.setBounds();\n }, 250)\n );\n }\n\n setBounds() {\n // how far from the { x, y } origin can each orb move\n const maxDist =\n window.innerWidth < 1000 ? window.innerWidth / 3 : window.innerWidth / 5;\n // the { x, y } origin for each orb (the bottom right of the screen)\n const originX = window.innerWidth / 1.25;\n const originY =\n window.innerWidth < 1000\n ? window.innerHeight\n : window.innerHeight / 1.375;\n\n // allow each orb to move x distance away from it's x / y origin\n return {\n x: {\n min: originX - maxDist,\n max: originX + maxDist,\n },\n y: {\n min: originY - maxDist,\n max: originY + maxDist,\n },\n };\n }\n\n update() {\n // self similar \"psuedo-random\" or noise values at a given point in \"time\"\n const xNoise = simplex.noise2D(this.xOff, this.xOff); // simplex.noise2D\n const yNoise = simplex.noise2D(this.yOff, this.yOff); // simplex.noise2D\n const scaleNoise = simplex.noise2D(this.xOff, this.yOff); // simplex.noise2D\n\n // map the xNoise/yNoise values (between -1 and 1) to a point within the orb's bounds\n this.x = map(xNoise, -1, 1, this.bounds['x'].min, this.bounds['x'].max);\n this.y = map(yNoise, -1, 1, this.bounds['y'].min, this.bounds['y'].max);\n // map scaleNoise (between -1 and 1) to a scale value somewhere between half of the orb's original size, and 100% of it's original size\n this.scale = map(scaleNoise, -1, 1, 0.5, 1);\n\n // step through \"time\"\n this.xOff += this.inc;\n this.yOff += this.inc;\n }\n\n render() {\n // update the PIXI.Graphics position and scale values\n this.graphics.x = this.x;\n this.graphics.y = this.y;\n this.graphics.scale.set(this.scale);\n\n // clear anything currently drawn to graphics\n this.graphics.clear();\n\n // tell graphics to fill any shapes drawn after this with the orb's fill color\n this.graphics.beginFill(this.fill);\n // draw a circle at { 0, 0 } with it's size set by this.radius\n this.graphics.drawCircle(0, 0, this.radius);\n // let graphics know we won't be filling in any more shapes\n this.graphics.endFill();\n }\n}\n\ninterface IOrbs {\n orbsFor: 'topic' | 'interaction';\n primaryOrbColor: string;\n secondaryOrbColor: string;\n tertiaryOrbColor: string;\n orbOpacity: number;\n orbBlurStrength: number;\n orbSpeed: number;\n}\n\nexport const Orbs = (props: IOrbs) => {\n const {\n orbsFor = 'topic',\n primaryOrbColor = '#FD7EB8',\n secondaryOrbColor = '#B14FEC',\n tertiaryOrbColor = '#00d9d3',\n orbOpacity = 1,\n orbBlurStrength = 30,\n orbSpeed = 0.002,\n } = props;\n\n let calculatedOrbColors = tinycolor(primaryOrbColor).analogous();\n\n calculatedOrbColors = calculatedOrbColors.map(function(t) {\n return t.toHexString();\n });\n\n const pixiCanvas = useRef<HTMLCanvasElement | null>(null);\n\n useEffect(() => {\n if (!pixiCanvas.current) {\n return;\n }\n\n // Create PixiJS app\n const app = new PIXI.Application({\n // render to <canvas class=\"orb-canvas\"></canvas>\n view: pixiCanvas.current,\n //document.querySelector('.orb-canvas'),\n // auto adjust size to fit the current window\n resizeTo: window,\n // transparent background, we will be creating a gradient background later using CSS\n transparent: true,\n });\n\n app.stage.filters = [\n new (KawaseBlurFilter as any)(orbBlurStrength, 10, true),\n ];\n\n // Create colour palette\n const colorPalette = new ColorPalette();\n\n type TOrb = {\n graphics;\n update: () => void;\n render: () => void;\n };\n // Create orbs\n const orbs: TOrb[] = [];\n\n for (let i = 0; i < 10; i++) {\n const index = i % 3;\n const color = [\n Number(calculatedOrbColors[0].replace('#', '0x')),\n Number(calculatedOrbColors[1].replace('#', '0x')),\n Number(calculatedOrbColors[2].replace('#', '0x')),\n ][index]; // index\n\n const orb: TOrb = new Orb(color, orbSpeed);\n\n app.stage.addChild(orb.graphics);\n\n orbs.push(orb);\n }\n\n app.ticker.add(() => {\n orbs.forEach(orb => {\n orb.update();\n orb.render();\n });\n });\n }, [\n primaryOrbColor,\n secondaryOrbColor,\n tertiaryOrbColor,\n orbOpacity,\n orbBlurStrength,\n orbSpeed,\n ]);\n\n const { r, g, b } = hexToRGB(primaryOrbColor);\n\n return (\n <div\n style={{\n position: orbsFor === 'topic' ? 'fixed' : 'absolute',\n left: 0,\n top: 0,\n width: '100vw',\n height: '100vh',\n background: '#fff',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n position: 'absolute',\n left: 'inherit',\n top: 'inherit',\n width: 'inherit',\n height: 'inherit',\n background: `linear-gradient(to bottom, #fff, rgba(${r}, ${g},${b}, 0.6)`,\n opacity: orbOpacity,\n }}\n >\n <canvas\n ref={pixiCanvas}\n className=\"orb-canvas\"\n style={{\n position: 'absolute',\n left: -20,\n top: -20,\n width: 'calc(100vw + 40px)',\n height: 'calc(100vh + 40px)',\n ...(!getWebGLEnabled() && {\n filter: `blur(${orbBlurStrength * 2}px)`,\n }),\n }}\n />\n </div>\n </div>\n );\n};\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useState,\n useEffect,\n useRef,\n useLayoutEffect,\n useContext,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { values, colors } from 'styles/variables';\nimport { useSelector, useDispatch } from 'react-redux';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { createContext } from 'react';\nimport { Flexbox } from '@chameleoncreator/creator-ui';\nimport getStore from 'services/getStore';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport Wrapper from './Wrapper';\nimport HiddenBackButton from './HiddenBackButton';\nimport BackgroundImage from './Background';\n\nimport next from './next';\nimport updateReadOnlyText from 'services/updateReadOnlyText';\nimport pubSub from 'services/pubSub';\nimport { createSelector } from 'reselect';\nimport headingsStyles from './headingsStyles';\nimport { MenuContainer } from './MenuContainer';\nimport { State } from 'store/store';\nimport { controlAudioAction } from 'actions/controlAudioAction';\nimport { useHeader } from 'services/useHeader';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport { getIsFirstInteraction } from 'services/getIsFirstInteraction';\nimport { ModuleContext } from 'components/Module/Module_v2';\nimport { InfoBubbleContainer } from 'components/Editor/EditorUtilities/UI/Bubble';\nimport { moduleNavigationActions } from 'components/NavigationSettings/ModuleNavigation';\nimport { updateInteractionsOpenAction } from 'actions/updateInteractionsOpenAction';\nimport { buttonLayouts } from './buttonLayouts';\nimport { updateGlobalFontStylesFromTheme } from 'styles/updateGlobalFontStylesFromTheme';\nimport './highlightActiveElement';\nimport { Orbs, getAnimatedOrbsDefaultValues } from 'components/Module/Orbs';\n\nconst store = getStore();\nconst renderCount = {};\n\nconst AUDIO_FILE_DEFAULT =\n 'https://freesound.org/data/previews/542/542450_5674468-lq.mp3';\n\nexport const InteractionContext = createContext<any>(undefined);\n\nconst getInteractionsOpen = createSelector(\n (state: any) => state.interactionsOpen,\n interactionsOpen => interactionsOpen\n);\n\nlet navigateToPreviewLocation = '';\n\n// just totes for convenience right now\n// will refactor\nconst getContinueButton = (\n section: HTMLTableSectionElement\n): HTMLAnchorElement => {\n const buttons = Array.from(section?.querySelectorAll('a'));\n const continueBtn = buttons[buttons.length - 1] as HTMLAnchorElement;\n\n return continueBtn;\n};\n\nconst getHiddenBackButton = (\n section: HTMLTableSectionElement,\n id: string\n): HTMLButtonElement => {\n const hiddenBackButton = section?.querySelector(\n `#hidden-back-button-${id}`\n ) as HTMLButtonElement;\n\n return hiddenBackButton;\n};\n//\n\nconst ContainerLogical = (props: any) => {\n const moduleContext = useContext(ModuleContext);\n const { exit, setComplete, setCompleteAndExit, resetModule } = moduleContext;\n\n let {\n id,\n name,\n style,\n children,\n lockDown,\n includeAudio = false,\n audioSrc,\n autoPlay = false,\n stopAudioWhenModalIsOpened = true,\n controls = true,\n delay = 1,\n autoOpenNextSection = false,\n\n //\n backgroundStyle,\n\n // primaryOrbColor = '#FD7EB8',\n // secondaryOrbColor = '#B14FEC',\n // tertiaryOrbColor = '#00d9d3',\n // orbOpacity = (props?.orbOpacity || 100) * 0.01,\n // orbBlurStrength = 30,\n // orbSpeed = (props?.orbSpeed || 2) * 0.001,\n } = props;\n\n const {\n primaryOrbColor,\n secondaryOrbColor,\n tertiaryOrbColor,\n orbOpacity,\n orbBlurStrength,\n orbSpeed,\n } = getAnimatedOrbsDefaultValues(props);\n\n const { focusedNodeId, currentInteraction, theme } = useSelector(\n (state: State) => {\n return state;\n }\n );\n\n const dispatch = useDispatch();\n\n // check if nextInteractionMap is in 'order'\n // for the moment we'll use this dirty check\n const isFirstInteraction = getIsFirstInteraction(getTopics(), id);\n\n let {\n sId,\n background = undefined,\n backgroundImage = undefined,\n backgroundImageOpacity = 100,\n backgroundBlur = 0,\n src = undefined,\n textColor = style.foreground,\n } = getBlockById(id).props as any;\n\n const {\n backgroundGradient,\n backgroundSecondaryColor,\n backgroundGradientAngle = 0,\n fullWidth = false,\n } = props;\n\n let buttonPosition = {\n left: 'start',\n center: 'center',\n right: 'end',\n }[props?.buttonPosition || 'center'];\n\n const linearGradient = backgroundGradient\n ? `linear-gradient(${background}, ${backgroundSecondaryColor})`\n : 'none';\n\n let interactionsOpen = useSelector(getInteractionsOpen);\n let isOpen = props.isOpen || interactionsOpen.includes(id);\n\n // dirty gotta try and cover for legacy backgroundImage\n if (src) {\n backgroundImage = `url('${src}') center / cover no-repeat`;\n }\n\n const section: any = useRef<HTMLElement>(null);\n const selected = id === focusedNodeId;\n\n const header = useHeader();\n const { headerStyle } = header.props;\n\n const { backButton, topicMenu } = header[headerStyle].props;\n\n let headerHeight = header[headerStyle].props.headerHeight;\n\n if (window.dev() && !isFirstInteraction) {\n headerHeight = 70;\n }\n\n const currentTopic = getCurrentTopic();\n\n const parsedTextColor =\n textColor ||\n (currentTopic && getBlockById(currentTopic.id)?.props?.textColor) ||\n theme.textColor ||\n '';\n\n const { fontSize = 16, lineHeight = 1.5, headings } = theme || {};\n\n const { h1, h2, h3, h4, h5, h6 } = headings || {};\n\n const contentContainer = useRef<HTMLDivElement>(null);\n\n const getHiddenMenuButton = (\n section: HTMLTableSectionElement\n ): HTMLButtonElement => {\n const hiddenMenuButton = section?.querySelector(\n `#hidden-button-menu-${id}`\n ) as HTMLButtonElement;\n\n return hiddenMenuButton;\n };\n\n useLayoutEffect(() => {\n if (!section.current) {\n section.current = document.querySelector(`#i${id}`);\n }\n\n !window.dev() && updateReadOnlyText(section.current);\n }, [parsedTextColor]);\n\n useEffect(() => {\n if (!section?.current) {\n return;\n }\n\n const hiddenBackButton = getHiddenBackButton(section.current, id);\n\n if (!hiddenBackButton) {\n return;\n }\n\n const onKeyDown = (e: any) => {\n const { key, shiftKey } = e;\n\n if (key === 'Tab' && shiftKey) {\n const continueBtn = getContinueButton(section.current);\n\n if (continueBtn) {\n // console.log('give focus to continue button !!!');\n continueBtn.focus({ preventScroll: true });\n e.preventDefault();\n }\n }\n };\n\n hiddenBackButton.addEventListener('keydown', onKeyDown);\n\n return () => {\n hiddenBackButton.removeEventListener('keydown', onKeyDown);\n };\n }, []);\n\n useEffect(() => {\n if (!section?.current) {\n return;\n }\n\n // // this needs to take into account that the continue ' button '\n // // now is an actual a tag !!!\n\n const continueBtn = getContinueButton(section.current);\n\n if (!continueBtn) {\n return;\n }\n\n const onKeyDown = (e: any) => {\n const { key, shiftKey } = e;\n\n if (shiftKey) {\n return;\n }\n\n if (key === 'Tab') {\n const hiddenBackButton = getHiddenBackButton(section.current, id);\n const hiddenMenuButton = getHiddenMenuButton(section.current);\n\n if (hiddenBackButton && !hiddenBackButton.disabled) {\n //\n hiddenBackButton.focus({ preventScroll: true });\n } else {\n hiddenMenuButton ? hiddenMenuButton.focus() : section.current.focus();\n }\n e.preventDefault();\n }\n };\n\n continueBtn.addEventListener('keydown', onKeyDown);\n\n return () => {\n continueBtn.removeEventListener('keydown', onKeyDown);\n };\n }, []);\n\n useEffect(() => {\n if (!lockDown) {\n return;\n }\n });\n\n useEffect(() => {\n if (!section.current) {\n return;\n }\n\n let tick = setInterval(() => {\n if (!section.current) {\n return;\n }\n //\n var scrollBarWidth = window.innerWidth - document.body.clientWidth;\n\n if (scrollBarWidth > 0) {\n clearInterval(tick);\n // if scrollBarWidth calcs to greater than 35\n // then wtf. wrong things are happening. don't update the padding\n // but if we're within that range. . .\n if (scrollBarWidth <= 35) {\n section.current.style.paddingLeft = `${scrollBarWidth}px`;\n }\n }\n }, 1000 / 12);\n\n return () => {\n clearInterval(tick);\n };\n }, []);\n\n useEffect(() => {\n if (!contentContainer.current) {\n return;\n }\n //\n // this is gonna get put someplace else\n // make it part of the hashChange maybe\n // but needs reference to the interaction sId/id\n //\n const anchorNavNextExit = e => {\n const { target } = e;\n const tagName = target.tagName.toLowerCase();\n const href = target.getAttribute('href');\n const {\n NEXT,\n EXIT,\n SET_MODULE_COMPLETE,\n SET_MODULE_COMPLETE_AND_EXIT,\n RESET_MODULE,\n } = moduleNavigationActions;\n\n const aNext = next(sId, id);\n\n if (tagName === 'a') {\n if ([NEXT, EXIT].includes(href)) {\n e.preventDefault();\n\n aNext(href);\n return;\n }\n\n if (\n [\n SET_MODULE_COMPLETE,\n SET_MODULE_COMPLETE_AND_EXIT,\n RESET_MODULE,\n ].includes(href)\n ) {\n e.preventDefault();\n\n href === SET_MODULE_COMPLETE && setComplete();\n href === SET_MODULE_COMPLETE_AND_EXIT && setCompleteAndExit();\n href === RESET_MODULE && resetModule();\n return;\n }\n }\n };\n\n contentContainer.current.addEventListener('click', anchorNavNextExit);\n\n return () => {\n contentContainer.current &&\n contentContainer.current.removeEventListener(\n 'click',\n anchorNavNextExit\n );\n };\n }, []);\n\n useEffect(() => {\n if (window.dev()) {\n const data = includeAudio\n ? {\n id,\n audioSrc,\n autoPlay: window.dev() ? false : autoPlay,\n controls,\n delay,\n }\n : null;\n\n dispatch(controlAudioAction(data));\n }\n }, [includeAudio, audioSrc]);\n\n useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n const sectionInViewSubscriber = pubSub.subscribe(\n 'SECTION_IN_VIEW',\n ({ sectionInView }) => {\n if (sectionInView.id === id) {\n const data = includeAudio\n ? {\n id,\n audioSrc,\n autoPlay: window.dev() ? false : autoPlay,\n controls,\n delay,\n pause: false,\n }\n : null;\n\n dispatch(controlAudioAction(data));\n }\n }\n );\n\n return () => {\n sectionInViewSubscriber();\n };\n }, []);\n\n useEffect(() => {\n if (autoOpenNextSection) {\n store.dispatch(updateInteractionsOpenAction(id));\n }\n }, []);\n\n let isLocked = lockDown;\n\n // since the background gets set on the style on creation\n // kill it if we have a ' local ' background color\n // goal would be to remove it from the factory. but it's legacy from wizard\n // WINDING on down. . .\n const overideStyleBackground = props.hasOwnProperty('background')\n ? {\n background: background || '',\n }\n : {};\n\n if (!renderCount[id]) {\n renderCount[id] = 0;\n }\n\n // need to further work on all the concepts going on with the headerHeight\n // firstInteraction checking\n // responsive aspect etc\n // right now it's being spread over a couple places which feels super gross\n // need to bring it all under some unified solution\n\n let paddingTop = headerHeight;\n\n if (!isFirstInteraction && headerStyle === 'graphic') {\n paddingTop = 70;\n }\n\n if (screen.availWidth <= 480) {\n paddingTop = 50;\n }\n\n return (\n <InteractionContext.Provider\n value={{\n id,\n textColor: parsedTextColor,\n stopAudioWhenModalIsOpened,\n next: next(sId, id),\n isLocked,\n children,\n }}\n >\n {/* @ts-ignore */}\n <Flexbox\n as=\"section\"\n id={`i${id}`}\n css={css`\n ${!isOpen &&\n `\n display: none;\n `}\n\n ${updateGlobalFontStylesFromTheme({\n fontSize,\n lineHeight,\n parsedTextColor,\n headingsStyles() {\n return headingsStyles({ h1, h2, h3, h4, h5, h6 });\n },\n })}\n\n [id*='content-container'] > div:last-child {\n ${window.dev()\n ? `margin-${\n {\n start: 'left',\n end: 'right',\n }[buttonPosition]\n }: -9px;`\n : ''}\n\n > div {\n ${buttonLayouts(buttonPosition)}\n }\n }\n `}\n style={{\n position: 'relative',\n overflowX: 'hidden',\n ...{\n ...style,\n ...overideStyleBackground,\n ...(backgroundGradient && {\n background: `linear-gradient(${backgroundGradientAngle}deg, ${backgroundSecondaryColor}, ${background})`,\n }),\n },\n }}\n py={4}\n flexDirection=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n minHeight={'100vh'}\n width={['100%']}\n paddingTop={paddingTop}\n data-section\n data-section-text-color={parsedTextColor}\n aria-label={`${props.name ? `${props.name}—` : ''}${\n props.sectionLabel\n }`}\n tabIndex={-1}\n >\n {/* {(backgroundStyle === 'backgroundImage' && backgroundImage) || (backgroundStyle === undefined && backgroundImage) && ( */}\n {[undefined, 'backgroundImage'].includes(backgroundStyle) &&\n backgroundImage && (\n <BackgroundImage\n key={backgroundImage}\n backgroundImage={backgroundImage}\n backgroundImageOpacity={backgroundImageOpacity}\n backgroundBlur={backgroundBlur}\n />\n )}\n\n {backgroundStyle === 'animatedOrbs' && (\n <Orbs\n {...{\n orbsFor: 'interaction',\n primaryOrbColor,\n secondaryOrbColor,\n tertiaryOrbColor,\n orbOpacity,\n orbBlurStrength,\n orbSpeed,\n }}\n />\n )}\n\n {backButton && <HiddenBackButton id={id} />}\n {topicMenu && <MenuContainer id={id} rootSelector=\"#menu-portal\" />}\n\n {/* @ts-ignore */}\n <Flexbox\n ref={contentContainer}\n id={`i${id}-content-container`}\n position=\"relative\"\n flexDirection=\"column\"\n justifyContent=\"center\"\n width={['100%']}\n maxWidth={['100%', null, fullWidth ? '100%' : '1100px']}\n // tabIndex={-1}\n css={css({\n ...(includeAudio &&\n audioSrc &&\n controls && {\n '@media (max-width: 768px)': {\n paddingBottom: 20,\n },\n }),\n })}\n >\n {children}\n </Flexbox>\n\n {window.dev() && (\n <Wrapper\n id={id}\n focusedNodeId={focusedNodeId}\n headerHeight={headerHeight}\n />\n )}\n </Flexbox>\n\n <InfoBubbleContainer />\n </InteractionContext.Provider>\n );\n};\n\nexport default ContainerLogical;\n","import { controlAudioAction } from 'actions/controlAudioAction';\nimport getStore from './getStore';\n\nconst store = getStore();\n\n// kill all audio if any is playing\nexport const killAllAudio = () => {\n // const audios = Array.from(\n // document.querySelectorAll('audio')\n // ) as HTMLAudioElement[];\n\n // audios.forEach(audio => {\n // audio.pause();\n // });\n store.dispatch(\n controlAudioAction({\n pause: true,\n })\n );\n};\n","/** @jsx jsx */\n\nimport React, {\n useContext,\n useState,\n useRef,\n useEffect,\n useLayoutEffect,\n memo,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { css, jsx } from '@emotion/core';\nimport ie11VerticalFlexCenterFix from 'services/ie11VerticalFlexCenterFix';\nimport getStore from 'services/getStore';\nimport pubSub from 'services/pubSub';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { useSelector, useDispatch } from 'react-redux';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport updateReadOnlyText from 'services/updateReadOnlyText';\nimport { motion } from 'framer-motion';\nimport { InteractionContext } from 'components/Layouts/ContainerLogical';\nimport { killAllAudio } from 'services/killAllAudio';\nimport { isIOSSafari } from 'services/isIOSSafari';\nimport { updateGlobalFontStylesFromTheme } from 'styles/updateGlobalFontStylesFromTheme';\nimport { State } from 'store/store';\nimport headingsStyles from 'components/Layouts/headingsStyles';\n\nconst store = getStore();\n\nlet container;\nlet modalOpen = false;\n\ninterface IModal {\n useFader?: boolean;\n disableNullSpaceClick?: boolean;\n minWidth?: string;\n onClose?: () => void;\n onOpened?: () => void;\n contentContainerStyles?: { [key: string]: string | number };\n children: any;\n}\n\nconst Modal = memo(\n ({\n useFader = true,\n disableNullSpaceClick = false,\n minWidth = '50vw',\n onClose,\n onOpened = () => {},\n contentContainerStyles = {},\n children,\n }: IModal): any => {\n if (!container) {\n container = document.querySelector('#modal-container');\n }\n\n const interactionContext = useContext(InteractionContext);\n\n const [btnColor, setBtnColor] = useState<string | undefined>(undefined);\n\n const focusedNodeIdOnOpen = useSelector<any>(\n ({ focusedNodeId }) => focusedNodeId\n );\n\n const { fontSize = 16, lineHeight = 1.5, headings } = useSelector(\n (state: State) => {\n return state.theme;\n }\n );\n\n const { h1, h2, h3, h4, h5, h6 } = headings || {};\n\n const rootContainer = useRef<HTMLDivElement>(null);\n const contentContainer = useRef<HTMLDivElement | null>(null);\n const hiddenButton = useRef(null);\n const buttonTabIndex = useRef(0);\n const checkResize = useRef(false);\n\n const getButtonAsAnchorOrButton = (\n container: HTMLElement\n ): HTMLAnchorElement | HTMLButtonElement | null => {\n if (!container) {\n return null;\n }\n\n return (\n container.querySelector('[class*=\"navigationButton\"]') ||\n container.querySelector('[class*=\"genericButton\"]') ||\n null\n );\n };\n\n useEffect(() => {\n modalOpen = true;\n window['MODAL_OPEN'] = true;\n\n if (!contentContainer.current) {\n return;\n }\n\n // the deal here is following the 'conventional' handling of modals\n // focus is captured within modal and all access to body content is disabled\n // only default focusable elements are added to a list of focusableElements\n // ( unless we explicitly add the contentContainer as the first element )\n // on first Tab the first focusbable element gains focus. then we cycle <>\n\n // we can also go with adding the contentContainer as the first element\n // judgement call ?\n\n //\n\n const focusableElements = [\n contentContainer.current,\n ...(Array.from(\n contentContainer.current.querySelectorAll(`a, button`)\n ) as HTMLElement[]),\n ];\n\n let firstFocusElement = focusableElements[0];\n let lastFocusElement = focusableElements[focusableElements.length - 1];\n //\n let tabInit;\n\n firstFocusElement.focus();\n\n const tabOveride = e => {\n if (!['Tab'].includes(e.key)) {\n return;\n }\n\n const reverseTab = e.shiftKey;\n\n // we only run this if we're NOT giving the contentContainer focus\n if (!tabInit) {\n // we do this so that we're not setting the focus of the contentContainer\n // on modal open. screen reader read content twice\n\n tabInit = true;\n }\n\n if (e.target === firstFocusElement && reverseTab) {\n e.preventDefault();\n lastFocusElement?.focus();\n //\n return;\n }\n\n if (e.target === lastFocusElement && !reverseTab) {\n e.preventDefault();\n firstFocusElement?.focus();\n }\n };\n\n window.addEventListener('keydown', tabOveride);\n\n // give ALL other elements aria-hidden ???\n const root = document.querySelector('#root')!;\n root.setAttribute('aria-hidden', 'true');\n\n document.body.style.overflowY = 'hidden';\n\n const onResize = () => {\n if (!rootContainer.current) {\n return;\n }\n\n rootContainer.current.style.alignItems =\n window.innerHeight < contentContainer.current!.scrollHeight\n ? 'flex-start'\n : 'center';\n\n checkResize.current = true;\n };\n\n const tick = setInterval(() => {\n onResize();\n window.addEventListener('resize', onResize);\n if (checkResize.current) {\n clearInterval(tick);\n }\n }, 100);\n\n return () => {\n clearInterval(tick);\n\n modalOpen = false;\n window['MODAL_OPEN'] = false;\n\n root.setAttribute('aria-hidden', 'false');\n document.body.style.overflowY = 'auto';\n\n checkResize.current = false;\n window.removeEventListener('resize', onResize);\n\n window.removeEventListener('keydown', tabOveride);\n };\n }, []);\n\n useEffect(() => {\n if (!window.dev) {\n // we're opening the modal from the editor so we don't need these checks\n return;\n }\n\n pubSub.subscribe('CLOSE_MODAL', $ => {\n onClose!();\n });\n\n return () => {\n const { focusedNodeId } = store.getState();\n\n if (!focusedNodeId) {\n return;\n }\n\n const block = getBlockById(focusedNodeId);\n\n const isNotInteraction = [\n 'text',\n 'image',\n 'video',\n 'svg',\n 'embed',\n 'editablebutton',\n 'continuebutton',\n ].includes(block.type.toLowerCase());\n\n if (isNotInteraction) {\n if (focusedNodeIdOnOpen) {\n setCurrentBlock({ id: focusedNodeIdOnOpen });\n } else {\n setCurrentBlock(null);\n }\n }\n };\n }, []);\n\n useLayoutEffect(() => {\n if (window.dev && !window.dev()) {\n updateReadOnlyText(contentContainer.current);\n }\n }, []);\n\n useEffect(() => {\n if (window.dev && window.dev()) {\n return;\n }\n\n // find all the hrefs a\n\n const links = Array.from(contentContainer.current!.querySelectorAll('a'));\n\n if (!links.length) {\n return;\n }\n\n const closeOnLinkClick = e => {\n onClose!();\n };\n\n const addRemoveCloseOnLinkClick = addOrRemove => {\n links.forEach(link => {\n if (link.href.includes('#')) {\n link[`${addOrRemove}EventListener`]('click', closeOnLinkClick);\n }\n });\n };\n\n addRemoveCloseOnLinkClick('add');\n\n return () => {\n addRemoveCloseOnLinkClick('remove');\n };\n }, []);\n\n useEffect(() => {\n // ' proof of concept '\n\n if (interactionContext?.stopAudioWhenModalIsOpened) {\n killAllAudio();\n }\n\n //\n }, []);\n\n const globalFontStyles = updateGlobalFontStylesFromTheme({\n fontSize,\n lineHeight,\n // parsedTextColor,\n headingsStyles() {\n return headingsStyles({ h1, h2, h3, h4, h5, h6 });\n },\n });\n\n return createPortal(\n // @ts-ignore\n <motion.div\n ref={rootContainer}\n initial={{ opacity: 0 }}\n transition={{\n duration: useFader ? 0.325 : 0,\n ease: 'easeOut',\n }}\n animate={{ opacity: 1 }}\n onAnimationComplete={onOpened}\n css={css`\n position: fixed;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100vw;\n min-height: 100vh;\n max-height: 100%;\n padding: ${isIOSSafari() ? '65px' : '10px'} 10px;\n background: rgba(0, 0, 0, 0.6);\n z-index: 1;\n ${ie11VerticalFlexCenterFix('height: 100vh;')}\n\n overflow-y: scroll;\n\n ${globalFontStyles}\n `}\n >\n <button\n ref={hiddenButton}\n css={css`\n position: absolute;\n left: 3px;\n top: 3px;\n width: calc(100% - 6px);\n height: calc(100% - 6px);\n\n border: none;\n outline: none;\n background: transparent;\n\n &:focus {\n border: 1px solid ${btnColor || '#282a2b'};\n }\n\n ${disableNullSpaceClick &&\n `\n pointer-events: none;\n `}\n `}\n onClick={(e: any) => {\n if (disableNullSpaceClick) {\n return;\n }\n //\n onClose!();\n }}\n aria-hidden=\"true\"\n ></button>\n\n <div\n ref={contentContainer}\n css={css({\n position: 'relative',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n maxWidth: '1024px',\n borderRadius: '50px',\n background: '#fff',\n boxShadow: '0 0 12px 0 rgba(0, 0, 0, 0.2)',\n ...contentContainerStyles,\n\n 'button:last-of-type': {\n position: 'relative',\n },\n })}\n onClick={e => e.stopPropagation()}\n tabIndex={0}\n >\n {children}\n </div>\n </motion.div>,\n container\n );\n },\n () => {\n // if it doesn't exist\n if (!window.dev) {\n return false;\n }\n\n return !window.dev();\n }\n);\n\nconst useModal = ({ children }) => {\n const [, setState] = useState(true);\n\n return <Modal onClose={() => setState(false)}>{children}</Modal>;\n};\n\nexport default Modal;\n\nexport { useModal };\n","export const isIOSSafari = () => {\n const isSafari = !!navigator.userAgent.match(/Version\\/[\\d\\.]+.*Safari/);\n const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n\n return isSafari && iOS;\n // if (isSafari && iOS) {\n // alert(\"You are using Safari on iOS!\");\n // } else if(isSafari) {\n // alert(\"You are using Safari.\");\n // }\n};\n","import React from 'react';\r\nimport { Block } from '@chameleoncreator/creator-app';\r\nimport getBlockById from './getBlockById';\r\n\r\n// TODO\r\n// implement something like this\r\ninterface IRender {\r\n [key: string]: (props?: any) => {} | null;\r\n}\r\n\r\nconst render = (block: Block, Components: {}): JSX.Element | string => {\r\n let b: Block | null = block;\r\n //\r\n if (b?.type === 'Ref') {\r\n b = b?.id ? getBlockById(b.id) : null;\r\n }\r\n\r\n if (!b) {\r\n return <div key={`block-is-void-${Math.random()}`} />;\r\n }\r\n\r\n const children = Array.isArray(b.children)\r\n ? (b.children as Block[]).map(c => render(c, Components))\r\n : b.children;\r\n\r\n let Component = Components[b.type];\r\n\r\n if (Component === null) {\r\n // we can run this check here\r\n // or we ' enforce ' the function with types\r\n // yes. let's TODO that\r\n Component = () => null;\r\n } else if (!Component) {\r\n Component = () => null;\r\n }\r\n\r\n return (\r\n <Component key={b.id} id={b.id} {...b.props}>\r\n {children}\r\n </Component>\r\n );\r\n};\r\n\r\nexport default render;\r\n","import React, { Fragment as _ } from 'react';\nimport { css } from 'emotion';\nimport Html from 'slate-html-serializer';\nimport getStore from 'services/getStore';\n\nconst store = getStore();\n\nconst rules = [\n {\n deserialize(el, next) {\n const type = el && el.getAttribute && el.getAttribute('data-type');\n\n if (!type) return;\n\n if (\n [\n 'code',\n 'paragraph',\n 'list-item',\n 'bulleted-list',\n 'numbered-list',\n 'indented-list',\n 'indented',\n 'textAlignLeft',\n 'textAlignCenter',\n 'textAlignRight',\n 'heading-one',\n 'heading-two',\n 'heading-three',\n 'heading-four',\n 'heading-five',\n 'heading-six',\n 'br',\n 'span',\n ].includes(type)\n )\n return {\n object: 'block',\n type: type,\n data: {\n className: el.getAttribute('class'),\n element: el,\n },\n nodes: next(el.childNodes),\n };\n },\n serialize(obj, children) {\n if (obj.object == 'block') {\n switch (obj.type) {\n case 'paragraph':\n return (\n <p className={obj.data.get('className')} data-type={obj.type}>\n {children}\n </p>\n );\n\n case 'list-item':\n return (\n <li className=\"chameleon-li\" data-type={obj.type}>\n {children}\n </li>\n );\n\n case 'bulleted-list':\n return (\n <ul className=\"chameleon-ul\" data-type={obj.type}>\n {children}\n </ul>\n );\n\n case 'numbered-list':\n return (\n <ol className=\"chameleon-ol\" data-type={obj.type}>\n {children}\n </ol>\n );\n\n case 'indented-list':\n return (\n <ul className=\"indented-list\" data-type={obj.type}>\n {children}\n </ul>\n );\n\n case 'indented':\n return (\n <div\n className=\"indented\"\n style={{ paddingLeft: 20 }}\n data-type={obj.type}\n >\n {children}\n </div>\n );\n\n case 'textAlignLeft':\n return (\n <div className=\"chameleon-text-align-left\" data-type={obj.type}>\n {children}\n </div>\n );\n\n case 'textAlignCenter':\n return (\n <div className=\"chameleon-text-align-center\" data-type={obj.type}>\n {children}\n </div>\n );\n\n case 'textAlignRight':\n return (\n <div className=\"chameleon-text-align-right\" data-type={obj.type}>\n {children}\n </div>\n );\n\n case 'heading-one':\n return <h1 data-type={obj.type}>{children}</h1>;\n\n case 'heading-two':\n return <h2 data-type={obj.type}>{children}</h2>;\n\n case 'heading-three':\n return <h3 data-type={obj.type}>{children}</h3>;\n\n case 'heading-four':\n return <h4 data-type={obj.type}>{children}</h4>;\n\n case 'heading-five':\n return <h5 data-type={obj.type}>{children}</h5>;\n\n case 'heading-six':\n return <h6 data-type={obj.type}>{children}</h6>;\n\n case 'code':\n return (\n <pre\n className={'prettyprint' || obj.data.get('className')}\n data-type={obj.type}\n >\n <code>{children}</code>\n </pre>\n );\n\n case 'br':\n return <div data-type=\"br\"></div>;\n\n case 'span':\n return <span data-type={obj.type}>{children}</span>;\n\n case '':\n return <_>{children}</_>;\n }\n }\n },\n },\n {\n deserialize(el, next) {\n const type = el && el.getAttribute && el.getAttribute('data-type');\n if (!type) return;\n\n if (['link'].includes(type))\n return {\n object: 'inline',\n type: type,\n data: {\n className: el.getAttribute('class'),\n href: el.getAttribute('href'),\n title: el.getAttribute('title'),\n target: el.getAttribute('target'),\n },\n nodes: next(el.childNodes),\n };\n },\n serialize(obj, children) {\n const isInternalLink = false;\n\n if (obj.object == 'inline') {\n switch (obj.type) {\n case 'link': {\n const href = obj.data.get('href');\n\n return (\n <a\n href={href}\n title={obj.data.get('title')}\n target={obj.data.get('target')}\n style={\n {\n // color: 'inherit',\n // cursor: 'pointer'\n }\n }\n data-type={obj.type}\n >\n {children}\n </a>\n );\n }\n }\n }\n },\n },\n\n {\n deserialize(el, next) {\n const type = el && el.getAttribute && el.getAttribute('data-type');\n\n // !type ||\n if (\n ![\n 'bold',\n 'italic',\n 'underline',\n 'superscript',\n 'subscript',\n 'indent',\n ].includes(type)\n ) {\n return;\n }\n\n let style = el.getAttribute('style');\n if (style) {\n style = style.split(/:/g);\n style = {\n [style[0]]: style[1],\n };\n } else {\n style = {};\n }\n\n return {\n object: 'mark',\n type: type,\n nodes: next(el.childNodes),\n };\n },\n serialize(obj, children) {\n if (obj.object === 'mark') {\n switch (obj.type) {\n case 'bold':\n return <strong data-type={obj.type}>{children}</strong>;\n\n case 'italic':\n return <em data-type={obj.type}>{children}</em>;\n\n case 'underline':\n return <u data-type={obj.type}>{children}</u>;\n\n case 'superscript':\n return <sup data-type={obj.type}>{children}</sup>;\n\n case 'subscript':\n return <sub data-type={obj.type}>{children}</sub>;\n\n case 'indent':\n return <span data-type={obj.type}>{children}</span>;\n }\n }\n },\n },\n\n {\n deserialize(el, next) {\n const type = el && el.getAttribute && el.getAttribute('data-type');\n\n // !type ||\n if (\n !['fontFamily', 'fontSize', 'color', 'lang', 'variable'].includes(type)\n ) {\n return;\n }\n\n let style = el.getAttribute('style');\n if (style) {\n style = style.split(/:/g);\n style = {\n [style[0]]: style[1],\n };\n } else {\n style = {};\n }\n\n let fontSize = style['font-size'];\n\n if (fontSize && fontSize.match('rem')) {\n let fontSizeNumber = Number(\n style['font-size'].replace(/px/g, '').replace(/rem/g, '')\n );\n\n if (!isNaN(fontSizeNumber)) {\n fontSize = `${fontSizeNumber * 16}px`;\n }\n }\n\n return {\n object: 'mark',\n type: type,\n data: {\n className: el.getAttribute('class'),\n fontFamily: style['font-family'],\n fontSize,\n color: style['color'],\n lang: el.getAttribute('lang'),\n varName: el.getAttribute('data-varname'),\n },\n nodes: next(el.childNodes),\n };\n },\n serialize(obj, children) {\n const { data } = obj.toJS();\n\n if (obj.object === 'mark') {\n switch (obj.type) {\n case 'fontFamily':\n const { fontFamily } = data;\n return (\n <span style={{ fontFamily }} data-type={obj.type}>\n {children}\n </span>\n );\n case 'fontSize':\n const fontSizePXToREM = `${Number(\n String(data.fontSize).replace(/px/g, '')\n ) / 16}rem`;\n\n return (\n <span\n style={{\n fontSize: fontSizePXToREM,\n }}\n data-type={obj.type}\n >\n {children}\n </span>\n );\n case 'color':\n return (\n <span\n className={css({\n span: {\n color: `${data.color} !important`,\n },\n })}\n style={{ color: data.color }}\n data-type={obj.type}\n >\n {children}\n </span>\n );\n case 'lang':\n return (\n <span lang={data.lang} data-type={data.lang && obj.type}>\n {children}\n </span>\n );\n case 'variable': {\n // the nuclear backUp option if varName fails. . .\n let varNameFromChildren;\n try {\n varNameFromChildren = children?.toString();\n } catch (err) {\n console.warn('COULD NOT CONVERT CHILDREN TO VARNAME', err);\n }\n\n const varName = data.varName || varNameFromChildren;\n\n return (\n <span data-type=\"variable\" data-varname={varName}>\n {children}\n </span>\n );\n }\n }\n }\n },\n },\n];\n\n//\nconst html = new Html({ rules });\n\nexport default html;\n","/** @jsx jsx */\nimport React, {\n useState,\n useRef,\n useEffect,\n useLayoutEffect,\n cloneElement,\n useContext,\n Fragment as _,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { CALCULATED_LINE_HEIGHT_OFFSET } from 'styles/variables';\nimport Close from 'assets/close.svg';\nimport { InteractionContext } from 'components/Layouts/ContainerLogical';\nimport { Node, Text } from 'slate';\nimport html from './serializer';\n\nconst findUl = node => {\n if (node === document.body) {\n return;\n }\n\n if (node.parentNode.tagName.toLowerCase() === 'ul') {\n return node.parentNode;\n }\n\n return findUl(node.parentNode);\n};\n\nconst Indent = ({ type, attributes, children }) => {\n const indent: any = useRef(null);\n\n useLayoutEffect(() => {\n const foundUl = findUl(indent.current.parentNode);\n\n let closestLi;\n if (foundUl) {\n closestLi = indent.current.closest('li');\n if (closestLi) {\n closestLi.classList.add('indent');\n }\n } else {\n indent.current.classList.add('indent-alt');\n }\n\n return () => {\n closestLi?.classList.remove('indent');\n indent.current.classList.remove('indent-alt');\n };\n }, []);\n\n useEffect(() => {\n requestAnimationFrame(() => {\n const foundUl = findUl(indent.current.parentNode);\n\n if (!foundUl && indent.current.classList.contains('indent-alt')) {\n console.log('kill it with fire !!!');\n }\n });\n }, []);\n\n return (\n <span ref={indent} data-type={type} {...attributes}>\n {children}\n </span>\n );\n};\n\nconst Lang = ({ type, lang, attributes, children }) => {\n const langRef: any = useRef(null);\n\n if (!lang) {\n return children;\n }\n\n return (\n <span>\n <span\n ref={langRef}\n className=\"lang-bracket\"\n data-type={type}\n {...attributes}\n >\n {children}\n </span>\n {lang && (\n <sup\n style={{\n fontSize: 11,\n }}\n >\n *{lang}\n </sup>\n )}\n </span>\n );\n};\n\nconst renderMark = (props, editor, next) => {\n const { children, mark, attributes } = props;\n const { type, data } = mark;\n\n switch (type) {\n case 'bold':\n return <strong {...attributes}>{children}</strong>;\n case 'italic':\n return <em {...attributes}>{children}</em>;\n case 'underline':\n return <u {...attributes}>{children}</u>;\n\n case 'fontFamily':\n const fontFamily = data.get('fontFamily');\n\n return (\n <span style={{ fontFamily }} data-type={type} {...attributes}>\n {children}\n </span>\n );\n\n case 'fontSize':\n const fontSize = parseInt(data.get('fontSize'), 10);\n const calculatedLineHeight =\n fontSize <= 18 ? 1.5 : fontSize * CALCULATED_LINE_HEIGHT_OFFSET;\n\n return (\n <span\n style={{\n fontSize,\n lineHeight: `${calculatedLineHeight}px`,\n }}\n data-type={type}\n {...attributes}\n >\n {children}\n </span>\n );\n\n case 'color':\n return (\n <span\n style={{ color: data.get('color') }}\n data-type={type}\n {...attributes}\n >\n {children}\n </span>\n );\n\n case 'lang':\n const lang = data.get('lang');\n\n // if (!children?.props?.text) {\n // return null;\n // }\n //\n\n return (\n <Lang type={type} lang={lang} {...attributes}>\n {children}\n </Lang>\n );\n\n case 'span': {\n return children;\n }\n\n case 'variable': {\n const interactionContext = useContext(InteractionContext);\n\n const { node } = props;\n const varName = data.get('varName');\n const { text } = props;\n\n const [localColor, setLocalColor] = useState<string | undefined>();\n const variable = useRef<HTMLSpanElement>();\n\n const widgetColor = localColor || interactionContext?.textColor;\n\n useLayoutEffect(() => {\n if (!variable.current) {\n return;\n }\n\n //\n const chameleonText = variable.current.closest('.chameleon-text p');\n let spanWithColor = variable.current.closest('[data-type=\"color\"]');\n //\n\n if (spanWithColor && !chameleonText?.contains(spanWithColor)) {\n spanWithColor = null;\n }\n\n const chameleonTextComputedStyle =\n chameleonText && getComputedStyle(chameleonText);\n const spanWithColorComputedStyle =\n spanWithColor && getComputedStyle(spanWithColor);\n\n spanWithColorComputedStyle?.color\n ? setLocalColor(spanWithColorComputedStyle?.color)\n : setLocalColor(chameleonTextComputedStyle?.color);\n });\n\n useEffect(() => {\n const onKeyAction = e => {\n if (variable?.current?.innerText !== text) {\n editor.moveToRangeOfNode(node).delete();\n }\n };\n\n window.addEventListener('keydown', onKeyAction);\n\n return () => {\n window.removeEventListener('keydown', onKeyAction);\n };\n }, []);\n\n return (\n <span\n ref={variable}\n className=\"variable\"\n data-type={type}\n //\n data-varname={varName || text}\n {...attributes}\n style={{\n position: 'relative',\n display: 'inline-block',\n padding: '0 25px 0 10px',\n margin: '0 3px',\n borderRadius: 5,\n boxShadow: `0 0 0 1px ${widgetColor}`,\n }}\n contentEditable=\"false\"\n suppressContentEditableWarning\n onClick={e => {\n //\n const target = e.target as HTMLElement;\n const dataType = target.getAttribute('data-type');\n\n if (!dataType) {\n // select whole text ( for deletion )\n editor.moveToStartOfText().moveFocusForward(text.length);\n return;\n }\n\n if (!variable?.current) {\n return;\n }\n\n const { left, right, width } = target.getBoundingClientRect();\n const middle = left + width / 2;\n\n const leftOrRightEdge = e.clientX < middle ? 'left' : 'right';\n\n const pParent = variable.current?.closest('p');\n\n if (leftOrRightEdge === 'left') {\n if (pParent?.firstChild?.contains(variable.current)) {\n // console.log('is first elem. adding buffer');\n addEmptyAndRemoveMarks();\n\n const { document } = html.deserialize('<span> </span>');\n editor.insertFragment(document);\n\n // we lose focus / caret / cursor. this doesn't help\n // maybe we need to manually force a selection ?\n editor.focus();\n }\n return;\n }\n\n if (pParent?.lastChild?.contains(variable?.current)) {\n // console.log('is last elem. adding buffer');\n addEmptyAndRemoveMarks();\n editor.moveForward();\n }\n\n function addEmptyAndRemoveMarks() {\n editor.insertText(' ').moveFocusBackward(1);\n\n const selection = editor.value;\n\n selection.marks.toJS().forEach(m => {\n editor.removeMark(m);\n });\n }\n }}\n >\n {children}\n <span\n style={{\n display: 'flex',\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n\n right: 5,\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={`${13 * 0.7}px`}\n height={`${12 * 0.7}px`}\n viewBox=\"0 0 13 12\"\n version=\"1.1\"\n css={css({\n cursor: 'pointer',\n ':hover': {\n opacity: 0.8,\n },\n })}\n onClick={() => {\n try {\n editor.moveToRangeOfNode(node).delete();\n } catch (err) {}\n }}\n >\n <g\n stroke=\"none\"\n strokeWidth=\"1\"\n fill={widgetColor}\n fillRule=\"evenodd\"\n >\n <g\n transform=\"translate(-1332.000000, -166.000000)\"\n fill={widgetColor}\n >\n <g transform=\"translate(1332.000000, 166.000000)\">\n <polygon\n transform=\"translate(6.500000, 6.000000) rotate(-45.000000) translate(-6.500000, -6.000000) \"\n points=\"-0.7625 5.1375 13.75 5.25 13.7625 6.8625 -0.75 6.75\"\n />\n <polygon\n transform=\"translate(6.500000, 6.000000) rotate(45.000000) translate(-6.500000, -6.000000) \"\n points=\"-0.75 5.25 13.7625 5.1375 13.75 6.75 -0.7625 6.8625\"\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n </span>\n );\n }\n\n case 'indent': {\n return (\n <Indent type={type} attributes={attributes}>\n {children}\n </Indent>\n );\n }\n\n case 'superscript': {\n return (\n <sup data-type={type} {...attributes}>\n {children}\n </sup>\n );\n }\n\n case 'subscript': {\n return (\n <sub data-type={type} {...attributes}>\n {children}\n </sub>\n );\n }\n\n default:\n return next();\n }\n};\n\nexport default renderMark;\n","/** @jsx jsx */\nimport React, { Fragment as _, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { textAlign } from './textAlign';\n\nconst Li = ({ attributes, children }) => {\n useEffect(() => {\n const li = attributes.ref.current;\n let _fontFamily = '';\n\n // we don't care about color per li now\n // global on the field\n //\n let _color = '';\n let lastSpan;\n\n Array.from(li.querySelectorAll('span')).forEach((span: any) => {\n //\n // totally ignore any links\n if (span.closest('a')) {\n return;\n }\n\n const { fontFamily, color } = span.style;\n\n if (fontFamily && !_fontFamily) {\n // set the li font to the first font we encounter\n _fontFamily = fontFamily;\n }\n\n if (!!color) {\n const childSpanOfSpan = span.querySelector('span');\n\n if (childSpanOfSpan) {\n childSpanOfSpan.style.color = color;\n }\n }\n });\n\n // li.style.fontFamily = _fontFamily;\n });\n\n return (\n <li {...attributes}>\n {/* <span>{children}</span> */}\n {children}\n </li>\n );\n};\n\nconst renderNode = (props, editor, next) => {\n const { attributes, children, node, isFocused } = props;\n\n let style;\n try {\n style = props.node.data.toJS().style || {};\n } catch (err) {\n console.warn('!!!');\n }\n\n switch (node.type) {\n case 'list-item':\n return <Li attributes={attributes}>{children}</Li>;\n // return <li {...attributes}>{children}</li>;\n\n case 'bulleted-list':\n return (\n <ul className=\"chameleon-ul\" {...attributes}>\n {children}\n </ul>\n );\n\n case 'numbered-list':\n return (\n <ol className=\"chameleon-ol\" {...attributes}>\n {children}\n </ol>\n );\n\n case 'indented-list':\n return (\n <ul className=\"indented-list\" {...attributes}>\n {children}\n </ul>\n );\n\n case 'indented':\n return (\n <div className=\"indented\" style={{ paddingLeft: 20 }} {...attributes}>\n {children}\n </div>\n );\n\n case 'textAlignLeft':\n return (\n <div className=\"chameleon-text-align-left\" {...attributes}>\n {children}\n </div>\n );\n\n case 'textAlignCenter':\n return (\n <div className=\"chameleon-text-align-center\" {...attributes}>\n {children}\n </div>\n );\n\n case 'textAlignRight':\n return (\n <div className=\"chameleon-text-align-right\" {...attributes}>\n {children}\n </div>\n );\n\n case 'heading-one':\n return (\n <h1 style={style} {...attributes}>\n {children}\n </h1>\n );\n\n case 'heading-two':\n return (\n <h2 style={style} {...attributes}>\n {children}\n </h2>\n );\n\n case 'heading-three':\n return (\n <h3 style={style} {...attributes}>\n {children}\n </h3>\n );\n\n case 'heading-four':\n return (\n <h4 style={style} {...attributes}>\n {children}\n </h4>\n );\n\n case 'heading-five':\n return (\n <h5 style={style} {...attributes}>\n {children}\n </h5>\n );\n\n case 'heading-six':\n return (\n <h6 style={style} {...attributes}>\n {children}\n </h6>\n );\n\n case 'paragraph': {\n return (\n <p style={style} {...attributes}>\n {children}\n </p>\n );\n }\n\n case 'code': {\n return (\n <pre style={style} {...attributes}>\n <code>{children}</code>\n </pre>\n );\n }\n\n default:\n return next();\n }\n};\n\nexport default renderNode;\n","/** @jsx jsx */\nimport React, {\n Fragment as _,\n useState,\n useRef,\n useLayoutEffect,\n useEffect,\n Component,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\n\nconst A = ({ href, title, target, attributes, children }) => {\n useEffect(() => {\n const a = attributes.ref.current;\n const localColor = Array.from(a.querySelectorAll('span')).find(\n (span: any) => span.style.color\n ) as any;\n\n if (localColor) {\n a.style.textDecorationColor = localColor.style.color;\n }\n });\n\n return (\n <a\n {...attributes}\n href={href}\n title={title}\n target={target}\n style={\n {\n // color: 'inherit',\n // cursor: 'pointer'\n }\n }\n onMouseEnter={\n window.dev()\n ? ({ currentTarget }) => {\n window['CURRENT_LINK_WITH_FOCUS'] = {\n text: currentTarget.innerText,\n href,\n };\n }\n : null\n }\n onMouseOut={\n window.dev() ? () => (window['CURRENT_LINK_WITH_FOCUS'] = null) : null\n }\n >\n {children}\n </a>\n );\n};\n\nconst renderInline = (props, editor, next) => {\n const { attributes, children, node } = props;\n\n switch (node.type) {\n case 'link': {\n const { data } = node;\n const href = data.get('href');\n const title = data.get('title');\n const target = data.get('target');\n\n return (\n <A href={href} title={title} target={target} attributes={attributes}>\n {children}\n </A>\n );\n }\n\n default:\n return next();\n }\n};\n\nexport default renderInline;\n","import getStore from 'services/getStore';\nimport { cloneBlock } from '@chameleoncreator/creator-app';\nimport { setBlockAction } from \"actions/setBlockAction\";\n\nlet newBlocks = {};\nlet delayUpdate;\n\nexport default (block, props) => {\n if (!newBlocks[block.id]) {\n newBlocks[block.id] = cloneBlock(block);\n }\n\n newBlocks[block.id].props = { ...newBlocks[block.id].props, ...props };\n\n clearTimeout(delayUpdate);\n\n delayUpdate = setTimeout(() => {\n Object.values(newBlocks).forEach((b: any) => {\n getStore().dispatch(setBlockAction(b));\n });\n newBlocks = {};\n }, 1000 / 60);\n};\n","import getStore from 'services/getStore';\nimport { State } from 'store/store';\n\nconst bulletStyles = (bulletColor: string, textColor: string = '') => {\n const state = getStore().getState() as State;\n\n const margin = state?.theme?.margin || 0;\n\n const notHeadings = 'not:(h1 ul, h2 ul, h3 ul, h4 ul, h5 ul, h6 ul)';\n\n return {\n 'ul, ol': {\n marginLeft: `20px`,\n },\n\n // [`ul${notHeadings}, ol${notHeadings}`]: {\n // marginLeft: `${margin + 20}px`,\n // },\n\n // 'h1 ul, h2 ul, h3 ul, h4 ul, h5 ul, h6 ul': {\n // marginLeft: `20px !important`,\n // },\n\n 'ul li': {\n paddingLeft: '7px',\n },\n\n 'ol li': {\n paddingLeft: '7px',\n },\n\n ...(bulletColor && {\n li: {\n color: `${bulletColor} !important`,\n },\n }),\n };\n};\n\nexport default bulletStyles;\n","/** @jsx jsx */\n\nimport { useState, useEffect, useRef, useCallback, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport 'services/ie11closestPolyfill';\nimport pubSub from 'services/pubSub';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport { InteractionContext } from 'components/Layouts/ContainerLogical';\nimport { speechSynthesisCancel } from 'services/speechSynthesisCancel';\nimport isIOS from 'services/isiOS';\n\nlet speechSynth;\nif ('speechSynthesis' in window) {\n speechSynth = new SpeechSynthesisUtterance();\n}\n\nconsole.log({ speechSynth });\n\nconst PlayBtn = ({ play = true, color = '' }) => {\n const style = {\n stroke: color,\n strokeWidth: 1.5,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n } as { [key: string]: string | number };\n\n return play ? (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 2C17.5228 2 22 6.47716 22 12C22 17.5228 17.5228 22 12 22C6.47716 22 2 17.5228 2 12C2 6.47716 6.47716 2 12 2Z\"\n style={style}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.0501 12.467C14.3211 13.253 12.3371 14.583 11.3221 15.01C11.1601 15.078 10.7471 15.222 10.6581 15.224C10.4691 15.23 10.2871 15.124 10.1991 14.954C10.1651 14.888 10.0651 14.457 10.0331 14.265C9.93811 13.681 9.88911 12.774 9.89011 11.862C9.88911 10.905 9.94211 9.95495 10.0481 9.37695C10.0761 9.22095 10.1581 8.86195 10.1821 8.80395C10.2271 8.69595 10.3091 8.61095 10.4081 8.55795C10.4841 8.51695 10.5711 8.49495 10.6581 8.49795C10.7471 8.49995 11.1091 8.62695 11.2331 8.67595C12.2111 9.05595 14.2801 10.434 15.0401 11.244C15.1081 11.317 15.2951 11.513 15.3261 11.553C15.3971 11.643 15.4321 11.752 15.4321 11.862C15.4321 11.964 15.4011 12.068 15.3371 12.155C15.3041 12.2 15.1131 12.4 15.0501 12.467Z\"\n style={style}\n fill={color}\n />\n </svg>\n ) : (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 2C17.5228 2 22 6.47716 22 12C22 17.5228 17.5228 22 12 22C6.47716 22 2 17.5228 2 12C2 6.47716 6.47716 2 12 2Z\"\n style={style}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.4057 9H10.5943C9.61429 9 9 9.69362 9 10.6755V13.3244C9 14.3063 9.61143 15 10.5943 15H13.4057C14.3886 15 15 14.3063 15 13.3244V10.6755C15 9.69362 14.3886 9 13.4057 9Z\"\n style={style}\n fill={color}\n />\n </svg>\n );\n};\n\nexport const TextToSpeech = props => {\n const [color, setColor] = useState<string | undefined>(undefined);\n const [canPlay, setCanPlay] = useState<boolean>(true);\n\n const voice = useSelector((state: State) => {\n if (!speechSynth) {\n return null;\n }\n\n const voices = window.speechSynthesis.getVoices();\n\n //\n const UK_English_Male_iOS = voices.findIndex(voice => {\n return voice?.name?.toLowerCase() === 'daniel';\n });\n\n const voiceSelection = voices.find(voice => {\n return voice.name === state.theme.textToSpeechVoice;\n });\n\n // this isn't 'right' when defaulting to voices[0]\n // entry 0 isn't really a default is it\n // we will update later when we've established our refined pattern\n // for voice selection and the associated defaults for each platform\n const voiceFallback =\n voices[isIOS() && UK_English_Male_iOS > -1 ? UK_English_Male_iOS : 0];\n\n return voiceSelection || voiceFallback;\n });\n\n const chameleonText = useRef<HTMLElement>();\n const textToSpeechBtn = useRef<HTMLDivElement>(null);\n\n const onClick = useCallback(\n e => {\n if (!speechSynth) {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n speechSynthesisCancel();\n\n if (chameleonText.current && canPlay) {\n //\n\n // this approach was somewhat problems\n // reading '.' periods as ' dot ' !!!\n // const doc = new DOMParser().parseFromString(content, 'text/html');\n // speechSynth.text = doc.body.innerText || content;\n\n const text = chameleonText.current.innerText || '';\n speechSynth.text = text;\n\n speechSynth.voice = voice;\n window.speechSynthesis.speak(speechSynth);\n }\n\n setCanPlay(canPlay => {\n return !canPlay;\n });\n },\n [canPlay, voice?.name]\n );\n\n useEffect(() => {\n if (!textToSpeechBtn.current) {\n return;\n }\n\n chameleonText.current = textToSpeechBtn.current.closest(\n '[class*=\"chameleon-text\"]'\n ) as HTMLElement;\n const chameleonTextP = chameleonText.current?.querySelector(\n 'p, h1, h2, h3, h4, h5, h6, li'\n );\n\n if (chameleonTextP) {\n const cssObj = window.getComputedStyle(chameleonTextP, null);\n setColor(cssObj.color);\n }\n });\n\n useEffect(() => {\n if (!speechSynth) {\n return;\n }\n\n const onStart = e => {\n // console.log('speechSynth starts speeching...');\n };\n const onEnd = e => {\n setCanPlay(true);\n };\n\n speechSynth.addEventListener('start', onStart);\n speechSynth.addEventListener('end', onEnd);\n\n return () => {\n speechSynth.removeEventListener('start', onStart);\n speechSynth.removeEventListener('end', onEnd);\n speechSynthesisCancel();\n };\n }, []);\n\n useEffect(() => {\n const pS = pubSub.subscribe('SECTION_IN_VIEW', () => {\n setCanPlay(true);\n });\n\n return pS;\n }, []);\n\n return (\n <div\n key={`text-to-speech-${color}-${canPlay.toString()}`}\n ref={textToSpeechBtn}\n css={css({\n border: 'none',\n outline: 'none',\n width: 24,\n height: 24,\n margin: '5px 0 0 0',\n borderRadius: '50%',\n background: 'transparent',\n fontSize: 7,\n cursor: 'pointer',\n\n transition: 'all 0.2s',\n\n ':hover': {\n opacity: 0.8,\n },\n\n ':focus-visible': {\n boxShadow: `0 0 0 3px ${color}`,\n },\n\n zIndex: 99999,\n })}\n onClick={onClick}\n onKeyDown={e => {\n if ([' ', 'Enter'].includes(e.key)) {\n onClick(e);\n\n requestAnimationFrame(() => {\n textToSpeechBtn.current?.focus();\n });\n }\n }}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Click here to have this passage of text read aloud. Click again to stop narration\"\n >\n <PlayBtn play={canPlay} color={color} />\n </div>\n );\n};\n","export const speechSynthesisCancel = () => {\n if ('speechSynthesis' in window) {\n window.speechSynthesis.cancel();\n }\n};\n","// const isiOS = () => {\n// return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n// }\n\nconst isiOS = () => {\n return (\n [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod',\n ].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document)\n );\n};\n\nexport default isiOS;\n","import { findBlocksIn } from 'selectors/block';\nimport getStore from 'services/getStore';\n\nconst store = getStore();\n\nconst getActiveBlocks = () => {\n const { blocks, rootBlockId } = store.getState();\n return findBlocksIn(blocks, blocks[rootBlockId], () => true);\n};\n\nexport default getActiveBlocks;\n","import getStore from 'services/getStore';\nimport getActiveBlocks from 'services/apiHelpers/getActiveBlocks';\n\nconst getAllScoringInteractions = () => {\n let blocks;\n\n try {\n blocks = getActiveBlocks();\n } catch (err) {\n blocks = getStore().getState().blocks;\n }\n\n return (\n Object.values(blocks as any)\n // Object.values(getActiveBlocks() as any)\n // Object.values(getStore().getState().blocks as any)\n .filter((b: any) => b?.props.score && b?.props.score === true)\n .map((b: any) => b.id)\n );\n\n // console.log(getallScoringInteractions());\n};\n\nlet score: {\n [key: string]: number;\n} = {};\n\nlet dummyScore;\n\nconst setScore = (id, _scoreValue) => {\n const scoreValue = _scoreValue ? 1 : 0;\n score[id] = scoreValue;\n};\n\nconst rehydrateScore = savedScore => {\n // Object.keys(savedScore).forEach(entry => {\n // setScore(entry, savedScore[entry]);\n // });\n\n score = {\n ...score,\n ...savedScore,\n };\n};\n\nconst getScore = (id?: number) => (id ? score[id] : score);\n\nconst getScoreRaw = () => {\n const us = Object.values(\n (getStore().getState().userBehaviour?.score as any) || {}\n );\n const scoreRaw = (us as any).reduce((acc, curr) => acc + curr, 0) || 0;\n\n return scoreRaw;\n};\n\nconst getScorePercent = () =>\n (getScoreRaw() / getAllScoringInteractions().length) * 100 || 0;\n\nconst getDummyScore = () => {\n const parsedDummyScore = getScorePercent() || dummyScore;\n if (parsedDummyScore) {\n return Number(parsedDummyScore).toFixed();\n }\n\n return (dummyScore = (Math.random() * 100).toFixed());\n};\n\nexport {\n setScore,\n rehydrateScore,\n getScore,\n getScoreRaw,\n getScorePercent,\n getAllScoringInteractions,\n getDummyScore,\n};\n","import React, {\n useState,\n useRef,\n useEffect,\n useLayoutEffect,\n Fragment as _,\n} from 'react';\nimport { Block, Blocks } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { findBlocksIn } from 'selectors/block';\nimport { State } from 'store/store';\nimport { createSelector } from 'reselect';\nimport { getAllScoringInteractions } from 'services/scoring';\n\nexport const getScoreDataFromScoringBlocks = state => {\n const { blocks } = state;\n /**\n * activeBlockSelector finds blocks that are accessible from the root block\n */\n const activeBlockSelector = (blocks: Blocks, rootId: string): Block[] => {\n return findBlocksIn(blocks, blocks[rootId], (i: any) => i);\n };\n\n /**\n * scoringBlocks finds all the blocks that are scorable and have it turned on\n */\n const scoringBlocks = (blocks: Block[]): string[] => {\n return blocks\n .filter((b: any) => {\n return b?.props?.score && b.props.score === true;\n })\n .map((b: any) => b.id);\n };\n\n /**\n * This selector pulls out all the active blocks from the store\n */\n const loadActiveBlocks = createSelector(\n [(state: State) => state.blocks, (state: State) => state.rootBlockId!],\n activeBlockSelector\n );\n\n const loadScoringBlocks = createSelector(loadActiveBlocks, scoringBlocks);\n\n const getModuleBlock = createSelector(\n // (state: State) => state.blocks,\n () => blocks,\n (blocks: Blocks) => Object.values(blocks).find(b => b.type === 'Module')\n );\n\n const moduleBlock = (Object.values(blocks as Block[]).find(\n (b: Block) => b.type === 'Module'\n ) || {}) as Block;\n let mbProps = { passMark: 80 };\n\n if (moduleBlock) {\n mbProps = moduleBlock.props as { passMark: number };\n }\n\n const scoreData = state.userBehaviour.score;\n const passMark = mbProps.passMark;\n\n const scoringInteractions = loadScoringBlocks(state);\n const numberOfScorableInteractions = scoringInteractions.length;\n\n const allScoringInteractions = getAllScoringInteractions();\n\n const getScoreDataFromScoringInteractions = scoreData => {\n if (!scoreData) {\n return {};\n }\n\n return allScoringInteractions.reduce((acc, curr) => {\n return {\n ...acc,\n ...(scoreData?.[curr] && {\n [curr]: !!scoreData[curr] ? 1 : 0,\n }),\n };\n }, {});\n };\n\n const scoreDataFromScoringInteractions = getScoreDataFromScoringInteractions(\n scoreData\n );\n\n const scoreRaw = Object.values(\n // scoringByTopic ? topicScoreData : scoreData\n scoreDataFromScoringInteractions\n ).reduce<number>((acc, curr) => acc + Number(curr), 0);\n\n const scorePercent =\n ((scoreRaw || 0) / numberOfScorableInteractions) * 100 || 0;\n\n const hasScoringInteractions = !!allScoringInteractions?.length;\n // !!getAllScoringInteractions().length;\n\n const passed = hasScoringInteractions\n ? scorePercent >= Number(passMark)\n : true;\n\n const score = hasScoringInteractions ? scorePercent.toFixed() : 100;\n\n return {\n score,\n passed,\n };\n};\n","/** @jsx jsx */\n\nimport { useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { Text } from '@chameleoncreator/creator-ui';\nimport 'services/ie11closestPolyfill';\nimport bulletStyles from './bulletStyles';\nimport { TextToSpeech } from './TextToSpeech';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport { getScoreDataFromScoringBlocks } from 'services/getScoreDataFromScoringBlocks';\nimport { getSCORMInitialized } from 'components/lib/Scorm/SCORM';\n\nconst ReadOnlyText = ({\n id,\n content,\n className,\n // useBackgroundControls,\n borderRadius,\n // backgroundColor,\n background,\n bulletColor,\n liTextColor,\n linkColors,\n enableTextToSpeechBtn,\n ...props\n}) => {\n const textToSpeech = useSelector((state: State) => state.theme.textToSpeech);\n //\n const moduleVariables = useSelector((state: State) => state.moduleVariables);\n\n const blocks = useSelector((state: State) => state.blocks);\n const rootBlockId = useSelector((state: State) => state.rootBlockId);\n const userBehaviour = useSelector((state: State) => state.userBehaviour);\n\n const readOnlyText = useRef(null);\n const fontInfo = useRef<{ fontSize: number; lineHeight: number } | undefined>(\n undefined\n );\n\n let padding;\n\n if (background) {\n padding = `${12.5 + borderRadius}px ${10 + borderRadius}px`;\n }\n\n if (!!borderRadius) {\n padding = borderRadius * 3;\n }\n\n useEffect(() => {\n if (!readOnlyText.current) {\n return;\n }\n\n const varElems = Array.from(\n (readOnlyText.current as HTMLDivElement).querySelectorAll(\n '[data-type=\"variable\"]'\n )\n );\n\n if (!varElems?.length) {\n return;\n }\n\n varElems.forEach(vE => {\n const varName = vE.getAttribute('data-varname');\n const { childNodes } = vE;\n\n if (!varName) {\n return;\n }\n\n if (varName === 'DATE') {\n vE.textContent = Date()\n .toString()\n .split(/ /g)\n .slice(0, 4)\n .join(' ');\n return;\n }\n\n if (varName === 'SCORE') {\n const score =\n getScoreDataFromScoringBlocks({\n blocks,\n rootBlockId,\n userBehaviour,\n })?.score || 0;\n\n console.log(`SCORE: ${score}%`);\n\n vE.textContent = `${score}%`;\n return;\n }\n\n // if (\n // new URLSearchParams(new URL(window.location.href).search).get(\n // 'testModuleVariables'\n // ) === '1'\n // ) {\n // vE.textContent = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.`;\n // return;\n // }\n\n if (childNodes?.length) {\n childNodes[childNodes.length - 1].textContent =\n moduleVariables[varName];\n return;\n }\n\n vE.textContent = moduleVariables[varName];\n });\n });\n\n useEffect(() => {\n if (!readOnlyText.current) {\n return;\n }\n\n const span = (readOnlyText.current as HTMLDivElement).querySelector(\n '[data-type=\"fontSize\"]'\n ) as HTMLSpanElement;\n\n if (span) {\n fontInfo.current = {\n fontSize: Number(span.style.fontSize.replace(/[^\\d.-]+/g, '')),\n lineHeight: Number(span.style.lineHeight.replace(/[^\\d.-]+/g, '')),\n };\n }\n\n const links: HTMLAnchorElement[] = Array.from(\n (readOnlyText.current as HTMLDivElement).querySelectorAll('a')\n );\n\n links.forEach(link => {\n //\n if (link?.href.includes('mailto:') && getSCORMInitialized()) {\n link.target = '_blank';\n }\n });\n //\n }, []);\n\n return (\n <Text\n ref={readOnlyText}\n className={`chameleon-text${className ? ` ${className}` : ''}`}\n as=\"div\"\n css={css`\n a:link {\n color: ${linkColors.link} !important;\n }\n\n a:visited {\n color: ${linkColors.visited} !important;\n }\n\n a:hover {\n color: ${linkColors.hover} !important;\n }\n\n a:focus-visible {\n color: ${linkColors.focus} !important;\n\n outline-offset: 2px !important;\n outline: 1px solid ${linkColors.focus} !important;\n text-decoration: none !important;\n }\n\n a:active {\n color: ${linkColors.active} !important;\n }\n\n span[data-type='variable'] {\n white-space: pre-wrap !important;\n }\n\n ${bulletStyles(bulletColor, liTextColor)}\n\n ${fontInfo.current &&\n !props.certificate &&\n `\n @media(max-width: ${360 / window.devicePixelRatio}px) {\n span {\n font-size: ${fontInfo.current?.fontSize * 1.6}vw !important;\n line-height: ${fontInfo.current?.lineHeight / 8}vw !important; \n }\n }\n `}\n `}\n style={\n background\n ? {\n borderRadius,\n background,\n padding: `${12.5 + borderRadius}px ${10 + borderRadius}px`,\n }\n : {}\n }\n >\n <div\n dangerouslySetInnerHTML={{\n __html: content,\n }}\n />\n\n {'speechSynthesis' in window &&\n textToSpeech &&\n enableTextToSpeechBtn &&\n content && (\n <TextToSpeech id={`text-to-speech-${id}`} content={content} />\n )}\n </Text>\n );\n};\n\nexport default ReadOnlyText;\n","/** @jsx jsx */\n\nimport React, {\n useState,\n useRef,\n useEffect,\n useLayoutEffect,\n Fragment as _,\n} from 'react';\nimport { Editor } from 'slate-react';\nimport { Value } from 'slate';\nimport { css, jsx } from '@emotion/core';\nimport { css as css_ } from 'emotion';\nimport EditMarker from 'components/UI/EditMarker';\nimport { connect } from 'react-redux';\nimport renderMark from './renderMark';\nimport renderNode from './renderNode';\nimport renderInline from './renderInline';\nimport html from './serializer';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport setBlock from 'services/apiHelpers/setBlockProps';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { Text } from '@chameleoncreator/creator-ui';\nimport getStore from 'services/getStore';\nimport { isKeyHotkey } from 'is-hotkey';\nimport ReadOnlyText from './ReadOnlyText';\nimport bulletStyles from './bulletStyles';\nimport { TextToSpeech } from './TextToSpeech';\n//\nimport { State } from 'store/store';\nimport { useSelector } from 'react-redux';\nimport hexToRgb from 'services/hexToRGB';\n\nconst store = getStore();\n\nconst isBoldHotkey = isKeyHotkey('mod+b');\nconst isItalicHotkey = isKeyHotkey('mod+i');\nconst isUnderlinedHotkey = isKeyHotkey('mod+u');\n\nexport const placeholderText = 'Add content...';\n\nlet delayUpdate;\n\nlet CHAMELEON_COPIED_TEXT: string | undefined;\n\nconst schema = {\n marks: {\n variable: {\n isVoid: true,\n },\n },\n};\n\nconst EditableText = ({ focusedNodeId, ...props }) => {\n const { id, className } = props;\n const block = getBlockById(id) as any;\n const {\n content = '',\n json,\n borderRadius = 0,\n useBackgroundControls,\n backgroundColor,\n textBackgroundOpacity = 100,\n bulletColor = undefined,\n //'#000',\n liTextColor = undefined,\n //'#000',\n enableSecondaryLinkColors,\n enableCustomLinkColors,\n customLinkColors = {},\n } = block?.props;\n\n const placeholderText = props.placeholder || 'Add content...';\n\n let enableTextToSpeechBtn = block?.props?.enableTextToSpeechBtn;\n if (enableTextToSpeechBtn === undefined) {\n enableTextToSpeechBtn = true;\n }\n\n let background;\n if (backgroundColor) {\n const { r, g, b } = hexToRgb(backgroundColor);\n background = `rgba(${r}, ${g}, ${b}, ${textBackgroundOpacity * 0.01}`;\n }\n\n const textToSpeech = useSelector((state: State) => state.theme.textToSpeech);\n\n const linkColors = useSelector((state: State) => {\n return {\n ...state.theme.links,\n // ...block.props.linkColors,\n ...(enableSecondaryLinkColors && {\n ...state.theme.linksSecondary,\n }),\n ...(enableCustomLinkColors && {\n // ...state.theme.linksSecondary,\n ...customLinkColors,\n }),\n };\n });\n\n const { link, visited, hover, focus, active } = linkColors;\n\n const paragraphSpacing = store.getState().theme.paragraphSpacing || 16;\n\n const [state, setState] = useState({\n value: html.deserialize(content),\n });\n\n const text = useRef<HTMLElement>(null);\n const editor = useRef<any>(null);\n const clearedFormatting = useRef<boolean>(false);\n const selected = focusedNodeId === id;\n\n if (window.dev() && selected)\n window['__CURRENT_EDITOR_CLEAR_ALL_FORMATTING__'] = (content, id) => {\n setBlock(getBlockById(id), {\n content,\n });\n\n setState({\n value: html.deserialize(content),\n });\n };\n\n useEffect(() => {\n addEventListener('copy', onCopy);\n\n function onCopy(e) {\n let copied = (e.clipboardData || (window as any).clipboardData).getData(\n 'text/plain'\n );\n\n CHAMELEON_COPIED_TEXT = `CHAMELEON_COPIED_TEXT=${copied}`;\n }\n\n return () => {\n removeEventListener('copy', onCopy);\n };\n }, []);\n\n useEffect(() => {\n if (!selected) return;\n\n parent.editor = editor.current;\n }, [selected]);\n\n useEffect(() => {\n if (content) {\n // console.log('has content');\n clearedFormatting.current = false;\n }\n }, [content]);\n\n useEffect(() => {\n if (!text.current) {\n return;\n }\n\n // remove all classes being links\n text.current.classList.forEach(className => {\n if (className.match('-links')) {\n text.current?.classList.remove(className);\n }\n });\n\n const links = css_(`\n // a {\n // transition: all 0.1s;\n // }\n\n a:link {\n color: ${link} !important;\n }\n\n a:visited {\n color: ${visited} !important;\n }\n\n a:hover {\n color: ${hover} !important;\n }\n\n a:focus-visible {\n color: ${focus} !important;\n\n outline-offset: 2px !important;\n outline: 1px solid ${focus} !important;\n text-decoration: none !important;\n }\n\n a:active {\n color: ${active} !important;\n }\n`);\n\n text.current.classList.add(links);\n }, [selected, link, visited, hover, focus, active]);\n\n useLayoutEffect(() => {\n //\n if (!text.current) {\n return;\n }\n\n //\n const innerText = text.current.innerText\n .toString()\n .replace(/\\s\\s+/g, ' ')\n .trim();\n\n const hasPlaceholder = innerText === placeholderText;\n\n text.current.style.textAlign = '';\n\n if (hasPlaceholder) {\n requestAnimationFrame(() => {\n if (text.current) {\n text.current.style.textAlign = 'left';\n }\n });\n }\n });\n\n const onChange = ({ value }) => {\n if (value.document !== state.value.document) {\n clearTimeout(delayUpdate);\n delayUpdate = setTimeout(() => {\n setBlock(getBlockById(id), {\n content: html.serialize(value),\n });\n }, 500);\n }\n\n setState({ value });\n };\n\n const onKeyDown = (e, editor, next) => {\n let mark;\n\n if (isBoldHotkey(e)) {\n mark = 'bold';\n } else if (isItalicHotkey(e)) {\n mark = 'italic';\n } else if (isUnderlinedHotkey(e)) {\n mark = 'underline';\n } else {\n return next();\n }\n\n e.preventDefault();\n editor.toggleMark(mark);\n };\n\n if (selected && editor.current) parent.editor = editor.current;\n\n if (!window.dev()) {\n return (\n <ReadOnlyText\n id={`chameleon-text-${id}`}\n content={content}\n {...{\n className,\n // useBackgroundControls,\n borderRadius,\n // backgroundColor,\n background,\n bulletColor,\n liTextColor,\n linkColors,\n enableTextToSpeechBtn,\n ...props,\n }}\n />\n );\n }\n\n return (\n <Text\n ref={text}\n id={`chameleon-text-${id}`}\n className={`chameleon-text${className ? ` ${className}` : ''}`}\n as=\"div\"\n css={css`\n\t\t\tposition: relative;\n width: 100%;\n\t\t\tpadding: 12.5px 10px;\n\t\t\t${!selected && 'background: rgba(161, 188, 211, 0.15);'}\n\t\t\tbox-shadow: ${selected ? '0 0 0 1px #ff0063' : 'none'};\n\t\t\n transition: background 0.1s, box-shadow 0.2s;\n\n\t\t\t&:hover {\n\t\t\t\tcursor: text;\n\t\t\t\t${!selected && 'box-shadow: 0 0 0 1px lightGrey;'}\n\t\t\t\tbackground: transparent;\n }\n\t\t\n\t\t\t* {\n pointer-events: ${selected ? 'auto' : 'none'};\n }\n\n ${bulletStyles(bulletColor, liTextColor)}\n\n [data-slate-editor] {\n -webkit-user-modify: read-write !important;\n }\n \n // p:has(span[data-slate-length=\"0\"]) {\n // position: absolute;\n // }\n\n // p:has(span[data-slate-length=\"0\"]) + p::before {\n // display: block;\n // content: '';\n // height: ${paragraphSpacing}px; \n // }\n\n `}\n // useBackgroundControls ||\n style={\n background\n ? {\n borderRadius,\n // background: backgroundColor,\n background,\n padding: `${12.5 + borderRadius}px ${10 + borderRadius}px`,\n }\n : {}\n }\n onClick={e => {\n e.stopPropagation();\n\n if (selected) return;\n setCurrentBlock({ id });\n setTimeout(() => {\n editor.current!.focus();\n }, 10);\n }}\n fontFamily={store.getState().theme.fontFamily || ''}\n >\n <Editor\n key={id}\n id={id}\n ref={editor}\n value={state.value}\n placeholder={placeholderText || 'Add content...'}\n schema={schema}\n readOnly={!window.dev()}\n onChange={onChange}\n onKeyDown={onKeyDown}\n onPaste={(e, $, next) => {\n let pasted = (\n e.clipboardData || (window as any).clipboardData\n ).getData('text/plain');\n\n if (CHAMELEON_COPIED_TEXT === `CHAMELEON_COPIED_TEXT=${pasted}`) {\n // console.log('pasting CHAMELEON_COPIED_TEXT');\n return next();\n }\n\n // console.log('pasting >> NOT << CHAMELEON_COPIED_TEXT');\n CHAMELEON_COPIED_TEXT = '';\n\n // break it\n const pastedToPs = pasted\n .split(/(\\r\\n|\\n|\\r)/g)\n .map(p => p.replace(/\\s\\s+/g, ' ').trim())\n .filter(p => p !== '')\n .map(p => `<p data-type=\"paragraph\">${p}</p>`)\n .join('');\n\n const { document } = html.deserialize(pastedToPs);\n editor.current!.insertFragment(document);\n }}\n renderMark={renderMark}\n // renderNode\n renderBlock={renderNode}\n renderInline={renderInline}\n />\n\n {'speechSynthesis' in window && textToSpeech && enableTextToSpeechBtn && (\n <TextToSpeech id={id} content={content} {...props} />\n )}\n\n {selected && parent.updateEditor && parent.updateEditor(Math.random())}\n\n {!selected && <EditMarker />}\n </Text>\n );\n};\n\nexport default connect(\n ({ focusedNodeId }: { focusedNodeId: string | number }) => ({\n focusedNodeId,\n [Math.random()]: '',\n })\n)(EditableText);\n","import EditableText from './EditableText';\n\nexport default EditableText;\n","interface IgetBaseButtonStyles {\n color: string;\n background: string;\n buttonShape: string;\n borderRadius: number | string;\n fontFamily: string | undefined;\n fontWeight?: number | string;\n buttonOutline: boolean;\n useLargeButton?: boolean;\n hoverColor?: string;\n buttonShadow: boolean;\n type?: 'navigation' | 'generic' | undefined;\n}\n\ninterface IButtonType {\n type?: 'navigation' | 'generic';\n}\n\nconst getBaseButtonStyles = ({\n color = '#fff',\n fontFamily,\n fontWeight = 400,\n background = '#060709',\n buttonShape = 'pill',\n borderRadius,\n buttonOutline = false,\n useLargeButton = false,\n hoverColor,\n buttonShadow = false,\n type = undefined,\n}: IgetBaseButtonStyles) => {\n //\n let minWidth = useLargeButton ? 310 : 230;\n let maxWidth = useLargeButton ? 310 : 230;\n\n if (buttonShape === 'circle') {\n minWidth = 80;\n maxWidth = 180;\n }\n\n const buttonShape_ = {\n pill: {\n borderRadius: '9999px',\n },\n rectangle: {\n borderRadius,\n },\n circle: {\n // minWidth,\n // maxWidth,\n borderRadius: '50%',\n padding: 20,\n aspectRatio: '1 / 1',\n },\n }[buttonShape];\n\n return {\n outline: 'none',\n border: `1px solid ${background}`,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minWidth,\n maxWidth,\n\n minHeight: useLargeButton ? '65px !important' : 45,\n ...(type === 'navigation' && {\n margin: 10,\n }),\n\n padding: '8px 32px',\n cursor: 'pointer',\n background,\n ...buttonShape_,\n fontSize: 14,\n fontFamily: `${fontFamily || 'inherit'} !important`,\n fontWeight: `${fontWeight} !important`,\n color,\n ...(buttonOutline && {\n background: 'transparent',\n }),\n textAlign: 'center',\n\n ...(buttonShadow && {\n boxShadow: '0 0 12px 3px rgba(0, 0, 0, 0.09)',\n }),\n\n ':hover': {\n ...(hoverColor\n ? {\n background: hoverColor,\n border: `1px solid ${hoverColor || background}`,\n }\n : {\n opacity: 0.8,\n }),\n },\n };\n};\n\nexport { IgetBaseButtonStyles, getBaseButtonStyles };\n","import { useEffect } from 'react';\nimport isIE from 'services/isIE';\nimport { colors, getButtonFocus } from 'styles/variables';\n\nconst { lPink } = colors;\n\nexport type TOldButtonProps = {\n buttonShadow: boolean;\n buttonOutline: boolean;\n buttonShape: string;\n background: string;\n buttonBackgroundOpacity: number;\n buttonHover: string;\n buttonHoverBackgroundOpacity: number;\n color: string;\n textHoverColor: string;\n buttonOutlineColor: string;\n id: string;\n label: string;\n location: string | undefined;\n linkData: { [key: string]: string | number };\n fontFamily: string;\n fontSize: number;\n bold: boolean;\n uppercase: boolean;\n useLargeButton: boolean;\n borderRadius: number;\n focusColor: string;\n};\n\nexport const oldButtonPropsToNewMap = {\n buttonShadow: 'shadow',\n buttonOutline: 'outline',\n buttonShape: 'shape',\n background: 'backgroundColor',\n buttonBackgroundOpacity: 'backgroundOpacity',\n buttonHover: 'backgroundColorOnHover',\n buttonHoverBackgroundOpacity: 'backgroundOpacityOnHover',\n color: 'textColor',\n textHoverColor: 'textColorOnHover',\n buttonOutlineColor: 'outlineColor',\n //\n id: 'id',\n label: 'label',\n location: 'location',\n linkData: 'linkData',\n fontFamily: 'fontFamily',\n fontSize: 'fontSize',\n bold: 'bold',\n uppercase: 'uppercase',\n useLargeButton: 'useLargeButton',\n borderRadius: 'borderRadius',\n focusColor: 'focusColor',\n};\n\nconst locals = [\n 'localBackgroundColor',\n 'localColor',\n 'localButtonOutline',\n 'localButtonShadow',\n 'localButtonHover',\n 'localBorderRadius',\n].map(entry => entry.toLowerCase());\n\nexport const updateButtonProps = (props, oldButtonPropsToNewMap) => {\n const updatedBlockProps = Object.keys(props).reduce((acc, curr) => {\n const newKey = oldButtonPropsToNewMap[curr];\n\n const hasLocal =\n curr.includes('local') && locals.includes(`local${curr.toLowerCase()}`);\n // console.log(curr, `local${curr.toLowerCase()}`, props[curr], hasLocal);\n\n const hasValue = ![undefined, '', null].includes(props[curr]);\n // && hasLocal;\n\n return {\n ...acc,\n ...(newKey &&\n hasValue && {\n [newKey]: props[curr],\n }),\n };\n }, {});\n\n return updatedBlockProps;\n};\n\nconst getObjectsTruthyValues = (obj: {}): {} => {\n const stripped = {};\n for (const property in obj) {\n if (obj[property]) {\n stripped[property] = obj[property];\n }\n }\n\n return stripped;\n};\n\nconst updateLinkColors = (color = '#fff', hoverColor = undefined) => {\n return [\n 'link',\n 'visited',\n // ...(hoverColor && ['hover'])\n ].reduce((acc, curr) => {\n return {\n ...acc,\n [`:${curr}`]: {\n color: `${curr === 'hover' ? hoverColor : color} !important`,\n },\n };\n }, {});\n};\n\nconst getFocusColorForCSSObject = (color: string) => {\n return !window.dev()\n ? getButtonFocus(color)\n .split(':')[1]\n .trim()\n .replace(';', '')\n : '';\n};\n\ninterface IParsePropsAndTheme {\n props: {\n color: string;\n background: string;\n fontFamily: string;\n buttonShape: string;\n buttonShadow: boolean;\n buttonOutline: boolean;\n hoverColor: string;\n buttonHover?: string;\n focusColor: string;\n };\n theme: {};\n}\n\nconst parseStylesFromPropsAndTheme = (props, theme) => {\n // console.log(theme.buttonShape);\n //\n // ensure the button returns to standard size if turned off in settings\n const useLargeButton =\n props.useLargeButton !== undefined\n ? props.useLargeButton\n : theme.useLargeButton;\n //\n\n return {\n background:\n (props.localBackgroundColor && props.background) ||\n theme.buttonBackgroundColor ||\n props.buttonBackground ||\n lPink,\n\n color:\n (props.localColor && props.color) ||\n theme.buttonTextColor ||\n props.buttonForeground ||\n '#fff',\n\n fontFamily: props.font || theme.fontFamily,\n buttonShape: props.buttonShape || theme.buttonShape,\n buttonOutline: props.localButtonOutline\n ? props.buttonOutline\n : theme.buttonOutline,\n buttonShadow: props.localButtonShadow\n ? props.buttonShadow\n : theme.buttonShadow,\n hoverColor: props.localButtonHover\n ? props.hoverColor || props.buttonHover\n : theme.hoverColor || theme.buttonHover,\n focusColor: getFocusColorForCSSObject(\n props.focusColor || props.background || theme.buttonBackgroundColor\n ),\n\n // useLargeButton: props.useLargeButton || theme.useLargeButton,\n useLargeButton,\n //\n borderRadius: props.localBorderRadius\n ? props.borderRadius\n : theme.buttonBorderRadius,\n } as any;\n};\n\nconst updateButtonHeightForIE = (\n buttonRef: HTMLElement | null,\n buttonShape: string\n) => {\n useEffect(() => {\n if (!(isIE() && buttonRef)) {\n return;\n }\n\n let goalHeight;\n\n if (buttonShape === 'circle') {\n goalHeight = buttonRef.offsetWidth;\n }\n\n const tick = setInterval(() => {\n if (!buttonRef) {\n return;\n }\n\n if (!goalHeight) {\n goalHeight = buttonRef.scrollHeight;\n }\n\n if (goalHeight !== 0 && buttonRef.style.height === `${goalHeight}px`) {\n clearInterval(tick);\n }\n\n buttonRef.style.height = `${goalHeight}px`;\n }, 1000 / 12);\n\n return () => {\n clearInterval(tick);\n };\n }, [buttonRef, buttonShape]);\n};\n\nexport {\n getObjectsTruthyValues,\n updateLinkColors,\n getFocusColorForCSSObject,\n parseStylesFromPropsAndTheme,\n updateButtonHeightForIE,\n};\n","import getTopics from 'services/apiHelpers/getTopics';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { moduleNavigationActionsList } from 'components/NavigationSettings/ModuleNavigation';\n\nconst hasValidLocationUpdated = location => {\n if (!location) {\n return undefined;\n }\n\n if (\n moduleNavigationActionsList.includes(location) ||\n location.match('http')\n ) {\n return true;\n }\n\n //\n\n //\n let parsedLocation = location.replace(/#/, '').split('/');\n\n const [topicSId, interactionSId] = parsedLocation;\n\n const topics = getTopics();\n const topic = topics.find((t: any) => {\n const tSId = t.props.sId || t.id;\n const found = tSId == topicSId;\n\n return found;\n });\n\n if (!topic) {\n return false;\n }\n\n const interactions = getInteractionsInTopic(topic);\n const interaction = interactions.find((i: any) => {\n const iSId = i.props.sId || i.id;\n const found = iSId == interactionSId;\n\n return found;\n });\n\n return interaction ? true : false;\n};\n\nexport default hasValidLocationUpdated;\n","/** @jsx jsx */\n\nimport { useContext, useRef } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector } from 'react-redux';\nimport EditMarker from 'components/UI/EditMarker';\nimport { colors } from 'styles/variables';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { State } from 'store/store';\nimport { InteractionContext } from '../../Layouts/ContainerLogical';\nimport { ModuleContext } from 'components/Module/Module_v2';\nimport {\n // IgetBaseButtonStyles,\n getBaseButtonStyles,\n} from './getBaseButtonStyles';\nimport {\n updateLinkColors,\n // parseStylesFromPropsAndTheme,\n updateButtonHeightForIE,\n} from './buttonHelpers';\nimport hasValidLocationUpdated from 'services/hasValidLocationUpdated';\nimport { moduleNavigationActionsList } from 'components/NavigationSettings/ModuleNavigation';\nimport hexToRgb from 'services/hexToRGB';\nimport { speechSynthesisCancel } from 'services/speechSynthesisCancel';\n// import { removeFalseyEntriesFromObject } from 'services/removeFalseyEntriesFromObject';\nimport { removeUndefinedEntriesFromObject } from 'services/removeUndefinedEntriesFromObject';\nimport { themeButtonDefault, TButton, TButtons } from 'store/store';\nimport {\n // updateButtonProps,\n // oldButtonPropsToNewMap,\n getFocusColorForCSSObject,\n} from './buttonHelpers';\n\nconst { lPink } = colors;\n\nconst IsExternalLink = ({ color = '#fff' }) => {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M17 4.30213V13.6979C17 15.5021 15.533 17 13.6908 17H4.30917C2.50107 17 1 15.5362 1 13.6979V4.30213C1 2.49787 2.46695 1 4.30917 1H13.7249\"\n style={{\n stroke: color,\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n />\n <path\n d=\"M11.8145 6.17447L6.18549 11.7915\"\n style={{\n stroke: color,\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n />\n <path\n d=\"M6.76538 6.17447H11.8144V11.2128\"\n style={{\n stroke: color,\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n />\n </svg>\n );\n};\n\nconst NavigationButton = props => {\n //\n\n const moduleContext = useContext(ModuleContext);\n\n const interactionContext = useContext(InteractionContext) as any;\n\n const focusedNodeId = useSelector((state: State) => state.focusedNodeId);\n\n const theme = useSelector((state: State) => state.theme);\n const themeButtons = theme?.buttons || {};\n //\n\n //\n const cleanedBlockProps = removeUndefinedEntriesFromObject(props);\n\n const interactionsLocked = useSelector(\n (state: State) => state.interactionsLocked\n );\n\n let isLocked = interactionsLocked.includes(interactionContext.id) ? 1 : 0;\n\n if (props.unlocked) {\n isLocked = 0;\n }\n\n if (\n window?.mode &&\n window?.mode === 'PREVIEW' &&\n theme.disableLockDownInPreview\n ) {\n isLocked = 0;\n }\n\n if (\n !window.dev() &&\n window.location.toString().match('localhost:') &&\n theme.disableLockDownInPreview\n ) {\n isLocked = 0;\n }\n\n const { id, label, location } = props;\n\n const buttonRef = useRef<HTMLAnchorElement>(null);\n\n // might remove the defaults from here\n // declare any defaults somewhere else\n\n const linkData = {\n ...props.linkData,\n ...(location && {\n url: location,\n title: '',\n target: location.match('http') ? '_blank' : '_self',\n }),\n };\n\n //\n\n const {\n textColor,\n\n backgroundColor,\n fontFamily,\n shape: buttonShape,\n borderRadius,\n shadow,\n outline,\n outlineColor,\n backgroundColorOnHover,\n textColorOnHover: _textColorOnHover_,\n useLargeButton,\n focusColor,\n includeButtonBackground,\n backgroundOpacity,\n backgroundOpacityOnHover,\n fontSize,\n bold,\n uppercase,\n } = {\n ...themeButtonDefault,\n ...themeButtons.main,\n\n ...cleanedBlockProps,\n } as TButton;\n\n const textColorOnHover = _textColorOnHover_ || textColor;\n\n const baseButtonStyles = getBaseButtonStyles({\n color: textColor,\n background: backgroundColor,\n fontFamily,\n buttonShape,\n borderRadius,\n buttonShadow: shadow,\n buttonOutline: outline,\n hoverColor: backgroundColorOnHover,\n useLargeButton,\n type: 'navigation',\n }) as any;\n\n const _focusColor_ = getFocusColorForCSSObject(focusColor || backgroundColor);\n\n const { r, g, b } = hexToRgb(backgroundColor);\n\n let a = backgroundOpacity / 100;\n let backgroundColorRGBA = `rgba(${r}, ${g}, ${b}, ${a})`;\n\n const { r: hoverR, g: hoverG, b: hoverB } = hexToRgb(\n backgroundColorOnHover || backgroundColor\n );\n\n let hoverA = (backgroundOpacityOnHover ?? 80) / 100;\n let backgroundColorOnHoverRGBA = `rgba(${hoverR}, ${hoverG}, ${hoverB}, ${hoverA})`;\n\n const { url, title, target } = linkData;\n\n // error checking here against a potentially removed topic\n let hasValidLocation =\n moduleNavigationActionsList.includes(url) || hasValidLocationUpdated(url);\n\n const selected = id === focusedNodeId;\n const { exit, setComplete, setCompleteAndExit, resetModule } = moduleContext;\n\n let urlEnabled = url;\n if (!window.dev() && isLocked) {\n urlEnabled = '';\n }\n\n const navigationButton = (\n <a\n ref={buttonRef}\n id={`navigation-button-${id}`}\n href={urlEnabled}\n css={css({\n position: 'relative',\n\n ...baseButtonStyles,\n fontSize,\n ...(bold && {\n fontWeight: 700,\n }),\n ...(uppercase && {\n textTransform: 'uppercase',\n }),\n\n background: backgroundColorRGBA,\n\n border: `1px solid ${\n outline ? outlineColor || backgroundColor : 'transparent'\n }`,\n\n textDecoration: 'none',\n ...updateLinkColors(textColor),\n\n transition: 'all 0.15s',\n\n ...(target === '_blank' && {\n padding: '5px 40px',\n }),\n\n ...(textColorOnHover && {\n ':link': {\n color: textColor,\n },\n\n // kill any visited color so hover plays out\n ':visited': {\n color: '',\n },\n\n ':hover': {\n color: `${textColorOnHover} !important`,\n background: `${backgroundColorOnHoverRGBA} !important`,\n },\n }),\n\n ...(!window.dev() && isLocked\n ? {\n // potentially want to be able to customize disabled color ?\n pointerEvents: 'none',\n opacity: 0.25,\n }\n : {\n ':focus-visible': {\n boxShadow: _focusColor_,\n },\n }),\n })}\n title={urlEnabled && (linkData.title || url)}\n onKeyUp={e => {\n if (e.keyCode === 32) {\n e.currentTarget.click();\n }\n }}\n onMouseOver={e => {\n e.currentTarget.setAttribute('title', '');\n }}\n onMouseOut={e => {\n e.currentTarget.setAttribute('title', linkData.title || url);\n }}\n onClick={e => {\n e.preventDefault();\n\n speechSynthesisCancel();\n\n if (url === 'exit') {\n exit();\n return;\n }\n\n if (url === 'setComplete') {\n setComplete();\n return;\n }\n\n if (url === 'setCompleteAndExit') {\n setCompleteAndExit();\n return;\n }\n\n if (url === 'resetModule') {\n resetModule();\n return;\n }\n\n if (target === '_blank') {\n window.open(url);\n return;\n }\n\n if (e.currentTarget.getAttribute('href') === '') {\n console.log(\n 'href has been intentionally been removed from this link. DO NOT NAVIGATE !!!'\n );\n return;\n }\n\n interactionContext.next(url);\n }}\n //\n\n aria-disabled={urlEnabled === ''}\n >\n {label}\n\n {buttonShape !== 'circle' && target === '_blank' && (\n <div\n css={css({\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n right: 18,\n top: 0,\n height: '100%',\n })}\n >\n <IsExternalLink color={textColor} />\n </div>\n )}\n </a>\n );\n\n updateButtonHeightForIE(buttonRef.current, buttonShape);\n\n return window.dev() ? (\n <div\n css={css({\n position: 'relative',\n width: 'auto !important',\n margin: '2px 7px',\n\n ':hover': {\n a: {\n background: backgroundColorOnHoverRGBA,\n color: `${textColorOnHover} !important`,\n },\n },\n })}\n >\n {navigationButton}\n\n <div\n css={css({\n position: 'absolute',\n left: -5,\n top: -0,\n width: 'calc(100% + 10px)',\n height: 'calc(100% + 0px)',\n boxShadow: selected\n ? `0 0 0 1px ${lPink}`\n : `0 0 0 1px ${hasValidLocation ? 'lightGrey' : 'yellow'}`,\n transition: 'all 0.15s',\n cursor: 'pointer',\n\n ':hover': {\n boxShadow: `0 0 0 1px ${lPink}`,\n },\n })}\n onClick={e => {\n if (selected) {\n return;\n }\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && <EditMarker />}\n </div>\n </div>\n ) : (\n navigationButton\n );\n};\n\nexport { NavigationButton };\n","/** @jsx jsx */\n\nimport {\n // useContext,\n useRef,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector } from 'react-redux';\nimport EditMarker from 'components/UI/EditMarker';\nimport { colors } from 'styles/variables';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { State } from 'store/store';\n// import { InteractionContext } from '../../Layouts/ContainerLogical';\nimport { getBaseButtonStyles } from './getBaseButtonStyles';\nimport {\n // parseStylesFromPropsAndTheme,\n getFocusColorForCSSObject,\n updateButtonHeightForIE,\n} from './buttonHelpers';\nimport hexToRgb from 'services/hexToRGB';\nimport { speechSynthesisCancel } from 'services/speechSynthesisCancel';\n// import { removeFalseyEntriesFromObject } from 'services/removeFalseyEntriesFromObject';\nimport { removeUndefinedEntriesFromObject } from 'services/removeUndefinedEntriesFromObject';\nimport { themeButtonDefault, TButton, TButtons } from 'store/store';\n// import {\n// updateButtonProps,\n// oldButtonPropsToNewMap,\n// TOldButtonProps,\n// } from './buttonHelpers';\n\nconst { lPink } = colors;\n\nconst GenericButton = props => {\n //\n // const interactionContext = useContext(InteractionContext) as any;\n\n const { focusedNodeId, theme } = useSelector((state: State) => {\n const { focusedNodeId, theme } = state;\n return {\n focusedNodeId,\n theme,\n };\n });\n\n const themeButtons = theme.buttons;\n\n const cleanedBlockProps = removeUndefinedEntriesFromObject(props);\n\n const { id, label, enabled = undefined, onClick } = props;\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const {\n textColor,\n backgroundColor,\n fontFamily,\n shape,\n borderRadius,\n shadow,\n outline,\n outlineColor,\n backgroundColorOnHover,\n textColorOnHover,\n useLargeButton,\n focusColor,\n // includeButtonBackground,\n backgroundOpacity,\n backgroundOpacityOnHover,\n fontSize,\n bold,\n uppercase,\n } = {\n ...themeButtonDefault,\n ...themeButtons.main,\n ...cleanedBlockProps,\n } as TButton;\n\n const selected = id === focusedNodeId;\n const disabled = enabled !== undefined ? !enabled : false;\n\n let buttonShape = shape;\n\n const baseButtonStyles = getBaseButtonStyles({\n color: textColor,\n background: backgroundColor,\n fontFamily,\n buttonShape,\n borderRadius,\n buttonShadow: shadow,\n buttonOutline: outline,\n hoverColor: backgroundColorOnHover,\n useLargeButton,\n }) as any;\n\n const _focusColor_ = getFocusColorForCSSObject(focusColor || backgroundColor);\n\n const { r, g, b } = hexToRgb(backgroundColor);\n\n let a = backgroundOpacity / 100;\n let backgroundColorRGBA = `rgba(${r}, ${g}, ${b}, ${a})`;\n\n const { r: hoverR, g: hoverG, b: hoverB } = hexToRgb(\n backgroundColorOnHover || backgroundColor\n );\n\n let hoverA = (backgroundOpacityOnHover ?? 80) / 100;\n\n let backgroundColorOnHoverRGBA = `rgba(${hoverR}, ${hoverG}, ${hoverB}, ${hoverA})`;\n\n const genericButton = (\n <button\n ref={buttonRef}\n id={`generic-button-${id}`}\n css={css({\n ...baseButtonStyles,\n fontSize,\n ...(bold && {\n fontWeight: 700,\n }),\n ...(uppercase && {\n textTransform: 'uppercase',\n }),\n\n background: backgroundColorRGBA,\n\n border: `1px solid ${\n outline ? outlineColor || backgroundColor : 'transparent'\n }`,\n\n transition: 'all 0.15s',\n\n ':hover': {\n color: `${textColorOnHover} !important`,\n background: backgroundColorOnHoverRGBA,\n },\n\n ...(!window.dev() && disabled\n ? {\n // potentially want to be able to customize disabled color ?\n pointerEvents: 'none',\n opacity: 0.25,\n }\n : {\n ':focus-visible': {\n boxShadow: _focusColor_,\n },\n }),\n })}\n disabled={disabled}\n onClick={() => {\n speechSynthesisCancel();\n onClick && onClick();\n }}\n >\n {label}\n </button>\n );\n\n updateButtonHeightForIE(buttonRef.current, buttonShape);\n\n return window.dev() ? (\n <div\n css={css({\n position: 'relative',\n display: 'inline-flex',\n\n ':hover': {\n button: {\n background: backgroundColorOnHoverRGBA,\n\n color: `${textColorOnHover} !important`,\n },\n },\n })}\n >\n {genericButton}\n\n <div\n css={css({\n position: 'absolute',\n left: -15,\n top: -10,\n width: 'calc(100% + 30px)',\n height: 'calc(100% + 20px)',\n boxShadow: selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey',\n transition: 'all 0.15s',\n cursor: 'pointer',\n\n ':hover': {\n boxShadow: `0 0 0 1px ${lPink}`,\n },\n })}\n onClick={e => {\n if (selected) {\n return;\n }\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && <EditMarker />}\n </div>\n </div>\n ) : (\n genericButton\n );\n};\n\nexport { GenericButton };\n","import EditableBtn from './EditableBtn';\nimport { GenericButton } from 'components/lib/Buttons';\n\nexport default GenericButton;\n//EditableBtn;\n","/** @jsx jsx */\r\n\r\nimport React, { Fragment as _ } from 'react';\r\nimport { keyframes } from 'emotion';\r\nimport { css, jsx } from '@emotion/core';\r\nimport EditMarker from 'components/UI/EditMarker';\r\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\r\nimport { colors } from 'styles/variables';\r\nimport Image from 'assets/Image.svg';\r\n\r\nconst { lPink } = colors;\r\n\r\nconst frameSelected = keyframes`\r\n from {\r\n width: 50%;\r\n height: 50%;\r\n }\r\n to {\r\n width: 75%;\r\n height: 75%;\r\n }\r\n`;\r\n\r\nconst frameNotSelected = keyframes`\r\nfrom {\r\n width: 75%;\r\n height: 75%;\r\n}\r\nto {\r\n width: 50%;\r\n height: 50%;\r\n}\r\n`;\r\n\r\nconst EditWrapper0 = ({\r\n id,\r\n mediaParentId,\r\n padding = 0,\r\n selected,\r\n children,\r\n}) => {\r\n return (\r\n <div\r\n css={css`\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n height: 100%;\r\n padding: ${padding}px;\r\n box-shadow: ${selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'};\r\n transition: box-shadow 0.2s;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\r\n }\r\n\r\n * {\r\n pointer-events: ${selected ? 'auto' : 'none'};\r\n }\r\n\r\n @media (max-width: 768px) {\r\n padding: 5px;\r\n }\r\n `}\r\n onClick={e => {\r\n e.stopPropagation();\r\n\r\n if (selected) {\r\n return;\r\n }\r\n\r\n setCurrentBlock({ id });\r\n }}\r\n >\r\n {children}\r\n\r\n {!selected && <EditMarker />}\r\n </div>\r\n );\r\n};\r\n\r\nconst EditWrapper1 = ({\r\n id,\r\n mediaParentId,\r\n editWrapperSize = '50%',\r\n editWrapperUseIcon = true,\r\n selected,\r\n children,\r\n}) => {\r\n // return children;\r\n\r\n return (\r\n <div\r\n css={css`\r\n // position: absolute;\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n left: 0px;\r\n top: 0px;\r\n width: 100%;\r\n height: 100%;\r\n `}\r\n >\r\n {children}\r\n <div\r\n css={css`\r\n position: absolute;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n left: 0px;\r\n top: 0px;\r\n width: 100%;\r\n height: 100%;\r\n `}\r\n >\r\n <div\r\n css={css`\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: ${selected ? '75%' : editWrapperSize};\r\n height: ${selected ? '75%' : editWrapperSize};\r\n\r\n ${selected && `animation: ${frameSelected} 0.2s forwards;`}\r\n \r\n ${!selected &&\r\n `\r\n background: rgba(0, 0, 0, 0.1);\r\n `}\r\n \r\n box-shadow: ${\r\n selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'\r\n };\r\n\r\n transition: all 0.2s;\r\n\r\n cursor: pointer;\r\n &:hover {\r\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\r\n }\r\n `}\r\n onClick={e => {\r\n e.stopPropagation();\r\n\r\n if (selected) {\r\n return;\r\n }\r\n\r\n setCurrentBlock({ id });\r\n }}\r\n >\r\n {!selected && editWrapperUseIcon && (\r\n <img src={Image} style={{ width: 50, opacity: 0.5 }} />\r\n )}\r\n\r\n {!selected && <EditMarker />}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst EditWrapper2 = ({ id, mediaParentId, selected, children }) => {\r\n return (\r\n <div\r\n css={css`\r\n position: absolute;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n left: 0px;\r\n top: 0px;\r\n width: 100%;\r\n height: 100%;\r\n `}\r\n >\r\n {children}\r\n <div\r\n css={css`\r\n position: absolute;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n left: 0px;\r\n top: 0px;\r\n width: 100%;\r\n height: 100%;\r\n `}\r\n >\r\n <div\r\n css={css`\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 80%;\r\n height: 80%;\r\n\r\n box-shadow: ${selected\r\n ? `0 0 0 1px ${lPink}`\r\n : '0 0 0 1px lightGrey'};\r\n transition: all 0.2s;\r\n cursor: pointer;\r\n &:hover {\r\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\r\n }\r\n `}\r\n onClick={e => {\r\n e.stopPropagation();\r\n if (selected) {\r\n return;\r\n }\r\n setCurrentBlock({ id });\r\n }}\r\n >\r\n {!selected && <EditMarker />}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst EditWrapper3 = ({\r\n id,\r\n mediaParentId,\r\n padding = 0,\r\n editWrapperPadding = 0,\r\n selected,\r\n children,\r\n}) => {\r\n return (\r\n <div\r\n css={css`\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n `}\r\n >\r\n {children}\r\n\r\n <div\r\n css={css({\r\n position: 'absolute',\r\n left: editWrapperPadding,\r\n top: editWrapperPadding,\r\n width: `calc(100% - ${editWrapperPadding * 2}px)`,\r\n height: `calc(100% - ${editWrapperPadding * 2}px)`,\r\n boxShadow: selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey',\r\n transition: 'box-shadow 0.2s',\r\n cursor: 'pointer',\r\n\r\n ...(!selected && {\r\n '&:hover': {\r\n boxShadow: `0 0 0 1px ${lPink}`,\r\n },\r\n }),\r\n })}\r\n onClick={e => {\r\n e.stopPropagation();\r\n\r\n if (selected) {\r\n return;\r\n }\r\n\r\n setCurrentBlock({ id });\r\n }}\r\n >\r\n {!selected && <EditMarker />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport { EditWrapper0, EditWrapper1, EditWrapper2, EditWrapper3 };\r\n","/** @jsx jsx */\n\nimport { css as _css, keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\n\n// const lineWeight = 5;\n\nconst dualRingAnimation = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nconst dualRing = (size, color, lineWeight) => _css`\n {\n display: inline-block;\n width: ${size}px;\n height: ${size}px;\n animation: 1.2s linear infinite;\n }\n &:after {\n content: \"\";\n display: block;\n width: ${size - lineWeight * 2}px;\n height: ${size - lineWeight * 2}px;\n border-radius: 50%;\n border: ${lineWeight}px solid ${color};\n border-color: ${color} transparent ${color} transparent;\n animation: ${dualRingAnimation} 1.2s linear infinite;\n }\n`;\n\ninterface ILoadingSpinnerProps {\n size?: number;\n color?: string | undefined;\n lineWeight?: number;\n}\n\nconst LoadingSpinner = ({\n size = 46,\n color,\n lineWeight = 5,\n}: ILoadingSpinnerProps) => {\n const loadingSpinnerColor = useSelector((state: State) => {\n return state.theme.loadingSpinnerColor || '#cea5f9';\n });\n\n return (\n <div\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n `}\n >\n <div\n className={dualRing(\n size,\n color ? color : loadingSpinnerColor,\n lineWeight\n )}\n />\n </div>\n );\n};\n\nexport default LoadingSpinner;\n","import LoadingSpinner from './LoadingSpinner';\n\nexport default LoadingSpinner;\n","const srcIsGif = src => {\n return /\\.(gif)$/i.test(src);\n};\n\nconst checkImgSrcIsGif = src => {\n // const updatedSrc = srcIsGif(src) ? `${src}?a=${Math.random()}` : src;\n\n const updatedSrc = /\\.(gif)$/i.test(src) ? `${src}?a=${Math.random()}` : src;\n return updatedSrc;\n};\n\nexport default checkImgSrcIsGif;\nexport { srcIsGif };\n","import React, { useState, useRef, useEffect } from 'react';\n\nconst useImgLoader = src => {\n let [loadedState, setLoadedState] = useState(0);\n\n const mounted = useRef(true);\n\n useEffect(() => () => { mounted.current = false }, []);\n\n useEffect(() => {\n setLoadedState(0);\n\n if (!src) {\n return;\n }\n\n const img = new window['Image']();\n img.src = src;\n\n let loaded = false;\n\n img.onload = () => {\n loaded = true;\n mounted.current && setLoadedState(2);\n };\n\n img.onerror = (e) => {\n window.console.log(e)\n window.console.log(\"error loading image\")\n }\n\n setTimeout(() => {\n if (loaded) return;\n mounted.current && setLoadedState(1);\n }, 300);\n }, [src]);\n\n return loadedState;\n};\n\nexport default useImgLoader;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useRef,\n useLayoutEffect,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { values, colors } from 'styles/variables';\nimport useImageLoader from 'hooks/useImageLoader';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport { Box } from 'theme-ui';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\n\nconst { headerHeight } = values;\nconst { lPink, lGrey4 } = colors;\n\nconst Circle = ({\n id,\n src,\n fit = 'cover',\n cachedSrc,\n children,\n}: {\n id: string | number;\n src: string;\n fit?: string;\n cachedSrc?: any;\n children?: any;\n}) => {\n const imgLoadedState = useImageLoader(src);\n //\n\n return imgLoadedState === 1 ? (\n <LoadingSpinner />\n ) : (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n }}\n >\n <Box\n sx={{\n width: '100%',\n height: '100%',\n maxWidth: '50vh',\n maxHeight: '50vh',\n }}\n >\n <Box\n sx={{\n position: 'relative',\n width: '100%',\n paddingTop: '100%',\n background: `url('${src}') no-repeat, ${lGrey4}`,\n backgroundPosition: 'center',\n backgroundSize: fit,\n borderRadius: '50%',\n img: {\n position: 'absolute',\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n opacity: 0,\n },\n }}\n >\n {children}\n </Box>\n </Box>\n </Box>\n );\n};\n\nconst cachedCircleSize = {};\n\ninterface ICircleCalculatedProps {\n id: string;\n src?: string;\n cachedSrc?: any;\n fit?: string;\n alt: string;\n linkData?: {\n url: string;\n title: string;\n target: string;\n };\n}\n\nconst CircleCalculated = (props: ICircleCalculatedProps) => {\n let { id, alt, linkData } = props;\n\n const { src, fit = 'cover' } = useSelector((state: State) => {\n return state.blocks[id].props!;\n });\n\n const imgLoadedState = useImageLoader(src);\n //\n\n const init = useRef<boolean>(false);\n const container = useRef<HTMLDivElement>(null);\n const circle = useRef<HTMLDivElement | HTMLAnchorElement>(null);\n const img = useRef<HTMLImageElement>(null);\n const hyperLink = useRef<HTMLAnchorElement>(null);\n\n const pageBackgroundColor = useRef<string>('#fff');\n const aHiliteColor = useRef<string>('#060709');\n\n useLayoutEffect(() => {\n const tick = setInterval(() => {\n if (container.current && circle.current && img.current) {\n //\n const parentNode = container.current.parentNode as HTMLDivElement;\n const parentHeight = parentNode.offsetHeight;\n const circleWidth = img.current.offsetWidth;\n const circleHeight = img.current.offsetHeight;\n const useParentHeight = parentHeight < circleWidth;\n\n container.current.style.minHeight = `${circleHeight}px`;\n\n cachedCircleSize[id] = `${\n useParentHeight ? parentHeight : circleWidth\n }px`;\n\n circle.current.style.width = circle.current.style.height =\n cachedCircleSize[id];\n\n if (\n !init.current &&\n circle.current.style.height === cachedCircleSize[id]\n ) {\n setTimeout(() => {\n if (circle.current) {\n circle.current.style.opacity = '1';\n }\n init.current = true;\n }, 1000 / 12);\n }\n\n //\n if (hyperLink.current) {\n hyperLink.current.style.width = hyperLink.current.style.height =\n cachedCircleSize[id];\n }\n }\n }, 1000 / 24);\n\n return () => {\n clearInterval(tick);\n };\n }, []);\n\n useEffect(() => {\n if (!container.current) {\n return;\n }\n\n const section = container.current.closest('section') as HTMLElement;\n\n if (!section) {\n return;\n }\n\n pageBackgroundColor.current = window.getComputedStyle(\n section\n ).backgroundColor;\n\n if (pageBackgroundColor.current === 'rgba(0, 0, 0, 0)') {\n pageBackgroundColor.current = '#fff';\n }\n\n const button = section?.querySelector<HTMLButtonElement>(\n '[data-as-exit-btn]'\n );\n\n if (button) {\n // get find button background color\n const buttonStyles = window.getComputedStyle(button);\n aHiliteColor.current = buttonStyles.backgroundColor;\n }\n }, []);\n\n return imgLoadedState === 1 ? (\n <LoadingSpinner />\n ) : (\n <Box\n ref={container}\n sx={{\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n\n a: {\n cursor: 'pointer',\n transition: 'box-shadow 0.1s',\n ...(window.dev &&\n window.dev() && {\n pointerEvents: 'none',\n }),\n },\n\n 'a:hover': {\n boxShadow: `0 0 0 2px ${pageBackgroundColor.current ||\n '#fff'}, 0 0 0 3px ${aHiliteColor.current} !important`,\n },\n\n 'a:focus': {\n boxShadow: `0 0 0 1px ${aHiliteColor.current}, 0 0 0 3px ${pageBackgroundColor.current}, 0 0 0 4px ${aHiliteColor.current} !important`,\n },\n }}\n >\n <img\n ref={img}\n src={src}\n style={{\n position: 'absolute',\n width: '100%',\n maxWidth: 'calc(50vh)',\n opacity: 0,\n }}\n alt={alt}\n />\n\n <Box\n ref={circle}\n as={linkData && 'a'}\n href={linkData && linkData.url}\n title={linkData && linkData.title}\n target={linkData && linkData.target}\n tabIndex={linkData && 0}\n sx={{\n position: 'relative',\n\n ...(cachedCircleSize[id] && {\n width: cachedCircleSize[id],\n height: cachedCircleSize[id],\n }),\n\n background: `url(\"${src}\") no-repeat`,\n backgroundSize: fit,\n backgroundPosition: 'center',\n borderRadius: '50%',\n opacity: cachedCircleSize[id] ? 1 : 0,\n }}\n ></Box>\n </Box>\n );\n};\n\nexport default CircleCalculated;\nexport { CircleCalculated };\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useRef,\n useEffect,\n useState,\n useLayoutEffect,\n useMemo,\n createContext,\n useContext,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { css, jsx } from '@emotion/core';\nimport closeFullscreen from 'assets/CloseFullscreenEmbed.svg';\nimport expand from 'assets/expand.svg';\nimport hexToRGB from 'services/hexToRGB';\n\nexport const ImageZoomContext = createContext({ overideStyles: {} });\n\nconst OPEN = 'open';\nconst CLOSE = 'close';\n\nconst ImageZoom = props => {\n const {\n src,\n description,\n noDescription,\n imageZoomBackgroundColor,\n imageZoomIconColor,\n } = props;\n\n const [zoom, setZoom] = useState<undefined | 'open' | 'close'>(undefined);\n const { overideStyles } = useContext(ImageZoomContext);\n\n const imageZoom = useRef<HTMLButtonElement>(null);\n\n const { r, g, b } = hexToRGB(imageZoomIconColor);\n\n const background = imageZoomIconColor\n ? `rgba(${r}, ${g}, ${b}, 1)`\n : 'rgba(0, 0, 0, 0.1)';\n\n useEffect(() => {\n if (zoom === undefined) {\n return;\n }\n\n document.body.style.overflowY = zoom === OPEN ? 'hidden' : 'auto';\n\n if (zoom === 'close') {\n requestAnimationFrame(() => {\n imageZoom?.current?.focus();\n setZoom(undefined);\n });\n }\n }, [zoom]);\n\n if (window.dev()) {\n // return null;\n }\n\n return (\n <_>\n <div\n css={css({\n position: 'absolute',\n display: 'flex',\n justifyContent: 'flex-end' || 'center',\n alignItems: 'center',\n bottom: '5px',\n width: '100%',\n height: 40,\n padding: '0 5px',\n\n //\n ...overideStyles,\n pointerEvents: 'none',\n })}\n >\n <button\n ref={imageZoom}\n className=\"zoom-image\"\n css={css({\n all: 'unset',\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: 40,\n height: 40,\n borderRadius: '50%',\n cursor: 'pointer',\n\n background,\n\n ':hover': {\n opacity: 0.5,\n },\n\n pointerEvents: 'auto',\n\n '*': {\n pointerEvents: 'none',\n },\n\n ':focus': {\n boxShadow: `0 0 0 1px ${'#000'}`,\n // TODO potentially add some color from somewhere\n // aHiliteColor.current\n },\n\n // color: '#000',\n })}\n onClick={e => {\n e.stopPropagation();\n setZoom(OPEN);\n }}\n aria-label=\"expand image\"\n title={description}\n >\n <img\n src={expand}\n css={css({\n position: 'relative',\n // top: 1,\n width: 15,\n height: 15,\n })}\n />\n </button>\n </div>\n\n {zoom &&\n (createPortal(\n <ImageZoomed\n setZoom={setZoom}\n src={src}\n description={description}\n noDescription={noDescription}\n imageZoomBackgroundColor={imageZoomBackgroundColor}\n />,\n document.querySelector('#image-zoom-container') as HTMLDivElement\n ) as React.ReactNode)}\n </_>\n );\n};\n\nconst ImageZoomed = props => {\n const {\n setZoom,\n src,\n description,\n noDescription,\n imageZoomBackgroundColor,\n } = props;\n\n const imageZoomed = useRef<HTMLDivElement>(null);\n const closeBtn = useRef<HTMLButtonElement>(null);\n useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n if (!closeBtn.current) {\n return;\n }\n\n // give focus when opened\n closeBtn.current.focus();\n }, []);\n\n useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n if (!imageZoomed.current) {\n return;\n }\n\n const onKeyDown = e => {\n switch (e.key) {\n case 'Tab': {\n // console.log('Tab captured in imageZoom', e.key);\n e.preventDefault();\n closeBtn?.current?.focus();\n return;\n }\n\n case 'Escape': {\n setZoom(CLOSE);\n }\n }\n };\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, []);\n\n return (\n <div\n ref={imageZoomed}\n css={css({\n all: 'unset',\n position: 'fixed',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n left: 0,\n top: 0,\n width: '100vw',\n height: '100vh',\n background: 'rgba(0, 0, 0, 0.8)',\n zIndex: 2147483647,\n })}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n <div\n className=\"fader_-5s\"\n style={{\n padding: 50,\n borderRadius: 10,\n background: imageZoomBackgroundColor,\n maxWidth: '90%',\n overflow: 'hidden',\n }}\n >\n <img\n src={src}\n alt={description || noDescription}\n style={{\n maxHeight: '90vh',\n }}\n />\n </div>\n\n <button\n ref={closeBtn}\n css={css({\n all: 'unset',\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n right: 20,\n top: 20,\n width: 40,\n height: 40,\n borderRadius: '50%',\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n cursor: 'pointer',\n\n ':hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.05)',\n },\n\n ':focus': {\n boxShadow: '0 0 0 1px #fff',\n },\n\n transition: 'box-shadow 0.2s',\n })}\n aria-label=\"close expanded image view\"\n onClick={e => {\n e.stopPropagation();\n setZoom(CLOSE);\n }}\n >\n <img src={closeFullscreen} />\n </button>\n </div>\n );\n};\n\nexport { ImageZoom };\n","/** @jsx jsx */\r\n\r\nimport React, {\r\n Fragment as _,\r\n useRef,\r\n useEffect,\r\n useState,\r\n useLayoutEffect,\r\n memo,\r\n useMemo,\r\n createContext,\r\n useContext,\r\n} from 'react';\r\nimport { css, jsx } from '@emotion/core';\r\nimport { useSelector } from 'react-redux';\r\nimport placeholder from 'assets/addImg@3x.svg';\r\nimport getBlockById from 'services/apiHelpers/getBlockById';\r\nimport {\r\n EditWrapper0,\r\n EditWrapper1,\r\n EditWrapper2,\r\n EditWrapper3,\r\n} from './EditWrappers';\r\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\r\nimport checkImgSrcIsGif from 'services/checkImgSrcIsGif';\r\nimport Circle from './Circle';\r\nimport getStore from 'services/getStore';\r\nimport { ImageZoom } from './ImageZoom';\r\nimport { getCache } from 'services/imageCache';\r\n\r\nconst store = getStore();\r\nconst cachedSrcs = {};\r\n\r\nconst cachedSrc = (id, src = null) => {\r\n if (src) {\r\n cachedSrcs[id] = src;\r\n return;\r\n }\r\n return cachedSrcs[id];\r\n};\r\n\r\nconst getCalculatedHeight = (\r\n imageWidth,\r\n imageHeight,\r\n maxHeight = 50,\r\n containerWidth\r\n) => {\r\n const ratio = imageWidth / imageHeight;\r\n const calculatedMaxHeight = window.innerHeight * (maxHeight / 100);\r\n let calculatedHeight = containerWidth / ratio;\r\n\r\n if (calculatedHeight > calculatedMaxHeight) {\r\n calculatedHeight = calculatedMaxHeight;\r\n }\r\n\r\n return calculatedHeight;\r\n};\r\n\r\nexport const ImageContext = createContext<{\r\n editWrapperType?: 0 | 1 | 2 | 3;\r\n editWrapperSize?: string;\r\n editWrapperUseIcon?: boolean;\r\n placeholder?: string;\r\n canUpdateContainerHeight?: boolean;\r\n padding?: number;\r\n}>({});\r\n\r\nconst Image = props => {\r\n const imageContext = useContext(ImageContext) as any;\r\n\r\n let {\r\n id,\r\n mediaParentId = null,\r\n editWrapperType = imageContext?.editWrapperType ??\r\n props?.editWrapperType ??\r\n 0,\r\n editWrapperSize = imageContext?.editWrapperSize ||\r\n props?.editWrapperSize ||\r\n '50%',\r\n editWrapperUseIcon = imageContext?.editWrapperUseIcon ??\r\n props?.editWrapperUseIcon ??\r\n true,\r\n padding = imageContext?.padding ?? props?.padding ?? 0,\r\n usePlaceholderValue = false,\r\n maxHeight = 50,\r\n\r\n //\r\n editWrapperPadding = 0,\r\n } = props;\r\n\r\n const block = getBlockById(id);\r\n\r\n const focusedNodeId = useSelector((state: any) => state.focusedNodeId);\r\n\r\n let {\r\n src = imageContext.placeholder || props.placeholder || placeholder,\r\n borderStyle = 'rectangle',\r\n fit = 'contain',\r\n fixedHeight = false,\r\n fixedHeightValue = 350,\r\n imgSize = 0,\r\n defaultHeight = true,\r\n imgContainerHeight = 0,\r\n imgMagnification = 100,\r\n description,\r\n layout = '',\r\n width = 800,\r\n height = 600,\r\n linkData,\r\n imageZoom = false,\r\n imageZoomIconColor,\r\n imageZoomBackgroundColor = '#fff',\r\n\r\n //\r\n } = (block && block.props) || ({} as any);\r\n\r\n const canUpdateContainerHeight =\r\n imageContext.canUpdateContainerHeight ??\r\n props.canUpdateContainerHeight ??\r\n true;\r\n\r\n const pageBackgroundColor = useRef<string>('#fff');\r\n const aHiliteColor = useRef<string>('#060709');\r\n\r\n src = useMemo(() => {\r\n if (window.dev()) {\r\n return src;\r\n }\r\n\r\n return checkImgSrcIsGif(src);\r\n }, [src]);\r\n\r\n let [imgLoadedState, setLoadedState] = useState(0);\r\n let [realSrc, setRealSrc] = useState<string | undefined>(undefined);\r\n\r\n useEffect(() => {\r\n const cacheAvailable = 'caches' in self;\r\n\r\n if (!cacheAvailable) {\r\n setLoadedState(2);\r\n return;\r\n }\r\n\r\n const cache = getCache();\r\n\r\n cache.then(c => {\r\n c.match(src)\r\n .then(response => {\r\n if (response) {\r\n if (!response.ok) {\r\n throw Error('invalid response');\r\n }\r\n // turn it into a usable src value\r\n // console.log('response is in the cache');\r\n return response.blob().then(blob => {\r\n // console.log('response is now a blob');\r\n\r\n const objectURL = URL.createObjectURL(blob);\r\n setRealSrc(objectURL);\r\n setLoadedState(2);\r\n });\r\n } else {\r\n // put in the cache for the future\r\n // console.log('not in cache');\r\n return fetch(src)\r\n .then(resp => {\r\n if (!resp.ok) {\r\n throw Error('invalid response');\r\n }\r\n\r\n const r2 = resp.clone();\r\n c.put(src, resp);\r\n return r2;\r\n })\r\n .then(resp => resp.blob())\r\n .then(blob => {\r\n // throw new Error('forced error');\r\n const objectURL = URL.createObjectURL(blob);\r\n setRealSrc(objectURL);\r\n setLoadedState(2);\r\n });\r\n }\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n c.delete(src);\r\n setLoadedState(2);\r\n });\r\n });\r\n\r\n setTimeout(() => {\r\n if (imgLoadedState !== 2) return;\r\n setLoadedState(1);\r\n }, 300);\r\n\r\n return () => {\r\n // console.log('ive been unmounted');\r\n };\r\n }, [src]);\r\n\r\n const selected = focusedNodeId === id;\r\n\r\n const image: any = useRef(null);\r\n const hasResized = useRef(false);\r\n\r\n const borderRadius = 50;\r\n\r\n useLayoutEffect(() => {\r\n if (!usePlaceholderValue || !image.current) {\r\n return;\r\n }\r\n\r\n const targetHeight = getCalculatedHeight(\r\n width,\r\n height,\r\n maxHeight,\r\n image.current.getBoundingClientRect().width\r\n );\r\n\r\n image.current.style.height = `${targetHeight}px`;\r\n\r\n const onResize = () => {\r\n if (!hasResized.current) {\r\n image.current.style.height = '';\r\n //\r\n window.removeEventListener('resize', onResize);\r\n hasResized.current = true;\r\n }\r\n };\r\n\r\n if (!hasResized.current && imgLoadedState === 2) {\r\n onResize();\r\n window.addEventListener('resize', onResize);\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('resize', onResize);\r\n };\r\n }, [imgLoadedState]);\r\n\r\n useEffect(() => {\r\n if (!image.current) {\r\n return;\r\n }\r\n\r\n const section = image.current.closest('section') as HTMLElement;\r\n\r\n if (!section) {\r\n return;\r\n }\r\n\r\n pageBackgroundColor.current = window.getComputedStyle(\r\n section\r\n ).backgroundColor;\r\n\r\n if (pageBackgroundColor.current === 'rgba(0, 0, 0, 0)') {\r\n pageBackgroundColor.current = '#fff';\r\n }\r\n\r\n const button = section?.querySelector<HTMLButtonElement>(\r\n '[data-as-exit-btn]'\r\n );\r\n\r\n if (button) {\r\n // get find button background color\r\n const buttonStyles = window.getComputedStyle(button);\r\n aHiliteColor.current = buttonStyles.backgroundColor;\r\n }\r\n }, []);\r\n\r\n if (realSrc) {\r\n src = realSrc;\r\n }\r\n\r\n const EditWrapper = window.dev()\r\n ? useMemo(\r\n () => ({ children }) =>\r\n ({\r\n '0': (\r\n <EditWrapper0\r\n id={id}\r\n mediaParentId={mediaParentId}\r\n padding={padding}\r\n selected={selected}\r\n >\r\n {children}\r\n </EditWrapper0>\r\n ),\r\n '1': (\r\n <EditWrapper1\r\n id={id}\r\n mediaParentId={mediaParentId}\r\n editWrapperUseIcon={editWrapperUseIcon}\r\n editWrapperSize={editWrapperSize}\r\n selected={selected}\r\n >\r\n {children}\r\n </EditWrapper1>\r\n ),\r\n '2': (\r\n <EditWrapper2\r\n id={id}\r\n mediaParentId={mediaParentId}\r\n selected={selected}\r\n >\r\n {children}\r\n </EditWrapper2>\r\n ),\r\n '3': (\r\n <EditWrapper3\r\n id={id}\r\n mediaParentId={mediaParentId}\r\n padding={padding}\r\n editWrapperPadding={editWrapperPadding}\r\n selected={selected}\r\n >\r\n {children}\r\n </EditWrapper3>\r\n ),\r\n }[editWrapperType]),\r\n [selected]\r\n )\r\n : ({ children }) => <_>{children}</_>;\r\n\r\n // parsed is not the correct term is it. but. . .\r\n let parsedImgSize;\r\n\r\n if (imgSize) {\r\n parsedImgSize = window.innerHeight / 2 + imgSize;\r\n }\r\n\r\n if (props.fullHeight) {\r\n parsedImgSize = window.innerHeight - 70 * 2;\r\n }\r\n\r\n const noDescription = '';\r\n\r\n if (borderStyle === 'circle') {\r\n return (\r\n <EditWrapper key={src}>\r\n <Circle\r\n id={id}\r\n src={src}\r\n alt={description || noDescription}\r\n fit={fit}\r\n cachedSrc={cachedSrc}\r\n linkData={linkData}\r\n />\r\n </EditWrapper>\r\n );\r\n }\r\n\r\n return (\r\n <_>\r\n <EditWrapper>\r\n <div\r\n ref={image}\r\n id={`chameleon-image-${id}`}\r\n className=\"chameleon-image\"\r\n css={css`\r\n position: relative;\r\n width: 100%;\r\n\r\n img:not(.zoom-image img) {\r\n width: 100%;\r\n max-height: ${50 + imgContainerHeight}vh;\r\n //\r\n\r\n ${imgContainerHeight >= 0\r\n ? `padding: ${imgContainerHeight / 2}px 0;`\r\n : `\r\n width: calc(100% - ${Math.abs(imgContainerHeight)}px);\r\n padding: 0;\r\n `}\r\n\r\n opacity: 0;\r\n\r\n @media (max-width: 768px) {\r\n max-height: unset;\r\n }\r\n }\r\n\r\n ${imgMagnification > 100 ? 'overflow: hidden;' : ''}\r\n\r\n ${window.dev &&\r\n !window.dev() &&\r\n linkData &&\r\n linkData.url &&\r\n `\r\n a {\r\n display: block;\r\n transition: box-shadow 0.1s;\r\n\r\n ${borderStyle === 'roundedRectangle' &&\r\n `border-radius: ${borderRadius}px;`}\r\n \r\n ${window.dev && window.dev() && 'pointer-events: none;'}\r\n }\r\n\r\n a:hover {\r\n box-shadow: 0 0 0 2px ${pageBackgroundColor.current ||\r\n '#fff'}, 0 0 0 3px ${aHiliteColor.current} !important;\r\n }\r\n\r\n a:focus {\r\n box-shadow: 0 0 0 1px ${aHiliteColor.current}, 0 0 0 3px ${\r\n pageBackgroundColor.current\r\n }, 0 0 0 4px ${aHiliteColor.current} !important;\r\n }\r\n \r\n `}\r\n `}\r\n data-can-update-container-height={canUpdateContainerHeight}\r\n >\r\n {imgLoadedState !== 2 ? (\r\n <LoadingSpinner />\r\n ) : (\r\n <div\r\n // id={id}\r\n css={css`\r\n\t\t\t\t\t\twidth: 100%;\r\n \r\n \r\n transform: scale(${imgMagnification * 0.01});\r\n\r\n\t\t\t\t\t\t${borderStyle === 'roundedRectangle' &&\r\n fit === 'contain' &&\r\n 'min-height: auto;'}\r\n\t\t\t\t\t\t\tbackground: url('${src}') no-repeat;\r\n\t\t\t\t\t\t\tbackground-size: ${fit};\r\n\t\t\t\t\t\t\tbackground-position: center;\r\n ${borderStyle === 'roundedRectangle' &&\r\n `border-radius: ${borderRadius}px;`}\r\n\r\n\t\t\t\t\t`}\r\n >\r\n {linkData ? (\r\n <a\r\n href={linkData.url}\r\n title={linkData.title}\r\n target={linkData.target}\r\n >\r\n <img\r\n id={`img-${id}`}\r\n src={src}\r\n alt={description || noDescription}\r\n style={{ pointerEvents: 'none' }}\r\n />\r\n </a>\r\n ) : (\r\n <img\r\n id={`img-${id}`}\r\n src={src}\r\n alt={description || noDescription}\r\n />\r\n )}\r\n </div>\r\n )}\r\n\r\n {imageZoom && (\r\n <ImageZoom\r\n src={src}\r\n description={description}\r\n noDescription={noDescription}\r\n imageZoomIconColor={imageZoomIconColor}\r\n imageZoomBackgroundColor={imageZoomBackgroundColor}\r\n />\r\n )}\r\n </div>\r\n </EditWrapper>\r\n </_>\r\n );\r\n};\r\n\r\n// moved the focusedNodeId into the component > react-redux useSelector hook\r\n// this makes sure our component updates when src changed\r\nexport default props => {\r\n return <Image key={props.src} {...props} />;\r\n};\r\n","import imagePlaceholder from 'assets/Wide Image 2.png';\nimport genericAdditionalPlaceholder from 'assets/genericAdditionalPlaceholder.png';\n\nexport const imgPlaceholders = {\n 0: imagePlaceholder,\n 1: genericAdditionalPlaceholder,\n};\n","import Image from './Image';\nimport { ImageContext } from './Image';\nimport { imgPlaceholders } from './imgPlaceholders';\nexport default Image;\nexport { ImageContext, imgPlaceholders };\n","/** @jsx jsx */\n\nimport { useState, useEffect, cloneElement } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Modal from 'components/UI/Modal';\nimport { ThemeProvider } from 'emotion-theming';\nimport { theme } from 'theme';\nimport getStore from 'services/getStore';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport setCurrentTopic from 'services/apiHelpers/setCurrentTopic';\nimport { getButtonFocus } from 'styles/variables';\nimport { clearLocationHistory } from 'services/clearLocationHistory';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport EditableText from 'components/lib/EditableText';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport Image from 'components/lib/Image';\nimport bookmark_graphic from 'assets/Character C.png';\nimport pubSub from 'services/pubSub';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\n//\nimport isAndroidSamsung from 'services/isAndroidSamsung';\nimport isiOS from 'services/isiOS';\n//\nconst store = getStore();\nconst breakpoint = 540;\n\nconst Button = props => {\n const { style, onClick, children } = props;\n\n return (\n <button\n css={css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n border: 'none',\n outline: 'none',\n width: 197,\n height: 46,\n margin: '20px 0 0 0',\n padding: 20,\n borderRadius: '9999px',\n background: '#19D1CF',\n fontSize: 14,\n color: '#fff',\n cursor: 'pointer',\n\n transition: 'opacity 0.2s',\n\n ':focus': {\n boxShadow: getButtonFocus('#060709').replace('box-shadow: ', ''),\n },\n\n ':hover': {\n opacity: 0.8,\n },\n\n ...style,\n })}\n onClick={onClick}\n >\n {children}\n </button>\n );\n};\n\nconst Bookmark = props => {\n const { updateBookmarkState } = props;\n const [bookmark, setBookmark] = useState<string | null>(\n // (!window.dev() && 'true') ||\n // 'true' || null\n null\n );\n\n const [showLoadingBookmark, setShowLoadingBookmark] = useState<boolean>(\n false\n );\n\n const {\n textColor,\n buttonBackgroundColor,\n buttonTextColor,\n fontFamily,\n } = store.getState().theme;\n\n const { bookmarkLocation, bookmarkLoaded } = useSelector((state: State) => {\n return {\n bookmarkLocation: state.bookmarkLocation,\n bookmarkLoaded: state.bookmarkLoaded,\n };\n });\n\n const bookmarkBlock = useSelector((state: State) => {\n return Object.values(state.blocks).find(block => {\n return block?.type === 'Bookmark';\n });\n });\n\n let renderedBookmarkBlock;\n if (bookmarkBlock) {\n renderedBookmarkBlock = renderBlock(bookmarkBlock, {\n Image,\n Text: EditableText,\n EditableButton: EditableBtn,\n });\n }\n\n const [img, txt, noBtn, yesBtn] =\n renderedBookmarkBlock?.props?.children || [];\n\n const hasTextContent = txt?.props?.content ? 'true' : 'false';\n\n const resetAriaAndOverflowY = () => {\n const tick = setInterval(() => {\n const root = document.querySelector('#root')!;\n\n root.setAttribute('aria-hidden', 'false');\n document.body.style.overflowY = 'auto';\n\n if (document.body.style.overflowY === 'auto') {\n clearInterval(tick);\n }\n }, 100);\n };\n\n useEffect(() => {\n if (hasTextContent === 'false') {\n requestAnimationFrame(() => {\n setBlockProps(getBlockById(txt.props.id), {\n content:\n '<p data-type=\"paragraph\">Would you like to return to where you left off?</p>',\n });\n });\n }\n }, []);\n\n useEffect(() => {\n if (window.dev && window.dev()) {\n return;\n }\n\n if (!bookmarkLocation || bookmarkLocation === 'null') {\n return;\n }\n\n console.log('bookmark prevents body from scrolling');\n\n const root = document.querySelector('#root')!;\n\n const tick = setInterval(() => {\n const ariaHidden = root.getAttribute('aria-hidden');\n\n if (ariaHidden === 'false') {\n root.setAttribute('aria-hidden', 'true');\n\n // run the check for mobile device and don't hide the overflow\n // why ? this is to prevent what SEEMS to be a very rare timing issue\n // brought to attention with an etrainu module that is ONLY an assessment but with bookmarking\n // tested with client and working to solve the problem. but would like to investigate more\n //\n // if (!(isAndroidSamsung || isiOS)) {\n // document.body.style.overflowY = 'hidden';\n // }\n\n document.body.style.overflowY = 'hidden';\n\n clearInterval(tick);\n }\n }, 1000 / 60);\n\n return () => {\n clearInterval(tick);\n };\n }, [bookmarkLocation]);\n\n useEffect(() => {\n const location = bookmarkLocation;\n\n if (!location || location === 'null') {\n return;\n }\n\n // testing this as 1/1\n // but need to calculate what the actual first topic / interaction is\n\n const firstTopic: any = getTopics()[0];\n const firstInteraction: any = getInteractionsInTopic(firstTopic)[0];\n\n if (!firstTopic || !firstInteraction) {\n return;\n }\n\n const firstTopicSId = firstTopic.props.sId || firstTopic.id;\n const firstInteractionSId =\n firstInteraction.props.sId || firstInteraction.id;\n\n if (\n location &&\n location !== '' &&\n location !== `${firstTopicSId}/${firstInteractionSId}`\n ) {\n //\n\n setBookmark(location);\n }\n }, [bookmarkLoaded, bookmarkLocation]);\n\n useEffect(() => {\n // testing this out\n if (!bookmark) {\n updateBookmarkState(0);\n return;\n }\n\n updateBookmarkState(1);\n }, [bookmark]);\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n const pS = pubSub.subscribe('SHOW_BOOKMARK', ({ showBookmark }) => {\n setBookmark(showBookmark ? 'true' : null);\n });\n\n return () => {\n pS();\n };\n }, []);\n\n useEffect(() => {\n if (!bookmark) {\n return;\n }\n\n const pS = pubSub.subscribe('MODULE_NAVIGATION', ({ navToHash }) => {\n // i'm ' turning this off ' for the moment to get a better idea\n // of the blocking that happens when we attempt to show the loading spinner\n // from this event\n //\n // if (navToHash === 'starts') {\n // setShowLoadingBookmark(true);\n // return;\n // }\n\n if (navToHash === 'ends') {\n requestAnimationFrame(() => {\n clearLocationHistory();\n setBookmark(null);\n setShowLoadingBookmark(false);\n //\n updateBookmarkState(2);\n\n resetAriaAndOverflowY();\n });\n }\n });\n\n return () => {\n pS();\n //\n };\n }, [bookmark]); //\n\n const noBtnOnClick = () => {\n setCurrentTopic(getTopics()[0].id);\n setBookmark(null);\n setShowLoadingBookmark(false);\n //\n updateBookmarkState(2);\n\n resetAriaAndOverflowY();\n };\n\n const yesBtnOnClick = () => {\n if (bookmark) {\n // this seems to work to display the spinner\n //\n setShowLoadingBookmark(true);\n\n requestAnimationFrame(() => {\n window.location.hash = bookmark;\n\n // we do this to clear these values which are set when navigating\n // nav to bookmark is its own special case where we do not want / need them\n // and always want to nav to the logical prev section or topic\n setTimeout(() => {\n window.persistHistory = false;\n window.locationHistory = null;\n }, 800);\n });\n }\n };\n\n return !!bookmark ? (\n <ThemeProvider theme={theme}>\n <Modal\n key={hasTextContent}\n disableNullSpaceClick\n useFader={window.dev() ? true : false}\n onClose={() => {\n setBookmark(null);\n //\n updateBookmarkState(2);\n\n resetAriaAndOverflowY();\n }}\n >\n <div\n id=\"chameleon-bookmark\"\n css={css({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n maxWidth: '540px',\n padding: '100px 0',\n pointerEvents: showLoadingBookmark ? 'none' : 'auto',\n })}\n >\n {img ? (\n cloneElement(img, {\n placeholder: bookmark_graphic,\n })\n ) : (\n <img\n src={bookmark_graphic}\n css={css({\n width: '100%',\n maxWidth: 540,\n margin: '0 0 30px 0',\n })}\n />\n )}\n\n <div\n css={css({\n width: '100%',\n margin: '10px 0 0 0',\n fontWeight: 400,\n fontSize: 18,\n textAlign: 'center',\n\n [`@media (max-width: ${breakpoint}px)`]: {\n padding: '0 20px',\n },\n })}\n >\n {txt ? (\n txt\n ) : (\n <p\n className=\"chameleon-text\"\n css={css({\n fontWeight: 400,\n fontSize: 18,\n textAlign: 'center',\n })}\n >\n Would you like to return to where you left off?\n </p>\n )}\n </div>\n\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n flexWrap: 'wrap',\n margin: '30px 0',\n button: {\n minWidth: 197,\n margin: '0 20px',\n [`@media (max-width: ${breakpoint}px)`]: {\n ':first-child': {\n marginBottom: 20,\n },\n },\n },\n\n 'div [class*=\"GenericButton\"]': {\n //\n\n left: '10px',\n top: '-10px',\n width: 'calc(100% - 20px)',\n },\n })}\n >\n {noBtn ? (\n cloneElement(noBtn, {\n onClick() {\n noBtnOnClick();\n },\n })\n ) : (\n <Button\n style={{\n background: '#fff',\n outline: '1px solid #060709',\n color: '#060709',\n opacity: showLoadingBookmark ? 0.3 : 1,\n transition: 'opacity 0.2s',\n }}\n onClick={() => {\n noBtnOnClick();\n }}\n >\n No\n </Button>\n )}\n {/* */}\n {yesBtn ? (\n cloneElement(yesBtn, {\n onClick() {\n yesBtnOnClick();\n },\n })\n ) : (\n <Button\n style={{\n position: 'relative',\n color: '#fff',\n background: '#060709',\n fontFamily,\n boxShadow:\n '-16px -16px 27px rgba(255, 255, 255, 0.5), 16px 16px 27px rgba(37, 59, 176, 0.14393)',\n }}\n onClick={() => {\n yesBtnOnClick();\n }}\n >\n Yes{' '}\n <div\n style={{\n position: 'absolute',\n right: 10,\n top: 46 / 2 - 30 / 2,\n }}\n >\n {showLoadingBookmark && <LoadingSpinner size={30} />}\n </div>\n </Button>\n )}\n </div>\n </div>\n </Modal>\n </ThemeProvider>\n ) : null;\n};\n\nexport default Bookmark;\n","const clearLocationHistory = () => {\n const locationHistory = window.locationHistory;\n\n const checkHistory = setInterval(() => {\n if (locationHistory !== window.locationHistory) {\n clearInterval(checkHistory);\n\n requestAnimationFrame(\n () =>\n (window.location.hash = Math.random()\n .toString(16)\n .substr(2, 8))\n );\n\n (window as any).locationHistory = null;\n }\n }, 1000 / 60);\n};\n\nexport { clearLocationHistory };\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\n\nexport const FontManager = connect((s: any) => {\n return {\n fonts: s.customFonts,\n };\n})(({ fonts = [] }: any) => {\n useEffect(() => {\n if (!fonts.length) {\n return;\n }\n //\n\n if (window.FontFace) {\n fonts.map(family => {\n family.fonts.map(font => {\n const ff = new window.FontFace(family.name, `url(${font.url})`, {\n weight: font.weight,\n style: font.style,\n });\n ff.load().then(() => {\n document.fonts.add(ff);\n });\n });\n });\n }\n }, [fonts]);\n\n return null;\n});\n","/** @jsx jsx */\n\nimport { Fragment as _, useState } from 'react';\n\nimport { css, jsx } from '@emotion/core';\n\nimport { GettingStartedVideo } from './GettingStartedVideo';\nimport CC_Phone_Character from 'assets/CC_Phone Character.png';\nimport addInteractionDefault from 'assets/addInteractionDefault.svg';\nimport addInteractionHover from 'assets/addInteractionHover.svg';\nimport playVideoDefault from 'assets/playVideoDefault.svg';\nimport playVideoHover from 'assets/playVideoHover.svg';\nimport PlayDefault from 'assets/Play Default.svg';\nimport PlayHover from 'assets/Play Hover.svg';\nimport theGwillest from 'assets/the Gwillest.png';\nimport pubSub from 'services/pubSub';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport addInteractionBKG from 'assets/addInteractionBKG.svg';\nimport theresNothingHereYet from 'assets/theresNothingHereYet.png';\nimport watchAQuickHowToVideo from 'assets/watchAQuickHowToVideo.png';\n\nconst Hover = ({ children }) => {\n const [hover, setHover] = useState(false);\n\n return (\n <div onMouseOver={() => setHover(true)} onMouseOut={() => setHover(false)}>\n {children(hover)}\n </div>\n );\n};\n\nconst DashboardRow = props => {\n const { color = '#000', background = '#fff', children } = props;\n\n return (\n <div\n css={css({\n display: 'flex',\n flex: 1,\n justifyContent: 'center',\n width: '100%',\n padding: 20,\n borderRadius: 20,\n margin: '10px 0',\n color,\n background,\n })}\n >\n {children}\n </div>\n );\n};\n\nconst Templates = () => {\n return (\n <_>\n <div style={{ margin: '20px 0', fontSize: 18, fontWeight: 500 }}>\n Start with a template\n </div>\n <div style={{ fontSize: 12, fontWeight: 500 }}>\n Click here to access library\n </div>\n <div>\n <button\n css={css({\n all: 'unset',\n width: 200,\n height: 45,\n margin: '25px 0',\n background: '#19D1CF',\n color: '#fff',\n textAlign: 'center',\n borderRadius: 9999,\n cursor: 'pointer',\n transition: 'opacity 0.2s',\n ':hover': {\n opacity: 0.8,\n },\n })}\n onClick={() => {\n pubSub.publish('SHOW_MODULE_TEMPLATES', {\n showModuleTemplates: true,\n });\n }}\n >\n Templates\n </button>\n </div>\n </_>\n );\n};\n\nconst DashBoard = () => {\n // const [gettingStarted, setGettingStarted] = useState<boolean>(false);\n\n const paddingX = '10vw';\n const paddingY = '108px';\n\n return (\n <div\n css={css({\n position: 'fixed',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n left: 0,\n top: 70,\n width: '100vw',\n height: 'calc(100vh - 70px)',\n padding: `${paddingY} ${paddingX}`,\n })}\n >\n <DashboardRow color={'#fff'} background={'#9338FF'}>\n <div\n css={css({\n flex: 1,\n height: `calc(100% + 50px)`,\n background: `url('${CC_Phone_Character}') no-repeat`,\n backgroundSize: 'contain',\n backgroundPosition: 'center bottom',\n transform: 'translate(50px, -50px)',\n })}\n />\n\n <div\n css={css({\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '0 20px',\n })}\n >\n <div>\n <h1\n style={{\n fontSize: 24,\n fontWeight: 500,\n margin: '0 0 15px 0',\n textAlign: 'center',\n }}\n >\n Jump straight into it\n </h1>\n <h2\n style={{\n fontSize: 16,\n fontWeight: 200,\n textAlign: 'center',\n }}\n >\n Start with an interaction\n </h2>\n </div>\n </div>\n\n <div\n css={css({\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n fontSize: 12,\n })}\n >\n <Hover>\n {hover => (\n <img\n src={hover ? addInteractionHover : addInteractionDefault}\n style={{\n width: 60,\n margin: '0 0 15px 0',\n cursor: 'pointer',\n transition: 'all 0.2s',\n transform: `scale(${hover ? 1.1 : 1})`,\n transformOrigin: 'center',\n }}\n onClick={e => {\n parent.setNewSectionWizard &&\n parent.setNewSectionWizard(true);\n }}\n />\n )}\n </Hover>\n <div>Add an interaction</div>\n </div>\n </DashboardRow>\n\n <DashboardRow background={'#F5F6FB'}>\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n\n flex: 1,\n })}\n >\n <Hover>\n {hover => (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'relative',\n }}\n >\n <img\n src={hover ? PlayHover : PlayDefault}\n css={css({\n width: 60,\n height: 60,\n cursor: 'pointer',\n transition: 'all 0.2s',\n transform: `scale(${hover ? 1.1 : 1})`,\n transformOrigin: 'center',\n })}\n onClick={e => {\n pubSub.publish('SHOW_GETTING_STARTED_VIDEO', {\n showGettingStartedVideo: true,\n });\n }}\n />\n\n <img\n src={theGwillest}\n style={{\n position: 'absolute',\n right: -15,\n top: -15,\n width: 30,\n height: 30,\n border: '2px solid #fff',\n borderRadius: '50%',\n pointerEvents: 'none',\n }}\n />\n </div>\n </div>\n )}\n </Hover>\n </div>\n\n <div\n style={{\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n color: '#000',\n fontSize: 24,\n fontWeight: 500,\n textAlign: 'center',\n }}\n >\n <div>Watch a quick</div>\n <div>“how to†video</div>\n </div>\n\n <div\n css={css({\n flex: 1,\n height: `calc(100% + 20px)`,\n background: `url('${watchAQuickHowToVideo}') no-repeat`,\n backgroundSize: 'contain',\n backgroundPosition: 'center bottom',\n transform: 'translate(-30px, -20px)',\n })}\n />\n </DashboardRow>\n </div>\n );\n};\n\nconst EmptySection = () => {\n const moduleHasInteractions = useSelector((state: State) => {\n return Object.values(state.blocks)\n .filter(b => {\n return b?.meta?.subType === 'Interaction';\n })\n .some(i => {\n return i?.children?.length;\n });\n });\n\n if (window.dev() && !moduleHasInteractions) {\n return <DashBoard />;\n }\n\n return (\n <div\n style={{\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n height: '100vh',\n }}\n >\n {!window.dev() ? (\n <_>\n <div\n style={{\n width: '50%',\n height: '50%',\n background: `url('${theresNothingHereYet}') no-repeat`,\n backgroundSize: 'contain',\n backgroundPosition: 'center',\n }}\n />\n <div\n style={{\n position: 'relative',\n top: '30px',\n textAlign: 'center',\n color: '#0094ff',\n fontWeight: 300,\n }}\n >\n There are no interactions here yet\n </div>\n </_>\n ) : (\n <_>\n <div\n style={{\n position: 'absolute',\n width: '50%',\n height: '50%',\n background: `url('${addInteractionBKG}') no-repeat`,\n backgroundSize: 'contain',\n backgroundPosition: 'center',\n }}\n />\n <button\n style={{\n all: 'unset',\n position: 'relative',\n width: 60,\n height: 60,\n }}\n onClick={e => {\n parent.setNewSectionWizard && parent.setNewSectionWizard(true);\n }}\n >\n <AddInteractionBtn />\n </button>\n <div\n style={{\n position: 'relative',\n top: '15px',\n textAlign: 'center',\n color: '000',\n fontWeight: 500,\n }}\n >\n Add an interaction.\n </div>\n </_>\n )}\n </div>\n );\n};\n\nconst AddInteractionBtn = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"60\"\n height=\"60\"\n viewBox=\"0 0 60 60\"\n css={css({\n position: 'relative',\n cursor: 'pointer',\n fill: 'none',\n ':hover': {\n '.actual-btn': {\n fill: '#00D9D3',\n },\n },\n })}\n >\n <rect\n className=\"actual-btn\"\n width=\"60\"\n height=\"60\"\n rx=\"12\"\n css={css({\n fill: '#1D2026',\n transition: 'fill 0.2s',\n })}\n />\n <rect x=\"28\" y=\"18\" width=\"4\" height=\"24\" fill=\"white\" />\n <rect\n x=\"18\"\n y=\"32\"\n width=\"4\"\n height=\"24\"\n transform=\"rotate(-90 18 32)\"\n fill=\"white\"\n />\n </svg>\n );\n};\n\nexport default EmptySection;\n","import EmptySection from './EmptySection';\n\nexport default EmptySection;\n","import React from 'react';\nimport styled from '@emotion/styled-base';\ninterface WrapParams {\n width: number;\n height: number;\n weight: number;\n delay: number;\n rotate: number;\n}\n\nconst Wrapper = styled('div') <WrapParams>`\n position: relative;\n width: ${p => p.width + p.weight}px;\n height: ${p => p.height + p.weight}px;\n transform: rotate(${p => p.rotate}deg);\n transform-origin: 50% 50%;\n transition: transform 0.2s;\n ${p => p.delay && `transition-delay: ${p => p.delay}s;`}\n`;\ninterface LineProps {\n color: string;\n weight: number;\n}\n\nconst Line = styled('polyline') <LineProps>`\n fill: none;\n stroke: ${p => p.color};\n stroke-width: ${p => p.weight};\n stroke-linejoin: miter;\n stroke-miterlimit: 10;\n transform: translateY(${p => p.weight / 4}px) scale(0.8);\n transform-origin: 50% 50%;\n`;\n\nconst Arrow = ({\n color = '#fff',\n height = 16,\n rotate = 0,\n delay = 0,\n weight = 2,\n width = 8,\n onClick = () => { },\n}) => {\n return (\n <Wrapper\n height={height}\n width={width}\n rotate={rotate}\n weight={weight}\n delay={delay}\n >\n <svg width=\"100%\" height=\"100%\">\n <Line\n points={`0,0 ${width},${height / 2} 0,${height}`}\n weight={weight}\n color={color}\n />\n </svg>\n </Wrapper>\n );\n};\n\nexport default Arrow;\n","import getBlockById from 'services/apiHelpers/getBlockById';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport { setInteractionsLockedData } from 'services/scorm/scormService';\nimport getStore from 'services/getStore';\n\nconst unlockInteraction = (id, length = 0) => {\n // console.log('unlock interaction', id, length);\n\n // return () => {};\n\n if (window.dev()) {\n return () => {};\n }\n\n const block = getBlockById(id);\n\n //\n\n if (!!!length) {\n // resolve any truthy value\n // was strict equality === 1\n if (block.props!.lockDown) {\n // setInteractionsLockedData(id);\n // setBlockProps(block, { lockDown: 0 });\n\n getStore().dispatch({\n type: 'UPDATE_INTERACTIONS_LOCKED',\n data: { id },\n });\n }\n\n return () => {};\n }\n\n let itemsSeen = [] as any[];\n\n return entry => {\n // resolve any falsey value\n // was strict equality === 0\n if (!block.props!.lockDown) {\n return;\n }\n\n itemsSeen = itemsSeen.includes(entry) ? itemsSeen : [...itemsSeen, entry];\n itemsSeen.length === length &&\n setTimeout(() => {\n // setInteractionsLockedData(id);\n // setBlockProps(block, { lockDown: 0 });\n\n getStore().dispatch({\n type: 'UPDATE_INTERACTIONS_LOCKED',\n data: { id },\n });\n }, 100);\n\n return itemsSeen;\n };\n};\n\nexport default unlockInteraction;\nexport { unlockInteraction };\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport { Box, Flexbox, Row, Text } from '@chameleoncreator/creator-ui';\nimport { css, jsx } from '@emotion/core';\nimport Arrow from 'components/UI/Arrow';\nimport { keyframes } from 'emotion';\nimport { ThemeProvider } from 'emotion-theming';\nimport { motion } from 'framer-motion';\nimport React, {\n cloneElement,\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useSelector } from 'react-redux';\nimport hexToRgb, { getHexToRgbWithDefaultFallback } from 'services/hexToRGB';\nimport isAndroidSamsung from 'services/isAndroidSamsung';\nimport isAppleComputerInc from 'services/isAppleComputerInc';\nimport unlockInteraction from 'services/unlockInteraction';\nimport updateReadOnlyText from 'services/updateReadOnlyText';\nimport { State } from 'store/store';\nimport { interactionContext as InteractionContext } from './interactionContext';\n\nconst fader = keyframes`\nfrom {\n opacity: 0;\n}\nto {\n opacity: 1;\n}\n`;\n\n//\nconst defaultBorderRadius = 6;\nconst highContrastBorderThickness = 4;\n\n// Close all the accordions (used when e)\nconst close = (obj: {}): {} => {\n return Object.keys(obj).reduce((a, k) => {\n a[k] = false;\n return a;\n }, {});\n};\n\nconst clearFieldHilites = () => {\n const fieldsClosed = Array.from(\n document.querySelectorAll('.accordion-field') as NodeList\n ) as HTMLElement[];\n\n fieldsClosed.forEach(field => {\n field.style.boxShadow = `none`;\n });\n};\n\n// The useAccordion hook is a state object that allows\n// for accordions open/close state to be tracked and altered.\n// If the exclusive tag is passed in, it will close all the\n// fields when one is openned\nconst useAccordion = (\n unlock: () => void,\n count: number,\n exclusive?: boolean\n) => {\n const [state, setState] = useState({\n open: {},\n viewed: {},\n });\n\n const toggle = (key: string) => {\n const past = exclusive ? close(state.open) : { ...state.open };\n const viewed = state.viewed[key.toString()]\n ? state.viewed\n : { ...state.viewed, [key.toString()]: true };\n\n if (Object.keys(viewed).length === count) {\n unlock();\n }\n\n setState({\n ...state,\n viewed,\n open: { ...past, [key]: !state.open[key] },\n });\n };\n\n const isOpen = (key: string) => {\n return state.open[key] || false;\n };\n\n return { toggle, isOpen };\n};\n\ninterface AccordionCtx {\n toggle(key: string): void;\n isOpen(key: string): boolean;\n}\n\nconst AccordionContext = createContext<AccordionCtx>({\n toggle: () => {},\n isOpen: () => false,\n});\n\n// A field is the grouping of headers and bodies of accordion fields.\n// It passes information down the the header / body to toggle and\n// open status\nexport const Field = ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n\n const { toggle, isOpen } = useContext(AccordionContext);\n const {\n headingColor,\n borderColor,\n includeBorder = true,\n borderRadius = defaultBorderRadius,\n includeFieldBodyBackground = true,\n fieldBodyBackgroundOpacity = 100,\n fieldBodyBackgroundColor = '#fff',\n } = interactionContext.props;\n const idx = props.idx;\n const trigger = () => {\n toggle(idx);\n };\n\n const interactionIsOpen = useSelector((state: State) => {\n return state.interactionsOpen.includes(interactionContext.id);\n });\n\n const isFieldOpen = isOpen(idx);\n\n const { r, g, b } = getHexToRgbWithDefaultFallback(\n fieldBodyBackgroundColor,\n '#ffffff'\n );\n\n let a = fieldBodyBackgroundOpacity / 100;\n if (!fieldBodyBackgroundColor) {\n a = 0;\n }\n\n useEffect(() => {\n const onFocus = () => {\n const { activeElement } = document;\n\n // used for when we tab out of the accordion 'boundary'\n // if the element with focus is not a fieldHeader\n // clearFieldHilites\n if (!activeElement?.className.match('FieldHeader')) {\n clearFieldHilites();\n }\n };\n\n document.addEventListener('focus', onFocus, true);\n\n return () => {\n document.removeEventListener('focus', onFocus, true);\n };\n }, []);\n\n const fieldBody = useRef<HTMLDivElement>(null);\n const headerHeight = useRef<number>(0);\n\n useLayoutEffect(() => {\n if (!fieldBody.current) {\n return;\n }\n\n const header = fieldBody.current.querySelector(\n '[class*=\"FieldHeader\"]'\n ) as HTMLElement;\n headerHeight.current = header.getBoundingClientRect().height;\n }, [interactionIsOpen, isFieldOpen]);\n\n return (\n <Box\n ref={fieldBody}\n className={`accordion-field ${isFieldOpen ? 'accordion-field-open' : ''}`}\n mt={1}\n mb={1}\n css={css({\n position: 'relative',\n border: includeBorder\n ? `1px solid ${borderColor || headingColor || '#222'}`\n : 'none',\n borderRadius,\n })}\n >\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n ...(headerHeight.current && {\n background: includeFieldBodyBackground\n ? `rgba(${r}, ${g}, ${b}, ${a})` || fieldBodyBackgroundColor\n : 'transparent',\n borderRadius,\n\n clipPath: `polygon(0 ${headerHeight.current}px, 100% ${headerHeight.current}px, 100% 100%, 0 100%)`,\n }),\n }}\n />\n <div\n style={{\n position: 'relative',\n }}\n >\n {React.Children.map(children, child =>\n cloneElement(child, { trigger, isOpen: isFieldOpen })\n )}\n </div>\n </Box>\n );\n};\n\ninterface HeaderProps {\n children: JSX.Element | string;\n foreground?: string;\n background?: string;\n}\n\ninterface InjectdProps {\n isOpen: boolean;\n trigger(key: string): void;\n}\n\n// The Field Header is\nexport const FieldHeader = ({\n children,\n foreground = '#fff',\n background = '#222',\n ...props\n}: HeaderProps) => {\n const { isOpen, trigger } = props as InjectdProps;\n\n const {\n includeHeadingBackground = true,\n headingBackgroundOpacity = 100,\n headingColor,\n headingTextColor,\n includeBorder = true,\n borderRadius = defaultBorderRadius,\n } = useContext(InteractionContext).props;\n\n const highContrast = useSelector((state: State) => {\n return state.theme.highContrast;\n });\n\n const fieldHeaderRef = useRef<HTMLElement>(null);\n\n const fieldFauxFocus = `0 0 0 1px #fff, 0 0 0 ${\n highContrast ? highContrastBorderThickness : 2\n }px ${headingColor}`;\n\n const { r, g, b } = hexToRgb(headingColor || background);\n const a = headingBackgroundOpacity / 100;\n\n //\n const borderRadiusRealculatedForCSSBug =\n borderRadius + (includeBorder ? -1 : 0);\n\n return (\n <ThemeProvider theme={{ Text: { color: headingTextColor || foreground } }}>\n <Flexbox\n ref={fieldHeaderRef}\n as=\"button\"\n border=\"none\"\n flexDirection=\"row\"\n alignItems=\"center\"\n css={css`\n position: relative;\n // left: -1px;\n // width: calc(100% + 2px);\n width: 100%;\n\n background: ${includeHeadingBackground\n ? `rgba(${r}, ${g}, ${b}, ${a})` || headingColor || background\n : 'transparent'};\n\n .chameleon-text {\n padding: 10px ${window.dev() ? '5px' : '7px'};\n }\n\n border-radius: ${isOpen\n ? `${borderRadiusRealculatedForCSSBug}px ${borderRadiusRealculatedForCSSBug}px 0 0`\n : `${borderRadiusRealculatedForCSSBug}px`};\n\n transition: border-radius ${0.225 / 1.5}s;\n\n &:focus-visible {\n box-shadow: ${!isOpen ? fieldFauxFocus : 'none'};\n }\n\n ${!isOpen &&\n `\n &:focus {\n // box-shadow: ${fieldFauxFocus};\n }\n\n &:focus-visible {\n // box-shadow: ${fieldFauxFocus};\n }\n\n `}\n\n cursor: pointer;\n `}\n onFocus={e => {\n clearFieldHilites();\n\n if (isOpen) {\n const fieldOpen = document.querySelector(\n '.accordion-field-open'\n ) as HTMLElement;\n\n if (fieldOpen) {\n //\n fieldOpen.style.boxShadow = fieldFauxFocus;\n //\n }\n }\n }}\n onClick={e => {\n trigger('');\n }}\n onKeyUp={e => {\n if (window.dev()) {\n e.preventDefault();\n return;\n }\n\n if (e.keyCode === 32) {\n e.currentTarget.click();\n }\n }}\n p={2}\n aria-expanded={isOpen}\n >\n <Text\n as=\"div\"\n flex=\"1\"\n textAlign=\"left\"\n css={css`\n * div {\n color: ${headingTextColor};\n }\n\n p {\n // line-height: auto !important;\n }\n `}\n >\n {children}\n </Text>\n <Box flex={0} p={1} pl={3} pr={2}>\n <Arrow\n color={headingTextColor || '#fff'}\n rotate={isOpen ? 90 : 0}\n delay={isOpen ? 0.25 : 0}\n />\n </Box>\n </Flexbox>\n </ThemeProvider>\n );\n};\n\n// This posed element is responsible for the transition between open and closed states\n// const Collapse = posed.div({\n// closed: { height: 0 },\n// open: { height: 'auto' },\n// });\n\nexport const FieldBody = ({ children, ...props }) => {\n const { isOpen } = props as InjectdProps;\n const { id } = props;\n\n const fieldBody = useRef<HTMLDivElement>(null);\n\n const { fieldBodyTextColor, borderRadius = 0 } = useContext(\n InteractionContext\n ).props;\n\n //\n // var it for testing . . .\n const isDevice = isAppleComputerInc() || isAndroidSamsung();\n\n useEffect(() => {\n if (!fieldBody.current || !isOpen) {\n return;\n }\n\n // .chameleon-text,\n const fieldBodyElements = Array.from(\n fieldBody.current.querySelectorAll(\n 'img, .video-player-container, [class*=\"Audio\"] img, audio, svg'\n )\n ) as HTMLElement[];\n\n if (!fieldBodyElements?.length) {\n return;\n }\n\n fieldBodyElements.forEach(entry => {\n entry.setAttribute('tabIndex', '0');\n });\n\n fieldBodyElements[0].focus();\n }, [isOpen]);\n\n if (window.dev && !window.dev() && isDevice) {\n const IsAppleAndroid = ({ children }) => {\n useLayoutEffect(() => {\n const rowFieldBody = document.querySelector(`#i${id}`);\n rowFieldBody && updateReadOnlyText(rowFieldBody);\n }, []);\n\n return (\n <Row\n id={`i${id}`}\n className={isOpen ? 'fader_1s' : ''}\n css={css`\n height: ${isOpen ? 'auto' : 0};\n margin: 0 !important;\n padding: 0 !important;\n border-radius: 0 0 ${borderRadius}px ${borderRadius}px;\n\n p,\n li > span {\n color: ${fieldBodyTextColor};\n }\n\n overflow: hidden;\n `}\n aria-hidden={!isOpen}\n aria-live=\"assertive\"\n >\n {children}\n </Row>\n );\n };\n\n return <IsAppleAndroid>{children}</IsAppleAndroid>;\n }\n\n return (\n <motion.div\n ref={fieldBody}\n id={`i${id}`}\n style={{\n display: 'none',\n overflow: 'hidden',\n borderRadius: `0 0 ${borderRadius}px ${borderRadius}px`,\n }}\n initial={{\n height: 0,\n opacity: 0,\n }}\n transition={{\n duration: 0.225,\n ease: 'easeOut',\n }}\n animate={{\n height: isOpen ? 'auto' : 0,\n opacity: isOpen ? 1 : 0,\n //\n }}\n onAnimationStart={() => {\n if (isOpen && fieldBody.current) {\n fieldBody.current.style.display = '';\n }\n }}\n onAnimationComplete={() => {\n if (!isOpen && fieldBody.current) {\n fieldBody.current.style.display = 'none';\n }\n }}\n aria-hidden={!isOpen}\n aria-live=\"assertive\"\n >\n <Row\n css={css`\n p,\n li > span {\n color: ${fieldBodyTextColor};\n }\n `}\n >\n {children}\n </Row>\n </motion.div>\n );\n};\n\n// An accordion is made up of 1 or more children\ninterface AccordionProps {\n children: JSX.Element[] | JSX.Element;\n}\n\nexport const Accordion = ({ children }: AccordionProps) => {\n const iContext = useContext(InteractionContext);\n const interactionsLocked = useSelector((state: State) => {\n return state.interactionsLocked;\n });\n\n // made this tweak here to fix the issue anglia revealed\n // problem is i'm kinda sure this was different code at some earlier point\n // works now. all good. but might want to chat with sam\n // . . .\n const unlock = () => {\n if (window.dev && window.dev()) {\n return;\n }\n\n if (!interactionsLocked?.includes(iContext.id)) {\n return;\n }\n\n unlockInteraction(iContext.id);\n };\n\n const ctx = useAccordion(unlock, React.Children.count(children), true);\n\n return (\n <AccordionContext.Provider value={{ ...ctx }}>\n {React.Children.map(children, (c, i) => cloneElement(c, { idx: i }))}\n </AccordionContext.Provider>\n );\n};\n","/** @jsx jsx */\n\nimport { useContext, useRef } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { getButtonFocus } from 'styles/variables';\nimport { Button } from '@chameleoncreator/creator-ui';\nimport { InteractionContext } from '../../Layouts/ContainerLogical';\nimport { useLayoutEffect } from 'react';\nimport getStore from 'services/getStore';\nimport isIE from 'services/isIE';\nimport { ModuleContext } from 'components/Module/Module_v2';\nimport { useSelector } from 'react-redux';\n\nconst store = getStore();\nconst ieCircleBtnPadding = 20;\n\nconst DButton = ({\n id,\n shape,\n background = 'pink',\n foreground = 'white',\n borderWidth,\n borderColor,\n borderRadius,\n buttonOutline,\n useLargeButton,\n buttonShadow,\n buttonHover,\n font = '',\n children,\n location,\n focusColor,\n enabled,\n ...props\n}) => {\n const shapeStyle = {\n pill: 'border-radius: 9999px',\n rectangle: `border-radius: ${borderRadius}px`,\n circle: 'border-radius: 50%',\n }[shape];\n\n const ctx = useContext(InteractionContext) as any;\n const { exit: runExit } = useContext(ModuleContext);\n const btn = useRef<HTMLButtonElement>(null);\n // const exit = isLastInteraction(ctx.id);\n\n const exit = location === 'exit';\n\n const { fontFamily: fontFromTheme } = store.getState().theme;\n\n // the glitch found\n // using continue button in modals or anywhere outside of the ' root page '\n // they'll have this same locking behaviour\n let isLocked;\n\n if (window.dev()) {\n isLocked = false;\n } else {\n isLocked = ctx.isLocked === undefined ? false : ctx.isLocked;\n if (props.unlocked && props.unlocked === true) {\n isLocked = false;\n }\n }\n\n const _isLocked = useSelector((state: any) => {\n return state.blocks[ctx.id].props.lockDown;\n });\n\n if (_isLocked === 0) {\n isLocked = _isLocked;\n }\n\n useLayoutEffect(() => {\n if (!btn.current) {\n return;\n }\n\n if (shape === 'circle' && isIE()) {\n const size = btn.current.querySelector('#ie-btn-children-container')!\n .scrollWidth;\n btn.current.style.width = `${size + ieCircleBtnPadding}px`;\n btn.current.style.height = `${size + ieCircleBtnPadding}px`;\n }\n }, [btn.current]);\n\n useLayoutEffect(() => {\n if (!btn.current) {\n return;\n }\n\n if (shape === 'circle') {\n btn.current.style.height = `${btn.current.offsetWidth}px`;\n return;\n }\n btn.current.style.height = 'auto';\n btn.current.style.minHeight = '45px';\n\n if (isIE()) {\n const h = btn.current.querySelector('#ie-btn-children-container')!\n .scrollHeight;\n\n btn.current.style.height = `${h + 10}px`;\n }\n });\n\n // old vals\n // ${borderColor && `border: ${borderWidth}px solid ${borderColor};`}\n\n const disabled = !window.dev() ? !!isLocked : false;\n\n // console.log({\n // disabled,\n // isLocked,\n // });\n\n // boxShadow: getButtonFocus(focusColor || background).replace(\n // 'box-shadow',\n // ''\n // ),\n\n // console.log(\n // focusColor,\n // background,\n // // 'getButtonFocus :',\n // getButtonFocus(focusColor || background)\n // .replace('box-shadow', '')\n // .split(':')[1]\n // .trim()\n // );\n\n const buttonFocus = getButtonFocus(focusColor || background)\n .replace('box-shadow', '')\n ?.split(':')[1]\n ?.trim();\n\n // console.log(buttonFocus);\n\n return (\n <Button\n ref={btn}\n px={4}\n py={2}\n // bg={borderWidth === 0 ? background : 'transparent'}\n bg={buttonOutline ? 'transparent' : background}\n color={foreground}\n display={'flex'}\n disabled={disabled}\n css={css({\n position: 'relative',\n justifyContent: 'center',\n alignItems: 'center',\n margin: !window.dev() ? '5px 10px' : 0,\n ...(shape !== 'circle' && {\n width: useLargeButton ? '308px' : '230px',\n minHeight: useLargeButton ? '64px !important' : '',\n }),\n wordBreak: shape === 'circle' ? 'normal' : 'break-word',\n lineHeight: 1.2,\n\n borderRadius: {\n pill: '9999px',\n rectangle: `${borderRadius}px`,\n circle: '50%',\n }[shape],\n cursor: 'pointer',\n outline: 'none',\n border: `1px solid ${background}`,\n fontFamily: `${font || fontFromTheme || 'inherit'} !important`,\n fontSize: '14px',\n\n ...((!font || !fontFromTheme) && {\n fontWeight: 400,\n fontStyle: 'normal',\n }),\n\n boxShadow: buttonShadow ? `0 0 12px 3px rgba(0, 0, 0, 0.09)` : 'none',\n\n '&:hover': {\n ...(buttonHover\n ? {\n background: buttonHover,\n border: `1px solid ${buttonHover}`,\n }\n : {\n opacity: 0.45,\n }),\n },\n\n '&:focus': {\n boxShadow: buttonFocus,\n },\n\n transition: 'all 0.2s',\n })}\n // css={css`\n // position: relative;\n // justify-content: center;\n // align-items: center;\n // ${shape !== 'circle' && `width: ${useLargeButton ? '308px' : '230px'};`}\n // ${shape !== 'circle' &&\n // useLargeButton &&\n // 'min-height: 64px !important;'}\n // word-break: ${shape === 'circle' ? 'normal' : 'break-word'};\n // line-height: 1.2;\n // ${shapeStyle};\n // cursor: pointer;\n // outline: none;\n // border: 1px solid ${background};\n // font-family: ${font || fontFromTheme || 'inherit'} !important;\n // font-size: 14px;\n // ${(!font || !fontFromTheme) &&\n // `\n // font-weight: 400 !important;\n // font-style: normal;\n // `}\n // ${buttonShadow && `box-shadow: 0 0 12px 3px rgba(0, 0, 0, 0.09);`}\n\n // transition: background, border, color, opacity 0.2s;\n\n // ${!window.dev() && 'margin: 5px 10px;'}\n\n // &:hover {\n // ${buttonHover ? `background: ${buttonHover}` : `opacity: 0.45`};\n // }\n // }\n\n // &:focus {\n // ${getButtonFocus(focusColor || background)}\n // }\n\n // `}\n\n data-as-exit-btn={exit && id}\n fontWeight=\"normal\"\n onClick={e => {\n if (window.dev()) {\n return;\n }\n\n exit ? runExit() : ctx.next(location);\n }}\n style={{\n ...(isLocked && {\n opacity: 0.25,\n pointerEvents: 'none',\n }),\n }}\n >\n {isIE() ? (\n <div\n id=\"ie-btn-children-container\"\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0;\n top: 50%;\n width: 100%;\n padding: 0 15px;\n ${shape === 'circle' &&\n `\n padding: ${ieCircleBtnPadding}px !important;\n `}\n transform: translateY(-50%);\n `}\n >\n {children}\n </div>\n ) : (\n children\n )}\n </Button>\n );\n};\n\nexport default DButton;\n","import { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from './apiHelpers/getBlockById';\n\nconst findByKeyVal = (o, key, val) => {\n if (o[key] && o[key] === val) return o;\n let result;\n for (const p in o) {\n if (o.hasOwnProperty(p) && typeof o[p] === 'object') {\n result = findByKeyVal(o[p], key, val);\n if (result) {\n return result;\n }\n }\n }\n};\n\nexport default findByKeyVal;\n\nexport const findByKeyVal_V2 = (\n rootId: string,\n type: string,\n val: string\n): Block | undefined => {\n const root = getBlockById(rootId);\n\n if (!root) {\n return undefined;\n }\n\n if (root[type] === val) {\n return root;\n }\n\n let found: Block | undefined = undefined;\n if (Array.isArray(root.children)) {\n root.children.forEach(c => {\n const block = findByKeyVal_V2(c.id, type, val);\n if (block) {\n found = block;\n }\n });\n }\n\n return found;\n};\n","/** @jsx jsx */\n\nimport { useState, useContext, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport getStore from 'services/getStore';\n\nconst store = getStore();\n\nconst { lPink, mint } = colors;\n\nlet lastPageMessageReceived = false;\n\nconst LastPageMessage = () => {\n const [showLastPageMessage, setShowLastPageMessage] = useState(\n lastPageMessageReceived\n );\n\n const Arrow = ({ width = 5, height = 13 }) => (\n <div\n css={css`\n position: absolute;\n left: -5px;\n top: 50%;\n width: ${width}px;\n height: ${height}px;\n transform: translateY(-50%);\n `}\n >\n <svg width={width} height={height}>\n <polygon\n points={`${width},0 0,${height / 2} ${width},${height}`}\n style={{\n fill: mint || lPink,\n }}\n />\n </svg>\n </div>\n );\n\n return !lastPageMessageReceived ? (\n <div\n className=\"fader_-5s\"\n css={css`\n position: absolute;\n left: calc(100% + 15px);\n top: 50%;\n min-width: 250px;\n padding: 20px;\n transform: translateY(-50%);\n background: ${mint || lPink};\n border-radius: 10px;\n font-size: 12px;\n color: #fff;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n pointer-events: none;\n z-index: 2147483638;\n `}\n >\n <div>\n This is the last page of your module. Consider adding an 'Exit' action\n and label, or removing the button altogether.\n </div>\n\n <div\n css={css`\n display: inline-block;\n margin: 10px 0 0 0;\n padding: 5px 10px;\n\n background: #fff;\n font-size: 12px;\n color: ${mint || lPink};\n border-radius: 9999px;\n cursor: pointer;\n\n pointer-events: auto;\n `}\n onClick={e => {\n e.stopPropagation();\n setShowLastPageMessage((lastPageMessageReceived = true));\n }}\n >\n Got it!\n </div>\n <Arrow />\n </div>\n ) : null;\n};\n\nexport default LastPageMessage;\n","/** @jsx jsx */\n\nimport { useContext, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditMarker from 'components/UI/EditMarker';\nimport { colors } from 'styles/variables';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport { useSelector, connect } from 'react-redux';\nimport { Box } from '@chameleoncreator/creator-ui';\nimport { InteractionContext } from '../../Layouts/ContainerLogical';\nimport checkButtonColors from 'services/checkButtonColors';\nimport getAllInteractions from 'services/apiHelpers/getAllInteractions';\nimport isLastInteraction from 'services/apiHelpers/isLastInteraction';\nimport getBlockById from 'services/apiHelpers/getBlockById';\n\nimport DButton from './DButton';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport LastPageMessage from 'components/Editor/EditorUtilities/UI/LastPageMessage';\nimport hasValidLocationUpdated from 'services/hasValidLocationUpdated';\nimport { useMemo } from 'react';\n\nimport { NavigationButton } from 'components/lib/Buttons';\n\nconst { lPink } = colors;\n\ninterface IEditable {\n isEditActive: boolean;\n children: any;\n lockDown: boolean;\n unlocked?: boolean;\n id: string;\n shape?: string;\n background?: string;\n foreground?: string;\n label?: string;\n color?: string;\n borderWidth?: string;\n borderColor?: string;\n localBorderColor?: boolean;\n buttonShape?: string;\n localShape?: boolean;\n borderRadius?: number | string;\n localBorderRadius?: boolean;\n localButtonOutline?: boolean;\n buttonOutline?: boolean;\n useLargeButton?: boolean;\n localUseLargeButton?: boolean;\n buttonShadow?: boolean;\n localShadow?: boolean;\n font?: string;\n location?: string;\n style?: {};\n hasSetRemoveable?: boolean;\n removeable?: boolean;\n focusColor?: string;\n disableLastPageMessage?: boolean;\n enabled?: boolean;\n buttonHover?: string;\n localButtonHover?: boolean;\n linkData?: { [key: string]: string };\n}\n\nconst ContinueBtn = (props: IEditable) => {\n const {\n isEditActive,\n id,\n label,\n font,\n // location,\n unlocked,\n disableLastPageMessage,\n focusColor,\n } = props as any;\n\n // console.log('getButtonFocus :', { focusColor });\n\n // might not need this just yet\n // button is ' disabled ' by isLocked on interaction context\n let { enabled } = props;\n // so we can map it something else if need be\n\n let { location } = props;\n\n const {\n buttonShape,\n buttonShadow,\n buttonOutline,\n useLargeButton,\n borderColor,\n buttonBorderRadius = 0,\n buttonHover,\n } = useSelector((state: any) => {\n // props.localShape props.localShadow\n // if this is set. means author has made a decision on the button props\n // we preference this setting true or false\n\n const {\n buttonShape,\n buttonShadow,\n buttonOutline,\n useLargeButton,\n buttonBorderColor,\n buttonBorderRadius,\n buttonHover,\n } = state.theme;\n\n return {\n buttonShape: props.localShape ? props.buttonShape : buttonShape,\n buttonShadow: props.localShadow ? props.buttonShadow : buttonShadow,\n buttonOutline: props.localButtonOutline\n ? props.buttonOutline\n : buttonOutline,\n useLargeButton: props.localUseLargeButton\n ? props.useLargeButton\n : useLargeButton,\n borderColor: props.localBorderColor\n ? props.borderColor\n : buttonBorderColor,\n buttonBorderRadius: props.localBorderRadius\n ? props.borderRadius\n : buttonBorderRadius,\n buttonHover: props.localButtonHover ? props.buttonHover : buttonHover,\n };\n });\n\n const { background, color } = checkButtonColors(props);\n\n const interactionContext = useContext(InteractionContext) as any;\n\n // const interactionBlock = getBlockById(interactionContext.id);\n\n const exit = useMemo(() => {\n if (!window.dev()) {\n return;\n }\n // console.log('checking for if to display isLastInteractionMessage');\n return (\n getAllInteractions().length > 1 &&\n location !== 'exit' &&\n isLastInteraction(interactionContext.id)\n );\n }, []);\n\n useEffect(() => {\n // this is the hack to get this onto the legacy buttons\n // would want to set it from the factory but that would only work for newly created buttons\n //\n if (props.hasOwnProperty('removeable')) {\n const { hasSetRemoveable, removeable } = props;\n if (!hasSetRemoveable) {\n setBlockProps(getBlockById(id), { hasSetRemoveable: true, removeable });\n }\n }\n }, []);\n\n // error checking here against a potentially removed topic\n let hasValidLocation = hasValidLocationUpdated(location);\n\n if (props?.linkData && props?.linkData.url) {\n location = props.linkData.url;\n hasValidLocation = true;\n }\n\n console.log({ location, linkData: props.linkData });\n\n let buttonBlock = findByKeyVal_V2(\n interactionContext.id,\n 'type',\n 'Column'\n ) as any;\n\n const buttonCount =\n buttonBlock.meta &&\n buttonBlock.meta.subType === 'ButtonBlock' &&\n buttonBlock.children.length;\n\n return window.dev() ? (\n <Box\n id={`continue-btn-${id}`}\n p={2}\n px={3}\n flex={0}\n css={css`\n position: relative;\n box-shadow: ${isEditActive\n ? `0 0 0 1px ${lPink}`\n : `0 0 0 1px ${hasValidLocation ? 'lightGrey' : 'yellow'}`};\n transition: box-shadow 0.2s;\n cursor: pointer;\n `}\n onClick={e => {\n e.stopPropagation();\n if (isEditActive) {\n return;\n }\n setCurrentBlock({ id });\n }}\n >\n <DButton\n enabled={enabled}\n id={id}\n shape={buttonShape}\n background={background}\n foreground={color}\n borderWidth={buttonOutline ? 1 : 0}\n borderColor={background}\n buttonHover={buttonHover}\n buttonOutline={buttonOutline}\n useLargeButton={useLargeButton}\n borderRadius={buttonBorderRadius}\n buttonShadow={buttonShadow}\n font={font}\n location={location}\n focusColor={focusColor}\n >\n {label}\n </DButton>\n {!isEditActive && <EditMarker />}\n\n {/* can only have the one button. else assumption is made author knows what they're up to */}\n {buttonCount === 1 && exit && !disableLastPageMessage && (\n <LastPageMessage />\n )}\n </Box>\n ) : (\n <DButton\n enabled={enabled}\n borderWidth={buttonOutline ? 1 : 0}\n borderColor={background}\n font={font}\n location={hasValidLocation ? location : 'next'}\n focusColor={focusColor}\n unlocked={unlocked}\n {...{\n ...props,\n background,\n foreground: color,\n shape: buttonShape,\n borderRadius: buttonBorderRadius,\n buttonShadow,\n buttonOutline,\n useLargeButton,\n buttonHover,\n }}\n >\n {label}\n </DButton>\n );\n};\n\n// export default connect(\n// ({ focusedNodeId }: { focusedNodeId: string | number }, props: any) => {\n// return {\n// isEditActive: focusedNodeId === props.id && props.id !== undefined,\n// // [Math.random()]: '',\n// };\n// }\n// )(ContinueBtn);\n\nexport default NavigationButton;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","import React, { useState, useRef, useEffect } from 'react';\n\nconst useIntersectionObserver = (updateWhenIsNotIntersecting = false) => {\n const [entry, update] = useState<any>(null);\n // {} as any\n const mounted = useRef(false);\n\n useEffect(() => {\n mounted.current = true;\n return () => { mounted.current = false };\n }, []);\n\n return {\n entry,\n init(entries, options) {\n const io = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n update(entry);\n }\n if (updateWhenIsNotIntersecting && entry && !entry.isIntersecting) {\n mounted.current && update(entry);\n }\n });\n }, options);\n //\n try {\n entries.forEach(entry => io.observe(entry));\n } catch (err) {\n console.warn(entries);\n }\n },\n };\n};\n\nexport default useIntersectionObserver;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Modal from 'components/UI/Modal';\n\nconst Transcript = ({\n onClose,\n children,\n}: {\n id?: any;\n onClose?: any;\n children?: any;\n}) => {\n let [text, btn] = children[0].props.children;\n\n btn = React.cloneElement(btn, {\n onClick() {\n onClose();\n },\n });\n\n const buttonContainer = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!buttonContainer.current) {\n return;\n }\n\n const continueButton = buttonContainer.current.querySelector(\n 'button'\n ) as HTMLButtonElement;\n if (!continueButton) {\n return;\n }\n\n continueButton.removeAttribute('aria-label');\n }, []);\n\n return (\n <Modal onClose={onClose}>\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: space-between;\n width: 100%;\n min-height: 50vh;\n padding: 30px;\n `}\n >\n <div\n css={css`\n display: flex;\n flex: 1;\n align-items: center;\n margin: 0 0 20px 0;\n `}\n >\n {text}\n </div>\n <div\n css={css`\n display: flex;\n justify-content: center;\n width: 100%;\n `}\n >\n <div ref={buttonContainer}>{btn}</div>\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default Transcript;\n","/** @jsx jsx */\n\nimport { Block } from '@chameleoncreator/creator-app';\nimport { Stream } from '@cloudflare/stream-react';\nimport { css, jsx } from '@emotion/core';\nimport playVideo from 'assets/playVideo.svg';\nimport VideoIcon from 'assets/Video.svg';\nimport { interactionContext } from 'components/lib/TextAndImage/interactionContext';\nimport EditMarker from 'components/UI/EditMarker';\nimport { keyframes } from 'emotion';\nimport useIntersectionObserver from 'hooks/useIntersectionObserver';\nimport {\n Fragment as _,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport ReactPlayer from 'react-player';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { killAllAudio } from 'services/killAllAudio';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport Transcript from './Transcript';\n\nconst { lPink } = colors;\n\nconst frameSelected = keyframes`\n from {\n width: 50%;\n height: 50%;\n }\n to {\n width: 75%;\n height: 75%;\n }\n`;\n\nconst ShowTranscriptBtn = ({\n id,\n setShowTranscript,\n showTranscriptFontSize = 12,\n showTranscriptFontColor = '#000',\n showTranscriptLabel = 'Show transcript',\n}) => {\n return (\n <button\n id={`show-transcript-${id}`}\n css={css`\n width: 100%;\n\n font-size: ${showTranscriptFontSize}px;\n\n border: none;\n outline: none;\n background: transparent;\n\n text-decoration: underline;\n text-align: center;\n cursor: pointer;\n\n color: ${showTranscriptFontColor};\n &:focus {\n ${getButtonFocus('#2684FF')}\n }\n `}\n onClick={() => {\n setShowTranscript(true);\n }}\n >\n {showTranscriptLabel}\n </button>\n );\n};\n\nconst EditWrapper = ({ id, selected }) => {\n return (\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n pointer-events: none;\n `}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: ${selected ? '75%' : '50%'};\n height: ${selected ? '75%' : '50%'};\n\n ${selected && `animation: ${frameSelected} 0.2s forwards;`}\n\n ${!selected &&\n `\n background: rgba(0, 0, 0, 0.1);\n `}\n\n box-shadow: ${\n selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'\n };\n transition: all 0.2s;\n pointer-events: all;\n cursor: pointer;\n &:hover {\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\n }\n `}\n onClick={e => {\n e.stopPropagation();\n if (selected) return;\n setCurrentBlock({ id });\n }}\n >\n {!selected && (\n <img src={VideoIcon} style={{ width: 50, opacity: 0.5 }} />\n )}\n\n {!selected && <EditMarker />}\n </div>\n </div>\n );\n};\n\ntype IProps = {\n src: string;\n videoSrc: string;\n maxWidth: number;\n hideControls: boolean;\n useTranscript: boolean;\n showTranscriptFontSize: number;\n showTranscriptFontColor: string;\n showTranscriptLabel: string;\n viewingTranscriptUnlocksInteraction: boolean;\n cloudflareUid: string;\n posterSrc: boolean;\n autoPlay: boolean;\n playInline: boolean;\n};\n\nconst Video = ({\n id,\n focusedNodeId,\n children,\n ...props\n}: {\n id?: any;\n focusedNodeId?: any;\n children?: any;\n}) => {\n const { entry, init } = useIntersectionObserver(true);\n const {\n src,\n videoSrc,\n maxWidth = 960,\n useTranscript,\n showTranscriptFontSize = 12,\n showTranscriptFontColor = '#000',\n showTranscriptLabel = 'Show transcript',\n viewingTranscriptUnlocksInteraction = false,\n cloudflareUid,\n // cloudflareUid = '5cf27df9948930e8611e2a27c584b40e',\n posterSrc,\n } = props as IProps;\n\n // defaults\n let {\n hideControls = false,\n autoPlay = false,\n playInline = false,\n } = props as IProps;\n\n // forced false in dev\n if (window.dev()) {\n hideControls = false;\n autoPlay = false;\n playInline = false;\n }\n\n const isYouTube = (videoSrc || src).match(\n /^(https?\\:\\/\\/)?((www\\.)?youtube\\.com|youtu\\.be)\\/.+$/\n );\n\n const [isPlaying, setIsPlaying] = useState(false);\n const [calcHeight, setCalcHeight] = useState(maxWidth * 0.5625);\n\n const [showTranscript, setShowTranscript] = useState(false);\n const [showPoster, setShowPoster] = useState<boolean | null>(posterSrc);\n\n const selected = focusedNodeId === id;\n const context = useContext(interactionContext)! as Block;\n const mounted = useRef(false);\n const video = useRef<HTMLDivElement>(null);\n\n // need to get the correct type for player\n const player = useRef<any>(null);\n\n const hasAutoPlayed = useRef<boolean>(false);\n\n useLayoutEffect(() => {\n if (!mounted.current) {\n init([video.current], {\n threshold: 0.5,\n });\n }\n\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n };\n }, []);\n\n useEffect(() => {\n const onWindowResize = () => {\n const { width } = video.current!.getBoundingClientRect();\n const calcHeightTarget = width * 0.5625;\n\n if (calcHeight === calcHeightTarget) {\n return;\n }\n\n setCalcHeight(calcHeightTarget);\n };\n\n onWindowResize();\n window.addEventListener('resize', onWindowResize);\n\n return () => {\n window.removeEventListener('resize', onWindowResize);\n };\n });\n\n useEffect(() => {\n // pauses cloudflare player\n //\n if (!cloudflareUid || !player.current) {\n return;\n }\n\n if (isPlaying && entry && !entry.isIntersecting) {\n player.current.pause();\n }\n }, [entry?.isIntersecting]);\n\n useEffect(() => {\n if (isPlaying) {\n killAllAudio();\n }\n }, [isPlaying]);\n\n useEffect(() => {\n const onFullScreenChange = e => {\n if (!document.fullscreenElement && video?.current) {\n // this specific selector fails when video is added as media to interactions NOT\n // a standalone video interaction\n // const section = document.querySelector(`#i${context.id}`);\n\n // let's be more generic and get whichever section element is closest to the video\n const section = video.current.closest('section');\n section?.scrollIntoView();\n }\n };\n\n video?.current?.addEventListener('fullscreenchange', onFullScreenChange);\n\n return () => {\n video?.current?.removeEventListener(\n 'fullscreenchange',\n onFullScreenChange\n );\n };\n }, []);\n\n useEffect(() => {\n if (viewingTranscriptUnlocksInteraction && showTranscript) {\n unlockInteraction(context.id);\n }\n }, [showTranscript]);\n\n useEffect(() => {\n if (!autoPlay) {\n return;\n }\n\n if (entry?.isIntersecting && !hasAutoPlayed.current) {\n // console.log('browser allows autoPlay !?!?');\n //\n\n cloudflareUid ? player?.current?.play() : setIsPlaying(true);\n hasAutoPlayed.current = true;\n }\n }, [entry?.isIntersecting]);\n\n useEffect(() => {\n if (entry?.isIntersecting) {\n return;\n }\n\n // reset the hasAutoPlayed\n if (autoPlay) {\n hasAutoPlayed.current = false;\n }\n }, [entry?.isIntersecting]);\n\n const continuePlayingInFullscreen =\n isPlaying && document.fullscreenElement !== null ? true : false;\n\n const videoPlayer = (\n <div\n ref={video}\n className=\"video-player-container\"\n css={css`\n position: relative;\n width: 100%;\n max-width: ${maxWidth}px;\n // height: ${calcHeight ? `${calcHeight}px` : '100%'};\n // margin: 50px 0;\n `}\n // i want to keep this on the periphery i think\n // if we're not happy with the behaviours we're getting out of the box for these players\n // ( reactPlayer feels kinda janky )\n // if we roll our own solution we can standardise the output\n // onMouseOver={() => {\n // setShowPoster(false);\n // }}\n // onMouseOut={() => {\n // if (player.current.getCurrentTime() === 0) {\n // setShowPoster(true);\n // }\n // }}\n >\n <_>\n {cloudflareUid ? (\n <CloudflareVideo\n streamRef={player}\n id={id}\n cloudflareUid={cloudflareUid}\n height={calcHeight ? `${calcHeight}px` : '100%'}\n onPlay={() => {\n setIsPlaying(true);\n }}\n onPause={() => {\n setIsPlaying(false);\n }}\n onEnded={() => {\n unlockInteraction(context.id);\n }}\n controls={!hideControls}\n poster={posterSrc}\n {...(playInline && {\n autoplay: true,\n loop: true,\n muted: true,\n playsinline: true,\n controls: false,\n })}\n {...(entry?.isIntersecting &&\n autoPlay && {\n autoplay: true,\n })}\n />\n ) : (\n <ReactPlayer\n ref={player}\n url={videoSrc || src}\n width=\"100%\"\n height={calcHeight || '100%'}\n onStart={() => {}}\n onPlay={() => {\n setIsPlaying(true);\n }}\n onPause={() => {\n setIsPlaying(false);\n }}\n onEnded={() => {\n unlockInteraction(context.id);\n }}\n playing={\n continuePlayingInFullscreen ||\n (isPlaying && entry && entry.isIntersecting)\n }\n controls={!hideControls}\n light={posterSrc}\n {...(playInline && {\n playing: true,\n loop: true,\n muted: true,\n playsinline: true,\n controls: false,\n })}\n // {...(!window.dev() &&\n // autoPlay && {\n // playing: true,\n // })}\n />\n )}\n </_>\n\n {!window.dev() && (\n <_>\n {hideControls && !isYouTube && (\n <div\n style={{\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: 'transparent',\n cursor: 'pointer',\n }}\n onClick={() => {\n hasAutoPlayed.current = true;\n\n if (cloudflareUid) {\n // play for cloudflare. . .\n\n player?.current[isPlaying ? 'pause' : 'play']();\n return;\n }\n\n setIsPlaying(isPlaying => !isPlaying);\n }}\n >\n {!isPlaying && (\n <div\n className=\"fader_-2s\"\n style={{\n width: 50,\n height: 50,\n borderRadius: '50%',\n border: '2px solid #000',\n background: `url('${playVideo}') no-repeat`,\n backgroundPosition: 'center',\n boxShadow: '0 0 10px rgba(0,0,0, 0.2)',\n }}\n />\n )}\n </div>\n )}\n </_>\n )}\n\n {window.dev() && <EditWrapper id={id} selected={selected} />}\n </div>\n );\n\n const showTranscriptBtn = (\n <div style={{ margin: '5px 0 0 0' }}>\n <ShowTranscriptBtn\n id={id}\n setShowTranscript={setShowTranscript}\n showTranscriptFontSize={showTranscriptFontSize}\n showTranscriptFontColor={showTranscriptFontColor}\n showTranscriptLabel={showTranscriptLabel}\n />\n </div>\n );\n\n return (\n <_>\n {window.dev() ? (\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n // height: ${calcHeight}px;\n\n // * {\n // max-height: ${calcHeight}px;\n // }\n `}\n >\n {videoPlayer}\n\n {useTranscript && showTranscriptBtn}\n </div>\n ) : (\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n `}\n >\n {videoPlayer}\n\n {useTranscript && showTranscriptBtn}\n </div>\n )}\n\n {showTranscript && (\n <Transcript\n onClose={() => {\n const tick = setInterval(() => {\n const showTranscriptButtonElement: any = document.querySelector(\n `#show-transcript-${id}`\n );\n\n if (showTranscriptButtonElement) {\n showTranscriptButtonElement.focus();\n\n clearInterval(tick);\n }\n }, 0);\n\n setShowTranscript(false);\n }}\n >\n {children}\n </Transcript>\n )}\n </_>\n );\n};\n\nexport const CloudflareVideo = props => {\n const { id, cloudflareUid, ...rest } = props;\n const { height } = rest;\n\n return (\n <div\n css={css({\n height: height,\n '*': {\n maxHeight: height,\n // pointerEvents: window.dev() ? 'none' : 'auto',\n },\n })}\n >\n <Stream\n controls\n src={cloudflareUid}\n {...{\n ...rest,\n //\n }}\n />\n </div>\n );\n};\n\nexport default Video;\n","import Video from './Video';\n\nexport default Video;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n memo,\n useMemo,\n useCallback,\n useContext,\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n} from 'react';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport Modal from 'components/UI/Modal';\n\nconst { lPink } = colors;\n\nconst Transcript = ({\n id,\n onClose,\n children,\n ...props\n}: {\n id?: any;\n onClose?: any;\n children?: any;\n}) => {\n //\n\n let [text, btn] = children?.props?.children;\n\n btn = React.cloneElement(btn, {\n onClick() {\n onClose();\n },\n });\n\n return (\n <Modal onClose={onClose}>\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: space-between;\n width: 100%;\n min-height: 50vh;\n padding: 30px;\n `}\n >\n <div\n css={css`\n display: flex;\n flex: 1;\n align-items: center;\n margin: 0 0 20px 0;\n `}\n >\n {text}\n </div>\n <div\n css={css`\n display: flex;\n justify-content: center;\n width: 100%;\n `}\n >\n <div>{btn}</div>\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default Transcript;\n","// prettier-ignore\r\nexport default {\"v\":\"5.7.4\",\"fr\":24,\"ip\":0,\"op\":169,\"w\":980,\"h\":685,\"nm\":\"headphonesWoman\",\"ddd\":0,\"assets\":[{\"id\":\"comp_0\",\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"potStroke01\",\"parent\":3,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[34.063,31.243,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[13.799,33.452,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ef\":[{\"ty\":28,\"nm\":\"Set Matte\",\"np\":8,\"mn\":\"ADBE Set Matte3\",\"ix\":1,\"en\":1,\"ef\":[{\"ty\":10,\"nm\":\"Take Matte From Layer\",\"mn\":\"ADBE Set Matte3-0001\",\"ix\":1,\"v\":{\"a\":0,\"k\":3,\"ix\":1}},{\"ty\":7,\"nm\":\"Use For Matte\",\"mn\":\"ADBE Set Matte3-0002\",\"ix\":2,\"v\":{\"a\":0,\"k\":4,\"ix\":2}},{\"ty\":7,\"nm\":\"Invert Matte\",\"mn\":\"ADBE Set Matte3-0003\",\"ix\":3,\"v\":{\"a\":0,\"k\":0,\"ix\":3}},{\"ty\":7,\"nm\":\"If Layer Sizes Differ\",\"mn\":\"ADBE Set Matte3-0004\",\"ix\":4,\"v\":{\"a\":0,\"k\":1,\"ix\":4}},{\"ty\":7,\"nm\":\"Composite Matte with Original\",\"mn\":\"ADBE Set Matte3-0005\",\"ix\":5,\"v\":{\"a\":0,\"k\":1,\"ix\":5}},{\"ty\":7,\"nm\":\"Premultiply Matte Layer\",\"mn\":\"ADBE Set Matte3-0006\",\"ix\":6,\"v\":{\"a\":0,\"k\":1,\"ix\":6}}]}],\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[5.5,-2.25],[0,0],[-0.098,-5.157],[2.043,-13.038],[1.72,-1.891]],\"o\":[[-5.5,2.25],[0,0],[0.286,15.178],[-0.609,3.887],[0,0]],\"v\":[[2.173,-41.184],[-8.416,-30.952],[-12.113,-20.638],[10.168,22.464],[6.399,30.952]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":1,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[14.711,33.452],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":0,\"k\":10,\"ix\":1},\"e\":{\"a\":0,\"k\":100,\"ix\":2},\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":0,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":84,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":85,\"s\":[0]},{\"t\":169,\"s\":[360]}],\"ix\":3},\"m\":1,\"ix\":2,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"potStroke02\",\"parent\":3,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[92.41,37.477,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[51.483,44.652,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ef\":[{\"ty\":28,\"nm\":\"Set Matte\",\"np\":8,\"mn\":\"ADBE Set Matte3\",\"ix\":1,\"en\":1,\"ef\":[{\"ty\":10,\"nm\":\"Take Matte From Layer\",\"mn\":\"ADBE Set Matte3-0001\",\"ix\":1,\"v\":{\"a\":0,\"k\":3,\"ix\":1}},{\"ty\":7,\"nm\":\"Use For Matte\",\"mn\":\"ADBE Set Matte3-0002\",\"ix\":2,\"v\":{\"a\":0,\"k\":4,\"ix\":2}},{\"ty\":7,\"nm\":\"Invert Matte\",\"mn\":\"ADBE Set Matte3-0003\",\"ix\":3,\"v\":{\"a\":0,\"k\":0,\"ix\":3}},{\"ty\":7,\"nm\":\"If Layer Sizes Differ\",\"mn\":\"ADBE Set Matte3-0004\",\"ix\":4,\"v\":{\"a\":0,\"k\":1,\"ix\":4}},{\"ty\":7,\"nm\":\"Composite Matte with Original\",\"mn\":\"ADBE Set Matte3-0005\",\"ix\":5,\"v\":{\"a\":0,\"k\":1,\"ix\":5}},{\"ty\":7,\"nm\":\"Premultiply Matte Layer\",\"mn\":\"ADBE Set Matte3-0006\",\"ix\":6,\"v\":{\"a\":0,\"k\":1,\"ix\":6}}]}],\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-23.608,14.889],[0,0]],\"o\":[[0,0],[23.608,-14.89],[0,0]],\"v\":[[1.734,36.147],[-17.142,-21.257],[40.75,11.531]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":1,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[43.25,38.647],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":0,\"k\":10,\"ix\":1},\"e\":{\"a\":0,\"k\":100,\"ix\":2},\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":0,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":84,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":85,\"s\":[0]},{\"t\":169,\"s\":[360]}],\"ix\":3},\"m\":1,\"ix\":2,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"pot\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.304],\"y\":[1]},\"o\":{\"x\":[0.611],\"y\":[0]},\"t\":24,\"s\":[0]},{\"i\":{\"x\":[0.562],\"y\":[1]},\"o\":{\"x\":[0.604],\"y\":[0]},\"t\":45,\"s\":[20]},{\"i\":{\"x\":[0.522],\"y\":[1]},\"o\":{\"x\":[0.4],\"y\":[0]},\"t\":73,\"s\":[-10]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.429],\"y\":[0]},\"t\":94,\"s\":[5]},{\"i\":{\"x\":[0.546],\"y\":[1]},\"o\":{\"x\":[0.41],\"y\":[0]},\"t\":112,\"s\":[-2.5]},{\"i\":{\"x\":[0.546],\"y\":[1]},\"o\":{\"x\":[0.41],\"y\":[0]},\"t\":127,\"s\":[1.3]},{\"i\":{\"x\":[0.553],\"y\":[1]},\"o\":{\"x\":[0.405],\"y\":[0]},\"t\":142,\"s\":[-0.6]},{\"t\":158,\"s\":[0]}],\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.304,\"y\":1},\"o\":{\"x\":0.611,\"y\":0},\"t\":24,\"s\":[645.795,535.312,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.562,\"y\":1},\"o\":{\"x\":0.604,\"y\":0},\"t\":45,\"s\":[666.295,535.312,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.522,\"y\":1},\"o\":{\"x\":0.4,\"y\":0},\"t\":73,\"s\":[634.795,535.312,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.429,\"y\":0},\"t\":94,\"s\":[650.695,535.312,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.546,\"y\":1},\"o\":{\"x\":0.41,\"y\":0},\"t\":112,\"s\":[643.195,535.312,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.546,\"y\":1},\"o\":{\"x\":0.41,\"y\":0},\"t\":127,\"s\":[647.895,535.312,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.553,\"y\":1},\"o\":{\"x\":0.405,\"y\":0},\"t\":142,\"s\":[644.695,535.312,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":158,\"s\":[645.795,535.312,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[58.944,3.121,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[32.408,0.013],[-0.014,32.408],[0,0]],\"o\":[[-0.013,32.408],[-32.408,-0.013],[0,0],[0,0]],\"v\":[[58.687,-29.311],[-0.017,29.345],[-58.673,-29.358],[-33.844,-29.348]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.588235318661,1,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[58.937,32.48],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 3\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"potPlantShadow\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.408,\"y\":1},\"o\":{\"x\":0.51,\"y\":0},\"t\":24,\"s\":[699.315,594.493,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.562,\"y\":1},\"o\":{\"x\":0.565,\"y\":0},\"t\":45,\"s\":[717.815,594.493,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.505,\"y\":1},\"o\":{\"x\":0.417,\"y\":0},\"t\":73,\"s\":[687.515,594.493,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.577,\"y\":1},\"o\":{\"x\":0.429,\"y\":0},\"t\":94,\"s\":[706.115,594.493,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.558,\"y\":1},\"o\":{\"x\":0.448,\"y\":0},\"t\":112,\"s\":[697.315,594.493,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.558,\"y\":1},\"o\":{\"x\":0.448,\"y\":0},\"t\":127,\"s\":[705.315,594.493,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.565,\"y\":1},\"o\":{\"x\":0.441,\"y\":0},\"t\":142,\"s\":[698.015,594.493,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":158,\"s\":[699.315,594.493,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[168.712,2.435,0],\"ix\":1,\"l\":2},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.408,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.51,0.333,0.333],\"y\":[0,0,0]},\"t\":24,\"s\":[100,100,100]},{\"i\":{\"x\":[0.562,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.565,0.333,0.333],\"y\":[0,0,0]},\"t\":45,\"s\":[84.2,100,100]},{\"i\":{\"x\":[0.505,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.417,0.333,0.333],\"y\":[0,0,0]},\"t\":73,\"s\":[106,100,100]},{\"i\":{\"x\":[0.577,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.429,0.333,0.333],\"y\":[0,0,0]},\"t\":94,\"s\":[97.1,100,100]},{\"i\":{\"x\":[0.558,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.448,0.333,0.333],\"y\":[0,0,0]},\"t\":112,\"s\":[101.3,100,100]},{\"i\":{\"x\":[0.558,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.448,0.333,0.333],\"y\":[0,0,0]},\"t\":127,\"s\":[100.6,100,100]},{\"i\":{\"x\":[0.565,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.441,0.333,0.333],\"y\":[0,0,0]},\"t\":142,\"s\":[100.7,100,100]},{\"t\":158,\"s\":[100,100,100]}],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,1.207],[-46.519,0],[0,-1.207],[46.52,0]],\"o\":[[0,-1.207],[46.52,0],[0,1.207],[-46.519,0]],\"v\":[[-84.231,0],[0,-2.185],[84.231,0],[0,2.185]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.137254901961,0.149019607843,0.192156877705,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[84.481,2.435],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":5,\"ty\":4,\"nm\":\"mainStem\",\"parent\":3,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.342],\"y\":[1]},\"o\":{\"x\":[0.432],\"y\":[0]},\"t\":24,\"s\":[-0.027]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.544],\"y\":[0]},\"t\":49,\"s\":[16.279]},{\"i\":{\"x\":[0.6],\"y\":[1]},\"o\":{\"x\":[0.449],\"y\":[0]},\"t\":77,\"s\":[-8.612]},{\"i\":{\"x\":[0.589],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":98,\"s\":[4.619]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":116,\"s\":[-2.851]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":131,\"s\":[1.129]},{\"i\":{\"x\":[0.579],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":146,\"s\":[-0.538]},{\"t\":162,\"s\":[0]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[58.804,22.221,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0.851,242.57,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[0.851,0.851],[0.851,242.57]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0.137254901961,0.16862745098,0.219607858097,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":1.702,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":6,\"ty\":4,\"nm\":\"mainLeaf\",\"parent\":5,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[0.851,30.213,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[21.344,29.612,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.494,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":24,\"s\":[{\"i\":[[0,11.65],[-11.65,0],[0,-11.65],[0,0]],\"o\":[[0,-11.65],[11.65,0],[0,11.65],[0,0]],\"v\":[[-21.094,-8.268],[0,-29.362],[21.094,-8.268],[0,29.362]],\"c\":true}]},{\"i\":{\"x\":0.488,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":53,\"s\":[{\"i\":[[-4.163,10.881],[-10.881,-4.163],[4.163,-10.881],[0,0]],\"o\":[[4.163,-10.881],[10.881,4.163],[-4.163,10.881],[0,0]],\"v\":[[-15.889,-16.118],[11.351,-28.281],[23.514,-1.042],[0,29.362]],\"c\":true}]},{\"i\":{\"x\":0.429,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":81,\"s\":[{\"i\":[[3.01,11.254],[-11.254,3.01],[-3.01,-11.254],[0,0]],\"o\":[[-3.01,-11.254],[11.254,-3.01],[3.01,11.254],[0,0]],\"v\":[[-21.658,-2.978],[-6.73,-28.806],[19.098,-13.879],[0,29.362]],\"c\":true}]},{\"i\":{\"x\":0.389,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":102,\"s\":[{\"i\":[[-4.767,10.63],[-10.63,-4.767],[4.767,-10.63],[0,0]],\"o\":[[4.767,-10.63],[10.63,4.767],[-4.767,10.63],[0,0]],\"v\":[[-17.969,-17.818],[9.91,-28.433],[20.525,-0.554],[0,29.362]],\"c\":true}]},{\"i\":{\"x\":0.333,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":120,\"s\":[{\"i\":[[2.097,11.46],[-11.46,2.097],[-2.097,-11.46],[0,0]],\"o\":[[-2.097,-11.46],[11.46,-2.097],[2.097,11.46],[0,0]],\"v\":[[-20.899,-4.798],[-3.947,-29.345],[20.599,-12.393],[0,29.362]],\"c\":true}]},{\"i\":{\"x\":0.333,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":135,\"s\":[{\"i\":[[-1.23,11.585],[-11.585,-1.23],[1.23,-11.585],[0,0]],\"o\":[[1.23,-11.585],[11.585,1.23],[-1.23,11.585],[0,0]],\"v\":[[-20.725,-10.521],[2.478,-29.271],[21.228,-6.068],[0,29.362]],\"c\":true}]},{\"i\":{\"x\":0.354,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":150,\"s\":[{\"i\":[[1.444,11.56],[-11.56,1.444],[-1.444,-11.56],[0,0]],\"o\":[[-1.444,-11.56],[11.56,-1.444],[1.444,11.56],[0,0]],\"v\":[[-20.846,-5.69],[-2.529,-29.236],[21.017,-10.918],[0,29.362]],\"c\":true}]},{\"t\":166,\"s\":[{\"i\":[[0,11.65],[-11.65,0],[0,-11.65],[0,0]],\"o\":[[0,-11.65],[11.65,0],[0,11.65],[0,0]],\"v\":[[-21.094,-8.268],[0,-29.362],[21.094,-8.268],[0,29.362]],\"c\":true}]}],\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[21.344,29.612],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":7,\"ty\":4,\"nm\":\"stem01\",\"parent\":5,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.396],\"y\":[1]},\"o\":{\"x\":[0.416],\"y\":[0]},\"t\":24,\"s\":[0]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.544],\"y\":[0]},\"t\":54,\"s\":[18.686]},{\"i\":{\"x\":[0.6],\"y\":[1]},\"o\":{\"x\":[0.449],\"y\":[0]},\"t\":82,\"s\":[-12.441]},{\"i\":{\"x\":[0.589],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":103,\"s\":[10.079]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":121,\"s\":[-6.018]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":136,\"s\":[5.849]},{\"i\":{\"x\":[0.579],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":151,\"s\":[-1.111]},{\"t\":167,\"s\":[0]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[0.85,100.468,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[55.38,55.38,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[-27.264,-27.265],[27.264,27.265]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0.137254901961,0.16862745098,0.219607858097,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":1.702,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[28.115,28.116],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":8,\"ty\":4,\"nm\":\"leaf01\",\"parent\":7,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[42.375,42.375,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[50.012,41.774,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-8.238,-8.237],[0,0]],\"o\":[[-8.238,8.238],[8.238,8.238],[0,0]],\"v\":[[-16.643,-20.762],[-16.643,9.069],[24.881,20.762]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[25.131,21.012],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":9,\"ty\":4,\"nm\":\"stem02\",\"parent\":5,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.387],\"y\":[1]},\"o\":{\"x\":[0.428],\"y\":[0]},\"t\":24,\"s\":[0]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.544],\"y\":[0]},\"t\":50,\"s\":[22.386]},{\"i\":{\"x\":[0.6],\"y\":[1]},\"o\":{\"x\":[0.449],\"y\":[0]},\"t\":78,\"s\":[-12.541]},{\"i\":{\"x\":[0.589],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":99,\"s\":[8.579]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":117,\"s\":[-7.918]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":132,\"s\":[4.149]},{\"i\":{\"x\":[0.579],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":147,\"s\":[-2.811]},{\"t\":173,\"s\":[0]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[0.851,128.351,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0.851,69.505,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[34.327,-34.327],[-34.327,34.327]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0.137254901961,0.16862745098,0.219607858097,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":1.702,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[35.178,35.178],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":10,\"ty\":4,\"nm\":\"leaf02\",\"parent\":9,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[27.981,42.375,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0.25,50.012,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-8.238,8.238],[-8.237,-8.238],[8.238,-8.237],[0,0]],\"o\":[[8.238,-8.238],[8.238,8.238],[-8.237,8.238],[0,0]],\"v\":[[-13.188,-16.643],[16.643,-16.643],[16.643,13.188],[-24.881,24.881]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[25.131,25.131],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":11,\"ty\":4,\"nm\":\"stem03\",\"parent\":5,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.377],\"y\":[1]},\"o\":{\"x\":[0.422],\"y\":[0]},\"t\":24,\"s\":[0]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.544],\"y\":[0]},\"t\":52,\"s\":[21.386]},{\"i\":{\"x\":[0.6],\"y\":[1]},\"o\":{\"x\":[0.449],\"y\":[0]},\"t\":80,\"s\":[-10.941]},{\"i\":{\"x\":[0.589],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":101,\"s\":[6.579]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":119,\"s\":[-6.518]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":134,\"s\":[3.249]},{\"i\":{\"x\":[0.579],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":149,\"s\":[-0.311]},{\"t\":165,\"s\":[0]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[1.131,175.301,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[69.505,69.505,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[-34.327,-34.327],[34.327,34.327]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0.137254901961,0.16862745098,0.219607858097,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":1.702,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[35.178,35.178],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":12,\"ty\":4,\"nm\":\"leaf03\",\"parent\":11,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[42.375,42.375,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[50.012,50.012,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-8.238,-8.237],[0,0]],\"o\":[[-8.238,8.238],[8.238,8.238],[0,0]],\"v\":[[-16.643,-20.762],[-16.643,9.069],[24.881,20.762]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[25.131,29.25],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[8.238,8.238],[8.237,-8.238],[-8.238,-8.237],[0,0]],\"o\":[[-8.238,-8.238],[-8.238,8.238],[8.237,8.238],[0,0]],\"v\":[[13.188,-16.643],[-16.643,-16.643],[-16.643,13.188],[24.881,24.881]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[25.131,25.131],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 2\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":13,\"ty\":4,\"nm\":\"stem04\",\"parent\":5,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.366],\"y\":[1]},\"o\":{\"x\":[0.416],\"y\":[0]},\"t\":24,\"s\":[0]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.544],\"y\":[0]},\"t\":54,\"s\":[14.686]},{\"i\":{\"x\":[0.6],\"y\":[1]},\"o\":{\"x\":[0.449],\"y\":[0]},\"t\":82,\"s\":[-17.441]},{\"i\":{\"x\":[0.589],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":103,\"s\":[11.779]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":121,\"s\":[-7.218]},{\"i\":{\"x\":[0.574],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":136,\"s\":[0.749]},{\"i\":{\"x\":[0.579],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":151,\"s\":[-0.311]},{\"t\":167,\"s\":[0]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[0.851,197.255,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0.851,58.709,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[28.929,-28.929],[-28.929,28.929]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0.137254901961,0.16862745098,0.219607858097,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":1.702,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[29.78,29.78],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":14,\"ty\":4,\"nm\":\"leaf04\",\"parent\":13,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[41.036,21.613,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[24.101,21.012,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[8.238,-8.237],[0,0]],\"o\":[[8.238,8.238],[-8.238,8.238],[0,0]],\"v\":[[16.643,-20.762],[16.643,9.069],[-24.881,20.762]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[25.131,21.012],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":219,\"st\":0,\"bm\":0}]},{\"id\":\"comp_1\",\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"waveMask\",\"td\":1,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[970,489,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.958823529412,0.06768172021,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Shape 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":0,\"s\":[{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-125.625,-42.75],[-124.375,41],[-124.625,42.75],[-124.625,-42.75]],\"c\":true}]},{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":55,\"s\":[{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[93.625,-41.75],[93.625,42],[-124.625,42.75],[-124.625,-42.75]],\"c\":true}]},{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":119,\"s\":[{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[93.625,-41.75],[93.625,42],[-124.625,42.75],[-124.625,-42.75]],\"c\":true}]},{\"t\":162,\"s\":[{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[93.625,-41.75],[93.625,42],[93.375,42.75],[93.375,-42.75]],\"c\":true}]}],\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.958823529412,0.06768172021,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-663.875,-181.75],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Rectangle 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":163,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"eyeBallRef/wideShotLaptopWoman Outlines 2\",\"parent\":4,\"tt\":1,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[154.354,49,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[54,49,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-6.273,-6.171],[-6.273,6.171],[-6.273,-6.171],[-6.274,6.171]],\"o\":[[6.273,-6.171],[6.273,6.171],[6.273,-6.171],[6.273,6.171],[0,0]],\"v\":[[-50.186,0],[-25.093,0],[0,0],[25.093,0],[50.186,0]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":3.5,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[53.983,87.951],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-6.273,-6.171],[-6.273,6.171],[-6.273,-6.171],[-6.274,6.171]],\"o\":[[6.273,-6.171],[6.273,6.171],[6.273,-6.171],[6.273,6.171],[0,0]],\"v\":[[-50.186,0],[-25.093,0],[0,0],[25.093,0],[50.186,0]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":3.5,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[53.983,74.181],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 2\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":163,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"waveMask 3\",\"td\":1,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[970,489,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.958823529412,0.06768172021,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Shape 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":0,\"s\":[{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-125.625,-42.75],[-124.375,41],[-124.625,42.75],[-124.625,-42.75]],\"c\":true}]},{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":55,\"s\":[{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[93.625,-41.75],[93.625,42],[-124.625,42.75],[-124.625,-42.75]],\"c\":true}]},{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":119,\"s\":[{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[93.625,-41.75],[93.625,42],[-124.625,42.75],[-124.625,-42.75]],\"c\":true}]},{\"t\":162,\"s\":[{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[93.625,-41.75],[93.625,42],[93.375,42.75],[93.375,-42.75]],\"c\":true}]}],\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.958823529412,0.06768172021,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-663.875,-181.75],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Rectangle 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":163,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"eyeBallRef/wideShotLaptopWoman Outlines\",\"tt\":1,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":0,\"s\":[291,237,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":48,\"s\":[64.6,237,0]}],\"ix\":2,\"x\":\"var $bm_rt;\\n$bm_rt = loopOut();\",\"l\":2},\"a\":{\"a\":0,\"k\":[54,49,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[225.7,225.7,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-6.273,-6.171],[-6.273,6.171],[-6.273,-6.171],[-6.274,6.171]],\"o\":[[6.273,-6.171],[6.273,6.171],[6.273,-6.171],[6.273,6.171],[0,0]],\"v\":[[-50.186,0],[-25.093,0],[0,0],[25.093,0],[50.186,0]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":3.5,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[53.983,87.951],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-6.273,-6.171],[-6.273,6.171],[-6.273,-6.171],[-6.274,6.171]],\"o\":[[6.273,-6.171],[6.273,6.171],[6.273,-6.171],[6.273,6.171],[0,0]],\"v\":[[-50.186,0],[-25.093,0],[0,0],[25.093,0],[50.186,0]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":3.5,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[53.983,74.181],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 2\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":163,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":6,\"ty\":4,\"nm\":\"pupil Outlines\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":0.45,\"y\":0},\"t\":0,\"s\":[295,198,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":18,\"s\":[295,173.7,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.478,\"y\":0.478},\"o\":{\"x\":0.333,\"y\":0.333},\"t\":29,\"s\":[295,185,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":0.725,\"y\":0},\"t\":51,\"s\":[295,185,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0,\"y\":0},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":71,\"s\":[255,185,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":0.689,\"y\":0},\"t\":102,\"s\":[255,185,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":129,\"s\":[295,185,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[40,40,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ef\":[{\"ty\":28,\"nm\":\"Set Matte\",\"np\":8,\"mn\":\"ADBE Set Matte3\",\"ix\":1,\"en\":1,\"ef\":[{\"ty\":10,\"nm\":\"Take Matte From Layer\",\"mn\":\"ADBE Set Matte3-0001\",\"ix\":1,\"v\":{\"a\":0,\"k\":7,\"ix\":1}},{\"ty\":7,\"nm\":\"Use For Matte\",\"mn\":\"ADBE Set Matte3-0002\",\"ix\":2,\"v\":{\"a\":0,\"k\":4,\"ix\":2}},{\"ty\":7,\"nm\":\"Invert Matte\",\"mn\":\"ADBE Set Matte3-0003\",\"ix\":3,\"v\":{\"a\":0,\"k\":0,\"ix\":3}},{\"ty\":7,\"nm\":\"If Layer Sizes Differ\",\"mn\":\"ADBE Set Matte3-0004\",\"ix\":4,\"v\":{\"a\":0,\"k\":1,\"ix\":4}},{\"ty\":7,\"nm\":\"Composite Matte with Original\",\"mn\":\"ADBE Set Matte3-0005\",\"ix\":5,\"v\":{\"a\":0,\"k\":1,\"ix\":5}},{\"ty\":7,\"nm\":\"Premultiply Matte Layer\",\"mn\":\"ADBE Set Matte3-0006\",\"ix\":6,\"v\":{\"a\":0,\"k\":1,\"ix\":6}}]}],\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,21.619],[-21.619,0],[0,-21.619],[21.619,0]],\"o\":[[0,-21.619],[21.619,0],[0,21.619],[-21.619,0]],\"v\":[[-39.144,0],[0,-39.144],[39.144,0],[0,39.144]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.161000001197,0.33300000359,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[39.706,39.927],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":211,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":7,\"ty\":4,\"nm\":\"eye\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[294.25,184.75,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[-665.75,-355.25,0],\"ix\":1,\"l\":2},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.45,0.47,0.333],\"y\":[0,0,0]},\"t\":0,\"s\":[100,0,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.474,0.474,0.269],\"y\":[0,0,0]},\"t\":14,\"s\":[100,114.2,100]},{\"i\":{\"x\":[0.099,0.158,0.684],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":22,\"s\":[100,100,100]},{\"i\":{\"x\":[0,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.739,0.706,0.167],\"y\":[0,0,0]},\"t\":148,\"s\":[100,100,100]},{\"t\":160,\"s\":[100,0,100]}],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":1,\"k\":[{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":0.45,\"y\":0},\"t\":0,\"s\":[{\"i\":[[64.5,0],[0,0],[-70,0],[0,0]],\"o\":[[-64.5,0],[0,0],[70,0],[0,0]],\"v\":[[-665,-414.5],[-777,-355],[-665,-296],[-554.5,-355.5]],\"c\":true}]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.167,\"y\":0},\"t\":14,\"s\":[{\"i\":[[64.5,0],[0,0],[-70,0],[0,0]],\"o\":[[-64.5,0],[0,0],[70,0],[0,0]],\"v\":[[-665,-414.5],[-777,-355],[-665,-296],[-554.5,-355.5]],\"c\":true}]},{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":22,\"s\":[{\"i\":[[64.5,0],[0,0],[-70,0],[0,0]],\"o\":[[-64.5,0],[0,0],[70,0],[0,0]],\"v\":[[-665,-414.5],[-777,-355],[-665,-296],[-554.5,-355.5]],\"c\":true}]},{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":0.739,\"y\":0},\"t\":148,\"s\":[{\"i\":[[64.5,0],[0,0],[-70,0],[0,0]],\"o\":[[-64.5,0],[0,0],[70,0],[0,0]],\"v\":[[-665,-414.5],[-777,-355],[-665,-296],[-554.5,-355.5]],\"c\":true}]},{\"t\":160,\"s\":[{\"i\":[[64.5,0],[0,0],[-70,0],[0,0]],\"o\":[[-64.5,0],[0,0],[70,0],[0,0]],\"v\":[[-665,-414.5],[-777,-355],[-665,-296],[-554.5,-355.5]],\"c\":true}]}],\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Shape 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":211,\"st\":0,\"bm\":0}]},{\"id\":\"comp_2\",\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":3,\"nm\":\"cloudHandle\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":0,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":0,\"s\":[251.438,123,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":20,\"s\":[214.06,123,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":135,\"s\":[170.309,123,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"cloudPart01\",\"parent\":1,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[22.529,-0.036,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[22.636,22.636,0],\"ix\":1,\"l\":2},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":0,\"s\":[100,0,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":5,\"s\":[100,120,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":10,\"s\":[100,90,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":15,\"s\":[100,105,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":20,\"s\":[100,100,100]},{\"i\":{\"x\":[0.123,0.343,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":120,\"s\":[100,100,100]},{\"i\":{\"x\":[0.433,0.433,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.524,0.615,0.333],\"y\":[0,0,0]},\"t\":125.625,\"s\":[100,140,100]},{\"t\":131.25,\"s\":[100,0,100]}],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[12.364,0],[0,-12.363],[0,0]],\"o\":[[-12.364,0],[0,0],[0,-12.363]],\"v\":[[0,-11.193],[-22.386,11.193],[22.386,11.193]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[22.636,11.443],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"cloudPart02\",\"parent\":1,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[67.301,-0.036,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[22.636,22.636,0],\"ix\":1,\"l\":2},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":5,\"s\":[100,0,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":10,\"s\":[100,120,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":15,\"s\":[100,90,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":20,\"s\":[100,105,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":25,\"s\":[100,100,100]},{\"i\":{\"x\":[0.308,0.308,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":121.875,\"s\":[100,100,100]},{\"i\":{\"x\":[0.433,0.433,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.524,0.524,0.333],\"y\":[0,0,0]},\"t\":127.5,\"s\":[100,140,100]},{\"t\":133.125,\"s\":[100,0,100]}],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[12.364,0],[0,-12.363],[0,0]],\"o\":[[-12.364,0],[0,0],[0,-12.363]],\"v\":[[0,-11.193],[-22.386,11.193],[22.386,11.193]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[22.636,11.443],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":5,\"op\":169,\"st\":5,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"cloudPart03\",\"parent\":1,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[112.073,-0.036,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[22.636,22.636,0],\"ix\":1,\"l\":2},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":9,\"s\":[100,0,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":14,\"s\":[100,120,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":19,\"s\":[100,90,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":24,\"s\":[100,105,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":29,\"s\":[100,100,100]},{\"i\":{\"x\":[0.308,0.308,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":123.75,\"s\":[100,100,100]},{\"i\":{\"x\":[0.433,0.433,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.524,0.524,0.333],\"y\":[0,0,0]},\"t\":129.375,\"s\":[100,140,100]},{\"t\":135,\"s\":[100,0,100]}],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[12.364,0],[0,-12.363],[0,0]],\"o\":[[-12.364,0],[0,0],[0,-12.363]],\"v\":[[0,-11.193],[-22.386,11.193],[22.386,11.193]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[22.636,11.443],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":9,\"op\":169,\"st\":9,\"bm\":0}]}],\"layers\":[{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"totterStroke01 Outlines\",\"parent\":4,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[129,90.5,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[115,103.5,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ef\":[{\"ty\":28,\"nm\":\"Set Matte\",\"np\":8,\"mn\":\"ADBE Set Matte3\",\"ix\":1,\"en\":1,\"ef\":[{\"ty\":10,\"nm\":\"Take Matte From Layer\",\"mn\":\"ADBE Set Matte3-0001\",\"ix\":1,\"v\":{\"a\":0,\"k\":4,\"ix\":1}},{\"ty\":7,\"nm\":\"Use For Matte\",\"mn\":\"ADBE Set Matte3-0002\",\"ix\":2,\"v\":{\"a\":0,\"k\":4,\"ix\":2}},{\"ty\":7,\"nm\":\"Invert Matte\",\"mn\":\"ADBE Set Matte3-0003\",\"ix\":3,\"v\":{\"a\":0,\"k\":0,\"ix\":3}},{\"ty\":7,\"nm\":\"If Layer Sizes Differ\",\"mn\":\"ADBE Set Matte3-0004\",\"ix\":4,\"v\":{\"a\":0,\"k\":1,\"ix\":4}},{\"ty\":7,\"nm\":\"Composite Matte with Original\",\"mn\":\"ADBE Set Matte3-0005\",\"ix\":5,\"v\":{\"a\":0,\"k\":1,\"ix\":5}},{\"ty\":7,\"nm\":\"Premultiply Matte Layer\",\"mn\":\"ADBE Set Matte3-0006\",\"ix\":6,\"v\":{\"a\":0,\"k\":1,\"ix\":6}}]}],\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-5,12],[0,0],[-70.236,-33.345],[0,0],[3,1]],\"o\":[[5,-12],[0,0],[70.237,33.345],[0,0],[-17.181,-5.727]],\"v\":[[-123.013,19.518],[-109.207,-2.452],[38.97,-65.091],[7.428,98.437],[-7.013,109.518]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":4,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[115.013,103.482],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":0,\"k\":0,\"ix\":1},\"e\":{\"a\":0,\"k\":90,\"ix\":2},\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":27,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":123,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":139,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":140,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":236,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":252,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":253,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":349,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":365,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":366,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":462,\"s\":[360]},{\"t\":478,\"s\":[360]}],\"ix\":3},\"m\":1,\"ix\":2,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false}],\"ip\":0,\"op\":261,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"totterStroke02 Outlines\",\"parent\":4,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[275,95.5,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[78,99.5,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ef\":[{\"ty\":28,\"nm\":\"Set Matte\",\"np\":8,\"mn\":\"ADBE Set Matte3\",\"ix\":1,\"en\":1,\"ef\":[{\"ty\":10,\"nm\":\"Take Matte From Layer\",\"mn\":\"ADBE Set Matte3-0001\",\"ix\":1,\"v\":{\"a\":0,\"k\":4,\"ix\":1}},{\"ty\":7,\"nm\":\"Use For Matte\",\"mn\":\"ADBE Set Matte3-0002\",\"ix\":2,\"v\":{\"a\":0,\"k\":4,\"ix\":2}},{\"ty\":7,\"nm\":\"Invert Matte\",\"mn\":\"ADBE Set Matte3-0003\",\"ix\":3,\"v\":{\"a\":0,\"k\":0,\"ix\":3}},{\"ty\":7,\"nm\":\"If Layer Sizes Differ\",\"mn\":\"ADBE Set Matte3-0004\",\"ix\":4,\"v\":{\"a\":0,\"k\":1,\"ix\":4}},{\"ty\":7,\"nm\":\"Composite Matte with Original\",\"mn\":\"ADBE Set Matte3-0005\",\"ix\":5,\"v\":{\"a\":0,\"k\":1,\"ix\":5}},{\"ty\":7,\"nm\":\"Premultiply Matte Layer\",\"mn\":\"ADBE Set Matte3-0006\",\"ix\":6,\"v\":{\"a\":0,\"k\":1,\"ix\":6}}]}],\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-4.278,-5.039],[-48.801,-46.839],[-9.5,2]],\"o\":[[0,0],[47.927,56.456],[0,0],[9.5,-2]],\"v\":[[24.49,-102.104],[32.767,-94.065],[-23.293,94.065],[-5.01,99.896]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":4,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[78.01,99.604],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":0,\"k\":0,\"ix\":1},\"e\":{\"a\":0,\"k\":91.5,\"ix\":2},\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":0,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":71.787,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":83.752,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":84.499,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":156.287,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":168.252,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":169,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":322,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":338,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":339,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":435,\"s\":[360]},{\"t\":451,\"s\":[360]}],\"ix\":3},\"m\":1,\"ix\":2,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false}],\"ip\":0,\"op\":261,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"totter Outlines\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.317],\"y\":[1]},\"o\":{\"x\":[0.553],\"y\":[0]},\"t\":0,\"s\":[0]},{\"i\":{\"x\":[0.386],\"y\":[1]},\"o\":{\"x\":[0.51],\"y\":[0]},\"t\":25.5,\"s\":[45.1]},{\"i\":{\"x\":[0.344],\"y\":[1]},\"o\":{\"x\":[0.536],\"y\":[0]},\"t\":57.098,\"s\":[-27.9]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.643],\"y\":[0]},\"t\":76.753,\"s\":[15.2]},{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":89.29,\"s\":[-5]},{\"t\":100.45703125,\"s\":[0]}],\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.317,\"y\":1},\"o\":{\"x\":0.553,\"y\":0},\"t\":0,\"s\":[794.312,465.989,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.386,\"y\":1},\"o\":{\"x\":0.51,\"y\":0},\"t\":25.5,\"s\":[860.312,465.989,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.344,\"y\":1},\"o\":{\"x\":0.536,\"y\":0},\"t\":57.098,\"s\":[754.312,465.989,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.643,\"y\":0},\"t\":76.753,\"s\":[818.512,465.989,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":89.29,\"s\":[788.912,465.989,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":100.45703125,\"s\":[794.312,465.989,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[195.312,0.489,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[45.3,45.3,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-107.682,1.37],[1.37,107.682],[0,0]],\"o\":[[1.371,107.681],[107.68,-1.37],[0,0],[0,0]],\"v\":[[-195.658,-94.451],[1.796,98.042],[194.288,-99.413],[111.788,-98.362]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[195.989,99.902],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":261,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":5,\"ty\":4,\"nm\":\"purpleBall Outlines\",\"parent\":4,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.475,\"y\":1},\"o\":{\"x\":0.498,\"y\":0},\"t\":3.682,\"s\":[194.973,-77.453,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.52,\"y\":1},\"o\":{\"x\":0.46,\"y\":0},\"t\":27.718,\"s\":[360.373,-82.153,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.597,\"y\":0},\"t\":59.315,\"s\":[15.673,-77.453,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":78.971,\"s\":[282.573,-80.453,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":93.712,\"s\":[181.973,-77.453,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":106,\"s\":[194.973,-77.453,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[83.5,83,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[108.2,108.2,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-5.572,42.582],[-42.581,-5.571],[5.572,-42.582],[42.581,5.571]],\"o\":[[5.571,-42.582],[42.582,5.572],[-5.571,42.581],[-42.582,-5.572]],\"v\":[[-77.1,-10.088],[10.088,-77.101],[77.1,10.088],[-10.088,77.101]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[83.473,82.98],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":261,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":6,\"ty\":4,\"nm\":\"totterShadow\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[879.316,555.416,0],\"ix\":2,\"x\":\"var $bm_rt;\\n$bm_rt = thisComp.layer('totter Outlines').transform.position;\",\"l\":2},\"a\":{\"a\":0,\"k\":[100.299,-88.363,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[104.4,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,1.318],[-50.823,0],[0,-1.318],[50.824,0]],\"o\":[[0,-1.318],[50.824,0],[0,1.318],[-50.823,0]],\"v\":[[-92.024,0],[0,-2.387],[92.024,0],[0,2.387]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.137254901961,0.149019607843,0.192156877705,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[92.274,2.637],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":7,\"ty\":0,\"nm\":\"potplantTwoAnimated\",\"refId\":\"comp_0\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[248,555.5,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[647,594.5,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[96.4,96.4,100],\"ix\":6,\"l\":2}},\"ao\":0,\"w\":980,\"h\":685,\"ip\":0,\"op\":77,\"st\":-92,\"bm\":0},{\"ddd\":0,\"ind\":8,\"ty\":0,\"nm\":\"potplantTwoAnimated\",\"refId\":\"comp_0\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[248,555.5,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[647,594.5,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[96.4,96.4,100],\"ix\":6,\"l\":2}},\"ao\":0,\"w\":980,\"h\":685,\"ip\":77,\"op\":169,\"st\":77,\"bm\":0},{\"ddd\":0,\"ind\":9,\"ty\":4,\"nm\":\"kneeJoint\",\"parent\":10,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.133],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":30,\"s\":[0]},{\"i\":{\"x\":[0.42],\"y\":[1]},\"o\":{\"x\":[0.553],\"y\":[0.024]},\"t\":46,\"s\":[16]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.552],\"y\":[0]},\"t\":61,\"s\":[-8]},{\"i\":{\"x\":[0.667],\"y\":[0.95]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":78,\"s\":[4]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[-0.092]},\"t\":91,\"s\":[-2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":103,\"s\":[1]},{\"t\":115,\"s\":[0]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[0.188,19.461,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[19.461,19.461,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,-10.61],[10.61,0],[0,10.61],[-10.61,0]],\"o\":[[0,10.61],[-10.61,0],[0,-10.61],[10.61,0]],\"v\":[[19.211,0],[0,19.211],[-19.211,0],[0,-19.211]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.192156877705,0.403921598547,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[19.461,19.461],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":10,\"ty\":4,\"nm\":\"upperLeg01\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[542.412,265.982,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[54.157,19.461,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0],[-0.862,0.078],[0,0],[0,0],[0,14.733],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0.882,0],[0,0],[0,0],[14.288,-1.657],[0,0],[0,0],[0,0]],\"v\":[[-53.907,19.087],[7.163,19.087],[7.149,19.211],[25.182,19.211],[27.797,19.087],[28.526,19.087],[28.526,19.011],[53.907,-9.514],[53.907,-18.66],[-53.907,-19.211]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.192156877705,0.403921598547,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[54.157,19.461],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":11,\"ty\":4,\"nm\":\"shoelaceBow01\",\"parent\":12,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":30,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.167],\"y\":[0]},\"t\":48,\"s\":[17.4]},{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.167],\"y\":[0]},\"t\":63,\"s\":[-8.4]},{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.167],\"y\":[0]},\"t\":80,\"s\":[8]},{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.167],\"y\":[0]},\"t\":93,\"s\":[-2.3]},{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.167],\"y\":[0]},\"t\":105,\"s\":[0.6]},{\"t\":117,\"s\":[-6.4]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[45.585,127.896,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[14.057,11.756,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[1.589,-0.823],[0,0],[-2.056,1.978],[-1.043,-1.455]],\"o\":[[-2.532,1.312],[0,0],[1.289,-1.24],[1.042,1.455]],\"v\":[[4.495,1.384],[-6.283,5.124],[0.719,-3.884],[5.241,-3.138]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.603,\"ix\":5},\"lc\":2,\"lj\":2,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[20.324,6.632],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-1.589,-0.823],[0,0],[2.056,1.978],[1.043,-1.455]],\"o\":[[2.532,1.312],[0,0],[-1.289,-1.24],[-1.042,1.455]],\"v\":[[-4.495,1.384],[6.283,5.124],[-0.719,-3.884],[-5.241,-3.138]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.603,\"ix\":5},\"lc\":2,\"lj\":2,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[7.79,6.632],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 2\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":12,\"ty\":4,\"nm\":\"lowerLeg01\",\"parent\":9,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[-2.152,85.616,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[41.142,85.616,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[81.729,162.447],[1.44,162.447]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-0.886,0],[-1.722,-7.702],[0,0]],\"o\":[[0.85,-0.129],[8.221,0],[0,0],[0,0]],\"v\":[[-3.397,-6.521],[-0.794,-6.73],[16.021,6.73],[-16.021,6.73]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[17.526,155.718],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 2\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[48.821,132.164],[39.409,132.164]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 3\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":3,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[46.113,136.431],[36.701,136.431]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 4\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":4,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[42.42,140.699],[33.008,140.699]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 5\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":5,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[6.311,-2.954],[0,0]],\"o\":[[-2.272,6.578],[0,0],[0,0]],\"v\":[[14.929,-8.872],[2.361,8.872],[-14.929,8.872]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[37.186,137.628],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 6\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":6,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,-10.576],[0,0],[0,0],[16.334,-3.969],[0,-13.951],[0,0],[0,0]],\"o\":[[-10.576,0],[0,0],[0,0],[-0.529,2.564],[-14.369,3.491],[0,0],[0,0],[0,0]],\"v\":[[21.675,-85.366],[2.526,-66.217],[2.526,34.263],[2.619,34.263],[-18.885,60.884],[-40.824,85.366],[40.824,85.366],[40.824,-66.217]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.192156877705,0.403921598547,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[41.142,85.616],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 7\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":7,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":13,\"ty\":4,\"nm\":\"shoulderLine\",\"parent\":17,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":0,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":9,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":17,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":26,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":34,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":43,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":51,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":60,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":68,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":77,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":85,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":93,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":101,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":110,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":118,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":127,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":135,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":144,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":152,\"s\":[5.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":161,\"s\":[0]},{\"t\":169,\"s\":[5.6]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[22.442,10.454,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[16.495,2.928,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[1.785,-4.428],[0,0]],\"o\":[[0,0],[-4.428,-1.785],[0,0],[0,0]],\"v\":[[7.362,-5.811],[7.362,-5.811],[-3.888,-1.025],[-7.362,7.595]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0,0.094117654539,0.121568634931,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.709,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[9.134,9.368],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":14,\"ty\":4,\"nm\":\"arm\",\"parent\":13,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[8.262,22.304,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[55.264,4.001,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-8.331,4.362],[-2.675,6.85],[0,0],[8.885,-4.652],[18.685,6.056],[0,0]],\"o\":[[5.517,-2.889],[0,0],[-4.003,10.474],[-12.091,6.331],[0,0],[14.649,4.747]],\"v\":[[4.854,-3.103],[17.181,-17.768],[31.513,-12.678],[11.911,10.376],[-31.513,11.712],[-28.726,-1.342]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.823529471603,0.443137284821,0.403921598547,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[31.764,18.019],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":15,\"ty\":4,\"nm\":\"hand\",\"parent\":14,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":-6,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":10,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":18,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":27,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":35,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":44,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":52,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":61,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":69,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":78,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":86,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":94,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":102,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":111,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":119,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":128,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":136,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":145,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":153,\"s\":[7.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":162,\"s\":[0]},{\"t\":170,\"s\":[7.8]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[3.378,24.666,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[25.472,14.208,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[3.056,1.3],[0.2,-0.537],[0,0],[-0.465,-0.209],[0,0],[0.076,-0.28],[0.317,0.096],[0,0],[0.091,-0.397],[0,0],[-0.339,-0.118],[0,0],[0.137,-0.354],[-0.281,-1.315],[-0.473,-0.153],[0,0],[-0.864,6.788],[0,0]],\"o\":[[-0.524,-0.223],[0,0],[-0.177,0.478],[0,0],[0.265,0.119],[-0.087,0.32],[0,0],[-0.39,-0.118],[0,0],[-0.081,0.35],[0,0],[0.358,0.125],[-1.361,3.523],[0.104,0.487],[0,0],[0,0],[0.875,-6.875],[0,0]],\"v\":[[-1.375,-9.288],[-2.7,-8.713],[-2.709,-8.691],[-2.198,-7.471],[1.827,-5.666],[2.154,-4.973],[1.415,-4.564],[-11.449,-8.46],[-12.339,-7.945],[-12.36,-7.856],[-11.906,-7.033],[-3.342,-4.038],[-2.934,-3.165],[-3.708,4.506],[-2.775,5.537],[9.653,9.511],[18.805,4.293],[12.441,-3.544]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.823529471603,0.443137284821,0.403921598547,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[12.691,9.762],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":16,\"ty\":4,\"nm\":\"phone\",\"parent\":15,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[14.144,6.397,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[24.31,17.234,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-0.747,1.152],[0,0],[1.152,0.747],[0,0],[0.747,-1.152],[-1.152,-0.747],[0,0]],\"o\":[[0,0],[0.747,-1.152],[0,0],[-1.152,-0.746],[-0.746,1.152],[0,0],[1.152,0.747]],\"v\":[[13.313,8.628],[13.313,8.628],[12.579,5.19],[-9.876,-9.363],[-13.314,-8.63],[-12.58,-5.191],[9.875,9.362]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[14.31,10.36],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":17,\"ty\":4,\"nm\":\"chest\",\"parent\":21,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":-17,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":-8.598,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":-0.195,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":8.207,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":16.609,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":25.011,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":33.413,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":41.815,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":50.218,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":58.62,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":67.022,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":75.425,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":83.827,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":92.229,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":100.631,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":109.033,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":117.436,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":125.838,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":134.24,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":142.643,\"s\":[2.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":151.045,\"s\":[-3.8]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":159.447,\"s\":[2.8]},{\"t\":167.849609375,\"s\":[-3.8]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[197.391,64.976,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[36.208,58.384,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[10.194,0],[0,-10.194]],\"o\":[[0,0],[0,0],[0,-10.194],[-10.194,0],[0,0]],\"v\":[[-18.458,29.134],[18.458,29.134],[18.458,-10.676],[0,-29.134],[-18.458,-10.676]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[18.708,29.384],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":-25,\"op\":234,\"st\":-9,\"bm\":0},{\"ddd\":0,\"ind\":18,\"ty\":4,\"nm\":\"eye\",\"parent\":19,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[9.996,25.066,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[1.564,1.858,0],\"ix\":1,\"l\":2},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":26,\"s\":[100,100,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":27.92,\"s\":[100,8,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":31.76,\"s\":[100,100,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":69,\"s\":[100,100,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":70.92,\"s\":[100,8,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":74.76,\"s\":[100,100,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":112,\"s\":[100,100,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":113.92,\"s\":[100,8,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":117.76,\"s\":[100,100,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":155,\"s\":[100,100,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0]},\"t\":156.92,\"s\":[100,8,100]},{\"t\":160.759765625,\"s\":[100,100,100]}],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0.385,0.741],[0.514,-0.266],[-0.385,-0.741],[-0.513,0.266]],\"o\":[[-0.385,-0.741],[-0.513,0.267],[0.385,0.741],[0.513,-0.267]],\"v\":[[0.929,-0.483],[-0.698,-1.342],[-0.929,0.483],[0.697,1.342]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0,0,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[1.564,1.858],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":-13,\"op\":184,\"st\":3,\"bm\":0},{\"ddd\":0,\"ind\":19,\"ty\":4,\"nm\":\"head\",\"parent\":17,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":-14.899,\"s\":[-4.9]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":-6.497,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":1.905,\"s\":[8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":10.308,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":18.71,\"s\":[-4.9]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":27.111,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":35.514,\"s\":[8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":43.916,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":52.318,\"s\":[-4.9]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":60.721,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":69.123,\"s\":[8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":77.525,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":85.928,\"s\":[-4.9]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":94.33,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":102.731,\"s\":[8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":111.134,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":119.536,\"s\":[-4.9]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":127.938,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":136.341,\"s\":[8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":144.743,\"s\":[6.6]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":153.146,\"s\":[-4.9]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":161.548,\"s\":[6.6]},{\"t\":169.9501953125,\"s\":[8.2]}],\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":-15.95,\"s\":[14.864,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":-7.548,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":0.854,\"s\":[18.964,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":9.257,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":17.659,\"s\":[14.864,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":26.062,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":34.464,\"s\":[18.964,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":42.866,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":51.269,\"s\":[14.864,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":59.67,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":68.072,\"s\":[18.964,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":76.475,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":84.877,\"s\":[14.864,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":93.279,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":101.682,\"s\":[18.964,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":110.084,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":118.486,\"s\":[14.864,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":126.889,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":135.29,\"s\":[18.964,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":143.692,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":152.095,\"s\":[14.864,-7.952,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":160.497,\"s\":[19.464,-12.252,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":168.8994140625,\"s\":[18.964,-7.952,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[22.056,33.55,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[4.668,9.656],[1.367,10.637],[-4.668,-9.656],[-1.368,-10.637]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[16.64,13.944],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[1.312,2.928],[-2.928,1.313],[-1.312,-2.928],[2.928,-1.312]],\"o\":[[-1.312,-2.928],[2.928,-1.312],[1.312,2.928],[-2.928,1.313]],\"v\":[[-5.301,2.376],[-2.376,-5.302],[5.301,-2.376],[2.376,5.301]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.913725550034,0.850980451995,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[19.658,24.091],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 2\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0.837,1.543],[-1.544,0.838],[-0.837,-1.543],[1.543,-0.838]],\"o\":[[-0.837,-1.543],[1.543,-0.837],[0.838,1.543],[-1.544,0.837]],\"v\":[[-2.795,1.516],[-1.516,-2.795],[2.794,-1.516],[1.516,2.795]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[20.705,23.622],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 3\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":3,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0.413,-1.43],[-2.71,-6.973],[-0.232,-0.141],[-5.454,1.905],[5.608,8.007],[5.614,-8.178]],\"o\":[[0,0],[0.096,0.246],[0,0],[0,0],[-5.692,-8.124],[-0.791,1.151]],\"v\":[[-15.123,-1.36],[-2.714,7.178],[1.514,6.323],[9.893,11.499],[9.515,-4.956],[-13.28,-5.226]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0,0,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[20.102,16.282],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 4\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":4,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-5.394,-11.564],[0,0],[0,0],[1.021,-1.346],[-1.371,0.218],[-0.18,0.026],[-2.455,-0.24],[-2.357,1.417],[-0.891,0.633],[0,0],[-0.613,0.407],[3.473,6.501]],\"o\":[[0,0.001],[0,0],[0,0],[-1.021,1.346],[0.193,-0.031],[0.606,0.859],[1.3,0.127],[0.849,-0.417],[0,0],[0.527,-0.374],[6.434,-4.279],[-14.462,-13.861]],\"v\":[[-10.684,6.48],[-10.684,6.482],[-10.684,6.48],[-10.758,10.563],[-9.133,12.75],[-8.574,12.666],[-1.582,19.205],[5.393,16.094],[7.95,14.49],[7.957,14.485],[9.645,13.312],[11.429,-5.471]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.823529471603,0.443137284821,0.403921598547,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[16.328,19.582],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 5\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":5,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":-25,\"op\":234,\"st\":-9,\"bm\":0},{\"ddd\":0,\"ind\":20,\"ty\":4,\"nm\":\"hair\",\"parent\":19,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":-13.85,\"s\":[-4.5]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":-5.447,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2.955,\"s\":[-8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":11.357,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":19.76,\"s\":[-4.5]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":28.162,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":36.564,\"s\":[-8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":44.967,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":53.369,\"s\":[-4.5]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":61.771,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":70.173,\"s\":[-8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":78.575,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":86.978,\"s\":[-4.5]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":95.38,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":103.782,\"s\":[-8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":112.185,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":120.587,\"s\":[-4.5]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":128.989,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":137.391,\"s\":[-8.2]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":145.793,\"s\":[0]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":154.195,\"s\":[-4.5]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":162.598,\"s\":[0]},{\"t\":171,\"s\":[-8.2]}],\"ix\":10},\"p\":{\"a\":0,\"k\":[26.257,14.683,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,6.016,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[2.434,0],[1.527,0.482],[1.893,3.642],[-1.237,3.914],[-0.589,0.999],[1.135,0.358],[1.893,3.642],[-2.609,4.418],[1.137,0.36],[1.893,3.642],[-1.237,3.913],[-1.068,1.397],[0,0],[0,0],[-3.913,-1.237],[-1.894,-3.643],[1.236,-3.914],[0.592,-1.002],[-2.536,-4.879],[1.237,-3.914],[0.592,-1.002],[-2.536,-4.878],[3.496,-4.589],[0,0],[0,0]],\"o\":[[-1.556,0],[-3.913,-1.236],[-1.893,-3.642],[0.358,-1.134],[-1.156,-0.092],[-3.914,-1.237],[-2.535,-4.878],[-1.16,-0.091],[-3.914,-1.236],[-1.893,-3.641],[0.545,-1.727],[0,0],[0,0],[3.641,-1.892],[3.914,1.237],[1.892,3.64],[-0.36,1.137],[5.116,0.401],[1.893,3.642],[-0.359,1.137],[5.116,0.402],[2.832,5.449],[0,0],[0,0],[-2.222,1.154]],\"v\":[[15.069,44.584],[10.421,43.863],[1.416,36.298],[0.398,24.581],[1.825,21.375],[-1.62,20.701],[-10.625,13.135],[-10.204,-1.786],[-13.66,-2.462],[-22.665,-10.027],[-23.683,-21.742],[-21.242,-26.455],[-27.928,-39.32],[-22.138,-42.33],[-10.422,-43.347],[-1.415,-35.781],[-0.397,-24.065],[-1.831,-20.849],[10.624,-12.621],[11.642,-0.904],[10.21,2.312],[22.664,10.541],[21.237,26.962],[27.928,39.835],[22.138,42.845]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0,0,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[28.178,44.835],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":-25,\"op\":234,\"st\":-9,\"bm\":0},{\"ddd\":0,\"ind\":21,\"ty\":4,\"nm\":\"leg02\",\"parent\":23,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[217.531,-55.083,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[95.352,57.077,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[65.432,104.512],[1.505,104.512]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[1.589,-0.823],[0,0],[-2.056,1.978],[-1.043,-1.455]],\"o\":[[-2.532,1.312],[0,0],[1.289,-1.24],[1.042,1.455]],\"v\":[[4.495,1.384],[-6.283,5.124],[0.719,-3.884],[5.241,-3.138]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.603,\"ix\":5},\"lc\":2,\"lj\":2,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[52.312,64.837],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 2\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0],[0,0],[-5.709,1.434],[-4.649,-3.611],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0],[2.392,-5.379],[5.71,-1.433],[0,0],[0,0]],\"v\":[[50.039,54.613],[-26.057,-4.487],[-38.535,23.578],[-73.53,8.02],[-51.12,-42.387],[-38.287,-53.18],[-21.877,-49.731],[73.53,24.367]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.082352941176,0.082352941176,0.086274509804,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[116.856,54.863],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 3\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":3,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-1.589,-0.823],[0,0],[2.056,1.978],[1.043,-1.455]],\"o\":[[2.532,1.312],[0,0],[-1.289,-1.24],[-1.042,1.455]],\"v\":[[-4.495,1.384],[6.283,5.124],[-0.719,-3.884],[-5.241,-3.138]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.603,\"ix\":5},\"lc\":2,\"lj\":2,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[39.318,64.837],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 4\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":4,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-1.722,-7.702],[0,0],[-6.447,2.878],[-0.886,0]],\"o\":[[0,0],[1.924,-6.153],[0.85,-0.129],[8.221,0]],\"v\":[[16.021,6.729],[-16.021,6.729],[-3.397,-6.521],[-0.794,-6.729]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[17.526,97.782],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 5\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":5,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[48.821,74.228],[39.409,74.228]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 6\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":6,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[46.113,78.496],[36.701,78.496]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 7\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":7,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[42.42,82.763],[33.008,82.763]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 8\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":8,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[6.311,-2.954],[0,0]],\"o\":[[-2.272,6.578],[0,0],[0,0]],\"v\":[[14.929,-8.872],[2.361,8.872],[-14.929,8.872]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":0.602,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[37.186,79.692],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 9\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":9,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,-13.952],[0,0],[0,0],[0,0],[17.454,-4.241]],\"o\":[[0,0],[0,0],[0,0],[0,0],[-14.369,3.492]],\"v\":[[-40.705,25.688],[40.705,25.688],[40.705,-25.688],[2.791,-25.688],[-18.766,1.205]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.082352941176,0.082352941176,0.086274509804,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[41.024,87.359],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 10\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":10,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":-13,\"op\":184,\"st\":3,\"bm\":0},{\"ddd\":0,\"ind\":22,\"ty\":0,\"nm\":\"eyeballJones\",\"refId\":\"comp_1\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[592.5,377.5,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[302,238,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[50,50,100],\"ix\":6,\"l\":2}},\"ao\":0,\"w\":1920,\"h\":1080,\"ip\":0,\"op\":212,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":23,\"ty\":4,\"nm\":\"block\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[480.897,376.874,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[205.105,93.148,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[204.855,92.898],[-204.855,92.898],[-204.855,-92.898],[204.855,-92.898]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0,0.588235294118,1,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[205.105,93.148],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":24,\"ty\":3,\"nm\":\"Null 4\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":0,\"ix\":11},\"r\":{\"a\":0,\"k\":71,\"ix\":10},\"p\":{\"a\":0,\"k\":[276.75,158.25,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[39.2,39.2,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ip\":0,\"op\":169,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":25,\"ty\":4,\"nm\":\"triaDisappearSparkPop\",\"parent\":24,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[-22.5,0.5,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[12.312,-3.75],[42.75,-21.25]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":7,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":4,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":145,\"s\":[0]},{\"t\":157.48046875,\"s\":[100]}],\"ix\":1},\"e\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.078],\"y\":[1]},\"o\":{\"x\":[0.447],\"y\":[0]},\"t\":145,\"s\":[0]},{\"t\":157.48046875,\"s\":[100]}],\"ix\":2},\"o\":{\"a\":0,\"k\":0,\"ix\":3},\"m\":1,\"ix\":3,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[9.062,15.5],[31.5,43.75]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":7,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":4,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":145.96,\"s\":[0]},{\"t\":158.4404296875,\"s\":[100]}],\"ix\":1},\"e\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.078],\"y\":[1]},\"o\":{\"x\":[0.447],\"y\":[0]},\"t\":145.96,\"s\":[0]},{\"t\":158.4404296875,\"s\":[100]}],\"ix\":2},\"o\":{\"a\":0,\"k\":0,\"ix\":3},\"m\":1,\"ix\":3,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 2\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":2,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[-7.188,15],[-30.5,42.75]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":7,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":4,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":145,\"s\":[0]},{\"t\":157.48046875,\"s\":[100]}],\"ix\":1},\"e\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.078],\"y\":[1]},\"o\":{\"x\":[0.447],\"y\":[0]},\"t\":145,\"s\":[0]},{\"t\":157.48046875,\"s\":[100]}],\"ix\":2},\"o\":{\"a\":0,\"k\":0,\"ix\":3},\"m\":1,\"ix\":3,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 3\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":3,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[-10.188,-0.25],[-44.25,-16.5]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":7,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":4,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":145.96,\"s\":[0]},{\"t\":158.4404296875,\"s\":[100]}],\"ix\":1},\"e\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.078],\"y\":[1]},\"o\":{\"x\":[0.447],\"y\":[0]},\"t\":145.96,\"s\":[0]},{\"t\":158.4404296875,\"s\":[100]}],\"ix\":2},\"o\":{\"a\":0,\"k\":0,\"ix\":3},\"m\":1,\"ix\":3,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 4\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":4,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0]],\"o\":[[0,0],[0,0]],\"v\":[[-0.438,-14.5],[-0.25,-47]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":7,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":4,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":145,\"s\":[0]},{\"t\":157.48046875,\"s\":[100]}],\"ix\":1},\"e\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.078],\"y\":[1]},\"o\":{\"x\":[0.447],\"y\":[0]},\"t\":145,\"s\":[0]},{\"t\":157.48046875,\"s\":[100]}],\"ix\":2},\"o\":{\"a\":0,\"k\":0,\"ix\":3},\"m\":1,\"ix\":3,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 5\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":5,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":145,\"op\":161,\"st\":-83,\"bm\":0},{\"ddd\":0,\"ind\":26,\"ty\":4,\"nm\":\"triStroke02 Outlines\",\"parent\":28,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[146.5,87.5,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[55.5,57.5,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ef\":[{\"ty\":28,\"nm\":\"Set Matte\",\"np\":8,\"mn\":\"ADBE Set Matte3\",\"ix\":1,\"en\":1,\"ef\":[{\"ty\":10,\"nm\":\"Take Matte From Layer\",\"mn\":\"ADBE Set Matte3-0001\",\"ix\":1,\"v\":{\"a\":0,\"k\":28,\"ix\":1}},{\"ty\":7,\"nm\":\"Use For Matte\",\"mn\":\"ADBE Set Matte3-0002\",\"ix\":2,\"v\":{\"a\":0,\"k\":4,\"ix\":2}},{\"ty\":7,\"nm\":\"Invert Matte\",\"mn\":\"ADBE Set Matte3-0003\",\"ix\":3,\"v\":{\"a\":0,\"k\":0,\"ix\":3}},{\"ty\":7,\"nm\":\"If Layer Sizes Differ\",\"mn\":\"ADBE Set Matte3-0004\",\"ix\":4,\"v\":{\"a\":0,\"k\":1,\"ix\":4}},{\"ty\":7,\"nm\":\"Composite Matte with Original\",\"mn\":\"ADBE Set Matte3-0005\",\"ix\":5,\"v\":{\"a\":0,\"k\":1,\"ix\":5}},{\"ty\":7,\"nm\":\"Premultiply Matte Layer\",\"mn\":\"ADBE Set Matte3-0006\",\"ix\":6,\"v\":{\"a\":0,\"k\":1,\"ix\":6}}]}],\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[-34.28,-20.88],[0,0],[-5.291,15.344]],\"o\":[[0,0],[0,0],[25.083,15.276],[0,0],[5.291,-15.344]],\"v\":[[40.797,-73.416],[9.869,-51.615],[-15.524,36.339],[49.804,4.01],[75.521,-43.438]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":0,\"k\":0,\"ix\":1},\"e\":{\"a\":0,\"k\":90,\"ix\":2},\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":26,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":136,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":143,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":144,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":254,\"s\":[360]},{\"t\":261,\"s\":[360]}],\"ix\":3},\"m\":1,\"ix\":2,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":5,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[55.626,57.432],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":8,\"op\":161,\"st\":8,\"bm\":0},{\"ddd\":0,\"ind\":27,\"ty\":4,\"nm\":\"triStroke01 Outlines\",\"parent\":28,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[109.5,134,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[54.5,54,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ef\":[{\"ty\":28,\"nm\":\"Set Matte\",\"np\":8,\"mn\":\"ADBE Set Matte3\",\"ix\":1,\"en\":1,\"ef\":[{\"ty\":10,\"nm\":\"Take Matte From Layer\",\"mn\":\"ADBE Set Matte3-0001\",\"ix\":1,\"v\":{\"a\":0,\"k\":28,\"ix\":1}},{\"ty\":7,\"nm\":\"Use For Matte\",\"mn\":\"ADBE Set Matte3-0002\",\"ix\":2,\"v\":{\"a\":0,\"k\":4,\"ix\":2}},{\"ty\":7,\"nm\":\"Invert Matte\",\"mn\":\"ADBE Set Matte3-0003\",\"ix\":3,\"v\":{\"a\":0,\"k\":0,\"ix\":3}},{\"ty\":7,\"nm\":\"If Layer Sizes Differ\",\"mn\":\"ADBE Set Matte3-0004\",\"ix\":4,\"v\":{\"a\":0,\"k\":1,\"ix\":4}},{\"ty\":7,\"nm\":\"Composite Matte with Original\",\"mn\":\"ADBE Set Matte3-0005\",\"ix\":5,\"v\":{\"a\":0,\"k\":1,\"ix\":5}},{\"ty\":7,\"nm\":\"Premultiply Matte Layer\",\"mn\":\"ADBE Set Matte3-0006\",\"ix\":6,\"v\":{\"a\":0,\"k\":1,\"ix\":6}}]}],\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.998,17.625],[0,0],[-25.086,48.889],[0,0],[17.272,-12]],\"o\":[[-31.998,-17.625],[0,0],[18.14,-35.351],[0,0],[-17.272,12]],\"v\":[[108.149,66.279],[48.802,48.307],[-23.716,-7.334],[-39.844,-48.307],[-81.842,-43.701]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":0,\"k\":0,\"ix\":1},\"e\":{\"a\":0,\"k\":90,\"ix\":2},\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":8,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":98.809,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":131,\"s\":[360]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":131.826,\"s\":[0]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":222.635,\"s\":[360]},{\"t\":228.4130859375,\"s\":[360]}],\"ix\":3},\"m\":1,\"ix\":2,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":5,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":10,\"bm\":0,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[54.655,54.127],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":8,\"op\":161,\"st\":8,\"bm\":0},{\"ddd\":0,\"ind\":28,\"ty\":4,\"nm\":\"tri Outlines\",\"parent\":24,\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0],\"y\":[1]},\"o\":{\"x\":[0.811],\"y\":[0]},\"t\":10,\"s\":[180.8]},{\"i\":{\"x\":[0.278],\"y\":[1]},\"o\":{\"x\":[0.553],\"y\":[0]},\"t\":29.843,\"s\":[-3.5]},{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.167],\"y\":[0]},\"t\":54,\"s\":[0]},{\"i\":{\"x\":[0.296],\"y\":[1]},\"o\":{\"x\":[1],\"y\":[0]},\"t\":135,\"s\":[0]},{\"t\":149,\"s\":[189]}],\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":0.811,\"y\":0},\"t\":8.157,\"s\":[-22,15.5,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.474,\"y\":1},\"o\":{\"x\":0.553,\"y\":0},\"t\":28,\"s\":[-22,-9.7,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.167,\"y\":0},\"t\":52.157,\"s\":[-22,8,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":90,\"s\":[-22,31.8,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":136,\"s\":[-22,-21.8,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":149,\"s\":[-22,0.2,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[131,111.1,0],\"ix\":1,\"l\":2},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.811,0.811,0.333],\"y\":[0,0,0]},\"t\":8.843,\"s\":[6,6,100]},{\"i\":{\"x\":[0.474,0.474,0.667],\"y\":[1,1,1]},\"o\":{\"x\":[0.553,0.553,0.333],\"y\":[0,0,0]},\"t\":28.843,\"s\":[115.1,115.1,100]},{\"i\":{\"x\":[0.833,0.833,0.833],\"y\":[1,1,1]},\"o\":{\"x\":[0.167,0.167,0.167],\"y\":[0,0,0]},\"t\":53,\"s\":[100,100,100]},{\"i\":{\"x\":[0.296,0.296,0.833],\"y\":[1,1,1]},\"o\":{\"x\":[1,1,0.167],\"y\":[0,0,0]},\"t\":136,\"s\":[100,100,100]},{\"t\":150,\"s\":[0,0,100]}],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":1,\"k\":[{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":0.811,\"y\":0},\"t\":11,\"s\":[{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[-6.259,12.447],[0.281,51.763],[29.698,22.775]],\"c\":true}]},{\"i\":{\"x\":0.474,\"y\":1},\"o\":{\"x\":0.553,\"y\":0},\"t\":30.843,\"s\":[{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[-6.563,-110.679],[-147.291,106.436],[150.956,100.784]],\"c\":true}]},{\"i\":{\"x\":0.833,\"y\":0.833},\"o\":{\"x\":0.167,\"y\":0},\"t\":55,\"s\":[{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[0.075,-91.124],[-130.674,90.915],[130.674,90.839]],\"c\":true}]},{\"i\":{\"x\":0.833,\"y\":1},\"o\":{\"x\":0.167,\"y\":0.167},\"t\":97,\"s\":[{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[22.307,-99.965],[-123.79,67.756],[134.211,104.418]],\"c\":true}]},{\"i\":{\"x\":0.296,\"y\":1},\"o\":{\"x\":1,\"y\":0},\"t\":134,\"s\":[{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[0.075,-91.124],[-130.674,90.915],[130.674,90.839]],\"c\":true}]},{\"t\":148,\"s\":[{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[-18.213,-65.953],[-43.034,68.934],[81.566,23.694]],\"c\":true}]}],\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,0.862745157878,0.501960784314,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[131.028,91.567],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":8,\"op\":161,\"st\":8,\"bm\":0},{\"ddd\":0,\"ind\":29,\"ty\":0,\"nm\":\"cloudAnimated\",\"refId\":\"comp_2\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[447.5,54.25,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"w\":980,\"h\":685,\"ip\":0,\"op\":81,\"st\":-88,\"bm\":0},{\"ddd\":0,\"ind\":30,\"ty\":0,\"nm\":\"cloudAnimated\",\"refId\":\"comp_2\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[447.5,54.25,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"w\":980,\"h\":685,\"ip\":81,\"op\":169,\"st\":81,\"bm\":0}],\"markers\":[]}\r\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport Audio_default from 'assets/Audio.png';\nimport { interactionContext } from 'components/lib/TextAndImage/interactionContext';\nimport EditMarker from 'components/UI/EditMarker';\nimport { keyframes } from 'emotion';\nimport useIntersectionObserver from 'hooks/useIntersectionObserver';\nimport {\n Fragment as _,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useSelector } from 'react-redux';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { CHAMELEON_CACHE_v1 } from 'services/imageCache';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { useCachedResource } from 'services/useCachedResource';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport Transcript from './Transcript';\n\nimport SVG from 'components/lib/SVG';\nimport ReactBodymovin from 'react-lottie';\nimport imagePlaceholder from 'assets/Character A.png';\n\nimport headphonesWoman from 'assets/animations/headphonesWoman.js';\n\nconst AUDIO_FILE_DEFAULT =\n 'https://freesound.org/data/previews/542/542450_5674468-lq.mp3';\n\nconst { lPink } = colors;\n\nconst frameSelected = keyframes`\n from {\n width: 50%;\n height: 50%;\n }\n to {\n width: 75%;\n height: 75%;\n }\n`;\n\nlet audioResizeDelay;\n\nconst AudioImage = ({ src, description, maxHeight }) => {\n const cachedImgSrc = useCachedResource(CHAMELEON_CACHE_v1, src);\n\n return cachedImgSrc ? (\n <img\n src={cachedImgSrc}\n alt={description}\n css={css({\n ...(maxHeight && {\n maxHeight: 'calc(100vh - 230px)',\n }),\n })}\n />\n ) : null;\n};\n\nconst ShowTranscriptBtn = ({\n id,\n setShowTranscript,\n showTranscriptFontSize = 12,\n showTranscriptFontColor = '#000',\n showTranscriptLabel = 'Show transcript',\n}) => {\n return (\n <button\n id={`show-transcript-${id}`}\n css={css`\n width: 100%;\n // position: absolute;\n // left: 50%;\n // bottom: -25px;\n font-size: ${showTranscriptFontSize}px;\n\n // transform: translateX(-50%);\n border: none;\n outline: none;\n background: transparent;\n\n text-decoration: underline;\n text-align: center;\n cursor: pointer;\n color: ${showTranscriptFontColor};\n &:focus {\n ${getButtonFocus('#2684FF')}\n }\n `}\n onClick={() => {\n setShowTranscript(true);\n }}\n aria-label=\"Show transcript\"\n >\n {showTranscriptLabel}\n </button>\n );\n};\n\nconst Audio = ({ id, children, ...props }: { id?: any; children?: any }) => {\n const { entry, init } = useIntersectionObserver(true) as any;\n\n const block: any = getBlockById(id);\n\n const {\n audioSrc = AUDIO_FILE_DEFAULT,\n imgSrc = Audio_default,\n description = '',\n useTranscript,\n showTranscriptFontSize = 12,\n showTranscriptFontColor = '#000',\n viewingTranscriptUnlocksInteraction = false,\n showTranscriptLabel = 'Show transcript',\n maxHeight = false,\n } = block.props;\n\n // console.log({\n // useTranscript,\n // showTranscriptFontSize,\n // showTranscriptFontColor,\n // showTranscriptLabel,\n // });\n\n const [isPlaying, setIsPlaying] = useState(false);\n const [showTranscript, setShowTranscript] = useState(false);\n\n const focusedNodeId = useSelector((state: any) => {\n return state.focusedNodeId;\n });\n\n const selected = focusedNodeId === id;\n const context: any = useContext(interactionContext);\n const mounted = useRef(false);\n const audioInteraction = useRef<HTMLDivElement>(null);\n const audio = useRef<any>(null);\n const audioPausedByUser = useRef<boolean>(false);\n const player = useRef(null);\n\n let autoPlay = block.props.autoPlay || false;\n if (audioPausedByUser.current) {\n autoPlay = false;\n }\n\n //\n let transcript;\n if (children) {\n [transcript] = children;\n }\n\n useLayoutEffect(() => {\n if (!mounted.current) {\n init([audioInteraction.current], {\n threshold: 0.25,\n });\n }\n\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (window.dev && window.dev()) {\n return;\n }\n\n if (!audio.current) {\n return;\n }\n\n const onEnded = () => {\n console.log('audio ended');\n unlockInteraction(context.id);\n };\n\n audio.current.addEventListener('ended', onEnded);\n\n return () => {\n audio.current.removeEventListener('ended', onEnded);\n };\n }, []);\n\n useEffect(() => {\n if (viewingTranscriptUnlocksInteraction && showTranscript) {\n unlockInteraction(context.id);\n }\n }, [showTranscript]);\n\n if (window.dev && !window.dev() && entry) {\n if (entry.isIntersecting) {\n //\n if (autoPlay && !isPlaying) {\n // && isPlaying\n audio.current.currentTime = 0;\n audio.current.play();\n // setIsPlaying(true);\n }\n } else {\n audio.current.pause();\n // setIsPlaying(false);\n }\n }\n\n const updatedProps = {\n ...block.props,\n src: JSON.stringify(headphonesWoman),\n };\n\n let Img =\n imgSrc === Audio_default ? (\n <ReactBodymovin\n options={{\n loop: true,\n autoplay: true,\n prerender: true,\n renderer: 'svg',\n animationData: headphonesWoman,\n }}\n />\n ) : (\n <AudioImage\n src={imgSrc}\n description={description}\n maxHeight={maxHeight}\n />\n );\n\n Img = (\n <AudioImage\n src={imgSrc === Audio_default ? imagePlaceholder : imgSrc}\n description={description}\n maxHeight={maxHeight}\n />\n );\n\n const showTranscriptBtn = (\n <div>\n <ShowTranscriptBtn\n id={id}\n setShowTranscript={setShowTranscript}\n showTranscriptFontSize={showTranscriptFontSize}\n showTranscriptFontColor={showTranscriptFontColor}\n showTranscriptLabel={showTranscriptLabel}\n />\n </div>\n );\n\n return (\n <_>\n {window.dev() ? (\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n `}\n >\n {Img}\n\n <div\n css={css({\n width: '100%',\n padding: 10,\n })}\n >\n <audio\n ref={audio}\n src={audioSrc}\n controls\n css={css({\n width: '100%',\n })}\n />\n </div>\n {useTranscript && showTranscriptBtn}\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n pointer-events: none;\n `}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n\n width: 100%;\n height: 100%;\n\n box-shadow: ${selected\n ? `0 0 0 1px ${lPink}`\n : '0 0 0 1px lightGrey'};\n transition: all 0.2s;\n pointer-events: all;\n cursor: pointer;\n &:hover {\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\n }\n\n ${selected && 'pointer-events: none;'}\n `}\n onClick={e => {\n e.stopPropagation();\n if (selected) return;\n setCurrentBlock({ id });\n }}\n >\n {!selected && <EditMarker />}\n </div>\n </div>\n </div>\n ) : (\n <div\n ref={audioInteraction}\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n `}\n >\n {Img}\n\n <div\n css={css({\n width: '100%',\n padding: 10,\n })}\n >\n <audio\n ref={audio}\n src={audioSrc}\n onPlay={() => {\n setIsPlaying(true);\n }}\n onPause={() => {\n audioPausedByUser.current = true;\n setIsPlaying(false);\n }}\n css={css({\n width: '100%',\n })}\n autoPlay={autoPlay && entry && entry.isIntersecting}\n controls\n />\n </div>\n {useTranscript && showTranscriptBtn}\n </div>\n )}\n\n {showTranscript && (\n <Transcript\n onClose={() => {\n const tick = setInterval(() => {\n const showTranscriptButtonElement: any = document.querySelector(\n `#show-transcript-${id}`\n );\n\n if (showTranscriptButtonElement) {\n showTranscriptButtonElement.focus();\n\n clearInterval(tick);\n }\n }, 0);\n\n setShowTranscript(false);\n }}\n >\n {transcript}\n </Transcript>\n )}\n </_>\n );\n};\n\nexport default Audio;\n","import Audio from './Audio';\n\nexport default Audio;\n","/** @jsx jsx */\n\nimport { Fragment as _ } from 'react';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport EditMarker from 'components/UI/EditMarker';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { colors } from 'styles/variables';\nimport Image from 'assets/Image.svg';\n\nconst { lPink } = colors;\n\nconst frameSelected = keyframes`\n from {\n width: 50%;\n height: 50%;\n }\n to {\n width: 75%;\n height: 75%;\n }\n`;\n\nconst EditWrapper0 = ({ id, selected, children }) => {\n return (\n <div\n css={css`\n position: relative;\n width: 100%;\n height: 100%;\n box-shadow: ${selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'};\n transition: box-shadow 0.2s;\n cursor: pointer;\n\n &:hover {\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\n }\n\n * {\n pointer-events: ${selected ? 'auto' : 'none'};\n }\n\n @media (max-width: 768px) {\n padding: 5px;\n }\n `}\n onClick={e => {\n e.stopPropagation();\n\n if (selected) return;\n\n setCurrentBlock({ id });\n }}\n >\n {children}\n\n {!selected && <EditMarker />}\n </div>\n );\n};\n\nconst EditWrapper1 = ({ id, selected, children }) => {\n return (\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n `}\n >\n {children}\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n `}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: ${selected ? '75%' : '50%'};\n height: ${selected ? '75%' : '50%'};\n\n ${selected && `animation: ${frameSelected} 0.2s forwards;`}\n \n ${!selected &&\n `\n background: rgba(0, 0, 0, 0.1);\n `}\n \n box-shadow: ${\n selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'\n };\n transition: all 0.2s;\n cursor: pointer;\n &:hover {\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\n }\n `}\n onClick={e => {\n e.stopPropagation();\n\n if (selected) return;\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && <img src={Image} style={{ width: 50, opacity: 0.5 }} />}\n\n {!selected && <EditMarker />}\n </div>\n </div>\n </div>\n );\n};\n\nconst EditWrapper2 = ({ id, selected, children }) => {\n return children;\n};\n\nexport { EditWrapper0, EditWrapper1, EditWrapper2 };\n","export default {\"v\":\"4.6.8\",\"fr\":25,\"ip\":0,\"op\":201,\"w\":180,\"h\":180,\"nm\":\"visualDesignerIcon\",\"ddd\":0,\"assets\":[{\"id\":\"comp_1\",\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"i-dot Outlines\",\"ks\":{\"o\":{\"a\":0,\"k\":100},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":0,\"k\":[108.5,57.5,0]},\"a\":{\"a\":0,\"k\":[2.5,3.5,0]},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":33,\"s\":[0,0,100],\"e\":[120,120,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":38,\"s\":[120,120,100],\"e\":[90,90,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":43,\"s\":[90,90,100],\"e\":[105,105,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":48,\"s\":[105,105,100],\"e\":[97.5,97.5,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":53,\"s\":[97.5,97.5,100],\"e\":[100,100,100]},{\"t\":58}]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-0.021,0.01],[0.001,-1.224],[0.808,-0.443],[0.021,-0.01],[0,1.224],[-0.808,0.443]],\"o\":[[0.78,-0.38],[0,1.263],[-0.021,0.012],[-0.78,0.38],[0.001,-1.263],[0.02,-0.011]],\"v\":[[0.064,-2.248],[1.488,-0.815],[-0.002,2.216],[-0.064,2.248],[-1.489,0.816],[0.002,-2.215]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7218.622,7232.345],[7181.378,7232.345],[7181.378,-7167.655],[-7218.622,-7167.655]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7218.622,-7167.655],[7181.378,-7167.655],[7181.378,7232.345],[-7218.622,7232.345]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":2,\"mn\":\"ADBE Vector Group\"},{\"ty\":\"mm\",\"mm\":4,\"nm\":\"Merge Paths 1\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,1,1,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[2.622,3.655],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":33,\"op\":234,\"st\":33,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"in Outlines\",\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"n\":[\"0p833_1_0p333_0\"],\"t\":16,\"s\":[0],\"e\":[100]},{\"t\":23}]},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"n\":\"0p667_1_0p333_0\",\"t\":16,\"s\":[113.625,75.65,0],\"e\":[113.625,63.85,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"n\":\"0p667_1_0p333_0\",\"t\":23,\"s\":[113.625,63.85,0],\"e\":[113.625,70.75,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"n\":\"0p667_1_0p333_0\",\"t\":30,\"s\":[113.625,70.75,0],\"e\":[113.625,66.85,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"n\":\"0p667_1_0p333_0\",\"t\":37,\"s\":[113.625,66.85,0],\"e\":[113.625,68.25,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":44}]},\"a\":{\"a\":0,\"k\":[9,12,0]},\"s\":{\"a\":0,\"k\":[100,100,100]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-0.037,0.018],[-0.001,-2.768],[0.175,-0.988],[0,0],[-0.003,-0.302],[-0.31,0.151],[-0.481,2.277],[0,0],[1.29,-0.703],[0.047,-0.023],[0,1.794],[-0.112,0.621],[0,0],[-0.004,0.372],[0.764,-0.373],[0.026,-0.014],[0.355,-2.347],[0,0],[0,0],[0,0],[1.236,-0.677],[0.048,-0.024],[-0.003,1.888],[-0.091,0.611],[0,0],[0,0],[0,0],[0,0],[0,0],[0,-0.369],[-0.323,0.068],[-0.039,0.019],[-0.767,3.005],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.29,0.712]],\"o\":[[1.331,-0.649],[-0.003,0.732],[0,0],[-0.065,0.434],[-0.001,0.641],[0.354,-0.19],[0,0],[-0.567,3.32],[-0.049,0.027],[-1.409,0.687],[0.003,-0.527],[0,0],[0.088,-0.477],[0.001,-1.215],[-0.025,0.012],[-1.03,0.56],[0,0],[0,0],[0,0],[-0.72,2.188],[-0.05,0.027],[-1.384,0.674],[-0.004,-0.498],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.109,0.685],[0,0.623],[0.017,-0.003],[0.387,-0.189],[0,0],[0,0],[0,0],[0,0],[0,0],[0.657,-2.206],[0.038,-0.02]],\"v\":[[4.225,-10.25],[6.627,-7.235],[6.385,-4.689],[5.682,-0.5],[5.573,0.587],[6.05,1.315],[7.302,-1.749],[8.262,-1.717],[5.375,4.129],[5.231,4.204],[3.145,2.141],[3.302,0.407],[4.023,-3.898],[4.135,-5.151],[2.899,-6.485],[2.823,-6.446],[0.763,-2.054],[-0.637,7.201],[-3.087,8.543],[-2.648,5.631],[-5.603,10.148],[-5.751,10.225],[-7.783,8.094],[-7.654,6.357],[-6.533,-1.153],[-8.262,-0.203],[-7.736,-3.421],[-3.583,-5.692],[-5.225,5.05],[-5.379,6.651],[-4.855,7.281],[-4.77,7.249],[-2.26,3.038],[-1.177,-4.077],[-2.928,-3.125],[-2.4,-6.343],[1.34,-8.389],[0.856,-4.798],[4.112,-10.192]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7223.185,7222.922],[7176.815,7222.922],[7176.815,-7177.078],[-7223.185,-7177.078]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7223.185,-7177.078],[7176.815,-7177.078],[7176.815,7222.922],[-7223.185,7222.922]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":2,\"mn\":\"ADBE Vector Group\"},{\"ty\":\"mm\",\"mm\":4,\"nm\":\"Merge Paths 1\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,1,1,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[9.184,12.078],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":16,\"op\":217,\"st\":16,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"inDesignLogo Outlines\",\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"n\":[\"0p833_1_0p333_0\"],\"t\":13,\"s\":[0],\"e\":[100]},{\"t\":20}]},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"n\":\"0p667_1_0p333_0\",\"t\":13,\"s\":[112.5,71.9,0],\"e\":[112.5,60.1,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"n\":\"0p667_1_0p333_0\",\"t\":20,\"s\":[112.5,60.1,0],\"e\":[112.5,67,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"n\":\"0p667_1_0p333_0\",\"t\":27,\"s\":[112.5,67,0],\"e\":[112.5,63.1,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.667,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"n\":\"0p667_1_0p333_0\",\"t\":34,\"s\":[112.5,63.1,0],\"e\":[112.5,64.5,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":41}]},\"a\":{\"a\":0,\"k\":[12.5,24.5,0]},\"s\":{\"a\":0,\"k\":[100,100,100]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[1.214,-0.666],[0,0],[0.03,-0.014],[0,1.8],[0,0],[-1.215,0.666],[0,0],[-0.03,0.014],[0,-1.8]],\"o\":[[0,1.837],[0,0],[-0.03,0.016],[-1.178,0.575],[0,0],[0,-1.845],[0,0],[0.03,-0.016],[1.178,-0.575],[0,0]],\"v\":[[12.163,8.427],[9.955,12.973],[-9.973,23.866],[-10.063,23.912],[-12.178,21.734],[-12.163,-8.426],[-9.955,-12.972],[9.973,-23.865],[10.063,-23.911],[12.178,-21.733]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.42,0.749,0.733,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[12.652,24.495],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":13,\"op\":188,\"st\":-13,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"diamond Outlines\",\"ks\":{\"o\":{\"a\":0,\"k\":100},\"r\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"n\":[\"0p667_1_0p333_0\"],\"t\":0,\"s\":[23.2],\"e\":[-10]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"n\":[\"0p667_1_0p333_0\"],\"t\":8.6,\"s\":[-10],\"e\":[5]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"n\":[\"0p667_1_0p333_0\"],\"t\":17.2,\"s\":[5],\"e\":[-2.5]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"n\":[\"0p667_1_0p333_0\"],\"t\":25.8,\"s\":[-2.5],\"e\":[1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"n\":[\"0p667_1_0p333_0\"],\"t\":34.4,\"s\":[1],\"e\":[0]},{\"t\":43}]},\"p\":{\"a\":0,\"k\":[73.564,109.013,0]},\"a\":{\"a\":0,\"k\":[15.564,43.013,0]},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":0,\"s\":[0,0,100],\"e\":[120,120,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":7.679,\"s\":[120,120,100],\"e\":[90,90,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":15.357,\"s\":[90,90,100],\"e\":[105,105,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":23.036,\"s\":[105,105,100],\"e\":[97.5,97.5,100]},{\"i\":{\"x\":[0.667,0.667,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[0.333,0.333,0.333],\"y\":[0,0,0.333]},\"n\":[\"0p667_1_0p333_0\",\"0p667_1_0p333_0\",\"0p667_0p667_0p333_0p333\"],\"t\":30.714,\"s\":[97.5,97.5,100],\"e\":[100,100,100]},{\"t\":38.392578125}]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[2.263,14.131],[5.534,-8.208],[11.996,-11.675]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[0.669,16.23],[-4.234,-2.97],[4.136,-7.459]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":2,\"ty\":\"sh\",\"ix\":3,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[-12.093,1.246],[-5.631,-2.221],[-1.008,15.885]],\"c\":true}},\"nm\":\"Path 3\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":3,\"ty\":\"sh\",\"ix\":4,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[-7.681,-10.253],[-6.076,-3.969],[-11.955,-0.815]],\"c\":true}},\"nm\":\"Path 4\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":4,\"ty\":\"sh\",\"ix\":5,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[5.738,-18.419],[4.45,-9.614],[-4.678,-4.718],[-6.502,-11.854]],\"c\":true}},\"nm\":\"Path 5\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":5,\"ty\":\"sh\",\"ix\":6,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[6.981,-18.117],[11.727,-13.517],[5.847,-10.364]],\"c\":true}},\"nm\":\"Path 6\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":6,\"ty\":\"sh\",\"ix\":7,\"ks\":{\"a\":0,\"k\":{\"i\":[[0.136,0.103],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.008,0.238]],\"o\":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.09,-0.215],[-0.009,-0.279]],\"v\":[[13.745,-14.324],[6.544,-20.838],[-7.938,-12.753],[-13.982,0.589],[-13.986,1.86],[0.513,20.838],[0.725,20.824],[0.822,20.781],[1.046,20.61],[1.352,20.104],[13.841,-13.023],[13.978,-13.731]],\"c\":true}},\"nm\":\"Path 7\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"mm\",\"mm\":1,\"nm\":\"Merge Paths 1\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7182.818,7202.326],[7217.182,7202.326],[7217.182,-7197.674],[-7182.818,-7197.674]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7182.818,-7197.674],[7217.182,-7197.674],[7217.182,7202.326],[-7182.818,7202.326]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":9,\"mn\":\"ADBE Vector Group\"},{\"ty\":\"mm\",\"mm\":4,\"nm\":\"Merge Paths 2\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.431,0.753,0.737,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[14.818,21.674],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":11,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":0,\"op\":201,\"st\":0,\"bm\":0,\"sr\":1}]}],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":0,\"nm\":\"visualDesignerIconsAppear\",\"refId\":\"comp_1\",\"ks\":{\"o\":{\"a\":0,\"k\":100},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":0,\"k\":[90,90,0]},\"a\":{\"a\":0,\"k\":[90,90,0]},\"s\":{\"a\":0,\"k\":[100,100,100]}},\"ao\":0,\"w\":180,\"h\":180,\"ip\":31,\"op\":232,\"st\":31,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":2,\"ty\":0,\"nm\":\"visualDesignerIconsAppear\",\"refId\":\"comp_1\",\"ks\":{\"o\":{\"a\":0,\"k\":34},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":0,\"k\":[80,85.75,0]},\"a\":{\"a\":0,\"k\":[90,90,0]},\"s\":{\"a\":0,\"k\":[100,100,100]}},\"ao\":0,\"w\":180,\"h\":180,\"ip\":35,\"op\":236,\"st\":35,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"button Outlines\",\"ks\":{\"o\":{\"a\":0,\"k\":100},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":0,\"k\":[129,112.5,0]},\"a\":{\"a\":0,\"k\":[8,4.5,0]},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[1,1,0.333],\"y\":[0,0,0.333]},\"n\":[\"0_1_1_0\",\"0_1_1_0\",\"0p667_0p667_0p333_0p333\"],\"t\":27,\"s\":[0,0,100],\"e\":[100,100,100]},{\"t\":46}]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-1.524,-0.887],[1.534,-0.884],[0,0],[1.52,0.888],[-1.535,0.883]],\"o\":[[1.534,-0.883],[1.523,0.887],[0,0],[-1.533,0.884],[-1.523,-0.887],[0,0]],\"v\":[[0.073,-3.231],[5.604,-3.228],[5.574,-0.024],[-0.082,3.232],[-5.604,3.224],[-5.583,0.025]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7238.927,7177.39],[7161.073,7177.39],[7161.073,-7222.61],[-7238.927,-7222.61]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7238.927,-7222.61],[7161.073,-7222.61],[7161.073,7177.39],[-7238.927,7177.39]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":2,\"mn\":\"ADBE Vector Group\"},{\"ty\":\"mm\",\"mm\":4,\"nm\":\"Merge Paths 1\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,1,1,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[7.927,4.611],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":27,\"op\":228,\"st\":27,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":5,\"ty\":4,\"nm\":\"screen Outlines\",\"ks\":{\"o\":{\"a\":0,\"k\":100},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":0,\"k\":[87.5,88.5,0]},\"a\":{\"a\":0,\"k\":[70.5,41.5,0]},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[1,1,0.333],\"y\":[0,0,0.333]},\"n\":[\"0_1_1_0\",\"0_1_1_0\",\"0p667_0p667_0p333_0p333\"],\"t\":19,\"s\":[0,0,100],\"e\":[100,100,100]},{\"t\":38}]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0.949,0.552],[0,0],[0.955,-0.55],[0,0],[-0.954,-0.556],[0,0],[-0.956,0.55],[0,0]],\"o\":[[0,0],[-0.956,-0.557],[0,0],[-0.957,0.549],[0,0],[0.949,0.553],[0,0],[0.959,-0.55]],\"v\":[[68.86,0.857],[-1.055,-39.887],[-4.567,-39.897],[-68.842,-2.891],[-68.857,-0.854],[1.059,39.891],[4.579,39.896],[68.853,2.891]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7197.736,7201.393],[7202.264,7201.393],[7202.264,-7198.607],[-7197.736,-7198.607]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7197.736,-7198.607],[7202.264,-7198.607],[7202.264,7201.393],[-7197.736,7201.393]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":2,\"mn\":\"ADBE Vector Group\"},{\"ty\":\"mm\",\"mm\":4,\"nm\":\"Merge Paths 1\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[1,1,1,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[70.736,41.607],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":19,\"op\":220,\"st\":19,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":6,\"ty\":4,\"nm\":\"face Outlines\",\"ks\":{\"o\":{\"a\":0,\"k\":100},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":0,\"k\":[91.5,90,0]},\"a\":{\"a\":0,\"k\":[79.5,46,0]},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[1,1,0.333],\"y\":[0,0,0.333]},\"n\":[\"0_1_1_0\",\"0_1_1_0\",\"0p667_0p667_0p333_0p333\"],\"t\":11,\"s\":[0,0,100],\"e\":[100,100,100]},{\"t\":30}]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[-3.854,-2.248],[0,0],[3.887,-2.238],[0,0],[3.864,2.252],[0,0],[-3.879,2.234]],\"o\":[[3.89,-2.239],[0,0],[3.857,2.249],[0,0],[-3.88,2.233],[0,0],[-3.857,-2.248],[0,0]],\"v\":[[-13.96,-42.752],[0.122,-42.73],[75.018,0.916],[72.492,7.629],[11.48,42.756],[-2.597,42.739],[-75.019,0.531],[-74.971,-7.627]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7201.47,7199.939],[7198.53,7199.939],[7198.53,-7200.061],[-7201.47,-7200.061]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7201.47,-7200.061],[7198.53,-7200.061],[7198.53,7199.939],[-7201.47,7199.939]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":2,\"mn\":\"ADBE Vector Group\"},{\"ty\":\"mm\",\"mm\":4,\"nm\":\"Merge Paths 1\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.129,0.129,0.137,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[79.47,46.06],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":11,\"op\":212,\"st\":11,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":7,\"ty\":4,\"nm\":\"base Outlines\",\"ks\":{\"o\":{\"a\":0,\"k\":100},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":0,\"k\":[91,94.5,0]},\"a\":{\"a\":0,\"k\":[78,47.5,0]},\"s\":{\"a\":0,\"k\":[100,100,100]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":1,\"k\":[{\"i\":{\"x\":0,\"y\":1},\"o\":{\"x\":1,\"y\":0},\"n\":\"0_1_1_0\",\"t\":30,\"s\":[{\"i\":[[0.001,2.156],[0,0],[0.956,-0.55],[0.001,1.47],[-0.004,-2.155],[-1.918,-1.117],[0,0],[-3.88,2.234],[0,0],[0.004,1.451]],\"o\":[[0.001,1.451],[-0.956,-0.557],[0,0],[0.003,2.156],[0.001,1.471],[0,0],[3.864,2.25],[0,0],[2.521,-1.45],[-0.002,-2.154]],\"v\":[[77.415,-1.496],[-4.322,-46.118],[-7.834,-46.127],[-77.427,-8.304],[-77.417,-8.714],[-74.539,-4.656],[-2.117,37.551],[11.959,37.568],[72.969,2.443],[77.424,-1.906]],\"c\":true}],\"e\":[{\"i\":[[0.001,2.156],[0,0],[0.956,-0.55],[0.001,1.47],[-0.004,-2.155],[-1.918,-1.117],[0,0],[-3.88,2.234],[0,0],[0.004,1.451]],\"o\":[[0.001,1.451],[-0.956,-0.557],[0,0],[0.003,2.156],[0.001,1.471],[0,0],[3.864,2.25],[0,0],[2.521,-1.45],[-0.002,-2.154]],\"v\":[[77.415,-1.496],[-4.322,-46.118],[-7.834,-46.127],[-77.427,-8.304],[-77.417,-1.839],[-74.539,2.219],[-2.117,44.426],[11.959,44.443],[72.969,9.318],[77.424,4.969]],\"c\":true}]},{\"t\":46}]},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7201.002,7195.162],[7198.998,7195.162],[7198.998,-7204.838],[-7201.002,-7204.838]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7201.002,-7204.838],[7198.998,-7204.838],[7198.998,7195.162],[-7201.002,7195.162]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":2,\"mn\":\"ADBE Vector Group\"},{\"ty\":\"mm\",\"mm\":4,\"nm\":\"Merge Paths 1\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.843,0.906,0.969,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[78.002,47.838],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":30,\"op\":231,\"st\":30,\"bm\":0,\"sr\":1},{\"ddd\":0,\"ind\":8,\"ty\":4,\"nm\":\"backCircle Outlines 2\",\"ks\":{\"o\":{\"a\":0,\"k\":100},\"r\":{\"a\":0,\"k\":0},\"p\":{\"a\":0,\"k\":[89.5,90,0]},\"a\":{\"a\":0,\"k\":[73.5,73,0]},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0,0.667],\"y\":[1,1,0.667]},\"o\":{\"x\":[1,1,0.333],\"y\":[0,0,0.333]},\"n\":[\"0_1_1_0\",\"0_1_1_0\",\"0p667_0p667_0p333_0p333\"],\"t\":0,\"s\":[0,0,100],\"e\":[100,100,100]},{\"t\":19}]}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[-2.998,38.259],[-38.259,-2.998],[2.997,-38.259],[38.258,2.998]],\"o\":[[2.998,-38.259],[38.259,2.998],[-2.998,38.259],[-38.259,-2.998]],\"v\":[[-69.273,-5.428],[5.428,-69.274],[69.274,5.428],[-5.428,69.274]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7199.5,7200.309],[7200.5,7200.309],[7200.5,-7199.691],[-7199.5,-7199.691]],\"c\":true}},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ind\":1,\"ty\":\"sh\",\"ix\":2,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0],[0,0]],\"v\":[[-7199.5,-7199.691],[7200.5,-7199.691],[7200.5,7200.309],[-7199.5,7200.309]],\"c\":true}},\"nm\":\"Path 2\",\"mn\":\"ADBE Vector Shape - Group\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":2,\"cix\":2,\"ix\":2,\"mn\":\"ADBE Vector Group\"},{\"ty\":\"mm\",\"mm\":4,\"nm\":\"Merge Paths 1\",\"mn\":\"ADBE Vector Filter - Merge\"},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.914,0.914,0.949,1]},\"o\":{\"a\":0,\"k\":100},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[73.5,72.691],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Group 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\"}],\"ip\":0,\"op\":201,\"st\":0,\"bm\":0,\"sr\":1}]}","import SVG from './SVG';\n\nexport default SVG;\n","/** @jsx jsx */\n\nimport { Fragment as _, useRef, useEffect } from 'react';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { connect } from 'react-redux';\nimport EditMarker from 'components/UI/EditMarker';\nimport { colors } from 'styles/variables';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { EditWrapper0, EditWrapper1, EditWrapper2 } from './EditWrappers';\nimport svgPlaceholder from 'assets/animations/placeholder.js';\nimport isIE from 'services/isIE';\n\nimport ReactBodymovin from 'react-lottie';\n\nconst { lPink } = colors;\n\nconst SVG = ({ id, focusedNodeId, src, editWrapperType = 0, ...rest }) => {\n let animationData;\n // this : src != undefined seemed to break it ?\n if (src) {\n try {\n animationData = JSON.parse(src);\n } catch {\n animationData = svgPlaceholder;\n }\n } else {\n animationData = svgPlaceholder;\n }\n\n const selected = focusedNodeId === id;\n\n const svg = useRef<HTMLSpanElement>(null);\n const reactBodyMovin = useRef<any>(null);\n\n const bodymovinOptions = {\n loop: true,\n autoplay: true,\n prerender: true,\n renderer: 'svg',\n animationData,\n };\n\n const hasAnimationData = Object.keys(animationData).length > 0;\n\n useEffect(() => {\n if (!isIE()) return;\n if (!svg.current) return;\n\n const svg_ = svg.current.querySelector('svg')!;\n\n if (!svg_) {\n return;\n }\n\n svg_.removeAttribute('width');\n svg_.removeAttribute('height');\n\n const onResize = () => {\n svg_.style.width = '100%';\n svg_.style.height = `${window.innerHeight / 2}px`;\n };\n onResize();\n window.addEventListener('resize', onResize);\n\n return () => window.removeEventListener('resize', onResize);\n });\n\n useEffect(() => {\n if (!reactBodyMovin.current) {\n return;\n }\n\n const { el } = reactBodyMovin.current;\n\n ['title', 'role', 'aria-label', 'tabindex'].forEach(entry => {\n el.removeAttribute(entry);\n });\n\n // console.log(el);\n }, []);\n\n // console.log('svg editWrapperType :', editWrapperType, rest);\n\n const EditWrapper = window.dev()\n ? ({ children }) => {\n return [\n <EditWrapper0 id={id} selected={selected}>\n {children}\n </EditWrapper0>,\n <EditWrapper1 id={id} selected={selected}>\n {children}\n </EditWrapper1>,\n <EditWrapper2 id={id} selected={selected}>\n {children}\n </EditWrapper2>,\n ][editWrapperType];\n // editWrapperType === 0 ? (\n // <EditWrapper0 id={id} selected={selected}>\n // {children}\n // </EditWrapper0>\n // ) : (\n // <EditWrapper1 id={id} selected={selected}>\n // {children}\n // </EditWrapper1>\n // )\n }\n : ({ children }) => <_>{children}</_>;\n\n return (\n <span\n ref={svg}\n css={css`\n width: 100%;\n height: 100%;\n svg {\n max-height: 50vh !important;\n }\n `}\n >\n <EditWrapper>\n {hasAnimationData ? (\n <ReactBodymovin ref={reactBodyMovin} options={bodymovinOptions} />\n ) : (\n ''\n )}\n </EditWrapper>\n </span>\n );\n};\n\nexport default connect(\n ({ focusedNodeId }: { focusedNodeId: string | number }, { id }: any) => {\n // const { src } = getBlockById(id).props!;\n return {\n focusedNodeId,\n // ...(focusedNodeId === id && { [Math.random()]: '' }),\n // src,\n };\n }\n)(SVG);\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n createContext,\n useContext,\n useState,\n useEffect,\n useRef,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\n\nexport interface IMediaContext {\n id?: string;\n onMediaChange: () => void | null;\n imgPlaceholderIndex?: number;\n isAdditionalMedia?: boolean;\n}\n\nexport const MediaContext = createContext({\n onMediaChange: null,\n}) as any;\n\ninterface IMediaProps {\n id: string;\n onMediaChange?: (props: any) => void;\n\n children: any;\n}\n\nconst Media = (props: IMediaProps) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n\n const { children } = props;\n\n const onMediaChange =\n props?.onMediaChange || mediaContext.onMediaChange || null;\n\n const { parent, child } = useSelector((state: State) => {\n const parent = state.blocks[props.id];\n return {\n parent,\n child: parent?.props?.child,\n };\n });\n\n const isSafeToCallOnMediaChange = useRef(false);\n\n useEffect(() => {\n if (!children[child]) {\n console.log(\n `children[( index = ) ${child}] does not exist on legacy block. resetting media component to image`\n );\n setBlockProps(parent, { child: 1 });\n }\n }, [child]);\n\n useEffect(() => {\n //\n if (!onMediaChange || typeof onMediaChange !== 'function') {\n return;\n }\n\n if (isSafeToCallOnMediaChange.current) {\n onMediaChange(child);\n }\n\n isSafeToCallOnMediaChange.current = true;\n\n return () => {\n //\n };\n }, [child]);\n\n if (!children[child]) {\n // return null if child doesn't exist. reset in effect\n return null;\n }\n\n return (\n <MediaContext.Provider\n value={{\n ...props,\n }}\n >\n {children[child]}\n </MediaContext.Provider>\n );\n};\n\nexport default Media;\n","import Media from './Media';\nimport { MediaContext, IMediaContext } from './Media';\n\nexport default Media;\nexport { MediaContext, IMediaContext };\n","import getStore from 'services/getStore';\n\nconst store = getStore();\n\nconst shouldUpdate = () => {\n if (window.dev && !window.dev()) {\n return true;\n }\n\n const { focusedNodeId, blocks } = store.getState();\n const { type } = blocks[focusedNodeId] || {};\n\n const typeIsText = type ? type.toLowerCase() === 'text' : undefined;\n\n return typeIsText;\n};\n\nexport default shouldUpdate;\n","/** @jsx jsx */\n\nimport React, { Fragment as _ } from 'react';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport EditMarker from 'components/UI/EditMarker';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { colors } from 'styles/variables';\nimport embedIcon from 'assets/Embed.svg';\n\nconst { lPink } = colors;\n\nconst frameSelected = keyframes`\n from {\n width: 50%;\n height: 50%;\n }\n to {\n width: 75%;\n height: 75%;\n }\n`;\n\nconst frameNotSelected = keyframes`\nfrom {\n width: 75%;\n height: 75%;\n}\nto {\n width: 50%;\n height: 50%;\n}\n`;\n\nconst EditWrapper0 = ({ id, mediaParentId, selected, children }) => {\n return (\n <div\n css={css`\n position: relative;\n width: 100%;\n height: 100%;\n box-shadow: ${selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'};\n transition: box-shadow 0.2s;\n cursor: pointer;\n\n &:hover {\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\n }\n\n * {\n pointer-events: ${selected ? 'auto' : 'none'};\n }\n\n @media (max-width: 768px) {\n padding: 5px;\n }\n `}\n onClick={e => {\n e.stopPropagation();\n\n if (selected) return;\n\n // console.log({ mediaParentId });\n\n setCurrentBlock({ id });\n }}\n >\n {children}\n\n {!selected && <EditMarker />}\n </div>\n );\n};\n\n// ${!selected && 'border-radius: 50%;'}\nconst EditWrapper1 = ({ id, mediaParentId, selected, children }) => {\n return (\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n `}\n >\n {children}\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n `}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: ${selected ? '75%' : '50%'};\n height: ${selected ? '75%' : '50%'};\n\n ${selected && `animation: ${frameSelected} 0.2s forwards;`}\n \n ${!selected &&\n `\n background: rgba(0, 0, 0, 0.1);\n `}\n \n box-shadow: ${\n selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'\n };\n transition: all 0.2s;\n cursor: pointer;\n &:hover {\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\n }\n `}\n onClick={e => {\n e.stopPropagation();\n\n if (selected) return;\n\n // console.log({ mediaParentId });\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && (\n // <i\n // className=\"fas fa-code\"\n // css={css`\n // font-size: 50px;\n // color: rgba(0, 0, 0, 0.5);\n // `}\n // />\n <img\n src={embedIcon}\n css={css`\n width: 50px;\n `}\n />\n )}\n\n {!selected && <EditMarker />}\n </div>\n </div>\n </div>\n );\n};\n\nexport { EditWrapper0, EditWrapper1 };\n","\nexport const hideHeaderAction = (hide: boolean) => {\n return {\n type: 'HIDE_HEADER',\n data: { hide },\n };\n};\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n memo,\n useMemo,\n useCallback,\n useContext,\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { Box } from 'theme-ui';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector, useDispatch, connect } from 'react-redux';\nimport { colors } from 'styles/variables';\nimport { EditWrapper0, EditWrapper1 } from './EditWrappers';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport FullScreenIcon from 'assets/FullScreenIcon.svg';\nimport isAndroidSamsung from 'services/isAndroidSamsung';\nimport isiOS from 'services/isiOS';\nimport CloseFullscreenEmbed from 'assets/CloseFullscreenEmbed.svg';\nimport { hideHeaderAction } from 'actions/hideHeaderAction';\n\nconst { lPink, lGrey0, lGrey2 } = colors;\n\nconst frameSelected = keyframes`\n from {\n width: 50%;\n height: 50%;\n }\n to {\n width: 75%;\n height: 75%;\n }\n`;\n\nconst minHeight = '50vh';\nconst getMinHeight = fullWindowHeight => {\n return fullWindowHeight ? 'calc(100vh - 250px)' : minHeight;\n};\n\nconst IFrame = ({\n src,\n fullWindowHeight,\n fullscreenMode = false,\n aspectRatio,\n}: {\n src: string;\n fullWindowHeight?: string;\n fullscreenMode?: boolean | undefined;\n aspectRatio?: string;\n}) => {\n const [loaded, setLoaded] = useState(false);\n\n // console.log('fullscreenMode :', fullscreenMode);\n\n return (\n <_>\n <iframe\n src={src || 'https://www.chameleoncreator.com'}\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n // ${loaded && `min-height: ${getMinHeight(fullWindowHeight)};`}\n\n ${\n !aspectRatio\n ? loaded && `min-height: ${getMinHeight(fullWindowHeight)};`\n : `aspect-ratio: ${aspectRatio};`\n }\n\n border: none;\n\n ${!loaded &&\n `\n width: 0;\n height: 0;\n `}\n\n ${fullscreenMode &&\n `\n width: 100vw;\n height: 100vh;\n `}\n `}\n onLoad={(e: any) => {\n setLoaded(true);\n }}\n ></iframe>\n {!loaded && (\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n // width: fullscreenMode ? '100vw' : '100%',\n // height: fullscreenMode ? '100vh' : '100%',\n width: '100%',\n height: '100%',\n // minHeight: getMinHeight(fullWindowHeight),\n\n ...(!aspectRatio\n ? { minHeight: getMinHeight(fullWindowHeight) }\n : { aspectRatio }),\n })}\n >\n <LoadingSpinner />\n </div>\n )}\n </_>\n );\n};\n\nconst Embed = props => {\n const {\n id,\n src,\n fullWindowHeight = false,\n mediaParentId = null,\n dropShadow = 1,\n borderRadius = 0,\n includeBorder = 1,\n borderColor = lGrey2,\n includeAspectRatio = 0,\n } = props;\n\n let borderSize = includeBorder ? 1 : 0;\n\n let aspectRatio = (props.aspectRatio || [1, 1]).join('/');\n\n const [iFrameHovered, setIFrameHovered] = useState<boolean>(false);\n const [fullscreenMode, setFullscreenMode] = useState<boolean>(false);\n\n const focusedNodeId = useSelector((state: any) => state.focusedNodeId);\n const dispatch = useDispatch();\n\n const selected = id === focusedNodeId;\n\n //\n const allowFullScreen = window.dev && !window.dev() && props.allowFullScreen;\n // alert(`allowFullScreen : ${allowFullScreen}`);\n\n const hideHeader = (hide: boolean) => {\n dispatch(hideHeaderAction(hide));\n };\n\n useEffect(() => {\n if (\n isAndroidSamsung() ||\n isiOS() ||\n window.matchMedia('(hover: none)').matches\n ) {\n // hover unavailable\n setIFrameHovered(true);\n } else {\n // console.log('HOVER IS AVAILABLE');\n }\n //\n }, []);\n\n useEffect(() => {\n const exitFullscreen = e => {\n if (e.key === 'Escape') {\n hideHeader(false);\n document.removeEventListener('keydown', exitFullscreen);\n setFullscreenMode(false);\n }\n };\n\n if (fullscreenMode) {\n hideHeader(true);\n document.addEventListener('keydown', exitFullscreen);\n } else {\n hideHeader(false);\n document.removeEventListener('keydown', exitFullscreen);\n // fullscreenContainer.current && fullscreenContainer.current.remove();\n }\n\n return () => {\n //\n };\n }, [fullscreenMode]);\n\n return (\n <div\n css={css({\n position: 'relative',\n width: '100%',\n height: '100%',\n // minHeight: getMinHeight(fullWindowHeight),\n\n ...(!!!includeAspectRatio\n ? { minHeight: getMinHeight(fullWindowHeight) }\n : { aspectRatio }),\n\n outline: `${borderSize}px solid ${borderColor}`,\n boxShadow: dropShadow\n ? '5px 10px 20px 10px rgba(0, 0, 0, 0.05)'\n : 'none',\n\n borderRadius,\n overflow: 'hidden',\n\n ...(fullscreenMode && {\n position: 'fixed',\n left: 0,\n top: 0,\n width: '100vw',\n height: '100vh',\n background: '#fff',\n zIndex: 2147483647,\n }),\n })}\n onMouseOver={() => {\n setIFrameHovered(true);\n }}\n onMouseOut={() => {\n setIFrameHovered(false);\n }}\n >\n {window.dev() ? (\n <EditWrapper1 id={id} mediaParentId={mediaParentId} selected={selected}>\n <IFrame src={src} fullWindowHeight={fullWindowHeight} />\n </EditWrapper1>\n ) : (\n <IFrame\n src={src}\n fullWindowHeight={fullWindowHeight}\n fullscreenMode={fullscreenMode}\n aspectRatio={aspectRatio}\n />\n )}\n\n {!!allowFullScreen &&\n (!fullscreenMode ? (\n <button\n css={css({\n border: 'none',\n outline: 'none',\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n left: 0,\n bottom: '0px',\n width: '100%',\n height: 55,\n padding: 15,\n background: `rgba(7, 9, 17, ${iFrameHovered ? 0.7 : 0})`,\n transform: `translateY(${iFrameHovered ? 0 : '55px'})`,\n transition: 'transform 0.25s ease-out',\n color: '#fff',\n cursor: 'pointer',\n })}\n onClick={() => {\n setFullscreenMode(true);\n }}\n >\n <img src={FullScreenIcon} style={{ margin: '0 15px 0 0' }} />\n Full screen\n </button>\n ) : (\n <button\n css={css({\n border: 'none',\n outline: 'none',\n position: 'absolute',\n right: 35,\n top: 20,\n width: 35,\n height: 35,\n background: `url('${CloseFullscreenEmbed}') no-repeat`,\n cursor: 'pointer',\n\n '&:hover': {\n opacity: 0.5,\n },\n })}\n onClick={() => {\n setFullscreenMode(false);\n }}\n />\n ))}\n </div>\n );\n};\n\nexport default Embed;\n","import Embed from './Embed';\n\nexport default Embed;\n","/** @jsx jsx */\n\nimport React, { Fragment as _ } from 'react';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport EditMarker from 'components/UI/EditMarker';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { colors } from 'styles/variables';\nimport PDF_smallIcon from 'assets/PDF_smallIcon.svg';\n\nconst { lPink } = colors;\n\nconst frameSelected = keyframes`\n from {\n width: 85%;\n height: 85%;\n }\n to {\n width: 95%;\n height: 95%;\n }\n`;\n\nconst frameNotSelected = keyframes`\nfrom {\n width: 75%;\n height: 75%;\n}\nto {\n width: 50%;\n height: 50%;\n}\n`;\n\nconst EditWrapper0 = ({ id, mediaParentId, selected, children }) => {\n return (\n <div\n css={css`\n position: relative;\n width: 100%;\n height: 100%;\n box-shadow: ${selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'};\n transition: box-shadow 0.2s;\n cursor: pointer;\n\n &:hover {\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\n }\n\n * {\n pointer-events: ${selected ? 'auto' : 'none'};\n }\n\n @media (max-width: 768px) {\n padding: 5px;\n }\n `}\n onClick={e => {\n e.stopPropagation();\n\n if (selected) return;\n\n // console.log({ mediaParentId });\n\n setCurrentBlock({ id });\n }}\n >\n {children}\n\n {!selected && <EditMarker />}\n </div>\n );\n};\n\n// ${!selected && 'border-radius: 50%;'}\n\nconst EditWrapper1 = ({ id, mediaParentId, selected, children }) => {\n // console.log({ selected });\n\n return (\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n `}\n >\n {children}\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n `}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n // width: ${selected ? '100%' : '85%'};\n // height: ${selected ? '100%' : '85%'};\n \n \n width: ${selected ? '95%' : '85%'};\n height: ${selected ? '95%' : '85%'};\n\n ${selected && `animation: ${frameSelected} 0.2s forwards;`}\n \n ${!selected &&\n `\n background: rgba(0, 0, 0, 0.1);\n `}\n \n box-shadow: ${\n selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'\n };\n transition: all 0.2s;\n cursor: pointer;\n &:hover {\n ${!selected && `box-shadow: 0 0 0 1px ${lPink};`}\n }\n `}\n onClick={e => {\n e.stopPropagation();\n\n if (selected) return;\n\n // console.log({ mediaParentId });\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && (\n // <i\n // className=\"fas fa-code\"\n // css={css`\n // font-size: 50px;\n // color: rgba(0, 0, 0, 0.5);\n // `}\n // />\n <img\n src={PDF_smallIcon}\n css={css`\n width: 50px;\n `}\n />\n )}\n\n {!selected && <EditMarker />}\n </div>\n </div>\n </div>\n );\n};\n\nexport { EditWrapper0, EditWrapper1 };\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n memo,\n useMemo,\n useCallback,\n useContext,\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n FC,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { Box } from 'theme-ui';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector, useDispatch, connect } from 'react-redux';\nimport { colors } from 'styles/variables';\nimport { EditWrapper0, EditWrapper1 } from './EditWrappers';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport FullScreenIcon from 'assets/FullScreenIcon.svg';\nimport isAndroidSamsung from 'services/isAndroidSamsung';\nimport isiOS from 'services/isiOS';\nimport CloseFullscreenEmbed from 'assets/CloseFullscreenEmbed.svg';\nimport { hideHeaderAction } from 'actions/hideHeaderAction';\nimport PDFIcon from 'assets/PDF.svg';\nimport PDFHero from 'assets/PDF_HERO.svg';\nimport { OpenPDF } from './OpenPDF';\nimport clickPreviewToSeeOutput from 'assets/clickPreviewToSeeOutput.png';\n\nconst { lPink, lGrey0, lGrey2 } = colors;\n\nconst frameSelected = keyframes`\n from {\n width: 50%;\n height: 50%;\n }\n to {\n width: 75%;\n height: 75%;\n }\n`;\n\nconst minHeight = '50vh';\nconst getMinHeight = fullWindowHeight => {\n return fullWindowHeight ? 'calc(100vh - 250px)' : minHeight;\n};\n\nconst IFrame = ({\n src,\n fullWindowHeight,\n fullscreenMode = false,\n}: {\n src: string;\n fullWindowHeight?: string;\n fullscreenMode?: boolean | undefined;\n}) => {\n const [loaded, setLoaded] = useState(false);\n\n return (\n <_>\n <iframe\n src={src}\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n ${loaded && `min-height: ${getMinHeight(fullWindowHeight)};`}\n border: none;\n\n ${!loaded &&\n `\n width: 0;\n height: 0;\n `}\n\n ${fullscreenMode &&\n `\n width: 100vw;\n height: 100vh;\n `}\n `}\n onLoad={(e: any) => {\n setLoaded(true);\n }}\n ></iframe>\n {!loaded && (\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n minHeight: getMinHeight(fullWindowHeight),\n })}\n >\n <LoadingSpinner />\n </div>\n )}\n </_>\n );\n};\n\nconst PDF = props => {\n const {\n id,\n src,\n imgSrc,\n displayInline,\n fullWindowHeight = false,\n mediaParentId = null,\n //\n cardColor = '#fff',\n cardOutline = '#060709' || 'transparent',\n includeImage = true,\n description = '',\n cardBorderRadius = 25,\n includeText = true,\n includeShadow = true,\n focusColor = '#000',\n //\n children,\n } = props;\n\n // console.log('PDF :', src);\n // http://developer.amd.com/wordpress/media/2013/02/NPAR07_IllustrativeRenderingInTeamFortress2.pdf\n\n const img = children[0];\n const PDFThumbnail = children[0].props.src;\n\n const [iFrameHovered, setIFrameHovered] = useState<boolean>(false);\n const [fullscreenMode, setFullscreenMode] = useState<boolean>(false);\n\n const focusedNodeId = useSelector((state: any) => state.focusedNodeId);\n const dispatch = useDispatch();\n\n const selected = id === focusedNodeId;\n\n //\n const allowFullScreen = window.dev && !window.dev() && props.allowFullScreen;\n\n const hideHeader = (hide: boolean) => {\n dispatch(hideHeaderAction(hide));\n };\n\n useEffect(() => {\n if (\n isAndroidSamsung() ||\n isiOS() ||\n window.matchMedia('(hover: none)').matches\n ) {\n // hover unavailable\n setIFrameHovered(true);\n } else {\n // console.log('HOVER IS AVAILABLE');\n }\n //\n }, []);\n\n useEffect(() => {\n const exitFullscreen = e => {\n if (e.key === 'Escape') {\n hideHeader(false);\n document.removeEventListener('keydown', exitFullscreen);\n setFullscreenMode(false);\n }\n };\n\n if (fullscreenMode) {\n hideHeader(true);\n document.addEventListener('keydown', exitFullscreen);\n } else {\n hideHeader(false);\n document.removeEventListener('keydown', exitFullscreen);\n }\n\n return () => {\n //\n };\n }, [fullscreenMode]);\n\n const openPDF = React.cloneElement(children[0], {\n id,\n mediaParentId,\n selected,\n src: PDFThumbnail,\n pdfSrc: src,\n cardColor,\n cardOutline,\n includeImage,\n description,\n cardBorderRadius,\n includeText,\n includeShadow,\n focusColor,\n });\n\n if (!displayInline) {\n return openPDF;\n }\n\n return (\n <div\n css={css({\n position: 'relative',\n width: '100%',\n height: '100%',\n minHeight: getMinHeight(fullWindowHeight),\n outline: `1px solid ${lGrey2}`,\n boxShadow: '5px 10px 20px 10px rgba(0, 0, 0, 0.05)',\n overflow: 'hidden',\n\n ...(fullscreenMode && {\n position: 'fixed',\n left: 0,\n top: 0,\n width: '100vw',\n height: '100vh',\n background: '#fff',\n zIndex: 2147483647,\n }),\n })}\n onMouseOver={() => {\n setIFrameHovered(true);\n }}\n onMouseOut={() => {\n setIFrameHovered(false);\n }}\n >\n {window.dev() ? (\n <EditWrapper1 id={id} mediaParentId={mediaParentId} selected={selected}>\n <img src={clickPreviewToSeeOutput} style={{ maxWidth: '100%' }} />\n </EditWrapper1>\n ) : (\n <IFrame\n src={src}\n fullWindowHeight={fullWindowHeight}\n fullscreenMode={fullscreenMode}\n />\n )}\n\n {!!allowFullScreen &&\n (!fullscreenMode ? (\n <button\n css={css({\n border: 'none',\n outline: 'none',\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n left: 0,\n bottom: '0px',\n width: '100%',\n height: 55,\n padding: 15,\n background: `rgba(7, 9, 17, ${iFrameHovered ? 0.7 : 0})`,\n transform: `translateY(${iFrameHovered ? 0 : '55px'})`,\n transition: 'transform 0.25s ease-out',\n color: '#fff',\n cursor: 'pointer',\n })}\n onClick={() => {\n setFullscreenMode(true);\n }}\n >\n <img src={FullScreenIcon} style={{ margin: '0 15px 0 0' }} />\n Full screen\n </button>\n ) : (\n <button\n css={css({\n border: 'none',\n outline: 'none',\n position: 'absolute',\n right: 35,\n top: 75,\n width: 35,\n height: 35,\n background: `url('${CloseFullscreenEmbed}') no-repeat`,\n cursor: 'pointer',\n\n '&:hover': {\n opacity: 0.5,\n },\n })}\n onClick={() => {\n setFullscreenMode(false);\n }}\n />\n ))}\n </div>\n );\n};\n\nexport default PDF;\n","import PDF from './PDF';\n\nexport default PDF;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useState, useRef, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector } from 'react-redux';\nimport { EditWrapper0 } from './EditWrappers';\nimport { useCachedResource } from 'services/useCachedResource';\nimport { CHAMELEON_CACHE_v1 } from 'services/imageCache';\nimport { State } from 'store/store';\nimport { interactionContext as InteractionContext } from 'components/lib/TextAndImage/interactionContext';\n\nconst OpenPDFImage = ({ src, cardBorderRadius, includeText, description }) => {\n const cachedImgSrc = useCachedResource(CHAMELEON_CACHE_v1, src);\n\n return cachedImgSrc ? (\n <img\n src={cachedImgSrc}\n alt={description}\n style={{\n width: '100%',\n borderRadius: includeText\n ? `${cardBorderRadius}px ${cardBorderRadius}px 0 0`\n : cardBorderRadius,\n }}\n />\n ) : null;\n};\n\nconst OpenPDF = ({\n id,\n mediaParentId,\n selected,\n src: imgSrc,\n pdfSrc,\n children,\n cardColor,\n cardBorderRadius,\n cardOutline,\n includeImage,\n description,\n includeText,\n includeShadow,\n focusColor,\n}) => {\n const interactionContext = useContext(InteractionContext);\n\n const layout = interactionContext?.meta?.layout;\n let hasOneColumnLayout;\n\n if (layout && layout.toLowerCase().includes('one')) {\n hasOneColumnLayout = true;\n }\n //\n const highContrast = useSelector((state: State) => {\n return state.theme.highContrast;\n });\n\n const [containerHilite, setContainerHilite] = useState<boolean>(false);\n const container = useRef<HTMLDivElement>(null);\n\n return (\n <div\n style={{\n position: 'relative',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n }}\n >\n <div\n ref={container}\n css={css({\n position: 'relative',\n // width: '100%',\n // height: '100%',\n fontSize: '14px',\n fontWeight: 500,\n cursor: window.dev && !window.dev() ? 'pointer' : 'auto',\n ...(includeShadow && {\n boxShadow: '0px 0px 11.7411px rgba(13, 16, 40, 0.15)',\n }),\n\n borderRadius: cardBorderRadius,\n\n ...(containerHilite && {\n boxShadow: `0 0 0 2px #fff, 0 0 0 ${\n highContrast ? 5 : 3\n }px ${focusColor}`,\n transition: 'box-shadow 0.2s',\n }),\n\n ...(hasOneColumnLayout && {\n maxWidth: '50vw',\n }),\n })}\n >\n {window.dev() ? (\n <div\n css={css({\n display: 'flex',\n flexDirection: 'column',\n })}\n >\n <EditWrapper0\n id={id}\n mediaParentId={mediaParentId}\n selected={selected}\n >\n <OpenPDFImage\n src={imgSrc}\n cardBorderRadius={cardBorderRadius}\n includeText={includeText}\n description={description}\n />\n </EditWrapper0>\n </div>\n ) : (\n <a\n href={pdfSrc}\n title={'Click to open pdf'}\n target=\"_blank\"\n onFocus={e => {\n setContainerHilite(true);\n }}\n onBlur={() => {\n setContainerHilite(false);\n }}\n onKeyUp={e => {\n if (e.keyCode === 32) {\n e.currentTarget.click();\n }\n }}\n onMouseOver={e => {\n e.currentTarget.focus();\n }}\n onMouseOut={e => {\n e.currentTarget.blur();\n }}\n onClick={e => {\n if (!pdfSrc) {\n alert(\n 'Oops! No file has been specified. Check the source in your pdf settings.'\n );\n e.preventDefault();\n return;\n }\n }}\n >\n <OpenPDFImage\n src={imgSrc}\n cardBorderRadius={cardBorderRadius}\n includeText={includeText}\n description={description}\n />\n </a>\n )}\n\n {includeText && (\n <div\n css={css({\n position: 'relative',\n textAlign: 'center',\n padding: window.dev() ? '3px 0' : '13px',\n fontWeight: 300,\n //\n background: cardColor,\n borderRadius: `0 0 ${cardBorderRadius}px ${cardBorderRadius}px`,\n })}\n tabIndex={0}\n >\n {children}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { OpenPDF };\n","import React, { Fragment as _, memo, useContext } from 'react';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { Accordion, Field, FieldHeader, FieldBody } from './Accordion';\nimport EditableText from 'components/lib/EditableText';\nimport Image from '../Image';\nimport Container from 'components/Layouts/ContainerLogical';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport EditableButton from 'components/lib/EditableBtn';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport Transcript from 'components/lib/Video/Transcript';\nimport SVG from 'components/lib/SVG';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport shouldUpdate from 'services/shouldUpdate';\nimport imagePlaceholder from 'assets/CC_Add In Image Transparent_min.png';\nimport Embed from 'components/lib/Embed';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst ComponentsObject = {\n Row,\n Column,\n Text: EditableText,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [accordion, txt] = children;\n\n if (!includeAdditionalTextField) {\n return accordion;\n }\n\n return (\n <_>\n {accordion}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n\n Accordion: ({ children, ...props }) => {\n return (\n <div style={{ width: '100%' }}>\n <Accordion {...props}>{children}</Accordion>\n </div>\n );\n },\n AccordionField: Field,\n AccordionHeader: FieldHeader,\n AccordionBody: FieldBody,\n\n Image: ({ children, ...props }) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n const { isAdditionalMedia } = mediaContext;\n\n return (\n <Image\n {...{\n ...props,\n placeholder: imgPlaceholders[1],\n }}\n />\n );\n },\n\n Video: ({ children, ...props }) => {\n return (\n <_>\n <Video {...props}>{children}</Video>\n {props.useTranscript && <div style={{ height: 30 }} />}\n </_>\n );\n },\n Audio,\n Transcript,\n Modal: () => null,\n SVG,\n Embed,\n Media,\n PDF,\n OpenPDF,\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton,\n};\n\nconst render = (block: Block, Components: {}): JSX.Element | string => {\n let b = block;\n if (b.type === 'Ref') {\n b = getBlockById(b.id);\n }\n\n const children = Array.isArray(b.children)\n ? (b.children as Block[]).map(c => render(c, Components))\n : b.children;\n\n const Component = Components[b.type];\n\n return (\n <Component key={b.id} id={b.id} {...b.props}>\n {children}\n </Component>\n );\n};\n\ninterface DisplayProps {\n blockId: string;\n interactionBlock?: Block;\n}\n\nconst AccordionDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider value={interactionBlock}>\n {(interactionBlock.children as Block[]).map(child => {\n return render(child, ComponentsObject);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default AccordionDisplay;\n","let checkSwipeIsLive: number | undefined;\n\nexport const swipeGesture = (navigate: (dir: 'prev' | 'next') => void) => {\n return e => {\n const { currentTarget } = e;\n const x = e.touches[0].clientX;\n\n let pointerTravel = 0;\n let swipeIsLive = true;\n\n clearTimeout(checkSwipeIsLive);\n checkSwipeIsLive = window.setTimeout(() => {\n swipeIsLive = false;\n }, 300);\n\n const onTouchMove = e => {\n // get mouse travel\n pointerTravel = e.touches[0].clientX - x;\n };\n\n const onTouchEnd = e => {\n if (swipeIsLive) {\n if (pointerTravel > 10) {\n // console.log('swipe prev !!!');\n navigate('prev');\n }\n\n if (pointerTravel < -10) {\n // console.log('swipe next !!!');\n navigate('next');\n }\n }\n //\n currentTarget.removeEventListener('touchmove', onTouchMove);\n currentTarget.removeEventListener('touchend', onTouchEnd);\n };\n //\n currentTarget.addEventListener('touchmove', onTouchMove);\n currentTarget.addEventListener('touchend', onTouchEnd);\n };\n};\n","import AccordionDisplay from './AccordionDisplay_v2';\n\nexport default AccordionDisplay;\n","/** @jsx jsx */\n\nimport { Fragment as _ } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { getButtonFocus } from 'styles/variables';\nimport EmptyBtn from 'components/UI/EmptyBtn';\nimport hexToRgb from 'services/hexToRGB';\n\nconst Arrow = ({ color = '#ffffff' }) => {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6.375 3.75L11.625 9L6.375 14.25\"\n style={{\n stroke: color,\n strokeWidth: 1.5,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n />\n </svg>\n );\n};\n\nconst Btn = ({\n dir = 'next',\n size = 60,\n top = '',\n enabled = true,\n color = '#494949',\n hoverColor,\n arrowColor = '#ffffff',\n style = {},\n onClick,\n ...props\n}) => {\n const height = props.height || '100%';\n const heightOffset = 150;\n\n const ariaDisabled = {};\n if (!enabled) {\n ariaDisabled['aria-disabled'] = true;\n }\n\n const { r, g, b } = hexToRgb(color);\n const hoverColorToRGB = hexToRgb(hoverColor || color);\n\n return (\n <div\n css={css`\n position: absolute;\n display: flex;\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n ${`${dir === 'prev' ? 'left' : 'right'} : 0px;`}\n top: ${heightOffset / 2}px;\n width: ${size + 20}px;\n height: ${height - heightOffset}px;\n background: transparent;\n `}\n onClick={e => {\n onClick();\n }}\n >\n <EmptyBtn\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n ${`${dir === 'prev' ? 'left' : 'right'} : 10px;`}\n width: ${size}px;\n height: ${size}px;\n background-color: rgba(${r}, ${g}, ${b}, ${enabled ? 1 : 0.45});\n background-position: center;\n border-radius: 50%;\n transform: scaleX(${dir === 'next' ? 1 : -1});\n transition: opacity 0.2s;\n cursor: ${enabled ? 'pointer' : 'auto'};\n transition: background-color 0.1s;\n :-webkit-backface-visibility: hidden;\n\n ${enabled &&\n `&:hover {\n background-color: rgba(${hoverColorToRGB.r}, ${\n hoverColorToRGB.g\n }, ${hoverColorToRGB.b}, ${hoverColor ? 1 : 0.45});\n }\n `}\n\n &:focus {\n ${getButtonFocus('#494949')}\n }\n \n @media (max-width: 480px) {\n ${`${dir === 'prev' ? 'left' : 'right'} : 5px;`}\n transform: scale(${dir === 'next' ? 0.75 : -0.75});\n transform-origin: center;\n }\n `}\n style={style}\n tabIndex={props.tabIndex}\n ariaLabel={dir === 'prev' ? 'Previous slide' : 'Next slide'}\n {...ariaDisabled}\n disabled={!enabled}\n >\n <div\n style={{\n position: 'relative',\n left: 1,\n\n width: 18,\n height: 18,\n }}\n >\n <Arrow color={arrowColor} />\n </div>\n </EmptyBtn>\n </div>\n );\n};\n\nexport default Btn;\n","/** @jsx jsx */\n\nimport { Fragment as _, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport { CarouselContext } from './Carousel';\nimport hexToRgb from 'services/hexToRGB';\n//\n\nconst { lPink } = colors;\n\nconst Marker = ({ size = 10, current = false }) => {\n return (\n <div\n css={css`\n position: relative;\n flex-shrink: 0;\n width: ${size}px;\n height: ${size}px;\n margin: 0 5px;\n background: ${current ? lPink : 'transparent'};\n border: 1px solid ${lPink};\n border-radius: 50%;\n transform: scale(${current ? 1.35 : 1});\n transition: all 0.25s;\n `}\n />\n );\n};\n\nconst Marker_v2 = ({\n size = 15,\n index,\n current = false,\n color = '#959595',\n}: {\n size?: number;\n index?: number;\n current?: boolean;\n color?: string;\n}) => {\n const carouselContext = useContext(CarouselContext)!;\n const { goto, animate } = carouselContext;\n\n const isDefaultColor = color === '#959595';\n\n const { r, g, b } = hexToRgb(color);\n const notCurrentMarkerColor = isDefaultColor\n ? 'rgba(73,73,73,1)'\n : `rgba(${r}, ${g}, ${b}, 0.5)`;\n\n return (\n <div\n css={css`\n position: relative;\n flex-shrink: 0;\n width: ${size}px;\n height: ${size}px;\n margin: 0 5px;\n background: ${current ? color : notCurrentMarkerColor};\n border-radius: 50%;\n ${animate && 'transition: all 0.25s;'}\n\n ${!current &&\n `\n cursor: pointer;\n &:hover {\n background: ${color};\n }\n `}\n\n @media (max-width: 480px) {\n top: 5px;\n width: ${size / 2}px;\n height: ${size / 2}px;\n }\n `}\n onClick={e => {\n !current && goto(index!);\n }}\n aria-label={`Go to slide ${index! + 1}`}\n // aria-pressed={current}\n role=\"button\"\n />\n );\n};\n\nexport default Marker_v2;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","const isEDGE = () => {\n const ua = window.navigator.userAgent;\n\n const edge = ua.indexOf('Edge/');\n if (edge > 0) {\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n\n // other browser\n return false;\n};\n\nexport default isEDGE;\n","/** @jsx jsx */\n\nimport React, { useContext, useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Btn from './CarouselBtn';\nimport Marker from './CarouselMarker';\nimport { colors } from 'styles/variables';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { CarouselContext } from './Carousel';\nimport isEDGE from 'services/isEDGE';\nimport { swipeGesture } from './swipeGesture';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\n\nconst { lGrey0, lGrey2 } = colors;\n\nenum Direction {\n Prev = 'prev',\n Next = 'next',\n}\n\nconst CarouselLayout = React.memo(({ children }: any) => {\n const interactionContext = useContext(InteractionContext);\n const carouselContext = useContext(CarouselContext)!;\n const { currentIndex, animate } = carouselContext;\n\n // const imgHeight = window['innerHeight'] - 70 * 2 || 350;\n\n const {\n backGround = true,\n carouselColor = '#fff',\n backgroundOpacity = 100,\n border = true,\n borderColor = lGrey2,\n borderRadius = 10,\n carouselTextColor = lGrey0,\n animation = 'natural',\n includeText = true,\n includeSlideIndicators = true,\n prevNextBtnColor = '#494949',\n prevNextBtnHoverColor,\n prevNextArrowColor = '#ffffff',\n fullWidth = false,\n carouselHeight = 350,\n fullHeight = false,\n } = interactionContext.props;\n\n const { layout } = interactionContext.meta;\n\n const OneColumn = layout.toLowerCase().includes('one');\n\n const itemsSeen = useRef(\n unlockInteraction(interactionContext.id, (children as any).length)\n );\n\n const isOpen = useSelector((state: State) => {\n return state.interactionsOpen.includes(\n interactionContext.props.sId || interactionContext.id\n );\n });\n\n const checkSwipeIsLive = useRef<number | undefined>(undefined);\n\n const [imgHeight, setImgHeight] = useState(carouselHeight);\n const debounceSetImgHeight = useRef<any>();\n\n useEffect(() => {\n if (fullHeight) {\n return;\n }\n\n setImgHeight(carouselHeight);\n }, [carouselHeight, fullHeight, isOpen]);\n\n useEffect(() => {\n if (!fullHeight) {\n removeEventListener('resize', onResize);\n return;\n }\n\n if (fullHeight) {\n addEventListener('resize', onResize);\n onResize();\n } else {\n setImgHeight(350); //\n }\n\n function onResize() {\n clearTimeout(debounceSetImgHeight.current);\n debounceSetImgHeight.current = setTimeout(() => {\n setImgHeight(window.innerHeight - 70 * 3); //\n }, 300);\n }\n\n return () => {\n removeEventListener('resize', onResize);\n };\n }, [fullHeight, isOpen]);\n\n useEffect(() => {\n if (window.dev()) {\n return;\n }\n if (interactionContext.props.lockDown === 0) return;\n itemsSeen.current(currentIndex);\n });\n\n const overflow = backGround ? 'hidden' : 'visible';\n\n return (\n <div\n css={css({\n width: '100%',\n padding: `10px ${!OneColumn ? '30px' : 0}`,\n\n ...(!OneColumn &&\n !fullWidth && {\n '@media (max-width: 1100px)': {\n // if viewport is < 1100px\n width: '50vw',\n },\n '@media (max-width: 768px)': {\n // if viewport is < 768px\n // this is our breakpoint where behaviour should\n // be like we're in single column\n width: 'calc(100vw - 30px)',\n },\n\n '@media (min-width: 1100px)': {\n // if viewport is > 1100px\n maxWidth: 1100 / 2,\n },\n }),\n\n ...(!OneColumn &&\n fullWidth && {\n // maxWidth: 1100 / 2,\n // width: '100%',\n maxWidth: 'unset',\n }),\n })}\n onTouchStart={swipeGesture((dir: 'prev' | 'next') => {\n carouselContext[dir === 'next' ? Direction.Next : Direction.Prev]();\n })}\n >\n <div\n css={css({\n position: 'relative',\n width: '100%',\n ...(border && {\n border: !backGround ? 'none' : `1px solid ${borderColor}`,\n }),\n borderRadius: borderRadius,\n boxShadow: !backGround\n ? 'none'\n : '5px 10px 20px 10px rgba(0, 0, 0, 0.05)',\n overflow,\n })}\n >\n {backGround && (\n <div\n css={css({\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: carouselColor,\n opacity: backgroundOpacity * 0.01,\n })}\n />\n )}\n <ul\n css={css`\n display: flex;\n width: 100%;\n height: auto;\n margin: 0;\n padding: 0 !important;\n overflow: ${overflow};\n\n ${isEDGE() &&\n !['OneColumn', 'OneColumnReversed'].includes(layout) &&\n `\n max-width: 490px;\n \n `}\n `}\n >\n {(children as any).map((slide, index) =>\n React.cloneElement(slide, {\n index,\n currentIndex,\n animate,\n imgHeight,\n carouselColor,\n carouselTextColor,\n animation,\n slide,\n includeText,\n includeSlideIndicators,\n })\n )}\n </ul>\n\n <span className=\"sr-only\">\n Showing slide {currentIndex + 1} of {React.Children.count(children)}:\n </span>\n\n {includeSlideIndicators && (\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n width: 100%;\n top: ${imgHeight - 25}px;\n `}\n >\n <div\n css={css`\n display: flex;\n `}\n >\n {React.Children.map(children, (_, i) => (\n <Marker\n key={`marker-${i}`}\n index={i}\n current={currentIndex === i}\n color={prevNextBtnColor}\n />\n ))}\n </div>\n </div>\n )}\n\n <Btn\n dir={Direction.Prev}\n size={40}\n top={`${imgHeight / 2}px`}\n height={imgHeight}\n enabled={currentIndex > 0}\n color={prevNextBtnColor}\n hoverColor={prevNextBtnHoverColor}\n arrowColor={prevNextArrowColor}\n onClick={carouselContext[Direction.Prev]}\n />\n <Btn\n dir={Direction.Next}\n size={40}\n top={`${imgHeight / 2}px`}\n height={imgHeight}\n enabled={currentIndex < React.Children.count(children) - 1}\n color={prevNextBtnColor}\n hoverColor={prevNextBtnHoverColor}\n arrowColor={prevNextArrowColor}\n onClick={carouselContext[Direction.Next]}\n />\n </div>\n </div>\n );\n});\n\nexport default CarouselLayout;\n","import React, {\n ReactElement,\n useState,\n useRef,\n createContext,\n useEffect,\n} from 'react';\n\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport CarouselLayout from './CarouselLayout';\n\ninterface CarouselProps {\n children: ReactElement[] | ReactElement | string | null;\n}\n\ninterface CarouselContext {\n previousIndex: number;\n currentIndex: number;\n animate: boolean;\n hasAnimated: boolean;\n next: () => void;\n prev: () => void;\n goto: (slideNum: number) => void;\n}\n\nconst CarouselContext = createContext<CarouselContext | undefined>(undefined);\n\nconst Carousel = (props: CarouselProps) => {\n const { children } = props as any;\n\n const [currentIndex, setCurrentIndex] = useState(0);\n const [previousIndex, setPreviousIndex] = useState(0);\n\n const slideCache = useRef([]);\n\n // rename to something like shouldAnimateTransition\n const animate = useRef(true);\n const hasAnimated = useRef(false);\n\n const next = (): void => {\n if (currentIndex < React.Children.count(children) - 1) {\n setPreviousIndex(currentIndex);\n setCurrentIndex(_currentIndex => _currentIndex + 1);\n\n hasAnimated.current = true;\n }\n };\n const prev = (): void => {\n if (currentIndex >= 1) {\n setPreviousIndex(currentIndex);\n setCurrentIndex(_currentIndex => _currentIndex - 1);\n }\n };\n const goto = (slideNum: number): void => {\n console.log('goto :', slideNum);\n\n setPreviousIndex(currentIndex);\n setCurrentIndex(slideNum);\n };\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n if (slideCache.current.length > children.length) {\n const slideCacheIds = slideCache.current.map((s: any) => s.props.id);\n const childrenIds = children.map(c => c.props.id);\n const diff = slideCacheIds.filter(s => !childrenIds.includes(s));\n const removedIndex = slideCacheIds.indexOf(diff[0]);\n\n if (\n removedIndex < currentIndex ||\n (currentIndex === children.length && removedIndex === children.length)\n ) {\n animate.current = false;\n setCurrentIndex(_currentIndex => _currentIndex - 1);\n }\n }\n\n slideCache.current = children;\n requestAnimationFrame(() => (animate.current = true));\n }, [children.length]);\n\n return (\n <CarouselContext.Provider\n value={{\n currentIndex,\n previousIndex,\n animate: animate.current,\n hasAnimated: hasAnimated.current,\n\n next,\n prev,\n goto,\n }}\n >\n <CarouselLayout>{children}</CarouselLayout>\n </CarouselContext.Provider>\n );\n};\n\nexport default Carousel;\nexport { CarouselContext };\n","/** @jsx jsx */\n\nimport { useContext, useEffect, useRef } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { motion } from 'framer-motion';\nimport { CarouselContext } from './Carousel';\nimport isAppleComputerInc from 'services/isAppleComputerInc';\nimport { ImageZoomContext } from 'components/lib/Image/ImageZoom';\n\nconst defaultBulletFormatting = `\nul {\n list-style-type: disc;\n ul {\n list-style-type: circle;\n ul {\n list-style-type: square;\n }\n }\n}\n\nol {\n ul {\n list-style-type: circle;\n ul {\n list-style-type: square;\n }\n }\n}\n\n.chameleon-text > div {\n\n ul, ol {\n list-style-position: inside;\n }\n\n > ul, > ol {\n display: inline-block;\n margin-left: 0px;\n }\n}\n`;\nconst CarouselSlide = ({\n index,\n currentIndex,\n imgHeight,\n carouselTextColor,\n animation,\n slide,\n includeText,\n includeSlideIndicators,\n}) => {\n const img = slide.props.children[0];\n const text = slide.props.children[1];\n\n const { hasAnimated } = useContext(CarouselContext)!;\n\n const slideRef = useRef<HTMLLIElement | null>(null);\n const ar = {};\n\n if (currentIndex !== 0 && currentIndex === index) {\n ar['role'] = 'alert';\n }\n\n let content = text?.props?.content;\n if (content === '<p data-type=\"paragraph\"></p>') {\n content = false;\n }\n\n const textHasContent = window.dev() || content;\n const imageZoomContextValue = {\n overideStyles: {\n right: 5,\n bottom: 25,\n },\n };\n\n useEffect(() => {\n if (!slideRef.current) {\n return;\n }\n\n // do we chack for selectableElems in the slide\n // and if any. give the slide focus ?\n\n const selectableElems = Array.from(\n slideRef.current.querySelectorAll('a, button')\n ) as HTMLElement[];\n\n const toggleSelectableElemsEnabled = (toggle: boolean) => {\n if (!slideRef.current) {\n return;\n }\n\n // seems NOTHING wants to work to nix the elements\n //\n selectableElems.forEach(elem => {\n //\n });\n };\n\n // inert holds up !!!\n if (currentIndex !== index) {\n slideRef.current.setAttribute('inert', '');\n // toggleSelectableElemsEnabled(false);\n } else {\n slideRef.current.removeAttribute('inert');\n // toggleSelectableElemsEnabled(true);\n }\n }, [currentIndex]);\n\n // isiOS()\n return isAppleComputerInc() ? (\n <li\n ref={slideRef}\n css={css`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n width: 100%;\n list-style-type: none;\n\n opacity: ${currentIndex === index ? 1 : 0};\n transition: opacity 0.35s;\n\n transform: translateX(-${100 * currentIndex}%);\n `}\n {...ar}\n aria-hidden={currentIndex !== index}\n >\n <div\n css={css`\n height: ${imgHeight}px;\n // padding: ${window.dev() ? '5px' : '0px'};\n\n .chameleon-image,\n .chameleon-image img {\n width: 100%;\n height: ${imgHeight}px !important;\n }\n `}\n >\n <ImageZoomContext.Provider value={imageZoomContextValue}>\n {img}\n </ImageZoomContext.Provider>\n </div>\n\n {includeText && (\n <div\n css={css`\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: ${window.dev() ? '3px 5px' : '13px 7px'};\n word-break: break-word;\n * div {\n ${!window.dev() && `padding: 5px 10px;`}\n color: ${carouselTextColor};\n }\n text-align: center;\n ${defaultBulletFormatting}\n \n display: ${currentIndex !== index ? 'none' : ''}\n `}\n >\n {text}\n </div>\n )}\n </li>\n ) : (\n <motion.li\n ref={slideRef}\n css={css`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n width: 100%;\n list-style-type: none;\n `}\n animate={{\n transform: `translateX(-${100 * currentIndex}%)`,\n opacity: currentIndex === index ? 1 : 0,\n }}\n transition={\n {\n natural: {\n duration: 0.35,\n type: 'spring',\n stiffness: 260 / 1.5,\n damping: 19,\n },\n smooth: {\n duration: 0.35,\n },\n none: {\n duration: 0,\n },\n }[animation]\n }\n onAnimationComplete={() => {\n if (!hasAnimated) {\n if (index === 0) {\n }\n return;\n }\n\n if (window.dev && !window.dev() && slideRef.current) {\n if (currentIndex !== index) {\n return;\n }\n }\n }}\n {...ar}\n aria-hidden={currentIndex !== index}\n // tabIndex={currentIndex !== index ? -1 : undefined}\n // inert={currentIndex !== index}\n // inert\n >\n <div\n css={css`\n height: ${imgHeight}px;\n // padding: ${window.dev() ? '5px' : '0px'};\n\n .chameleon-image,\n .chameleon-image img {\n width: 100%;\n height: ${imgHeight}px !important;\n }\n\n \n `}\n >\n <ImageZoomContext.Provider value={imageZoomContextValue}>\n {img}\n </ImageZoomContext.Provider>\n </div>\n\n {includeText && (\n <div\n css={css`\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: ${currentIndex === index ? 'auto' : 0};\n\n padding: 13px 7px;\n ${window.dev() && currentIndex === index && 'padding: 3px 5px;'}\n\n overflow: hidden;\n word-break: break-word;\n\n ${currentIndex === index && 'transition: height 0.2s;'}\n transition: height 0.2s;\n\n * div {\n color: ${carouselTextColor};\n }\n\n text-align: center;\n\n ${defaultBulletFormatting}\n `}\n >\n {text}\n </div>\n )}\n </motion.li>\n );\n};\n\nexport default CarouselSlide;\n","import React, {\n Fragment as _,\n memo,\n useRef,\n useEffect,\n useContext,\n} from 'react';\nimport EditableText from 'components/lib/EditableText';\nimport Carousel from './Carousel';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Image from 'components/lib/Image';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport CarouselSlide from './CarouselSlide';\nimport shouldUpdate from 'services/shouldUpdate';\nimport SVG from 'components/lib/SVG';\nimport Carousel_default from 'assets/Wide Image.png';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport Transcript from 'components/lib/Video/Transcript';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport Embed from 'components/lib/Embed';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { ImageContext } from 'components/lib/Image';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n const [carousel, txt] = children;\n\n if (!includeAdditionalTextField) {\n return carousel;\n }\n\n return (\n <_>\n {carousel}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n Video,\n Media,\n Carousel,\n Slide: ({ children, ...props }) => {\n return (\n <ImageContext.Provider\n value={{\n editWrapperType: 1,\n placeholder: Carousel_default,\n editWrapperUseIcon: false,\n padding: 0,\n //\n canUpdateContainerHeight: false,\n }}\n >\n <CarouselSlide {...(props as any)}>{children}</CarouselSlide>\n </ImageContext.Provider>\n );\n },\n Image: ({ children, ...props }) => {\n const interactionContext_ = useContext(InteractionContext);\n const interactionLayout = useRef('TwoColumns');\n const mediaContext = useContext(MediaContext) as IMediaContext;\n const { isAdditionalMedia } = mediaContext;\n\n useEffect(() => {\n interactionLayout.current = interactionContext_.meta.layout;\n }, []);\n\n return (\n <Image\n {...{\n ...props,\n placeholder: isAdditionalMedia\n ? imgPlaceholders[1]\n : Carousel_default,\n }}\n />\n );\n },\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: ContinueBtn,\n Audio,\n Transcript,\n SVG,\n Embed,\n PDF,\n OpenPDF,\n};\n\nconst CarouselDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n //\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default CarouselDisplay;\n","import CarouselDisplay from './CarouselDisplay';\n\nexport default CarouselDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n ReactElement,\n useContext,\n useRef,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport { unlockInteraction } from 'services/unlockInteraction';\ninterface FlipcardsProps {\n children: ReactElement[];\n}\n\nconst Flipcards = (props: FlipcardsProps) => {\n const { children } = props;\n const context = useContext(interactionContext);\n\n const itemsSeen = useRef(\n unlockInteraction(context.id, (children as any).length)\n );\n\n const updateFlipCardSeen = id => {\n if (context.props.lockDown === 0) return;\n itemsSeen.current(id);\n };\n\n return (\n <div\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n width: 100%;\n `}\n >\n <span\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: 0;\n height: 0;\n overflow: hidden;\n `}\n >\n Click a button to change the content\n </span>\n\n <div\n css={css`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n `}\n role=\"list\"\n >\n {children.map((child: any, index) =>\n React.cloneElement(child, {\n updateFlipCardSeen,\n numFlipCards: children.length,\n index,\n })\n )}\n </div>\n </div>\n );\n};\n\nexport default Flipcards;\n","import getStore from 'services/getStore';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\n\nexport default (noop = false) => {\n const { currentInteractionBlockId, focusedNodeId } = getStore().getState();\n\n if (noop && currentInteractionBlockId === focusedNodeId) {\n return;\n }\n //\n if (currentInteractionBlockId === focusedNodeId) {\n return setCurrentBlock(null);\n }\n\n if (currentInteractionBlockId) {\n return setCurrentBlock({ id: currentInteractionBlockId });\n }\n\n setCurrentBlock(null);\n};\n","// gonna add some overrides for other headings but we've not yet seen\n// what they look like in the wild\n// we could add our own of course but i'll check with gwil as to his preference\n\nexport const headingStylesForPanelsAndCards = `.chameleon-text {\n\n h3, h3 * {\n line-height: 1em !important;\n }\n\n h4 {\n font-size: 1.2rem !important;\n line-height: 1.2em !important;\n }\n\n h5 {\n font-size: 1rem !important;\n line-height: 1.2em !important;\n }\n\n h6 {\n font-size: 1rem !important;\n line-height: 1.2em !important;\n }\n}`;\n","/** @jsx jsx */\n\nimport React, {\n ReactElement,\n useRef,\n useEffect,\n cloneElement,\n useState,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport isEDGE from 'services/isEDGE';\nimport { getHexToRgbWithDefaultFallback } from 'services/hexToRGB';\nimport { headingStylesForPanelsAndCards } from 'styles/headingStylesForPanelsAndCards';\n\ninterface FaceProps {\n id: string;\n face: string;\n color: string;\n includeFlipcardBackground?: boolean;\n cardBackgroundOpacity?: number;\n includeShadow?: boolean;\n textColor: string;\n alignTextTop: boolean;\n flipcardOutline?: boolean;\n flipcardOutlineColor?: number;\n flipcardBorderRadius?: number;\n zIndex: number;\n transform: string;\n visibleFace: string;\n visibility: boolean;\n children: ReactElement;\n}\n\nconst Face = ({\n id,\n face,\n color,\n includeFlipcardBackground = true,\n cardBackgroundOpacity = 100,\n includeShadow = true,\n textColor,\n alignTextTop,\n flipcardOutline,\n flipcardOutlineColor,\n flipcardBorderRadius = 10,\n zIndex,\n transform = '',\n visibleFace,\n visibility,\n children,\n ...props\n}: FaceProps) => {\n //\n\n const [mediaType, mediaTypeUpdated] = useState<number>(\n children?.props?.child ?? face === 'front' ? 1 : 0\n );\n\n const faceMedia = cloneElement(children, {\n onMediaChange(child) {\n mediaTypeUpdated(child);\n },\n });\n\n const { opacity } = props as any;\n const faceElement: any = useRef(null);\n const anchors: any = useRef(undefined);\n\n const { r, g, b } = getHexToRgbWithDefaultFallback(\n color,\n face === 'front' ? '#ffffff' : '#282A2B'\n );\n\n let a = cardBackgroundOpacity / 100;\n if (!color) {\n a = 0;\n }\n\n useEffect(() => {\n const stopPropagation = e => {\n e.stopPropagation();\n };\n\n const addRemoveStopPropagation = addRemove => {\n if (anchors.current && anchors.current.length) {\n anchors.current.forEach((a: any) => {\n a[`${addRemove}EventListener`]('click', stopPropagation);\n });\n }\n };\n\n if (!anchors.current) {\n anchors.current = Array.from(faceElement.current.querySelectorAll('a'));\n addRemoveStopPropagation('add');\n }\n\n return () => {\n addRemoveStopPropagation('remove');\n };\n }, []);\n\n useEffect(() => {\n if (anchors.current && anchors.current.length) {\n anchors.current.forEach((a: any) => {\n a.style.visibility = ['all', face].includes(visibleFace)\n ? 'visible'\n : 'hidden';\n });\n }\n }, [visibleFace]);\n\n let checkedTextColor = textColor;\n if (!textColor) {\n checkedTextColor = '#282a2b';\n }\n\n checkedTextColor = '';\n\n return (\n <div\n ref={faceElement}\n id={id}\n className=\"flipCardFace\"\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n\n ${mediaType === 0 &&\n `\n padding: ${window.dev() ? '10px' : '20px'};\n ${alignTextTop && 'align-items: flex-start;'}\n `}\n\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n\n white-space: pre-wrap;\n overflow-wrap: break-word;\n\n // background-color: ${color};\n background: ${\n includeFlipcardBackground\n ? `rgba(${r}, ${g}, ${b}, ${a})`\n : 'transparent'\n };\n color: ${textColor};\n // color: #fff;\n z-index: ${zIndex};\n border: ${\n flipcardOutline ? `1px solid ${flipcardOutlineColor}` : 'none'\n };\n border-radius: ${flipcardBorderRadius}px;\n overflow: hidden;\n\n ${isEDGE() && `opacity: ${!opacity ? 1 : 0};`}\n\n ${transform && `transform: ${transform};`}\n transition: opacity 0.2s, transform 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n\n -webkit-transform-style: preserve-3d;\n transform-style: preserve-3d;\n\n ${includeShadow && 'box-shadow: 0 8px 24px 5px rgba(0, 0, 0, 0.2)'};\n\n * {\n line-height: 1.2em;\n }\n\n li {\n color: ${textColor};\n }\n\n li > span {\n color: ${textColor};\n }\n\n //double up needed for editing. . .\n * div {\n color: ${textColor};\n }\n\n ${headingStylesForPanelsAndCards}\n\n \n\n `}\n aria-hidden={!visibility}\n >\n {faceMedia}\n </div>\n );\n};\n\nexport default Face;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { useContext, useEffect, useRef, useState, cloneElement } from 'react';\nimport { useSelector } from 'react-redux';\nimport checkReturnToInteractionEditing from 'services/checkReturnToInteractionEditing';\nimport { getButtonFocus } from 'styles/variables';\nimport Face from './Face';\nimport { interactionContext } from './interactionContext';\nimport { State } from 'store/store';\n\nconst Flipcard = props => {\n const { id, updateFlipCardSeen, numFlipCards, index, children } = props;\n const [cardHasFocus, setCardHasFocus] = useState(false);\n const [{ rotation, visibleFace }, updateCardDisplay] = useState({\n rotation: 0,\n visibleFace: 'front',\n });\n const [cardContent, setCardContent] = useState<string | undefined>();\n\n let [frontFaceMedia, backFaceMedia] = children;\n\n const [edgeOpacityHack, setEdgeOpacityHack] = useState(0);\n const context = useContext(interactionContext);\n const {\n includeFlipcardBackground = true,\n flipcardFrontColor,\n flipcardBackColor,\n flipcardFrontTextColor,\n flipcardBackTextColor,\n flipcardBackgroundOpacity = 100,\n focusColor,\n flipcardWidth,\n flipcardHeight,\n flipcardOutline = false,\n flipcardOutlineColor = '#282A2B',\n flipcardBorderRadius = 10,\n alignTextTop,\n includeShadow = true,\n } = context.props;\n\n const flipCard = useRef<HTMLDivElement>(null);\n const flipCardFaces = useRef<any>(undefined);\n const flipCardInit = useRef(false);\n const hiddenButton = useRef<HTMLButtonElement>(null);\n const delayReadingCardContent = useRef<number>(0);\n\n const frontFaceMediaIsSVG = frontFaceMedia?.props?.child === 3;\n const backFaceMediaIsSVG = backFaceMedia?.props?.child === 3;\n\n const frontFaceMediaIsSVGKey = useRef('front');\n const backFaceMediaIsSVGKey = useRef('back');\n\n const isOpen = useSelector((state: State) => {\n return state.interactionsOpen.includes(context.id);\n });\n\n const updateRotation = e => {\n window.dev() && checkReturnToInteractionEditing(true);\n\n if (visibleFace !== 'all') {\n // we only want these keys to update when the visibleFace is front or back\n if (visibleFace !== frontFaceMediaIsSVGKey.current) {\n frontFaceMediaIsSVGKey.current = visibleFace;\n }\n\n if (visibleFace !== backFaceMediaIsSVGKey.current) {\n backFaceMediaIsSVGKey.current = visibleFace;\n }\n }\n\n let bounds;\n let left;\n let width;\n let side = 'left';\n\n if (e) {\n bounds = e.currentTarget.getBoundingClientRect();\n left = bounds.left;\n width = bounds.width;\n side = e.clientX < left + width / 2 ? 'left' : 'right';\n }\n\n updateCardDisplay({\n rotation: rotation + (side === 'left' ? -180 : 180),\n visibleFace: 'all',\n });\n\n setEdgeOpacityHack(edgeOpacityHack => (edgeOpacityHack === 0 ? 1 : 0));\n\n updateFlipCardSeen(id);\n };\n\n const updateCardContent = (\n face: 'front' | 'back' | undefined = undefined\n ) => {\n if (!flipCard.current) {\n return;\n }\n\n const faceElement = flipCard.current.querySelector(\n `#${visibleFace}-${id}`\n ) as HTMLElement | null;\n\n if (!faceElement) {\n return;\n }\n\n let faceContent: string | undefined = faceElement.innerText;\n\n if (!faceContent) {\n const img = faceElement.querySelector('img');\n\n if (img) {\n faceContent = `${String(img.getAttribute('alt'))}`;\n }\n }\n\n if (faceContent && !/\\.$/.test(faceContent)) {\n // console.log(\n // \"if faceContent doesn't end with a period. we add it so screenReader pauses appropriately\"\n // );\n\n faceContent = `${faceContent}.`;\n }\n\n setCardContent(faceContent || '');\n };\n\n const flipCardBaseShadow = '0 8px 24px 5px rgba(0, 0, 0, 0.2)';\n\n const getFocusColor = () => {\n if (focusColor) {\n return focusColor;\n }\n\n return (Math.abs(rotation) / 180) % 2 == 0\n ? ['#fff', '#ffffff', 'rgb(255, 255, 255)'].includes(flipcardFrontColor)\n ? flipcardBackColor\n : flipcardFrontColor\n : flipcardBackColor;\n };\n\n const getFocusColor_2 = () =>\n getButtonFocus(getFocusColor(), flipCardBaseShadow)\n .replace(/box-shadow:|;|!important/g, '')\n .trim();\n\n useEffect(() => {\n if (!flipCardFaces.current) {\n flipCardFaces.current = Array.from(flipCard.current!.children);\n }\n\n const onTransitionEnd = e => {\n const visibleFace =\n (Math.abs(rotation) / 180) % 2 === 1 ? 'back' : 'front';\n\n // if we want to NOT use state. . .\n const hiddenCardElement: any = flipCardFaces.current.filter(element =>\n element.id.includes(visibleFace)\n )[0];\n\n if (flipCardInit.current) {\n updateCardDisplay({\n rotation,\n visibleFace,\n });\n flipCard.current!.removeEventListener('transitionend', onTransitionEnd);\n }\n\n flipCardInit.current = true;\n };\n\n flipCard.current!.addEventListener('transitionend', onTransitionEnd);\n\n return () => {\n flipCard.current!.removeEventListener('transitionend', onTransitionEnd);\n };\n }, [rotation]);\n\n useEffect(() => {\n if (visibleFace === 'all') {\n return;\n }\n\n clearTimeout(delayReadingCardContent.current);\n\n delayReadingCardContent.current = window.setTimeout(() => {\n updateCardContent();\n }, 500);\n\n return () => {\n clearTimeout(delayReadingCardContent.current);\n };\n }, [visibleFace]);\n\n useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n const texts = Array.from(\n flipCard.current!.querySelectorAll(`[class*=\"flipcard-text\"]`)\n ) as HTMLElement[];\n\n const padding = 60;\n\n const checkFlipCardSize = () => {\n if (window.innerWidth - padding <= flipcardWidth) {\n flipCard.current!.style.width = `calc(100vw - ${padding}px)`;\n\n if (texts) {\n flipCard.current!.style.minHeight = `${Math.max(\n ...texts.map(t => t.offsetHeight)\n )}px`;\n }\n\n return;\n //\n }\n\n if (flipCard.current!.style.width === `${flipcardWidth}px`) {\n return;\n }\n\n flipCard.current!.style.width = `${flipcardWidth}px`;\n flipCard.current!.style.height = `${flipcardHeight}px`;\n };\n\n checkFlipCardSize();\n\n // we're just tapping the checkFlipCardSize a couple times\n // useful if flipCard interaction is the first interaction in topic\n let counter = 0;\n const tick = setInterval(() => {\n counter += 1;\n\n if (counter >= 3) {\n // console.log('counter has checked to resize flipCard 3x @ 12fps');\n clearInterval(tick);\n }\n\n checkFlipCardSize();\n }, 1000 / 12);\n //\n\n window.addEventListener('resize', checkFlipCardSize);\n\n return () => {\n clearInterval(tick);\n window.removeEventListener('resize', checkFlipCardSize);\n };\n }, [isOpen, visibleFace]);\n\n return (\n <div\n ref={flipCard}\n id={`i${id}`}\n css={css`\n background: transparent;\n\n border-radius: ${flipcardBorderRadius}px;\n width: ${flipcardWidth}px;\n height: ${flipcardHeight}px;\n margin: 10px;\n perspective: 1000px;\n cursor: pointer;\n\n .chameleon-image,\n .chameleon-image > div,\n .chameleon-image img:not(.zoom-image img) {\n position: absolute;\n left: 0px;\n top: 0px;\n\n width: 100% !important;\n height: 100% !important;\n\n max-width: ${flipcardWidth}px !important;\n max-height: ${flipcardHeight}px !important;\n }\n\n .zoom-image {\n bottom: 5px;\n right: ${5 + flipcardBorderRadius / 2}px;\n transform: scale(0.8);\n }\n\n ${cardHasFocus &&\n `\n #${visibleFace}-${id} {\n ${getButtonFocus(\n getFocusColor(),\n '0 8px 24px 5px rgba(0, 0, 0, 0.2)'\n )}\n }\n `}\n `}\n onClick={(e: any) => {\n e.stopPropagation();\n\n updateRotation(e);\n // return from the click. do not focus button\n return;\n\n if (hiddenButton.current) {\n requestAnimationFrame(() => hiddenButton.current!.focus());\n }\n }}\n role=\"listitem\"\n >\n {!window.dev() && (\n <button\n ref={hiddenButton}\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: 0;\n height: 0;\n border: 0;\n outline: none;\n overflow: hidden;\n `}\n onFocus={e => {\n updateCardContent();\n //\n setCardHasFocus(true);\n }}\n onBlur={() => {\n setCardHasFocus(false);\n }}\n onClick={e => {\n e?.stopPropagation();\n updateRotation(null);\n }}\n aria-pressed={visibleFace !== 'front'}\n aria-label={`flip card ${index + 1} of ${numFlipCards}.${\n cardContent ? ` ${cardContent}` : ''\n }`}\n />\n )}\n\n <Face\n id={`front-${id}`}\n face=\"front\"\n color={flipcardFrontColor}\n includeFlipcardBackground={includeFlipcardBackground}\n cardBackgroundOpacity={flipcardBackgroundOpacity}\n includeShadow={includeShadow}\n textColor={flipcardFrontTextColor}\n alignTextTop={alignTextTop}\n flipcardOutline={!!flipcardOutline}\n flipcardOutlineColor={flipcardOutlineColor}\n flipcardBorderRadius={flipcardBorderRadius}\n zIndex={1}\n transform={`rotateY(${rotation}deg)`}\n {...{\n opacity: edgeOpacityHack === 1,\n }}\n visibleFace={visibleFace}\n visibility={['front', 'all'].includes(visibleFace)}\n >\n {frontFaceMediaIsSVG\n ? cloneElement(frontFaceMedia, {\n key: frontFaceMediaIsSVGKey.current,\n })\n : frontFaceMedia}\n </Face>\n <Face\n id={`back-${id}`}\n face=\"back\"\n color={flipcardBackColor}\n includeFlipcardBackground={includeFlipcardBackground}\n cardBackgroundOpacity={flipcardBackgroundOpacity}\n includeShadow={includeShadow}\n textColor={flipcardBackTextColor}\n alignTextTop={alignTextTop}\n flipcardOutline={!!flipcardOutline}\n flipcardOutlineColor={flipcardOutlineColor}\n flipcardBorderRadius={flipcardBorderRadius}\n zIndex={2}\n transform={`rotateY(${rotation + 180}deg)`}\n {...{\n opacity: edgeOpacityHack === 0,\n }}\n visibleFace={visibleFace}\n visibility={['back', 'all'].includes(visibleFace)}\n >\n {backFaceMediaIsSVG\n ? cloneElement(backFaceMedia, {\n key: backFaceMediaIsSVGKey.current,\n })\n : backFaceMedia}\n </Face>\n </div>\n );\n};\n\nexport default Flipcard;\n","/** @jsx jsx */\n\nimport { Fragment as _, useEffect, memo, useContext } from 'react';\nimport { jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport Flipcards_v2 from './Flipcards_v2';\nimport Flipcard_v2 from './Flipcard_v2';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column, Button, Box } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport SVG from 'components/lib/SVG';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Container from 'components/Layouts/ContainerLogical';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport continueBtn from '../ContinueBtn/continueBtn_v2';\nimport { Block } from '@chameleoncreator/creator-app';\nimport shouldUpdate from 'services/shouldUpdate';\nimport Embed from 'components/lib/Embed';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport imagePlaceholder from 'assets/Square.png';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport { ImageContext } from 'components/lib/Image';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: ({ children, ...props }) => (\n <EditableText {...{ ...props, className: 'flipcard-text' }} />\n ),\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [flipcards, txt] = children;\n\n if (!includeAdditionalTextField) {\n return flipcards;\n }\n\n return (\n <_>\n {flipcards}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n\n Flipcards: Flipcards_v2,\n Flipcard({ children, ...props }) {\n return (\n <ImageContext.Provider\n value={{\n editWrapperType: 1,\n placeholder: imagePlaceholder,\n //\n canUpdateContainerHeight: false,\n }}\n >\n <Flipcard_v2 {...props}>{children}</Flipcard_v2>\n </ImageContext.Provider>\n );\n },\n FlipcardSide: ({ children }) => children,\n Front: ({ children }) => children,\n Back: ({ children }) => children,\n\n Image: ({ children, ...props }) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n const { isAdditionalMedia } = mediaContext;\n\n return (\n <Image\n {...{\n ...props,\n\n placeholder: imgPlaceholders[1],\n }}\n />\n );\n },\n\n Video,\n Audio,\n // these can return null\n Transcript: () => null,\n EditableButton: () => null,\n //\n SVG: ({ children, ...props }) => (\n <SVG {...{ ...props, editWrapperType: 1 }} />\n ),\n Embed,\n Media,\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: continueBtn,\n PDF,\n OpenPDF,\n};\n\nconst FlipCardDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default FlipCardDisplay;\n","import FlipCardDisplay from './FlipCardDisplay_v2';\n\nexport default FlipCardDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport { useState, useEffect, Fragment as _, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport { getButtonFocus } from 'styles/variables';\nimport unlockInteraction from 'services/unlockInteraction';\n\nconst Tick = ({ tickColor }) => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill={`${tickColor}`}\n d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"\n />\n </svg>\n );\n};\n\nconst TermsAndConditions = ({ size = 15, onClick = null, ...props }) => {\n const context: any = useContext(interactionContext);\n const { id } = props;\n\n const {\n accept,\n acceptContent = 'e.g. I accept these terms and conditions.',\n acceptBorderRadius = 0,\n acceptTextColor = undefined,\n acceptBackgroundColor = undefined,\n lockDown,\n } = context.props;\n\n //\n const [toggle, setToggle] = useState(lockDown === 0 ? true : false);\n\n const tickColor = acceptTextColor || '#000';\n\n useEffect(() => {\n if (toggle) {\n unlockInteraction(context.id);\n }\n }, [toggle]);\n\n return accept ? (\n <form onSubmit={e => e.preventDefault()}>\n <div\n css={css`\n position: relative;\n display: inline-flex;\n align-items: center;\n margin: 20px 0 0 0;\n padding: ${acceptBackgroundColor ? '10px' : '10px 0 10px 0'};\n border-radius: ${acceptBorderRadius}px;\n background: ${acceptBackgroundColor};\n cursor: pointer;\n ${(window.dev() || toggle) && 'pointer-events: none;'}\n\n &:focus {\n ${getButtonFocus(acceptBackgroundColor || tickColor)}\n }\n `}\n onClick={() => {\n setToggle(true);\n }}\n onKeyUp={\n window.dev()\n ? () => {}\n : (e: any) => {\n console.log(e);\n if ([' ', 'Enter'].includes(e.key)) {\n setToggle(true);\n }\n }\n }\n tabIndex={!toggle ? 0 : -1}\n >\n <input\n id={`i${id}`}\n type=\"checkbox\"\n value={`i${id}`}\n name={`i${id}`}\n checked={toggle}\n readOnly\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n `}\n tabIndex={-1}\n />\n <label\n htmlFor={`i${id}`}\n css={css`\n color: ${acceptTextColor};\n pointer-events: none;\n `}\n tabIndex={-1}\n >\n {acceptContent}\n </label>\n\n <div\n css={css`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: ${size}px;\n height: ${size}px;\n margin: 0 0 0 10px;\n padding: 2px;\n border: 1px solid ${acceptTextColor || 'lightGrey'};\n `}\n >\n <Tick\n tickColor={window.dev() || toggle ? tickColor : 'rgba(0, 0, 0, 0)'}\n />\n </div>\n </div>\n </form>\n ) : null;\n};\n\nexport default TermsAndConditions;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport TermsAndConditions from './TermsAndConditions';\n\nconst FullPageText = ({ children, ...props }) => {\n return (\n <div\n css={css`\n padding: 10px;\n `}\n >\n {children}\n\n <TermsAndConditions />\n </div>\n );\n};\n\nexport default FullPageText;\n","/** @jsx jsx */\n\nimport { Fragment as _, memo } from 'react';\nimport { jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport FullPageText from './FullPageText';\nimport { imgPlaceholders } from 'components/lib/Image';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n FullPageText,\n Image: ({ children, ...props }) => {\n return (\n <Image\n {...{\n ...props,\n placeholder: imgPlaceholders[1],\n usePlaceholderValue: true,\n }}\n />\n );\n //\n },\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n Video,\n SVG,\n Media,\n};\n\nconst FullPageTextDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <interactionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </interactionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default FullPageTextDisplay;\n","import FullPageTextDisplay from './FullPageTextDisplay';\n\nexport default FullPageTextDisplay;\n","import { Report } from 'store/store';\n\nexport const addScormResponseAction = (scormAction: Report) => {\n return {\n type: 'ADD_SCORM_RESPONSE',\n data: scormAction,\n };\n};\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport Audio from 'components/lib/Audio';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport EditableText from 'components/lib/EditableText';\nimport Embed from 'components/lib/Embed';\nimport Image from 'components/lib/Image';\nimport Media from 'components/lib/Media';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport SVG from 'components/lib/SVG';\nimport Video from 'components/lib/Video';\nimport Modal from 'components/UI/Modal';\nimport { useContext, useEffect, useMemo, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport checkReturnToInteractionEditing from 'services/checkReturnToInteractionEditing';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport { State } from 'store/store';\nimport { InteractionContext } from '../../Layouts/ContainerLogical';\nimport { VisuallyHidden } from 'components/UI/VisuallyHidden';\nimport { ImageContext } from 'components/lib/Image';\n\nconst maxWidth = 512;\n\nconst useFreshProps = id => {\n return useSelector((state: State) => {\n return state.blocks[id].props;\n });\n};\n\nconst Feedback = ({\n id,\n block,\n correct,\n attempt,\n numberOfAttempts,\n showAttemptNumber = true,\n useMediaInFeedback = true,\n onOpened,\n onClose,\n showCorrectAnswer,\n navigationBehaviour,\n}: {\n id?: any;\n block?: any;\n correct: boolean | string;\n useAttemptFeedback?: boolean;\n attempt?: number;\n numberOfAttempts?: number;\n showAttemptNumber?: boolean;\n useMediaInFeedback?: boolean;\n onOpened?: () => void;\n onClose?: any;\n showCorrectAnswer?: any;\n navigationBehaviour?: any;\n}) => {\n const ctx = useContext(InteractionContext) as any;\n\n // <ImageContext.Provider\n // value={{\n // editWrapperType: 0,\n // editWrapperSize: '100%',\n // // placeholder: modalPlaceholder,\n // padding: 5,\n // }}\n // >\n // </ImageContext.Provider>\n\n const Components = {\n Feedback: ({ children }) => children,\n Modal: ({ children }) => children,\n ModalWithEditableBtn: ({ children }) => children,\n Correct: ({ children }: { children?: any; props?: any }) => children,\n Incorrect: ({ children }) => children,\n Attempt: ({ children }) => children,\n Image: ({ children, ...props }) => {\n let freshProps = useFreshProps(props.id);\n freshProps = {\n ...props,\n ...freshProps,\n };\n\n return (\n <Image\n {...{\n ...freshProps,\n // usePlaceholderValue: true,\n // maxHeight: 30,\n editWrapperType: 0,\n editWrapperSize: '100%',\n padding: 5,\n }}\n />\n );\n },\n Video: ({ children, ...props }) => {\n let freshProps = useFreshProps(props.id);\n freshProps = {\n ...props,\n ...freshProps,\n };\n\n return <Video {...freshProps}>{children}</Video>;\n },\n\n Transcript: ({ children, ...props }) => {\n return children;\n },\n SVG: ({ children, ...props }) => {\n let freshProps = useFreshProps(props.id);\n freshProps = {\n ...props,\n ...freshProps,\n };\n return <SVG {...freshProps} />;\n },\n Embed,\n Media,\n Audio: ({ children, ...props }) => {\n let freshProps = useFreshProps(props.id);\n freshProps = {\n ...props,\n ...freshProps,\n };\n\n return <Audio {...freshProps}>{children}</Audio>;\n },\n PDF,\n OpenPDF,\n Text: EditableText,\n EditableButton: ({ ...props }) => {\n let freshProps = useFreshProps(props.id);\n freshProps = {\n ...props,\n ...freshProps,\n };\n\n return <EditableBtn {...freshProps} onClick={onClose} />;\n },\n ContinueButton: ({ ...props }) => {\n let freshProps = useFreshProps(props.id);\n freshProps = {\n ...props,\n ...freshProps,\n };\n\n return (\n <ContinueBtn\n {...{\n ...freshProps,\n unlocked: true,\n removeable: false,\n disableLastPageMessage: true,\n //\n keyEventsDisabled: true,\n }}\n onClick={() => {}}\n />\n );\n },\n };\n\n //\n const renderedBlock = useMemo(() => {\n return renderBlock(\n block || findByKeyVal_V2(id, 'type', 'Feedback'),\n Components\n ) as any;\n }, []);\n\n const Feedbacks = renderedBlock.props.children;\n\n const Correct_Feedback = Feedbacks[0];\n const Incorrect_Feedback = Feedbacks[1];\n\n const Attempt_Feedback =\n Feedbacks[2].props.type === 'Attempt_Feedback'\n ? Feedbacks[2]\n : Feedbacks[1];\n\n const FeedbackButtonCorrect = Correct_Feedback.props.children[2];\n const FeedbackButtonIncorrect = Incorrect_Feedback.props.children[2];\n\n const buttonContainer = useRef<HTMLDivElement>(null);\n\n const parsedOnClose = () => {\n if (window.dev()) {\n checkReturnToInteractionEditing(true);\n onClose();\n return;\n }\n\n onClose();\n\n if (correct === 'attempt') {\n return;\n }\n\n if (!correct && attempt && attempt < numberOfAttempts!) {\n return;\n }\n\n // this code has been updated since\n // from here the correct / incorrect <a> tags ( buttons ) navigate to their hrefs\n };\n\n let img;\n let text;\n let button;\n let targetFeedbackElements;\n\n if (correct === 'attempt') {\n targetFeedbackElements = Attempt_Feedback.props.children;\n } else {\n targetFeedbackElements = Feedbacks[correct ? 0 : 1].props.children;\n }\n\n img = targetFeedbackElements[0];\n text = targetFeedbackElements[1];\n button = targetFeedbackElements[2];\n\n // reassign button\n if (correct !== 'attempt') {\n if (FeedbackButtonCorrect && FeedbackButtonIncorrect) {\n button = correct ? FeedbackButtonCorrect : FeedbackButtonIncorrect;\n } else {\n // for ' legacy ' feedback that won't have FeedbackButtonCorrect || FeedbackButtonIncorrect\n button = renderedBlock.props.children[2];\n }\n }\n\n if (!button) {\n button = renderedBlock.props.children[2];\n }\n\n const showAttemptNumberComputed =\n showAttemptNumber &&\n correct !== true &&\n numberOfAttempts! > 1 &&\n attempt! < numberOfAttempts!;\n\n let nullSpaceCloseAction = () => {};\n\n if (button.props.location) {\n if (\n button.props.location === 'next' ||\n (numberOfAttempts! > 1 && attempt! < numberOfAttempts!)\n ) {\n if (correct !== true) {\n nullSpaceCloseAction = onClose;\n }\n }\n } else {\n nullSpaceCloseAction = onClose;\n }\n\n const feedbackText = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!feedbackText.current) {\n return;\n }\n\n // this is wrong. just testing something\n const chameleonText = feedbackText.current.querySelector(\n '.chameleon-text'\n ) as HTMLDivElement;\n\n chameleonText?.removeAttribute('tabindex');\n });\n\n useEffect(() => {\n if (!buttonContainer.current) {\n return;\n }\n\n const anchorButton = buttonContainer.current.querySelector('a');\n\n if (!anchorButton) {\n return;\n }\n\n anchorButton.style.margin = '0';\n\n const killKeyAndPointerEvents = () => {\n // we've taken the href off the anchorButton to prevent key events from firing\n anchorButton.href = '';\n anchorButton.style.pointerEvents = 'none';\n };\n\n if (!correct && attempt && attempt < numberOfAttempts!) {\n killKeyAndPointerEvents();\n return;\n }\n\n if (correct && navigationBehaviour.correct) {\n killKeyAndPointerEvents();\n return;\n }\n\n if (!correct && navigationBehaviour.incorrect) {\n killKeyAndPointerEvents();\n return;\n }\n });\n\n return (\n <Modal\n disableNullSpaceClick={window.dev() ? false : true}\n onOpened={onOpened}\n onClose={window.dev() ? onClose : nullSpaceCloseAction}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n max-width: 768px;\n padding: 50px;\n `}\n >\n {useMediaInFeedback && (\n <div\n css={css`\n position: relative;\n width: 100%;\n\n margin-bottom: 30px;\n\n .chameleon-image img {\n // max-height: 30vh !important;\n\n height: auto !important;\n object-fit: contain;\n }\n\n @media (max-width: 768px) {\n width: 100%;\n margin-bottom: 25px;\n }\n `}\n >\n {img}\n </div>\n )}\n\n {correct === 'attempt' && showAttemptNumberComputed && (\n <div\n style={{\n margin: '0 0 15px 0',\n fontFamily: 'inherit',\n fontWeight: 700,\n color: '#333',\n }}\n aria-hidden=\"true\"\n >\n <p>\n Attempt {attempt} of {numberOfAttempts}\n </p>\n </div>\n )}\n <div\n ref={feedbackText}\n css={css`\n position: relative;\n width: 100%;\n margin-bottom: 30px;\n `}\n >\n {text}\n </div>\n\n {correct === 'attempt' && showAttemptNumberComputed && (\n <span className=\"sr-only\">\n Attempt {attempt} of {numberOfAttempts}\n </span>\n )}\n <div\n ref={buttonContainer}\n css={css`\n position: relative;\n display: flex;\n justify-self: flex-end;\n justify-content: center;\n width: 100%;\n `}\n >\n <span\n css={css`\n cursor: pointer;\n\n &:hover {\n opacity: 0.8;\n }\n\n button {\n pointer-events: none;\n }\n\n div [class*='NavigationButton'] {\n top: -10px;\n height: calc(100% + 20px);\n }\n `}\n onClick={e => {\n !window.dev() ? parsedOnClose() : null;\n }}\n >\n {button}\n </span>\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default Feedback;\n","/** @jsx jsx */\n\nimport { Fragment as _ } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Modal from 'components/UI/Modal';\nimport checkReturnToInteractionEditing from 'services/checkReturnToInteractionEditing';\n\nconst maxWidth = 512;\n\nconst FeedbackWithEditableBtn = ({\n getFeedbackDisplay,\n ContinueBtn,\n onClose,\n}: {\n getFeedbackDisplay?: any;\n ContinueBtn?: any;\n onClose?: any;\n}) => {\n const parsedOnClose = () => {\n window.dev() && checkReturnToInteractionEditing(true);\n onClose();\n };\n //\n return (\n <Modal onClose={parsedOnClose}>\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n max-width: 768px;\n padding: 50px;\n `}\n >\n <div\n css={css`\n width: 75%;\n max-width: ${maxWidth * 0.75}px;\n margin-bottom: 30px;\n\n @media (max-width: 768px) {\n width: 100%;\n margin-bottom: 25px;\n }\n `}\n >\n {getFeedbackDisplay().props.children[0]}\n </div>\n <div\n css={css`\n width: 100%;\n margin-bottom: 30px;\n `}\n >\n {getFeedbackDisplay().props.children[1]}\n </div>\n <div\n css={css`\n display: flex;\n justify-self: flex-end;\n justify-content: center;\n width: 100%;\n `}\n >\n\n <span onClick={() => (!window.dev() ? parsedOnClose() : null)}>\n {ContinueBtn}\n </span>\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default FeedbackWithEditableBtn;\n","import Feedback from './Feedback';\nimport FeedbackWithEditableBtn from './FeedbackWithEditableBtn';\n\nexport default Feedback;\nexport { FeedbackWithEditableBtn };\n","import { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getTopics from 'services/apiHelpers/getTopics';\n\nexport const useScoringQuizzes = () => {\n const scoringQuizzes = useSelector((state: State) => {\n const topics = getTopics();\n return topics.filter((t: Block) => {\n return t?.props?.asAssessment && t?.props?.scoring;\n });\n });\n\n return scoringQuizzes;\n};\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport Feedback from 'components/lib/Feedback';\nimport React, {\n createContext,\n ReactElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { getScore, setScore } from 'services/scoring';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { State } from 'store/store';\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport { ImageContext } from 'components/lib/Image/Image';\n//\nimport CC_Multi_Choice_Media_Placeholders_1 from 'assets/CC_Multi Choice Media Placeholders_1.svg';\nimport CC_Multi_Choice_Media_Placeholders_2 from 'assets/CC_Multi Choice Media Placeholders_2.svg';\nimport CC_Multi_Choice_Media_Placeholders_3 from 'assets/CC_Multi Choice Media Placeholders_3.svg';\nimport CC_Multi_Choice_Media_Placeholders_4 from 'assets/CC_Multi Choice Media Placeholders_4.svg';\nimport CC_Multi_Choice_Media_Placeholders_5 from 'assets/CC_Multi Choice Media Placeholders_5.svg';\nimport CC_Multi_Choice_Media_Placeholders_6 from 'assets/CC_Multi Choice Media Placeholders_6.svg';\nimport pubSub from 'services/pubSub';\nimport { Report } from 'store/store';\n\nconst multichoiceMediaPlaceholders = [\n CC_Multi_Choice_Media_Placeholders_1,\n CC_Multi_Choice_Media_Placeholders_2,\n CC_Multi_Choice_Media_Placeholders_3,\n CC_Multi_Choice_Media_Placeholders_4,\n CC_Multi_Choice_Media_Placeholders_5,\n CC_Multi_Choice_Media_Placeholders_6,\n];\n\n// this will create the relationship of id to placeholder image\n// for the current session\nconst placeholderMappingToImageId = {};\n\nenum SubmitState {\n Initial = 0,\n Resolved = 2,\n}\n\ninterface MultichoiceProps {\n children: ReactElement[] | ReactElement | string | null;\n}\n\ninterface MultichoiceContext {\n selected: number | string[];\n updateSelected: (optionId: number | string) => void;\n correct: number | string[];\n isMultiSelect: boolean;\n answerCount: number;\n isLive: boolean;\n randomizeOptions?: boolean;\n submit: SubmitState;\n onSubmit: () => void;\n}\n\nconst MultichoiceContext = createContext<MultichoiceContext | undefined>(\n undefined\n);\n\n// keeping this local to the session\n// if the interaction is set to score &&\n// if the score is not undefined ( has value )\n// true\nlet sessionLock = {};\nlet attempts = {};\n\nlet randomAnswers = {};\n\npubSub.subscribe('RESET_MODULE', () => {\n console.log('multichoice resets');\n\n sessionLock = {};\n attempts = {};\n\n randomAnswers = {};\n});\n\nconst getRandomAnswers = (id, Answers) => {\n if (!randomAnswers[id]) {\n randomAnswers[id] = [...Answers].sort(() => Math.random() - 0.5);\n }\n\n return randomAnswers[id];\n};\n\nconst Multichoice = (props: MultichoiceProps) => {\n const interactionContext = useContext(_interactionContext);\n\n const { id: interactionContextId } = interactionContext;\n let {\n correctOptions = '',\n score,\n randomizeOptions = false,\n useFeedback = true,\n useMediaInFeedback = true,\n useUniqueOptionFeedback,\n showAttemptNumber,\n showCorrectAnswer,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n\n isMultichoiceMedia,\n mediaPanelWidth = 320,\n\n showReviewFeedback = false,\n } = interactionContext.props;\n\n let { includeQuestionTextPlusImage } = interactionContext.props; // undefined by default. falsey\n\n const numberOfAttempts = interactionContext.hasAttemptFeedback\n ? interactionContext.props.numberOfAttempts\n : 0;\n\n // state (s)\n //\n const [selected, setSelected] = useState<any[]>([]);\n const [submit, setSubmit] = useState(\n sessionLock[interactionContextId]\n ? SubmitState.Resolved\n : SubmitState.Initial\n );\n const [feedback, setFeedback] = useState(false);\n\n const scoringQuizzes = useScoringQuizzes();\n const { scoreAll } = useSelector((state: State) => {\n return Object.values(state.blocks).find(b => b.type === 'Module')\n ?.props as any;\n });\n\n sessionLock[interactionContextId] =\n attempts[interactionContextId] === numberOfAttempts &&\n score &&\n getScore(interactionContextId) !== undefined;\n\n const dispatch = useDispatch();\n\n const { children } = props as any;\n const [Question, SubmitBtn, AnswersContainer, ReviewFeedback] = children;\n\n const Answers = AnswersContainer.props.children;\n\n // refs\n const multichoice = useRef<HTMLFormElement>(null);\n\n if (!attempts[interactionContextId]) {\n attempts[interactionContextId] = 0;\n }\n const isCorrect = useRef(false);\n\n // correctOptions array from string\n correctOptions = correctOptions\n .split(/,/g)\n .filter(entry => entry !== '')\n .sort();\n\n // Correct contains an array of ids of correct answers\n const correct = correctOptions.map((o, i) => {\n return Answers[o - 1]?.props?.id;\n });\n const isMultiCorrect = correct.length > 1;\n const isLive = selected.length && submit === 0;\n\n // Toggle options\n const updateSelected = optionId => {\n let _selected;\n\n if (isMultiCorrect) {\n if (selected.includes(optionId)) {\n // Toggle off\n _selected = selected.filter(o => optionId !== o);\n } else {\n // Toggle on\n _selected = [...selected, optionId];\n }\n } else {\n _selected = selected[0] === optionId ? [] : [optionId];\n }\n\n // Maintain \"correct\" state\n isCorrect.current = _selected.sort().join() === correct.sort().join();\n\n // updating setScore for old ways ( display results )\n setScore(interactionContextId, isCorrect.current);\n //\n //\n\n setSelected(_selected);\n };\n\n const showFeedback = correct => {\n useFeedback && setFeedback(true);\n\n if (window.dev()) {\n return;\n }\n\n if (\n // score &&\n correct ||\n attempts[interactionContextId] >= numberOfAttempts\n ) {\n //\n let questionText: HTMLDivElement | string = document.querySelector(\n !isMultichoiceMedia\n ? `#i${interactionContext.id} form .chameleon-text`\n : `#multichoice-media-question-text-${interactionContext.id}`\n ) as HTMLDivElement;\n\n if (questionText) {\n questionText = questionText?.innerText;\n }\n\n const response = selected\n .map(s => {\n let result = '-1';\n Answers.forEach((a, i) => {\n if (s === a.props.id) {\n result = `${i + 1}`;\n return;\n }\n });\n return result;\n })\n .sort()\n .join(',');\n\n const getCorrectAndResponseOptions = entry => {\n let answer = '';\n Answers.forEach((a, i) => {\n if (entry === a.props.id) {\n const { id } = a.props;\n const content = document.querySelector(\n `#i${id}`\n ) as HTMLInputElement;\n\n answer = content?.innerText;\n\n if (!answer && isMultichoiceMedia) {\n // get the alt off the image\n const imgAltText = content.querySelector('img')?.alt || '';\n answer = imgAltText;\n }\n }\n });\n\n return answer;\n };\n\n const responseExpanded = selected\n .map(getCorrectAndResponseOptions)\n .join(',');\n\n const correctExpanded = correctOptions\n .map((o, i) => {\n return Answers[o - 1]?.props?.id;\n })\n .map(getCorrectAndResponseOptions)\n .join(',');\n\n const action: Report = {\n id: interactionContextId,\n type: 'fill-in',\n // 'choice',\n question: questionText,\n reportable: 'multichoice' as 'multichoice',\n // ,\n response: responseExpanded,\n correct: correctExpanded,\n result: correct ? 1 : 0,\n };\n\n // console.log(JSON.stringify(action, null, 2));\n\n // dispatch if there's no scoringQuizzes etc\n let shouldDispatchScore = score;\n\n if (scoringQuizzes.length) {\n shouldDispatchScore = false;\n }\n\n if (shouldDispatchScore) {\n dispatch(updateScoreAction(interactionContextId, correct ? 1 : 0));\n }\n\n dispatch(addScormResponseAction(action));\n }\n\n //\n // we do our unlocking here if !useFeedback\n //\n const unlock =\n isCorrect.current || attempts[interactionContextId] === numberOfAttempts;\n\n if (!useFeedback && unlock) {\n setSubmit(SubmitState.Resolved);\n unlockInteraction(interactionContextId);\n }\n };\n\n const onSubmit = () => {\n attempts[interactionContextId] += 1;\n showFeedback(isCorrect.current);\n };\n\n const onClose = () => {\n setFeedback(false);\n };\n\n // effects\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n try {\n if (\n parent.multichoiceIsLive &&\n parent.multichoiceIsLive[interactionContextId]\n ) {\n parent.multichoiceIsLive[interactionContextId]({\n isLive: !!isLive,\n isCorrect: isCorrect.current,\n });\n }\n\n if (parent.showFeedback) {\n parent.showFeedback[interactionContextId] = correct => {\n if (useUniqueOptionFeedback && !isMultiCorrect && !isLive) {\n return alert('No options have been selected');\n }\n\n if (correct === null) {\n return setSelected([]);\n }\n\n if (correct === 'attempt') {\n //\n }\n\n if (feedback) {\n setFeedback(false);\n requestAnimationFrame(() =>\n showFeedback((isCorrect.current = correct))\n );\n //\n return;\n }\n\n showFeedback((isCorrect.current = correct));\n };\n }\n } catch (err) {\n console.log(err);\n }\n });\n\n useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n const content = Array.from(\n multichoice.current!.querySelectorAll('label')\n ) as any;\n\n const answerIds = Answers.map((answer: any) => answer.props.id);\n\n const answers = content.map((t: any) => t.innerText);\n\n const alphabetized = selected.map((entry: any) => {\n return 'abcdefghijklmnopqrstuvwxyz'.split('')[answerIds.indexOf(entry)];\n });\n });\n\n let parsedIsCorrect;\n\n if (\n !useUniqueOptionFeedback &&\n attempts[interactionContextId] < numberOfAttempts\n ) {\n parsedIsCorrect = isCorrect.current || 'attempt';\n } else {\n parsedIsCorrect = isCorrect.current;\n }\n\n const _Answers_ =\n window.dev && !window.dev() && randomizeOptions\n ? getRandomAnswers(interactionContextId, Answers)\n : Answers;\n\n const feedbackOpenerButton = useRef<HTMLButtonElement>();\n\n return (\n <MultichoiceContext.Provider\n value={{\n isMultiSelect: isMultiCorrect,\n selected,\n isLive: !!isLive,\n correct,\n updateSelected,\n submit,\n answerCount: Answers.length || 1,\n randomizeOptions,\n onSubmit: () => {\n attempts[interactionContextId] += 1;\n showFeedback(isCorrect.current);\n },\n }}\n >\n <form ref={multichoice} onSubmit={e => e.preventDefault()}>\n {!isMultichoiceMedia || includeQuestionTextPlusImage ? (\n <div style={{ marginBottom: 15 }}>{Question}</div>\n ) : null}\n\n {isMultichoiceMedia ? (\n <div\n key={`multichoice-media-container-${_Answers_.length}`}\n css={css({\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: ['space-between', 'center'][1],\n\n width: '100%',\n\n '> div': {\n margin: '10px',\n // auto\n },\n\n // '[class*=\"EditWrapper\"]': {\n // left: 10,\n // top: 10,\n // width: 'calc(100% - 20px)',\n // height: 'calc(100% - 20px)',\n // },\n\n '.chameleon-image': {\n flexShrink: 0,\n },\n\n '.chameleon-text': {\n margin: '10px 0 0 0',\n },\n })}\n >\n {_Answers_.map((answer, index) => {\n const { id } = answer?.props;\n\n const placeholder =\n multichoiceMediaPlaceholders[\n index % multichoiceMediaPlaceholders.length\n ];\n\n if (!placeholderMappingToImageId[id]) {\n placeholderMappingToImageId[id] = placeholder;\n }\n\n return (\n <ImageContext.Provider\n key={`image-context-provider-${id}`}\n value={{\n //\n editWrapperType: 1,\n editWrapperSize: '80%',\n placeholder: placeholderMappingToImageId[id],\n canUpdateContainerHeight: false,\n }}\n >\n {answer}\n </ImageContext.Provider>\n );\n })}\n </div>\n ) : (\n _Answers_\n )}\n\n {(!showReviewFeedback || submit !== SubmitState.Resolved) && (\n <div\n css={css({\n margin: '20px 0 0 0',\n ...(!window.dev() && {\n opacity: isLive ? 1 : 0,\n pointerEvents: isLive ? 'auto' : 'none',\n transition: 'opacity 0.2s',\n }),\n\n ...(isMultichoiceMedia && {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n }),\n })}\n >\n {React.cloneElement(SubmitBtn, {\n enabled: !!isLive,\n onClick: onSubmit,\n })}\n </div>\n )}\n\n {showReviewFeedback &&\n (window.dev() || submit === SubmitState.Resolved) && (\n <div\n style={{\n margin: window.dev() ? '25px 0 0 0' : '20px 0 0 0',\n ...(isMultichoiceMedia && {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n }),\n }}\n >\n {React.cloneElement(ReviewFeedback, {\n onClick() {\n showFeedback(parsedIsCorrect);\n },\n })}\n </div>\n )}\n </form>\n\n {feedback && (\n <Feedback\n id={\n !isMultiCorrect\n ? !useUniqueOptionFeedback\n ? interactionContextId\n : selected[0]\n : interactionContextId\n }\n correct={window.dev() ? isCorrect.current : parsedIsCorrect}\n useAttemptFeedback={!useUniqueOptionFeedback}\n attempt={attempts[interactionContextId]}\n numberOfAttempts={numberOfAttempts}\n showAttemptNumber={showAttemptNumber}\n useMediaInFeedback={useMediaInFeedback}\n navigationBehaviour={navigationBehaviour}\n onOpened={(...$) => {\n if (window.dev()) {\n return;\n }\n }}\n onClose={() => {\n if (!window.dev()) {\n const unlock =\n isCorrect.current ||\n attempts[interactionContextId] === numberOfAttempts;\n\n if (unlock) {\n setSubmit(SubmitState.Resolved);\n unlockInteraction(interactionContextId);\n }\n }\n\n const { correct, incorrect } = navigationBehaviour;\n // if any of these checks is true. we want to return focus back to the button we're in\n // or. perhaps we give focus back to the question > options ?\n if (parsedIsCorrect === 'attempt' || correct || incorrect) {\n const section = document.querySelector(\n `#i${interactionContextId}`\n ) as HTMLElement;\n //\n const feedbackButton =\n section &&\n (section.querySelector(\n '[class*=\"genericButton\"]'\n ) as HTMLButtonElement);\n //\n const focusedElement = feedbackButton || section;\n\n let abortCounter = 0;\n\n const tick = setInterval(() => {\n if (document.activeElement === focusedElement) {\n clearInterval(tick);\n return;\n }\n\n if (abortCounter >= 10) {\n console.warn(\n 'something has somethinged and we cannot give button focus'\n );\n clearInterval(tick);\n return;\n }\n\n //\n\n focusedElement?.focus();\n abortCounter += 1;\n //\n }, 10);\n\n //\n }\n\n onClose();\n }}\n {...interactionContext.props}\n />\n )}\n </MultichoiceContext.Provider>\n );\n};\n\nexport default Multichoice;\n\nexport { MultichoiceContext };\n","import { SCORM } from 'pipwerks-scorm-api-wrapper';\nimport API from 'services/scorm/API';\nimport pubSub from 'services/pubSub';\n\nlet interactionsLockedData = {};\nlet suspend_data: any = undefined;\n\n// pubSub.subscribe('RESET_MODULE', () => {\n// // interactionsLockedData = {};\n// // suspend_data = undefined;\n// });\n\nconst getSuspendData = (): string | undefined => {\n let version = SCORM.version;\n return version ? SCORM.get(API[version].suspend_data) : undefined;\n};\n\nconst getInteractionsLockedData = (id: string | null = null) => {\n return id ? interactionsLockedData[id] : interactionsLockedData;\n};\n\nconst setInteractionsLockedData = id => {\n interactionsLockedData[id] = 0;\n};\n\nconst getMultichoiceData = () => {\n let local_suspend_data;\n\n if (suspend_data) {\n local_suspend_data = suspend_data;\n } else {\n local_suspend_data = getSuspendData();\n local_suspend_data = local_suspend_data\n ? JSON.parse(local_suspend_data)\n : {};\n\n suspend_data = local_suspend_data;\n }\n\n return local_suspend_data?.multichoiceData || {};\n};\n\nexport {\n getInteractionsLockedData,\n setInteractionsLockedData,\n getMultichoiceData,\n};\n","/** @jsx jsx */\n\nimport React, { useContext, Fragment } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport { getMultichoiceData } from 'services/scorm/scormService';\n\nexport const NewTick = ({ width = 9, height = 7, color }) => {\n // updated again. . .\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 8 8\"\n >\n <g>\n <path\n style={{\n stroke: color,\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n fill: 'none',\n }}\n d=\"M.5,4.46l2.41,2L7.44,1.55\"\n />\n </g>\n </svg>\n );\n};\n\nexport const Tick = ({ type = 'radio', width = 11, height = 11, color }) => {\n return (\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: 20,\n height: 20,\n })}\n >\n <NewTick color={color} />\n </div>\n );\n};\n\nexport const Radio = props => {\n let {\n id,\n selected,\n updateSelected,\n correct,\n resolved,\n checkboxColor,\n style,\n isMulti,\n isSquare,\n //\n hasFocus,\n } = props;\n\n // contexts\n const interactionContext: any = useContext(_interactionContext);\n const { showCorrectAnswer, isMultichoiceMedia } = interactionContext.props;\n\n let savedMultichoiceData = getMultichoiceData();\n\n let lockedBySCORM;\n if (savedMultichoiceData && savedMultichoiceData[interactionContext.id]) {\n savedMultichoiceData = savedMultichoiceData[interactionContext.id];\n //\n selected = savedMultichoiceData.selected.includes(id);\n resolved = true;\n lockedBySCORM = true;\n }\n\n return (\n <Fragment>\n <div\n className=\"checkbox-radio\"\n css={css`\n all: unset;\n position: relative;\n flex: 0 0 auto;\n width: 20px;\n height: 20px;\n ${!isMulti && !isSquare && 'border-radius: 50%;'}\n border: 1px solid ${checkboxColor};\n outline: ${checkboxColor};\n background: ${selected ? checkboxColor : 'transparent'};\n ${!!showCorrectAnswer &&\n resolved &&\n correct &&\n 'background: transparent;'}\n\n // cursor: pointer;\n\n ${!(resolved || lockedBySCORM) &&\n `\n &:hover {\n opacity: 0.8;\n background: ${selected ? checkboxColor : 'transparent'};\n }\n\n &:focus {\n box-shadow: 0 0 0 2px ${checkboxColor};\n transition: box-shadow 0.2s;\n ${!isMultichoiceMedia && 'display: none;'}\n }\n `}\n\n // pointer-events: auto;\n\n ${(resolved || lockedBySCORM) &&\n `\n pointer-events: none !important;\n * {\n pointer-events: none !important;\n }\n `}\n\n \n `}\n style={style}\n onClick={\n window.dev()\n ? e => {\n e.stopPropagation();\n updateSelected(id);\n }\n : () => {}\n }\n // tabIndex={isMultichoiceMedia && 0}\n // aria-live=\"assertive\"\n >\n {!!showCorrectAnswer && resolved && correct && (\n <div\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n `}\n >\n <Tick\n type={isMulti || isSquare ? 'checkbox' : 'radio'}\n color={checkboxColor}\n />\n </div>\n )}\n\n {/* <div className=\"sr-only\">{selected ? 'checked' : 'not checked'}</div> */}\n </div>\n </Fragment>\n );\n};\n","/** @jsx jsx */\n\nimport React, {\n useState,\n useContext,\n useRef,\n useLayoutEffect,\n Fragment as _,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport { MultichoiceContext } from './Multichoice_v2';\nimport hexToRgb from 'services/hexToRGB';\nimport { Radio, Tick, NewTick } from './Radio';\n\nconst { lPink, lGrey0, lGrey4, lTeal0 } = colors;\n\nexport const defaultProps = {\n panelBackground: lGrey0,\n panelBorderRadius: 5,\n optionTextColor: '#fff',\n checkboxColor: '#fff',\n dropShadow: false,\n};\n\nexport const multichoiceMediaDefaultProps = {\n panelBackground: '#fff',\n panelBorderRadius: 20,\n optionTextColor: '#000',\n checkboxColor: '#000',\n dropShadow: true,\n hasSetWidthHeight: false,\n mediaPanelWidth: 320,\n mediaPanelHeight: 360,\n};\n\nconst Answer = props => {\n const { id, children, style = {} } = props;\n\n // contexts\n const interactionContext = useContext<any>(_interactionContext);\n const multichoiceContext = useContext<any>(MultichoiceContext);\n\n // refs\n const answer = useRef<HTMLDivElement | null>(null);\n const label = useRef(null);\n const optionText = useRef<HTMLDivElement | null>(null);\n\n const {\n panelBackgroundOpacity: _panelBackgroundOpacity = 100,\n includeText = true,\n isMultichoiceMedia,\n mediaPanelWidth = multichoiceMediaDefaultProps.mediaPanelWidth,\n mediaPanelHeight = multichoiceMediaDefaultProps.mediaPanelHeight,\n fixedPanelHeight = true,\n focusColor = '#000',\n } = interactionContext.props;\n\n let panelBackground = interactionContext.props.panelBackground;\n if (panelBackground === undefined) {\n panelBackground = isMultichoiceMedia ? '#fff' : lGrey0;\n }\n\n const { r, g, b } = hexToRgb(panelBackground);\n const panelBackgroundOpacity = _panelBackgroundOpacity * 0.01;\n panelBackground = `rgba(${r}, ${g}, ${b}, ${panelBackgroundOpacity})`;\n\n let { panelOutline } = interactionContext.props;\n\n if (isMultichoiceMedia && panelOutline === undefined) {\n panelOutline = true;\n }\n\n let { panelOutlineColor } = interactionContext.props;\n if (isMultichoiceMedia && !panelOutlineColor) {\n panelOutlineColor = lGrey4;\n }\n\n let panelBorderRadius = interactionContext.props.panelBorderRadius;\n if (panelBorderRadius === undefined) {\n panelBorderRadius = isMultichoiceMedia ? 20 : 5;\n }\n\n let { dropShadow } = interactionContext.props;\n if (isMultichoiceMedia && dropShadow === undefined) {\n dropShadow = true;\n }\n\n let optionTextColor = interactionContext.props.optionTextColor;\n\n if (optionTextColor === undefined) {\n optionTextColor = isMultichoiceMedia ? '#000' : '#fff';\n }\n\n let checkboxColor = optionTextColor;\n\n let {\n selected,\n correct,\n updateSelected,\n submit,\n isMultiSelect,\n answerCount,\n } = multichoiceContext;\n\n const isSelected = (selected as any).includes(id);\n\n correct = (correct as any).includes(id);\n const resolved = submit === 2;\n\n const [hasFocus, setHasFocus] = useState<boolean>(false);\n\n useLayoutEffect(() => {\n if (!optionText.current) {\n return;\n }\n //\n // remove the chameleon-text class\n // so only responds to local color\n const chameleonText = optionText.current.querySelector('.chameleon-text');\n if (chameleonText) {\n // can't use replace without polyfill for ie\n // this will do\n chameleonText.classList.remove('chameleon-text');\n chameleonText.classList.add('chameleon-text-multichoice-answer');\n }\n });\n\n let boxShadow: string | undefined = undefined;\n\n if (window.dev() && correct) {\n boxShadow = `0 0 0 1px #fff, 0 0 0 3px ${lPink}`;\n }\n\n if (dropShadow) {\n boxShadow = `${boxShadow ? `${boxShadow}, ` : ''}0px 0px ${\n isMultichoiceMedia ? 20 : 5\n }px rgba(0, 0, 0, 0.15)`;\n }\n\n let textToSpeechButton;\n\n if (answer.current) {\n textToSpeechButton = answer.current.querySelector(\n '[class*=\"TextToSpeech\"]'\n );\n }\n\n const buttonFocus = getButtonFocus(\n isMultichoiceMedia ? focusColor : panelBackground\n )\n ?.split(':')[1]\n ?.trim()\n ?.replace(';', '');\n\n const optionStyles = {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n minHeight: 60,\n margin: '7.5px 0',\n outline: 'none',\n border: `1px solid\n ${\n panelOutline && panelOutlineColor\n ? panelOutlineColor\n : 'transparent'\n }`,\n borderRadius: panelBorderRadius,\n textAlign: 'left',\n background: panelBackground,\n\n color: optionTextColor,\n\n p: {\n color: optionTextColor,\n },\n\n li: {\n color: '#fff !important',\n },\n\n 'li span': {\n color: optionTextColor,\n },\n\n boxShadow: hasFocus ? buttonFocus : boxShadow,\n transition: 'box-shadow 0.2s',\n ':hover': {\n '.checkbox-radio': {\n opacity: 0.8,\n },\n },\n\n ...(resolved && {\n pointerEvents: 'none',\n }),\n };\n\n if (isMultichoiceMedia) {\n //\n\n const [media, txt] = children[0].props.children;\n\n const mediaIsText = media?.props?.child === 0;\n const mediaIsImage = media?.props?.child === 1;\n\n let imgDescription;\n\n if (!includeText && mediaIsImage) {\n imgDescription = answer?.current?.querySelector('img')?.alt;\n }\n\n const eventHandlers = {\n onKeyUp: window.dev()\n ? () => {}\n : (e: any) => {\n if ([' ', 'Enter'].includes(e.key)) {\n updateSelected(id);\n }\n },\n\n onClick: window.dev()\n ? () => {}\n : (e: any) => {\n updateSelected(id);\n },\n };\n\n // //\n\n return (\n <div\n ref={answer}\n css={css({\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n width: mediaPanelWidth,\n height: fixedPanelHeight ? mediaPanelHeight : 'auto',\n border: `1px solid ${\n panelOutline && panelOutlineColor\n ? panelOutlineColor\n : 'transparent'\n }`,\n borderRadius: panelBorderRadius,\n background: panelBackground,\n overflow: 'hidden',\n boxShadow: hasFocus ? buttonFocus : boxShadow,\n transition: 'box-shadow 0.2s',\n pointerEvents: submit === 0 ? 'auto' : 'none',\n ...(resolved && {\n pointerEvents: 'none',\n }),\n })}\n {...eventHandlers}\n >\n <div\n style={{\n ...(!mediaIsImage && {\n minHeight: 110,\n }),\n padding: mediaIsText ? '0 10px' : 0,\n }}\n >\n {media}\n </div>\n\n <div\n id={`i${id}`}\n css={css({\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n justifyContent: 'space-between',\n\n padding: `${window.dev() ? '0px' : '10px'} 10px 10px 10px`,\n })}\n >\n {!!includeText && (\n <div\n css={css({\n flex: 1,\n\n margin: 0,\n\n '.chameleon-text p': {\n color: optionTextColor,\n },\n\n '&li': {\n color: '#fff !important',\n },\n '&li span': {\n color: optionTextColor,\n },\n })}\n >\n {window.dev() ? (\n txt\n ) : (\n <_>\n <label\n htmlFor={`input-${id}`}\n css={css({\n cursor: 'pointer',\n\n '.chameleon-text': {\n padding: '10px 15px',\n },\n } as any)}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n {txt}\n </label>\n </_>\n )}\n </div>\n )}\n\n {imgDescription && (\n <label htmlFor={`input-${id}`} className=\"sr-only\">\n {imgDescription}\n </label>\n )}\n\n {!resolved && (\n <input\n type={isMultiSelect ? 'checkbox' : 'radio'}\n id={`input-${id}`}\n name={`input-${id}`}\n value={id}\n css={css({\n position: 'absolute',\n left: 0,\n top: 0,\n transform: 'scale(0)',\n })}\n checked={selected.includes(id) ? true : false}\n onFocus={() => {\n setHasFocus(true);\n }}\n onBlur={() => {\n setHasFocus(false);\n }}\n onKeyUp={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n\n // console.log(`should fire 'click' event !!!`);\n return;\n }\n }}\n onChange={(e: any) => {\n // console.log('updateSelected', id);\n updateSelected(id);\n }}\n />\n )}\n\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n margin: '10px 0 5px 0',\n\n input: {\n pointerEvents: 'none',\n },\n\n cursor: 'pointer',\n pointerEvents: resolved ? 'none' : 'auto',\n })}\n >\n <Radio\n id={id}\n isMulti={isMultiSelect}\n isSquare={answerCount === 1}\n correct={correct}\n selected={(selected as any).includes(id)}\n updateSelected={updateSelected}\n resolved={resolved}\n checkboxColor={checkboxColor}\n style={style}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div id={`i${id}`}>\n {' '}\n {window.dev() ? (\n <div\n css={css({\n ...optionStyles,\n\n '.chameleon-text': {\n margin: '0 15px 0 5px',\n },\n } as any)}\n >\n {children}\n <Radio\n id={id}\n isMulti={isMultiSelect}\n isSquare={answerCount === 1}\n correct={correct}\n selected={(selected as any).includes(id)}\n updateSelected={updateSelected}\n resolved={resolved}\n checkboxColor={checkboxColor}\n style={{\n ...style,\n }}\n />\n <div style={{ width: 15 }} />\n </div>\n ) : (\n <div style={{ position: 'relative' }}>\n <label\n htmlFor={`input-${id}`}\n css={css({\n ...optionStyles,\n\n cursor: 'pointer',\n\n '.chameleon-text': {\n padding: '8px 50px 8px 15px',\n },\n } as any)}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n {children}\n\n <div\n css={css({\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n right: 15,\n top: 0,\n width: 20,\n height: '100%',\n\n pointerEvents: 'none',\n\n '*': {\n pointerEvents: 'none',\n },\n })}\n >\n <Radio\n id={id}\n isMulti={isMultiSelect}\n isSquare={answerCount === 1}\n correct={correct}\n selected={(selected as any).includes(id)}\n updateSelected={updateSelected}\n resolved={resolved}\n checkboxColor={checkboxColor}\n style={style}\n />\n </div>\n </label>\n\n {!resolved && (\n <input\n type={isMultiSelect ? 'checkbox' : 'radio'}\n id={`input-${id}`}\n name={`input-${id}`}\n value={id}\n css={css({\n position: 'absolute',\n left: 0,\n top: 0,\n transform: 'scale(0)',\n })}\n checked={selected.includes(id) ? true : false}\n onFocus={() => {\n setHasFocus(true);\n }}\n onBlur={() => {\n setHasFocus(false);\n }}\n onKeyUp={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n\n // console.log(`should fire 'click' event !!!`);\n return;\n }\n }}\n onChange={(e: any) => {\n // console.log('updateSelected', id);\n updateSelected(id);\n }}\n />\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default Answer;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, memo, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport Multichoice_v2 from './Multichoice_v2';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport SVG from 'components/lib/SVG';\nimport Embed from 'components/lib/Embed';\nimport Answer from './Answer';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport shouldUpdate from 'services/shouldUpdate';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport MultiChoice_default from 'assets/Rectangle.png';\nimport CC_QuestionTextImage from 'assets/CC_Question Text + Image.svg';\nimport { ImageContext } from 'components/lib/Image/Image';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n ColumnContentForMultichoiceMedia: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n\n const { includeQuestionTextPlusImage } = interactionContext.props;\n\n const [img, txt] = children;\n\n return includeQuestionTextPlusImage ? (\n <ImageContext.Provider\n value={{\n placeholder: CC_QuestionTextImage,\n }}\n >\n {img}\n </ImageContext.Provider>\n ) : (\n <span id={`multichoice-media-question-text-${interactionContext.id}`}>\n {txt}\n </span>\n );\n },\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [multichoice, txt] = children;\n\n if (!includeAdditionalTextField) {\n return multichoice;\n }\n\n return (\n <_>\n {multichoice}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n Text: EditableText,\n\n Image: ({ children, ...props }) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n const { isAdditionalMedia } = mediaContext;\n\n return (\n <Image\n {...{\n ...props,\n placeholder: imgPlaceholders[1],\n }}\n />\n );\n },\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: EditableBtn,\n ReviewFeedback: EditableBtn,\n Video,\n Audio,\n Transcript: ({ children, props }) => {\n return children;\n },\n SVG,\n Embed,\n Media,\n MultichoiceMedia: ({ children, props }) => children,\n MultichoiceWithText: Multichoice_v2,\n //\n Answer,\n Feedback: () => null,\n Correct: () => null,\n Incorrect: () => null,\n Attempt: () => null,\n PDF,\n OpenPDF,\n Modal: () => null,\n};\n\nconst MultichoiceDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n const hasAttemptFeedback = findByKeyVal_V2(\n interactionBlock.id,\n 'type',\n 'Attempt'\n );\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{\n ...interactionBlock,\n updateItemsSeen: null,\n hasAttemptFeedback,\n }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default MultichoiceDisplay;\n","import MultichoiceDisplay from './MultichoiceDisplay_v2';\n\nexport default MultichoiceDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","const setNewBlockNewTree = (newTree, newBlock, store, setBlocksAction) => {\n newTree[newBlock.id] = newBlock;\n store.dispatch(setBlocksAction(newTree));\n};\n\nexport default setNewBlockNewTree;\n","import React, { useState, useEffect } from 'react';\n\ninterface IProps {\n\t[key: string]: any;\n}\n\nconst useSetState = (initialState: IProps = {}) => {\n\tconst [state, setState] = useState(initialState);\n\n\tuseEffect(() => {\n\t\t//\n\t}, []);\n\n\treturn {\n\t\tstate,\n\t\tsetState: $ =>\n\t\t\tsetState({ ...state, ...(typeof $ === 'function' ? $(state) : $) }),\n\t};\n};\n\nexport default useSetState;\n","import React from 'react';\n\nconst Dot = ({ color, onOpen, style = {} }) => (\n <div\n style={{\n width: 20,\n height: 20,\n border: `1px solid ${\n [\n '#fff',\n '#ffffff',\n '#FFF',\n '#FFFFFF',\n '',\n // 'transparent',\n undefined,\n null,\n ].includes(color)\n ? '#ff0063'\n : color\n }`,\n borderRadius: '50%',\n background: color,\n cursor: 'pointer',\n ...style,\n }}\n onClick={onOpen}\n />\n);\n\nexport default Dot;\n","\nexport const setErrorAction = err => {\n return {\n type: 'SET_ERROR',\n data: err,\n };\n};\n","import * as Sentry from '@sentry/browser';\nimport { remoteable } from 'store/next';\nimport { setErrorAction } from \"./setErrorAction\";\n\n\n\nexport const updateUserPaletteAction = (data): any => {\n return (dispatch, getState) => {\n const n = {\n type: 'UPDATE_USER_PALETTE',\n data,\n };\n\n dispatch(n);\n\n if (remoteable()) {\n const { theme, themeId } = getState();\n const nextTheme = {\n ...theme,\n userPalette: data,\n };\n\n window.client.themes\n .set(`/api/v2/themes/${themeId}`, nextTheme)\n .catch(err => {\n Sentry.withScope(scope => {\n scope.setExtra('message', err.err);\n Sentry.captureException(err);\n });\n dispatch(setErrorAction(err));\n });\n }\n };\n};\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\n\nconst AddRemmoveBtn = ({\n color = '#000',\n left = 0,\n top = 0,\n size = 24,\n rotation = 0,\n style = {},\n onClick,\n}: {\n color?: string;\n left?: number;\n top?: number;\n size?: number;\n rotation?: number;\n style?: object;\n onClick?: (e?: any) => void;\n}) => (\n <div\n css={css`\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n `}\n style={{\n ...style,\n position: 'relative',\n left,\n top,\n width: size,\n height: size,\n transform: `rotate(${rotation}deg)`,\n transformOrigin: '50% 50%',\n }}\n onClick={onClick}\n >\n <svg width={`${size}px`} height={`${size}px`} viewBox=\"0 0 24 24\">\n <g\n id=\"Page-1\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <g\n id=\"Second\"\n transform=\"translate(-308.000000, -366.000000)\"\n stroke={color}\n >\n <g id=\"Delete\" transform=\"translate(309.000000, 367.000000)\">\n <path\n d=\"M11,4.88888889 L11,17.1111111\"\n id=\"Line-Copy-4\"\n strokeLinecap=\"square\"\n transform=\"translate(11.000000, 11.000000) rotate(-45.000000) translate(-11.000000, -11.000000) \"\n />\n <path\n d=\"M17.1111111,11 L4.88888889,11\"\n id=\"Line-Copy-5\"\n strokeLinecap=\"square\"\n transform=\"translate(11.000000, 11.000000) rotate(-45.000000) translate(-11.000000, -11.000000) \"\n />\n </g>\n </g>\n </g>\n </svg>\n </div>\n);\n\nexport default AddRemmoveBtn;\n","/** @jsx jsx */\n\nimport { connect } from 'react-redux';\nimport { css, jsx } from '@emotion/core';\nimport { updateUserPaletteAction } from 'actions/updateUserPaletteAction';\nimport { colors } from 'styles/variables';\nimport AddRemoveBtn from 'components/UI/AddRemoveBtn';\nimport getStore from 'services/getStore';\nimport { themeButtonDefault } from 'store/store';\n\nconst store = getStore();\n\nconst { lPink, lGrey0 } = colors;\n\nconst Swatch = ({ color, onClick }) => {\n return (\n <div\n css={css`\n flex-shrink: 0;\n `}\n style={{\n width: 20,\n height: 20,\n marginRight: 5,\n border: `1px solid ${\n ['#fff', '#ffffff', '#FFF', '#FFFFFF', '', undefined, null].includes(\n color\n )\n ? '#ff0063'\n : color\n }`,\n borderRadius: '50%',\n background: color,\n cursor: 'pointer',\n }}\n onClick={onClick}\n />\n );\n};\n\nconst AddRemoveBtnWrapped = ({ rotation = 0, onClick }) => {\n return (\n <div\n css={css`\n margin-right: 5px;\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n `}\n >\n <AddRemoveBtn\n color={lPink}\n rotation={rotation}\n size={20}\n onClick={onClick}\n />\n </div>\n );\n};\n\nconst UserPalette = ({\n currentColor,\n selectColor,\n theme,\n}: {\n currentColor?: string;\n selectColor?: any;\n theme?: any;\n}) => {\n const {\n headerBackgroundColor = '#fff',\n headerTextColor = lGrey0,\n backgroundColor = '#fff',\n textColor = lGrey0,\n buttonBackgroundColor = lPink,\n buttonTextColor = '#fff',\n } = theme;\n\n const colorsFromTheme = {\n headerBackgroundColor,\n headerTextColor,\n backgroundColor,\n textColor,\n buttonBackgroundColor,\n buttonTextColor,\n };\n\n //\n // updating from the new theme.buttons.main etc\n const themeButtonsMain = {\n ...themeButtonDefault,\n ...theme?.buttons?.main,\n };\n\n colorsFromTheme.buttonBackgroundColor = themeButtonsMain.backgroundColor;\n colorsFromTheme.buttonTextColor = themeButtonsMain.textColor;\n //\n //\n\n let userPalette: string[] = [];\n if (theme?.userPalette && Array.isArray(theme.userPalette)) {\n userPalette = Array.from(theme.userPalette) as string[];\n }\n\n const addToPalette = () => {\n if (currentColor && userPalette.includes(currentColor)) {\n return;\n }\n\n store.dispatch(updateUserPaletteAction([...userPalette, currentColor]));\n };\n\n const removeFromPalette = () => {\n const confirm = window.confirm('Remove this color from your palette?');\n if (!confirm) return;\n\n store.dispatch(\n updateUserPaletteAction([...userPalette.filter(c => c !== currentColor)])\n );\n };\n\n return (\n <div>\n <h4 style={{ marginBottom: 5, fontSize: 14 }}>Colours from theme:</h4>\n <div\n css={css`\n display: flex;\n flexwrap: wrap;\n `}\n >\n {Object.keys(colorsFromTheme).map((color, i) => (\n <Swatch\n key={color}\n color={colorsFromTheme[color]}\n onClick={() => selectColor(colorsFromTheme[color])}\n />\n ))}\n </div>\n\n <h4 style={{ margin: '15px 0 5px 0', fontSize: 14 }}>\n Add or remove current colour:\n </h4>\n\n <div\n css={css`\n display: flex;\n `}\n >\n <AddRemoveBtnWrapped rotation={45} onClick={addToPalette} />\n <AddRemoveBtnWrapped rotation={0} onClick={removeFromPalette} />\n </div>\n <div\n css={css`\n display: flex;\n flex-wrap: wrap;\n margin-top: 10px;\n `}\n >\n {userPalette.map((color, i) => (\n <Swatch\n key={color + i}\n color={color}\n onClick={() => selectColor(color)}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport default connect(({ theme }: { theme: any }) => ({\n theme,\n}))(UserPalette);\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport CorrectAnswersWidget from 'components/Editor/EditMultichoiceImage/CorrectAnswersWidget';\nimport SelectOptionAddRemoveWidget from 'components/Editor/EditSelectOptions/SelectOptionAddRemoveWidget';\nimport Feedback from 'components/lib/Feedback';\nimport React, {\n Fragment as _,\n createContext,\n ReactElement,\n useContext,\n useEffect,\n useRef,\n cloneElement,\n useState,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { getScore, setScore } from 'services/scoring';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { State } from 'store/store';\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport Modal from 'components/UI/Modal';\nimport { ShowMultichoiceMediaFeedback } from 'components/Editor/EditMultichoiceImage/EditMultichoiceImage';\nimport pubSub from 'services/pubSub';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\n\nconst findChildByType = (type, parent) => {\n let result;\n const children = parent?.props?.children;\n\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (!result && child?.props?.type === type) {\n result = child;\n break;\n }\n\n if (Array.isArray(child?.props?.children)) {\n findChildByType(type, child);\n }\n }\n }\n\n return result;\n};\n\nexport type TMultichoiceImageContextValue = {\n selected: number[];\n setSelected: (index: number) => void;\n isLive: boolean;\n isResolved: boolean;\n onSubmit: () => void;\n};\n\ntype Result = 'correct' | 'incorrect' | 'attempt' | undefined;\n\nexport const MultichoiceImageContext = createContext({});\n\nconst MultichoiceImage = props => {\n const interactionContext = useContext(_interactionContext);\n const { defaultFeedback } = interactionContext;\n //\n const {\n correctOptions,\n numberOfAttempts = 2,\n showAttemptNumber = true,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n useUniqueOptionFeedback,\n useMediaInFeedback = true,\n showCorrectAnswer,\n } = interactionContext.props;\n\n const { children } = props;\n\n const [media, answers, submitBtn] = children;\n\n const [selected, setSelected] = useState<number[]>([]);\n const [isResolved, setIsResolved] = useState<boolean>(false);\n const [isCorrect, setIsCorrect] = useState<boolean>(false);\n const [result, setResult] = useState<Result>(undefined);\n const [showFeedback, setShowFeedback] = useState<boolean>(false);\n\n const attempt = useRef<number>(0);\n\n const isLive: boolean = !!selected.length;\n\n let feedback = defaultFeedback;\n\n if (correctOptions.length === 1 && useUniqueOptionFeedback) {\n feedback = findChildByType(\n 'Feedback',\n answers.props.children[parseInt(correctOptions, 10)]\n );\n }\n\n console.log(feedback);\n\n useEffect(() => {\n unlockInteraction(interactionContext.id);\n }, [isResolved]);\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n pubSub.subscribe(\n `${ShowMultichoiceMediaFeedback}${interactionContext.id}`,\n ({ result }) => {\n setResult(result);\n setShowFeedback(true);\n }\n );\n }, []);\n\n return (\n <MultichoiceImageContext.Provider\n value={\n {\n selected,\n setSelected(index) {\n setSelected(selected => {\n const $ = [...selected];\n\n if ($.includes(index)) {\n console.log('remove', index);\n $.splice($.indexOf(index), 1);\n } else {\n console.log('add', index);\n $.push(index);\n }\n\n console.log($.sort());\n return $.sort();\n });\n },\n onSubmit() {\n const isCorrect = selected.sort().join(',') === correctOptions;\n\n let result: Result = isCorrect ? 'correct' : 'incorrect';\n\n attempt.current += 1;\n if (attempt.current < numberOfAttempts && result !== 'correct') {\n result = 'attempt';\n }\n\n setResult(result);\n\n if (['correct', 'incorrect'].includes(result)) {\n setIsResolved(true);\n }\n\n setShowFeedback(true);\n },\n isLive,\n isResolved,\n } as TMultichoiceImageContextValue\n }\n >\n <div\n style={{\n display: 'flex',\n flex: 0,\n flexWrap: 'wrap',\n justifyContent: 'space-around',\n }}\n >\n {answers.props.children.map((answer, index) => {\n return cloneElement(answer, { index: index + 1 });\n })}\n </div>\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {submitBtn}\n </div>\n\n {showFeedback &&\n feedback &&\n React.cloneElement(feedback, {\n result,\n showAttemptNumber,\n attempt: attempt.current,\n numberOfAttempts,\n navigationBehaviour,\n onClose() {\n setShowFeedback(false);\n },\n useMediaInFeedback,\n })}\n </MultichoiceImageContext.Provider>\n );\n};\n\nexport default MultichoiceImage;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useState, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport { colors } from 'styles/variables';\nimport { TwoColumnElement, SingleColumnElement } from '../EditorUtilities/grid';\nimport { Flexbox } from '@chameleoncreator/creator-ui';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport { setBlocksAction } from 'actions/setBlocksAction';\nimport getStore from 'services/getStore';\nimport CorrectAnswersWidget from './CorrectAnswersWidget';\nimport MultichoiceImageOptionAddRemoveWidget from './MultichoiceImageOptionAddRemoveWidget';\n// updated UI\nimport { H1 as H1_v2, H2 } from '../EditorUtilities/UI/Headings';\nimport TogglePanel from '../EditorUtilities/UI/TogglePanel';\nimport CheckBox_v2 from '../EditorUtilities/UI/CheckBox';\nimport Button from '../EditorUtilities/UI/Button';\nimport NumberPicker_v2 from '../EditorUtilities/UI/NumberPicker';\nimport ColorPicker_v2 from '../EditorUtilities/UI/ColorPicker';\nimport Info from '../EditorUtilities/UI/Info';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport setNewBlockNewTree from 'services/apiHelpers/setNewBlockNewTree';\nimport pubSub from 'services/pubSub';\n\nconst { lGrey0 } = colors;\n\nconst togglePanelsCache = {};\n\nexport const ShowMultichoiceMediaFeedback = 'showMultichoiceMediaFeedback';\n\nconst EditMultichoiceImage = ({ block }: { block?: any }) => {\n //\n const {\n imageBackground = '#fff',\n imageBorderRadius = 5,\n optionTextColor,\n numberOfAttempts,\n correctOptions,\n lockDown,\n score,\n useFeedback = true,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n randomizeOptions = false,\n useMediaInColumn = true,\n useMediaInFeedback = true,\n useUniqueOptionFeedback,\n showCorrectAnswer = true,\n showAttemptNumber = true,\n dropShadow = false,\n imageWidth = 130,\n imageHeight = 130,\n outlineColor = '#000',\n focusColor = '#000',\n selectedColor = '#000',\n outlineStyle = '1px solid transparent',\n } = block.props;\n\n const [{ isLive, isCorrect }, setIsLive] = useState({\n isLive: false,\n isCorrect: false,\n });\n\n const { id } = block;\n\n const scoringQuizzes = useScoringQuizzes();\n\n const multichoiceImageBlock = findByKeyVal_V2(\n block.id,\n 'type',\n 'MultichoiceImage'\n );\n\n // get the feedbackBlock checking if it has the Attempt feedback\n const hasAttemptFeedback = findByKeyVal_V2(block.id, 'type', 'Attempt');\n\n //\n const numOptions = multichoiceImageBlock!.children!.length;\n const correctOptionsToArray = correctOptions.split(/,/g);\n const multi = correctOptionsToArray.length > 1;\n\n const saveTogglePanelState = (panel, open) => {\n togglePanelsCache[id] = {\n ...togglePanelsCache[id],\n [panel]: open,\n };\n\n setBlockProps(block, { ...block.props });\n };\n\n window.multichoiceIsLive[id] = $ => setIsLive($);\n\n useEffect(() => {\n if (!useFeedback) {\n setBlockProps(block, {\n lockDown: 1,\n numberOfAttempts: 1,\n });\n }\n }, [useFeedback]);\n\n useEffect(\n () => () => {\n window.multichoiceIsLive[id] = null;\n },\n []\n );\n\n return (\n <_>\n {/* <Box mt={3}> */}\n <TogglePanel\n label={<H1_v2>interaction: settings</H1_v2>}\n toggle={\n togglePanelsCache[id]\n ? togglePanelsCache[id]['interaction: settings']\n : true\n }\n onToggle={open => saveTogglePanelState('interaction: settings', open)}\n >\n <CheckBox_v2\n label=\"Lock down\"\n on={!!lockDown}\n onClick={() => setBlockProps(block, { lockDown: !!lockDown ? 0 : 1 })}\n />\n\n <div\n // css={css({\n // ...(scoringQuizzes.length && {\n // opacity: 0.5,\n // pointerEvents: 'none',\n // }),\n // })}\n style={{\n ...(scoringQuizzes.length && {\n opacity: 0.5,\n pointerEvents: 'none',\n }),\n }}\n >\n {!!scoringQuizzes.length && (\n <div\n style={{\n margin: '0 0 5px 0',\n fontSize: 12,\n fontWeight: 500,\n color: 'red',\n }}\n >\n Scoring is disabled for this interaction while an assessment is\n scoring.\n </div>\n )}\n <CheckBox_v2\n label=\"Score\"\n on={!!score}\n onClick={() => setBlockProps(block, { score: !score })}\n />\n </div>\n </TogglePanel>\n\n <TogglePanel\n label={<H1_v2>multichoice: settings</H1_v2>}\n toggle={\n togglePanelsCache[id]\n ? togglePanelsCache[id]['multichoice: settings']\n : true\n }\n onToggle={open => saveTogglePanelState('multichoice: settings', open)}\n >\n <div>\n <Info\n info=\"Click '+' to add a new answer. Click the number of an answer\n you wish to remove.\"\n style={{ margin: '0 0 5px 0' }}\n >\n Answers\n </Info>\n\n <MultichoiceImageOptionAddRemoveWidget\n multichoiceImageBlock={multichoiceImageBlock}\n correctOptions={correctOptions}\n updateCorrectOptions={(add, newTree, newBlock) => {\n const parsedCorrectOptions = correctOptions\n .split(/,/g)\n .filter(entry => entry !== '')\n .sort();\n const lastCorrectOption = Number(\n parsedCorrectOptions[parsedCorrectOptions.length - 1]\n );\n const numOptions = multichoiceImageBlock!.children!.length;\n\n if (!add && lastCorrectOption === numOptions) {\n // remove the last option from correctOptions\n parsedCorrectOptions.splice(\n parsedCorrectOptions.indexOf(lastCorrectOption),\n 1\n );\n\n setBlockProps(block, {\n correctOptions: parsedCorrectOptions.sort().join(),\n });\n }\n\n const store = getStore();\n\n setNewBlockNewTree(newTree, newBlock, store, setBlocksAction);\n }}\n />\n </div>\n\n <div>\n <Info\n info=\"Select 1 or more correct answers\"\n style={{ margin: '0 0 5px 0' }}\n >\n Correct answers\n </Info>\n\n <CorrectAnswersWidget\n numOptions={numOptions}\n correctOptions={correctOptions}\n onUpdate={val => {\n // reset selected options\n isLive && window.showFeedback[id](null);\n\n // just hacking this in to keep the current format. will update\n const parsedVal = val.toString();\n const parsedCorrectOptions = correctOptions\n .split(/,/g)\n .filter(entry => entry !== '')\n .sort();\n\n const updatedCorrectOptions = parsedCorrectOptions.includes(\n parsedVal\n )\n ? parsedCorrectOptions.filter(option => option !== parsedVal)\n : [...parsedCorrectOptions, val];\n\n if (!!!updatedCorrectOptions.length)\n return alert('At least one option must be selected.');\n\n setBlockProps(block, {\n correctOptions: updatedCorrectOptions.sort().join(),\n ...(updatedCorrectOptions.length > 1 && {\n useUniqueOptionFeedback: false,\n }),\n });\n }}\n />\n </div>\n\n <div>\n <CheckBox_v2\n label=\"Randomise answers\"\n on={randomizeOptions}\n onClick={() =>\n setBlockProps(block, {\n randomizeOptions: !randomizeOptions,\n })\n }\n />\n </div>\n\n <div>\n <CheckBox_v2\n label=\"Include feedback\"\n on={useFeedback ? 1 : 0}\n onClick={() =>\n setBlockProps(block, {\n useFeedback: !useFeedback,\n })\n }\n // style={{\n // ...(multi && { opacity: 0.25, pointerEvents: 'none' }),\n // }}\n />\n </div>\n\n {useFeedback && (\n <_>\n <H1_v2>multichoice feedback</H1_v2>\n <div\n css={css`\n display: flex;\n width: 100%;\n `}\n >\n {multi || !useUniqueOptionFeedback ? (\n <TwoColumnElement>\n <Button\n enabled={true}\n onClick={e => {\n // window.showFeedback[id](true)\n pubSub.publish(`${ShowMultichoiceMediaFeedback}${id}`, {\n result: 'correct',\n });\n }}\n >\n Show correct\n </Button>\n\n <Button\n enabled={true}\n onClick={e => {\n //window.showFeedback[id](false)\n pubSub.publish(`${ShowMultichoiceMediaFeedback}${id}`, {\n result: 'incorrect',\n });\n }}\n >\n Show incorrect\n </Button>\n </TwoColumnElement>\n ) : (\n <SingleColumnElement>\n <Flexbox\n alignItems=\"center\"\n justifyContent=\"center\"\n style={{\n ...(!isLive && { opacity: 0.25, pointerEvents: 'none' }),\n }}\n >\n <Button\n enabled={true}\n onClick={e => {\n // window.showFeedback[id](isCorrect)\n pubSub.publish(`${ShowMultichoiceMediaFeedback}${id}`, {\n result: 'correct',\n });\n }}\n >\n Show feedback\n </Button>\n </Flexbox>\n </SingleColumnElement>\n )}\n </div>\n\n <CheckBox_v2\n label=\"Use unique feedback\"\n on={useUniqueOptionFeedback ? 1 : 0}\n onClick={() =>\n setBlockProps(block, {\n useUniqueOptionFeedback: !useUniqueOptionFeedback,\n })\n }\n style={{\n ...(multi && { opacity: 0.25, pointerEvents: 'none' }),\n }}\n />\n\n <div\n css={css`\n margin: 10px 0 ${useUniqueOptionFeedback ? '10px' : '0'} 0;\n `}\n >\n {hasAttemptFeedback && (\n <NumberPicker_v2\n label=\"Number of attempts\"\n min={1}\n value={numberOfAttempts}\n onChange={value => {\n setBlockProps(block, { numberOfAttempts: value });\n }}\n />\n )}\n </div>\n\n {hasAttemptFeedback &&\n !useUniqueOptionFeedback &&\n numberOfAttempts > 1 ? (\n <_>\n <SingleColumnElement>\n <Flexbox>\n <Button\n enabled={true}\n onClick={e => {\n //window.showFeedback[id]('attempt')\n pubSub.publish(`${ShowMultichoiceMediaFeedback}${id}`, {\n result: 'attempt',\n });\n }}\n >\n Show attempted\n </Button>\n </Flexbox>\n </SingleColumnElement>\n </_>\n ) : null}\n\n {hasAttemptFeedback && numberOfAttempts > 1 && (\n <CheckBox_v2\n label=\"Show attempt number\"\n on={showAttemptNumber ? 1 : 0}\n onClick={() =>\n setBlockProps(block, {\n showAttemptNumber: !showAttemptNumber,\n })\n }\n />\n )}\n\n <div\n css={css`\n margin: 10px 0 0 0;\n `}\n >\n <CheckBox_v2\n label=\"Include media in feedback\"\n on={useMediaInFeedback ? 1 : 0}\n onClick={() =>\n setBlockProps(block, {\n useMediaInFeedback: !useMediaInFeedback,\n })\n }\n />\n </div>\n </_>\n )}\n\n <CheckBox_v2\n label=\"Show tick on completion\"\n on={showCorrectAnswer ? 1 : 0}\n onClick={() =>\n setBlockProps(block, {\n showCorrectAnswer: !!showCorrectAnswer ? 0 : 1,\n })\n }\n />\n\n <div>\n <Info\n info=\"Control how you would like the interaction to progress when resolved.\"\n style={{ margin: '0 0 5px 0' }}\n >\n Navigation\n </Info>\n\n <div>\n <CheckBox_v2\n label=\"Remain on page when answered correct\"\n on={navigationBehaviour.correct ? 1 : 0}\n style={{\n margin: '0 0 10px 0',\n }}\n onClick={() =>\n setBlockProps(block, {\n navigationBehaviour: {\n ...navigationBehaviour,\n correct: !navigationBehaviour.correct,\n },\n })\n }\n />\n\n <CheckBox_v2\n label=\"Remain on page when answered incorrect\"\n on={navigationBehaviour.incorrect ? 1 : 0}\n style={{\n margin: '0 0 10px 0',\n }}\n onClick={() =>\n setBlockProps(block, {\n navigationBehaviour: {\n ...navigationBehaviour,\n incorrect: !navigationBehaviour.incorrect,\n },\n })\n }\n />\n </div>\n </div>\n\n <H1_v2>multichoice appearance: settings</H1_v2>\n\n <div\n css={css`\n margin: 10px 0 0 0;\n `}\n >\n <CheckBox_v2\n label=\"Include media\"\n on={useMediaInColumn ? 1 : 0}\n onClick={() =>\n setBlockProps(block, {\n useMediaInColumn: !useMediaInColumn,\n })\n }\n />\n </div>\n\n <NumberPicker_v2\n label=\"Image width\"\n min={0}\n value={imageWidth}\n onChange={value => {\n setBlockProps(block, { imageWidth: value });\n }}\n />\n\n <NumberPicker_v2\n label=\"Image height\"\n min={0}\n value={imageHeight}\n onChange={value => {\n setBlockProps(block, { imageHeight: value });\n }}\n />\n\n <ColorPicker_v2\n inColor={imageBackground}\n outColor={color => setBlockProps(block, { imageBackground: color })}\n label=\"Image background colour\"\n clearedColor=\"\"\n />\n\n <ColorPicker_v2\n inColor={optionTextColor}\n outColor={color =>\n setBlockProps(block, {\n optionTextColor: color,\n })\n }\n label=\"Text colour\"\n clearedColor=\"#000\"\n />\n\n <CheckBox_v2\n label=\"Drop shadow\"\n on={dropShadow ? 1 : 0}\n onClick={() =>\n setBlockProps(block, {\n dropShadow: !dropShadow,\n })\n }\n />\n\n <NumberPicker_v2\n label=\"Image border radius\"\n min={0}\n value={imageBorderRadius}\n onChange={value => {\n setBlockProps(block, { imageBorderRadius: value });\n }}\n />\n\n <ColorPicker_v2\n inColor={outlineColor}\n outColor={color =>\n setBlockProps(block, {\n outlineColor: color,\n })\n }\n label=\"Outline colour\"\n clearedColor=\"#000\"\n />\n\n <ColorPicker_v2\n inColor={focusColor}\n outColor={color =>\n setBlockProps(block, {\n focusColor: color,\n })\n }\n label=\"Focus colour\"\n clearedColor=\"#000\"\n />\n\n <ColorPicker_v2\n inColor={selectedColor}\n outColor={color =>\n setBlockProps(block, {\n selectedColor: color,\n })\n }\n label=\"Selected colour\"\n clearedColor=\"#000\"\n />\n </TogglePanel>\n {/* </Box> */}\n </_>\n );\n};\n\nexport default EditMultichoiceImage;\n","/** @jsx jsx */\n\nimport { Fragment as _, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport isIE from 'services/isIE';\nimport getBlockById from 'services/apiHelpers/getBlockById';\n\n\nconst IELayout = interactionContext => {\n return isIE()\n ? {\n Row: ({ children, ...props }) => {\n return (\n <div\n css={css`\n display: flex;\n `}\n >\n {children}\n </div>\n );\n },\n Column: ({ children, ...props }) => {\n const context = useContext(interactionContext);\n\n const testBorder = children.length === 1 ? 'lightBlue' : 'lime';\n\n const block = getBlockById(props.id);\n const isButtonBlock =\n block && block.meta && block.meta.subType === 'ButtonBlock';\n\n return (\n <div\n css={css`\n display: flex;\n ${isButtonBlock &&\n `\n justify-content: center;\n flex-wrap: wrap;\n `}\n align-items: center;\n width: 100%;\n\n \n padding: 8px;\n \n\n `}\n >\n {children}\n </div>\n );\n },\n TwoColumnLayout: ({ children }) => {\n return (\n <div\n css={css`\n display: flex;\n `}\n >\n {children}\n </div>\n );\n },\n SingleColumnLayout: ({ children }) => {\n return (\n <div\n css={css`\n display: flex;\n flex-direction: column;\n width: 100%;\n\n ${children.length > 1 && 'height: auto;'}\n\n .chameleon-text {\n width: 100%;\n\n * {\n width: 100%;\n }\n }\n `}\n >\n {children}\n </div>\n );\n },\n }\n : {};\n};\n\nexport default IELayout;\n","/** @jsx jsx */\n\nimport React, {\n useContext,\n useState,\n useRef,\n useLayoutEffect,\n Fragment,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport {\n MultichoiceImageContext,\n TMultichoiceImageContextValue,\n} from './MultichoiceImage';\n\nconst { lPink, lGrey0, lTeal0 } = colors;\n\nconst Tick = ({ background, color }) => {\n return (\n <div\n style={{\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n right: -22,\n top: -22,\n width: 44,\n height: 44,\n\n background: '#fff',\n borderRadius: '50%',\n border: `1px solid ${background}`,\n }}\n >\n <svg\n width=\"16px\"\n height=\"15px\"\n viewBox=\"0 0 16 15\"\n version=\"1.1\"\n aria-describedby=\"title\"\n >\n <title>Correct</title>\n <g\n id=\"Page-1\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <polyline\n id=\"Path\"\n stroke={color}\n strokeWidth=\"2\"\n transform=\"translate(7.486953, 6.527846) rotate(6.000000) translate(-7.486953, -6.527846) \"\n points=\"0.886953048 9.1308343 6.78684502 13.1278461 14.086953 -0.0721539421\"\n />\n </g>\n </svg>\n </div>\n );\n};\n\nconst Answer = props => {\n const interactionContext = useContext(_interactionContext);\n // console.log(interactionContext);\n //\n const {\n imageWidth = 130,\n imageHeight = 130,\n correctOptions,\n focusColor = lTeal0,\n selectedColor = lPink,\n imageBorderRadius = 5,\n imageBackground = '#fff',\n showCorrectAnswer = true,\n } = interactionContext.props;\n\n const multichoiceImageContext = useContext(\n MultichoiceImageContext\n ) as TMultichoiceImageContextValue;\n const { selected, setSelected, isLive, isResolved } = multichoiceImageContext;\n\n const { index, children } = props;\n\n const [hasFocus, setHasFocus] = useState<boolean>(false);\n const isSelected = selected.includes(index);\n const isCorrectOption = correctOptions.includes(index);\n const [img, txt] = children;\n\n let boxShadow = 'none';\n\n if (hasFocus) {\n boxShadow = getButtonFocus(focusColor).replace(/box-shadow: /, '');\n }\n\n if (isSelected) {\n boxShadow = getButtonFocus(selectedColor).replace(/box-shadow: /, '');\n }\n\n if (window.dev() && correctOptions.includes(index)) {\n boxShadow = `0 0 0 3px ${lPink}`;\n }\n\n return (\n <button\n type=\"button\"\n css={css({\n // border: 'none',\n // outline: 'none',\n all: 'unset',\n margin: 20,\n cursor: 'pointer',\n\n pointerEvents: isResolved ? 'none' : 'auto',\n })}\n onClick={e => {\n setSelected(index);\n }}\n onFocus={() => {\n // give image focus\n setHasFocus(true);\n }}\n onBlur={() => {\n // give image focus\n setHasFocus(false);\n }}\n disabled={isResolved}\n aria-disabled={isResolved}\n >\n <div\n css={css({\n position: 'relative',\n width: imageWidth,\n height: imageHeight,\n\n // // boxShadow: `0 0 0 2px ${isSelected ? focusColor : 'transparent'}`,\n // boxShadow: hasFocus\n // ? getButtonFocus(focusColor).replace(/box-shadow: /, '')\n // : 'none',\n\n // ...(window.dev() && {\n // boxShadow: `0 0 0 2px ${\n // correctOptions.includes(index) ? 'red' : 'transparent'\n // }`,\n // }),\n boxShadow,\n borderRadius: imageBorderRadius,\n transition: 'box-shadow 0.2s',\n background: imageBackground,\n })}\n >\n {img}\n\n {showCorrectAnswer && isResolved && isCorrectOption && (\n <Tick background={imageBackground} color={selectedColor} />\n )}\n </div>\n <div\n style={{\n margin: '5px 0 0 0',\n textAlign: 'center',\n }}\n >\n {txt}\n </div>\n </button>\n );\n};\n\nexport default Answer;\n","/** @jsx jsx */\n\nimport { useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport {\n MultichoiceImageContext,\n TMultichoiceImageContextValue,\n} from './MultichoiceImage';\nimport EditableBtn from 'components/lib/EditableBtn';\n\nconst SubmitBtn = props => {\n const { children } = props;\n\n const multichoiceImageContext = useContext(\n MultichoiceImageContext\n ) as TMultichoiceImageContextValue;\n\n const { isLive, isResolved, onSubmit } = multichoiceImageContext;\n\n return (\n <div\n css={css`\n margin-top: 20px;\n ${!window.dev() &&\n `\n opacity: ${isLive && !isResolved ? 1 : 0};\n pointer-events: ${isLive && !isResolved ? 'auto' : 'none'};\n transition: opacity 0.2s;\n `}\n `}\n >\n <EditableBtn\n {...{ enabled: isLive && !isResolved, ...props }}\n onClick={onSubmit}\n >\n {children}\n </EditableBtn>\n </div>\n );\n};\n\nexport default SubmitBtn;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useCallback,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Modal from 'components/UI/Modal';\nimport checkReturnToInteractionEditing from 'services/checkReturnToInteractionEditing';\n\nconst Feedback = props => {\n const {\n result = '',\n attempt,\n navigationBehaviour = {},\n showAttemptNumber,\n numberOfAttempts,\n useMediaInFeedback = true,\n onOpened,\n onClose = () => {},\n children,\n id,\n block,\n correct,\n showCorrectAnswer,\n } = props;\n\n const targetFeedback = children.filter(child => {\n return child.props.type.replace('_Feedback', '').toLowerCase() === result;\n })[0];\n\n // console.log({ targetFeedback });\n\n let [img, txt, btn] = targetFeedback?.props?.children || [];\n\n const isImg = img?.props?.child === 1;\n\n const parsedOnClose = () => {\n if (window.dev()) {\n checkReturnToInteractionEditing(true);\n onClose();\n return;\n }\n\n onClose();\n\n if (result === 'attempt') {\n return;\n }\n\n if (result !== 'correct' && attempt && attempt < numberOfAttempts!) {\n return;\n }\n\n // this code has been updated since\n // from here the correct / incorrect <a> tags ( buttons ) navigate to their hrefs\n };\n\n const showAttemptNumberComputed =\n showAttemptNumber &&\n result !== 'correct' &&\n numberOfAttempts! > 1 &&\n attempt! < numberOfAttempts!;\n\n let nullSpaceCloseAction = () => {};\n\n if (btn && btn.props.location) {\n if (\n btn.props.location === 'next' ||\n (numberOfAttempts! > 1 && attempt! < numberOfAttempts!)\n ) {\n if (result !== 'correct') {\n nullSpaceCloseAction = onClose;\n }\n }\n } else {\n nullSpaceCloseAction = onClose;\n }\n\n const feedbackTextCB = useCallback((node: HTMLDivElement | null) => {\n if (node !== null) {\n const chameleonText = node.querySelector(\n '.chameleon-text'\n ) as HTMLDivElement;\n\n chameleonText?.removeAttribute('tabindex');\n }\n }, []);\n\n const buttonContainerCB = useCallback(\n (node: HTMLDivElement | null) => {\n if (!node) {\n return;\n }\n\n const anchorButton = node.querySelector('a');\n if (!anchorButton) {\n return;\n }\n\n anchorButton.style.margin = '0';\n\n if (result !== 'correct' && attempt && attempt < numberOfAttempts - 1) {\n anchorButton.style.pointerEvents = 'none';\n return;\n }\n\n if (result === 'correct' && navigationBehaviour.correct) {\n anchorButton.style.pointerEvents = 'none';\n anchorButton.href = '';\n return;\n }\n\n if (result !== 'correct' && navigationBehaviour.incorrect) {\n anchorButton.style.pointerEvents = 'none';\n anchorButton.href = '';\n return;\n }\n },\n [\n result,\n attempt,\n numberOfAttempts,\n navigationBehaviour.incorrect,\n navigationBehaviour.correct,\n ]\n );\n\n if (!result) {\n return null;\n }\n\n return (\n <Modal\n disableNullSpaceClick={window.dev() ? false : true}\n onOpened={onOpened}\n onClose={window.dev() ? onClose : nullSpaceCloseAction}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n max-width: 768px;\n padding: 50px;\n `}\n >\n {useMediaInFeedback && (\n <div\n css={css`\n position: relative;\n width: 100%;\n margin-bottom: 30px;\n\n .chameleon-image img {\n // max-height: 30vh !important;\n\n height: auto !important;\n object-fit: contain;\n }\n\n @media (max-width: 768px) {\n width: 100%;\n margin-bottom: 25px;\n }\n `}\n >\n {img}\n </div>\n )}\n\n {result === 'attempt' && showAttemptNumberComputed && (\n <div\n style={{\n margin: '0 0 15px 0',\n fontFamily: 'inherit',\n fontWeight: 700,\n color: '#333',\n }}\n >\n <p>\n Attempt {attempt} of {numberOfAttempts}\n </p>\n </div>\n )}\n <div\n ref={feedbackTextCB}\n css={css`\n width: 100%;\n margin-bottom: 30px;\n `}\n >\n {txt}\n </div>\n <div\n ref={buttonContainerCB}\n css={css`\n display: flex;\n justify-self: flex-end;\n justify-content: center;\n width: 100%;\n `}\n >\n <span\n css={css`\n cursor: pointer;\n\n &:hover {\n opacity: 0.8;\n }\n\n button {\n pointer-events: none;\n }\n\n div [class*='NavigationButton'] {\n top: -10px;\n height: calc(100% + 20px);\n }\n `}\n onClick={e => {\n !window.dev() ? parsedOnClose() : null;\n }}\n >\n {btn}\n </span>\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default Feedback;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, memo, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport MultichoiceImage from './MultichoiceImage';\nimport Media from 'components/lib/Media';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport Transcript from 'components/lib/Video/Transcript';\nimport SVG from 'components/lib/SVG';\nimport Embed from 'components/lib/Embed';\nimport { interactionContext } from './interactionContext';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport IELayout from 'components/Layouts/IELayout';\nimport shouldUpdate from 'services/shouldUpdate';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport MultiChoice_default from 'assets/Rectangle.png';\nimport Answer from './Answer';\nimport SubmitBtn from './SubmitBtn';\nimport Feedback from 'components/lib/Feedback/Feedback_updated_022022';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n InteractionColumn: ({ children }) => {\n return children?.[0] || null;\n },\n Image: ({ children, ...props }) => {\n const updatedProps = {\n ...props,\n };\n\n if (!props.src) {\n updatedProps.placeholder = MultiChoice_default;\n }\n\n return <Image {...{ ...updatedProps, usePlaceholderValue: true }} />;\n },\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: SubmitBtn,\n Video,\n Audio,\n Transcript: ({ children, props }) => {\n return children;\n },\n SVG,\n Embed,\n Media,\n MultichoiceImageWithText: MultichoiceImage,\n ColumnImageAndText: ({ children, ...props }) => {\n const interactionContext = useContext(_interactionContext);\n const { useMediaInColumn = true } = interactionContext.props;\n\n const [img, txt] = children;\n return useMediaInColumn ? children : txt;\n },\n //\n Answer,\n Feedback,\n Correct: ({ children, ...props }) => children,\n Incorrect: ({ children, ...props }) => children,\n Attempt: ({ children, ...props }) => children,\n PDF,\n OpenPDF,\n Modal: () => null,\n ...IELayout(interactionContext),\n};\n\nconst MultichoiceImageDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n const renderedChildren = (interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n });\n\n const defaultFeedback = renderedChildren[1];\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <interactionContext.Provider\n value={{\n ...interactionBlock,\n updateItemsSeen: null,\n defaultFeedback,\n }}\n >\n {renderedChildren}\n </interactionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default MultichoiceImageDisplay;\n","import MultichoiceImageDisplay from './MultichoiceImageDisplay';\n\nexport default MultichoiceImageDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","import { Block } from '@chameleoncreator/creator-app';\nimport getStore from 'services/getStore';\n\nexport default (type: string, key: string | undefined = undefined) => {\n const blocks = Object.values<Block>(getStore().getState().blocks).filter(\n (b: any) => b.type === type\n );\n\n if (key) {\n return blocks.map(b => b[key])\n }\n\n return blocks;\n};\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useLayoutEffect,\n useEffect,\n useRef,\n useContext,\n useState,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport { interactionContext } from './interactionContext';\nimport isIE from 'services/isIE';\nimport onScrollEnds from 'services/onScrollEnds';\nimport hexToRgb from 'services/hexToRGB';\nimport { rgbaFromHexAndOpacity } from 'services/rgbaFromHexAndOpacity';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nexport const sortationPanelDefaultStyling = {\n panelBackgroundDragging: '#949595',\n};\n\nconst Option = ({ option, isDragging }) => {\n const { id, children } = option;\n\n const context = useContext<any>(interactionContext);\n\n const optionContainer = useRef<any>(null);\n\n const { includeImage } = context.props;\n\n const {\n panelBackground: _panelBackground = includeImage ? '#fff' : lGrey0,\n panelBackgroundDragging: _panelBackgroundDragging = sortationPanelDefaultStyling.panelBackgroundDragging,\n textColor = includeImage ? '#000' : '#fff',\n textColorDragging = '#000',\n optionBorderRadius = 5,\n optionBackgroundOpacity = includeImage ? 0 : 100,\n optionBackgroundOpacityDragging: _optionBackgroundOpacityDragging = 100,\n optionOutline = false,\n optionOutlineColor = '',\n includeText = true,\n imagePosition = 'top',\n } = context.props;\n\n const [txt, img] = children;\n\n const panelBackground = rgbaFromHexAndOpacity(\n _panelBackground,\n optionBackgroundOpacity\n );\n\n const panelTextColor = context.props.panelTextColor || textColor || '#fff'; // doubleTap the default\n const panelTextColorDragging =\n context.props.panelTextColorDragging || textColorDragging || '#000'; // doubleTap the default\n\n const { r: rr, g: gg, b: bb } = hexToRgb(_panelBackgroundDragging);\n const optionBackgroundOpacityDragging =\n _optionBackgroundOpacityDragging * 0.01;\n const panelBackgroundDragging = `rgba(${rr}, ${gg}, ${bb}, 1)`; // ${optionBackgroundOpacityDragging}\n\n useLayoutEffect(() => {\n // remove the chameleon-text class\n // so only responds to local color\n const chameleonText = optionContainer.current.querySelector(\n '.chameleon-text'\n );\n chameleonText && chameleonText.classList.remove('chameleon-text');\n });\n\n useEffect(() => {\n if (!isIE() || !optionContainer.current) {\n return;\n }\n //\n let tick;\n\n const onResize = () => {\n const content = optionContainer.current.firstElementChild;\n\n clearInterval(tick);\n\n tick = setInterval(() => {\n if (content.scrollHeight === 0) {\n return;\n }\n\n if (\n optionContainer.current.scrollHeight ===\n content.scrollHeight + 10\n ) {\n clearInterval(tick);\n }\n\n optionContainer.current.style.height = `${content.scrollHeight + 10}px`;\n }, 1000 / 60);\n };\n\n onScrollEnds(onResize);\n addEventListener('resize', onResize);\n\n onResize();\n\n return () => {\n removeEventListener('resize', onResize);\n };\n }, []);\n\n let flexDirection = {\n top: 'column',\n bottom: 'column-reverse',\n left: 'row',\n right: 'row-reverse',\n }[imagePosition];\n\n const columnWidth =\n includeImage && includeText && ['left', 'right'].includes(imagePosition)\n ? '50%'\n : '100%';\n\n return (\n <div\n ref={optionContainer}\n id={`sortation-option-${id}`}\n className=\"sortation-option\"\n css={css({\n display: 'flex',\n alignItems: 'center',\n\n ...(includeImage && {\n flexDirection,\n }),\n\n minHeight: 55,\n background: isDragging ? panelBackgroundDragging : panelBackground,\n margin: '5px 0',\n padding: optionBackgroundOpacity === 0 ? 0 : '5px 10px',\n //\n\n border: `1px solid ${\n optionOutline && optionOutlineColor\n ? optionOutlineColor\n : 'transparent'\n }`,\n\n borderRadius: optionBorderRadius,\n\n [`* ${!isDragging ? ':not(span)' : ''}`]: {\n color: isDragging\n ? `${panelTextColorDragging} !important`\n : panelTextColor,\n },\n\n 'h1, h2, h3, p': {\n margin: 0,\n },\n\n '[class*=\"ReadOnlyText\"]': {\n width: '100%',\n },\n\n ...(!window.dev() && {\n userSelect: 'none',\n }),\n\n '[class*=\"ReadOnlyText\"]': {\n width: '100%',\n },\n })}\n >\n {!!includeImage && (\n <div\n style={{\n flex: 1,\n }}\n >\n {img}\n </div>\n )}\n\n {!!!includeImage && txt}\n </div>\n );\n};\n\nexport default Option;\n","import hexToRgb from 'services/hexToRGB';\n\nexport const rgbaFromHexAndOpacity = (hex: string, opacity: number) => {\n const { r, g, b } = hexToRgb(hex);\n\n const _0_100_ = opacity < 0 ? 0 : opacity > 100 ? 100 : opacity;\n\n return `rgba(${r}, ${g}, ${b}, ${_0_100_ * 0.01})`;\n};\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport Feedback from 'components/lib/Feedback';\nimport { SCORM } from 'pipwerks-scorm-api-wrapper';\nimport { Fragment as _, useContext, useEffect, useRef, useState } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useDispatch, useSelector } from 'react-redux';\nimport getBlocksByType from 'services/apiHelpers/getBlocksByType';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport { getScore, setScore } from 'services/scoring';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { Report, State } from 'store/store';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport { interactionContext } from './interactionContext';\nimport Option from './Option';\nimport hexToRgb from 'services/hexToRGB';\nimport pubSub from 'services/pubSub';\n\nconst { lGrey0, lGrey2 } = colors;\n\nlet sessionLock = {};\nlet attempts = {};\n\npubSub.subscribe('RESET_MODULE', () => {\n console.log('sortation resets');\n\n sessionLock = {};\n attempts = {};\n});\n\nexport const sortationDefaultStyling = {\n baseColor: lGrey2,\n baseColorOpacity: 100,\n baseOutline: false,\n baseOutlineColor: '',\n baseBorderRadius: 10,\n // numberOfAttempts,\n score: true,\n showCorrectAnswer: 0,\n};\n\nfunction shuffle(array) {\n let m = array.length,\n t,\n i;\n\n let n = [...array];\n\n // While there remain elements to shuffle…\n\n while (m) {\n // Pick a remaining element…\n\n const i = Math.floor(Math.random() * m--);\n\n // And swap it with the current element.\n\n t = n[m];\n\n n[m] = n[i];\n\n n[i] = t;\n }\n\n i = Math.floor(Math.random() * n.length);\n\n if (n.every((option, k) => option.id === array[k].id)) {\n let j = Math.floor(Math.random() * n.length);\n\n while (j === i) {\n j = Math.floor(Math.random() * n.length);\n }\n\n t = n[i];\n\n n[i] = n[j];\n\n n[j] = t;\n }\n\n return n;\n}\n\nconst Sortation = props => {\n const context = useContext(interactionContext);\n const {\n baseColor: _baseColor = lGrey2,\n baseColorOpacity: _baseColorOpacity = 100,\n baseOutline = false,\n baseOutlineColor = '',\n baseBorderRadius = 10,\n // numberOfAttempts,\n score,\n showCorrectAnswer,\n showAttemptNumber,\n useMediaInFeedback = true,\n useFeedback = true,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n // direction = 'vertical',\n } = context.props;\n\n let direction = context.props.direction || 'vertical';\n\n const { r, g, b } = hexToRgb(_baseColor);\n const baseColorOpacity = _baseColorOpacity * 0.01;\n const baseColor = `rgba(${r}, ${g}, ${b}, ${baseColorOpacity})`;\n\n const numberOfAttempts = context.hasAttemptFeedback\n ? context.props.numberOfAttempts\n : 0;\n\n const { id, children } = props;\n\n let questionText =\n children[0]?.props?.type === 'SortationQuestionText' ? children[0] : null;\n\n const answers = getBlocksByType('Answer', 'id');\n const heading0 = getBlocksByType('SortationHeading0', 'id');\n const heading1 = getBlocksByType('SortationHeading1', 'id');\n const options = children\n .filter(c => answers.includes(c.props.id))\n .map((c, i) => {\n const { id, children } = c.props;\n return { id, children };\n });\n const sortFrom = children.find(c => heading0.includes(c.props.id));\n const sortTo = children.find(c => heading1.includes(c.props.id));\n\n const [order, setOrder] = useState(() =>\n !window.dev() ? shuffle(options) : options\n );\n\n const [isLive, setIsLive] = useState(false);\n const [submit, setSubmit] = useState(sessionLock[context.id] ? 2 : 0);\n\n const scoringQuizzes = useScoringQuizzes();\n const { scoreAll } = useSelector((state: State) => {\n return Object.values(state.blocks).find(b => b.type === 'Module')\n ?.props as any;\n });\n\n const sortation = useRef<HTMLDivElement>(null);\n const hasAttempt = useRef<Boolean>(false);\n\n if (!attempts[context.id]) {\n attempts[context.id] = 0;\n }\n\n const isCorrect = useRef(false);\n\n sessionLock[context.id] =\n attempts[context.id] === numberOfAttempts &&\n score &&\n getScore(context.id) !== undefined;\n\n const [feedback, setFeedback] = useState(false);\n\n // console.log({ direction_ });\n // const [direction, setDirection] = useState<'vertical' | 'horizontal'>(\n // direction_\n // );\n\n // console.log({ direction });\n\n const [localDirection, setLocalDirection] = useState<\n 'vertical' | undefined\n >();\n\n if (localDirection) {\n direction = localDirection;\n }\n\n // console.log({ localDirection });\n\n const dispatch = useDispatch();\n\n const updateOrder = $ => {\n const { source, destination } = $;\n\n const reorder = (list, startIndex, endIndex) => {\n const reordered = [...list];\n const [removed] = reordered.splice(startIndex, 1);\n reordered.splice(endIndex, 0, removed);\n\n return reordered;\n };\n\n const newOrder = reorder(order, source.index, destination.index);\n\n isCorrect.current = options.every((o, i) => o.id === newOrder[i].id);\n\n setScore(context.id, isCorrect.current);\n setOrder(newOrder);\n };\n\n const showFeedback = correct => {\n useFeedback && setFeedback(true);\n\n if (window.dev()) {\n return;\n }\n\n const sortationResolved =\n correct || attempts[context.id] === numberOfAttempts;\n\n if (sortationResolved && showCorrectAnswer === 1) {\n setOrder(options);\n }\n\n if (sortationResolved) {\n // && score\n const alphabetized = Array.from(\n sortation.current!.querySelectorAll('.sortation-option')\n ).map((option: any) => {\n const id = option.id.replace('sortation-option-', '');\n return 'abcdefghijklmnopqrstuvwxyz'.split('')[\n options.findIndex((o: any) => o.id === id)\n ];\n });\n\n // dispatch if there's no scoringQuizzes etc\n let shouldDispatchScore = score;\n //\n if (scoringQuizzes.length) {\n shouldDispatchScore = false;\n }\n\n let questionText:\n | NodeList\n | string[]\n | string = document.querySelectorAll(\n `#i${context.id} [class*=\"SortationHeading\"]`\n ) as NodeList;\n\n if (questionText) {\n questionText = Array.from(questionText).map(q => {\n return (q as HTMLElement).innerText;\n });\n\n questionText = `Sort items from ${questionText[0]} to ${questionText[1]}`;\n }\n\n const getCorrectAndResponseOptions = entry => {\n let optionText: HTMLElement | string = document.querySelector(\n `#sortation-option-${entry.id}`\n ) as HTMLElement;\n if (optionText) {\n optionText = optionText.innerText;\n }\n\n return optionText;\n };\n\n const alphabetToArray = 'abcdefghijklmnopqrstuvwxyz'.split('');\n\n const correctExpanded = alphabetToArray\n .slice(0, options.length)\n .join(SCORM.version == '1.2' ? ',' : '[,]');\n\n const optionsIds = options.map(o => o.id || o.props.id);\n const orderIds = order.map(o => o.id || o.props.id);\n\n const responseExpanded = orderIds\n .map(id => {\n return alphabetToArray[optionsIds.indexOf(id)];\n })\n .join(SCORM.version == '1.2' ? ',' : '[,]');\n\n //\n const isCorrectCurrentToScore: 0 | 1 = isCorrect.current ? 1 : 0;\n\n const action = {\n id: context.id,\n type: 'sequencing',\n question: questionText,\n reportable: 'sortation',\n response: responseExpanded,\n correct: correctExpanded,\n // @sam. updated this from the bool it was. to send a 1 | 0\n result: isCorrectCurrentToScore,\n } as Report;\n\n if (shouldDispatchScore) {\n dispatch(updateScoreAction(context.id, isCorrectCurrentToScore));\n }\n\n dispatch(addScormResponseAction(action));\n }\n\n if (isCorrect.current || attempts[context.id] === numberOfAttempts) {\n setSubmit(2);\n unlockInteraction(context.id);\n }\n };\n\n const onClose = () => {\n setFeedback(false);\n };\n\n //\n const idDep = options\n .map(entry => {\n return entry.id;\n })\n .join('_');\n\n //\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n setOrder(options);\n }, [idDep]);\n //\n\n useEffect(() => {\n if (hasAttempt.current && !isLive) {\n setIsLive(true);\n }\n\n if (window.dev()) {\n if (parent.showFeedback) {\n parent.showFeedback[context.id] = correct => {\n if (feedback) {\n setFeedback(false);\n requestAnimationFrame(() =>\n showFeedback((isCorrect.current = correct))\n );\n //\n } else {\n showFeedback((isCorrect.current = correct));\n }\n };\n }\n }\n\n if (order.length !== options.length) {\n setOrder(options);\n }\n });\n\n const SubmitBtn: any = renderBlock(\n findByKeyVal_V2(props.id, 'type', 'EditableButton')!,\n {\n EditableButton: ({ ...props }) => (\n <EditableBtn\n {...{ enabled: !!isLive, ...props }}\n onClick={() => {\n attempts[context.id] += 1;\n showFeedback(isCorrect.current);\n }}\n />\n ),\n }\n );\n\n useEffect(() => {\n if (direction === 'vertical') {\n return;\n }\n\n var mq = window.matchMedia('(max-width: 768px)');\n\n onMQChange(mq);\n mq.addEventListener('change', onMQChange);\n\n function onMQChange(mq) {\n setLocalDirection(mq.matches ? 'vertical' : undefined);\n }\n\n return () => {\n mq.removeEventListener('change', onMQChange);\n };\n }, []);\n\n useEffect(() => {\n if (window.dev() || !sortation.current) {\n return;\n }\n\n const alphabetized = Array.from(\n sortation.current.querySelectorAll('.sortation-option')\n ).map((option: any) => {\n const id = option.id.replace('sortation-option-', '');\n return 'abcdefghijklmnopqrstuvwxyz'.split('')[\n options.findIndex((o: any) => o.id === id)\n ];\n });\n });\n\n let submitBtnTotalHeight;\n\n const getSubmitButtonTotalHeight = () => {\n const submitBtn = document.querySelector(\n `#sortation-submit-btn-${id} [class*='genericButton']`\n ) as HTMLElement;\n\n if (!submitBtn) {\n return;\n }\n //\n return submitBtn.getBoundingClientRect().height + 20;\n };\n\n let parsedIsCorrect;\n\n if (attempts[context.id] < numberOfAttempts) {\n parsedIsCorrect = isCorrect.current || 'attempt';\n } else {\n parsedIsCorrect = isCorrect.current;\n }\n\n return (\n <div\n css={css({\n wordBreak: 'break-word',\n })}\n >\n {questionText && (\n <div\n style={{\n margin: '0 0 20px 0',\n }}\n >\n {questionText}\n </div>\n )}\n <div\n ref={sortation}\n css={css`\n position: relative;\n \n width: 100%;\n // margin: ${getSubmitButtonTotalHeight()}px 0 0 0;\n padding: 10px 10px;\n\n border: 1px solid\n ${\n baseOutline && baseOutlineColor ? baseOutlineColor : 'transparent'\n };\n\n border-radius: ${baseBorderRadius}px;\n background: ${baseColor};\n pointer-events: ${submit === 0 ? 'auto' : 'none'};\n `}\n >\n {sortFrom}\n <DragDropContext\n onDragEnd={data => {\n if (!data.destination) {\n return;\n }\n\n updateOrder(data);\n }}\n >\n <Droppable\n droppableId={`Sortation_${id}`}\n type=\"droppableSortation\"\n {...(direction === 'horizontal' && {\n direction,\n })}\n >\n {provided => (\n <div\n ref={provided.innerRef}\n css={css({\n ...(direction === 'horizontal'\n ? {\n display: 'flex',\n }\n : {}),\n })}\n >\n {order.map((option, i) => (\n <Draggable\n key={option.id}\n draggableId={option.id}\n {...(window.dev() && {\n isDragDisabled: true,\n })}\n index={i}\n >\n {(provided, snapshot) => {\n if (!hasAttempt.current && snapshot.isDragging)\n hasAttempt.current = true;\n return (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n css={css`\n // display: flex;\n margin: 5px;\n border-radius: 5px;\n\n // flex: 1;\n // outline: 2px solid red;\n ${!snapshot.isDragging &&\n `&:focus {\n //\n ${getButtonFocus(\n context.props.panelBackground || lGrey0\n )}\n }`}\n `}\n style={{\n ...provided.draggableProps.style,\n }}\n >\n <Option\n key={option.id}\n option={option}\n isDragging={snapshot.isDragging}\n />\n </div>\n );\n }}\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n {sortTo}\n </div>\n\n <div\n id={`sortation-submit-btn-${id}`}\n // class={}\n css={css`\n margin-top: 20px;\n ${!window.dev() &&\n `\n opacity: ${isLive && submit === 0 ? 1 : 0};\n pointer-events: ${isLive && submit === 0 ? 'auto' : 'none'};\n transition: opacity 0.2s;\n `}\n `}\n >\n {SubmitBtn}\n </div>\n\n {feedback && (\n <Feedback\n id={context.id}\n correct={window.dev() ? isCorrect.current : parsedIsCorrect}\n attempt={attempts[context.id]}\n numberOfAttempts={numberOfAttempts}\n showAttemptNumber={showAttemptNumber}\n showCorrectAnswer={showCorrectAnswer}\n useMediaInFeedback={useMediaInFeedback}\n navigationBehaviour={navigationBehaviour}\n onClose={() => {\n const tick = setInterval(() => {\n const submitButtonElement: any = document.querySelector(\n `#i${SubmitBtn?.props?.id}`\n );\n\n if (submitButtonElement) {\n submitButtonElement.focus();\n\n clearInterval(tick);\n }\n }, 0);\n\n onClose();\n }}\n />\n )}\n </div>\n );\n};\n\nexport default Sortation;\n","/** @jsx jsx */\n\nimport { Fragment as _ } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\n\n\nconst SortationHeading = ({ children, ...props }) => (\n <div\n css={css`\n margin: 10px 0;\n `}\n >\n {children}\n </div>\n);\n\nexport default SortationHeading;\n","/** @jsx jsx */\n\nimport { Fragment as _, useMemo, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Image from 'components/lib/Image';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Sortation from './Sortation';\nimport SortationHeading from './SortationHeading';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { Block } from '@chameleoncreator/creator-app';\nimport IELayout from 'components/Layouts/IELayout';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport Video from 'components/lib/Video';\nimport Transcript from 'components/lib/Video/Transcript';\nimport SVG from 'components/lib/SVG';\nimport Embed from 'components/lib/Embed';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport Media_default from 'assets/CC_Sortation_Placeholder.png';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport Audio from 'components/lib/Audio';\nimport { SortableImage } from './SortableImage';\nimport { imgPlaceholders } from 'components/lib/Image';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n InteractionColumn: ({ children }) => {\n return children?.[0] || null;\n },\n SortationQuestionText: ({ children, ...props }) => children,\n Image: ({ children, ...props }) => {\n // const updatedProps = {\n // ...props,\n // };\n\n // if (!props.src) {\n // updatedProps.placeholder = props.placeholder || Media_default;\n // }\n\n const mediaContext = useContext(MediaContext) as IMediaContext;\n const { isAdditionalMedia } = mediaContext;\n\n return (\n <Image\n {...{\n ...props,\n // ...updatedProps,\n placeholder: !isAdditionalMedia ? Media_default : imgPlaceholders[1],\n\n usePlaceholderValue: true,\n }}\n />\n );\n // return <Image {...{ ...updatedProps, usePlaceholderValue: true }} />;\n //\n },\n Video,\n Transcript,\n SVG,\n Embed,\n Media,\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: () => null,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [sortation, txt] = children;\n\n if (!includeAdditionalTextField) {\n return sortation;\n }\n\n return (\n <_>\n {sortation}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n Sortation: ({ children, ...props }) => {\n // <div\n // css={css`\n // width: 100%;\n // `}\n // >\n return <Sortation {...{ children, ...props }} />;\n // </div>\n },\n SortationHeading0: SortationHeading,\n SortationHeading1: SortationHeading,\n SortableImage,\n Answer: () => null,\n Feedback: ({ children }) => children,\n // Feedback: () => null,\n Correct: () => null,\n Incorrect: () => null,\n Attempt: () => null,\n PDF,\n OpenPDF,\n Audio,\n Modal: () => null,\n};\n\nconst SortationDisplay = props => {\n const interactionBlock = getBlockById(props.blockId);\n\n const hasAttemptFeedback = findByKeyVal_V2(\n interactionBlock.id,\n 'type',\n 'Attempt'\n );\n\n const container = (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{\n ...interactionBlock,\n updateItemsSeen: null,\n hasAttemptFeedback,\n }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n\n return window.dev()\n ? container\n : useMemo(() => {\n return container;\n }, [props.isOpen, interactionBlock.props!.lockDown]);\n};\n\nexport default SortationDisplay;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useLayoutEffect,\n useEffect,\n useRef,\n useContext,\n cloneElement,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport CC_Sortation_Placeholder_Panel_Media from 'assets/CC_Sortation Placeholder_Panel Media 4.png';\n// CC_Sortation Placeholder_Panel Media 3.png';\n// CC_Sortation_Placeholder_Panel_Media.png';\n\nexport const SortableImage = props => {\n const context = useContext<any>(InteractionContext);\n\n const { children } = props;\n const Img = children[0];\n\n return (\n <div\n css={css({\n img: {\n maxHeight: '150px !important',\n },\n })}\n >\n {cloneElement(Img, {\n placeholder: CC_Sortation_Placeholder_Panel_Media,\n })}\n </div>\n );\n};\n","import SortationDisplay from './SortationDisplay_v2';\n\nexport default SortationDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n memo,\n useMemo,\n useCallback,\n useContext,\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n cloneElement,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { Box } from 'theme-ui';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport hexToRgb from 'services/hexToRGB';\nimport pubSub from 'services/pubSub';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { useDispatch } from 'react-redux';\nimport { Report } from 'store/store';\n\nexport const defaultColor = '#845cff';\n\nconst FromToField = props => {\n const { field } = props;\n\n const { content } = field?.props;\n const alignment =\n !content || content === '<p data-type=\"paragraph\"></p>' ? 'left' : 'center';\n\n return (\n <div\n css={css({\n width: 320 / 2,\n margin: `0 0 0 ${window.dev() ? -10 : 0}`,\n\n textAlign: alignment,\n })}\n >\n {field}\n </div>\n );\n};\n\nexport type Result = 'correct' | 'incorrect' | 'attempt' | undefined;\nenum SubmitState {\n Initial = 0,\n Resolved = 2,\n}\n\nconst Slider = props => {\n const InteractionContext = useContext(interactionContext);\n const { id } = InteractionContext;\n\n let {\n sliderMin,\n sliderMax,\n sliderStartValue,\n sliderTrackColor = defaultColor,\n sliderTrackOpacity = 60,\n sliderHandleColor = defaultColor,\n showSliderStepMarkers = true,\n sliderStepMarkerColor = defaultColor,\n numberOfSliderSteps = 10,\n sliderAnswerFormat = 'fixed',\n includeSliderAnswerInputBox = true,\n SliderAnswerTextColor = '#000',\n sliderContentColor,\n sliderInputBoxBackgroundColor = '#fff',\n sliderInputBoxBackgroundOpacity = 100,\n sliderInputBoxOutline = true,\n sliderInputBoxOutlineColor = defaultColor,\n\n //\n lockDown = 0,\n numberOfAttempts = 2,\n showAttemptNumber = true,\n useMediaInFeedback = true,\n // correctAnswer,\n showCorrectAnswer = true,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n score,\n includeFeedback = true,\n includeQuestionTextPlusImage,\n } = InteractionContext.props;\n\n if (sliderMin === undefined) {\n sliderMin = 0;\n }\n\n if (sliderMax === undefined) {\n sliderMax = 10;\n }\n\n if (!sliderStartValue) {\n sliderStartValue = sliderMin;\n }\n\n const scoringQuizzes = useScoringQuizzes();\n\n let correctAnswer = InteractionContext.props.correctAnswer || sliderMin;\n\n // console.log({ sliderMin, sliderMax, correctAnswer });\n\n const { children } = props;\n\n const { r, g, b } = hexToRgb(sliderTrackColor);\n const a = sliderTrackOpacity * 0.01;\n const rgba = `rgba(${r}, ${g}, ${b}, ${a})`;\n\n const { r: sliderInputR, g: sliderInputG, b: sliderInputB } = hexToRgb(\n sliderInputBoxBackgroundColor\n );\n const sliderInputA = sliderInputBoxBackgroundOpacity * 0.01;\n sliderInputBoxBackgroundColor = `rgba(${sliderInputR}, ${sliderInputG}, ${sliderInputB}, ${sliderInputA})`;\n\n const sliderHandleSize = 35;\n\n const getSliderHandleColor = (replaceHash = false) => {\n return !replaceHash\n ? sliderHandleColor\n : sliderHandleColor.replace('#', '%23');\n };\n const sliderHandle = `url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${sliderHandleSize}\" height=\"${sliderHandleSize}\" viewBox=\"0 0 ${sliderHandleSize} ${sliderHandleSize}\"><circle r=\"${sliderHandleSize /\n 2}\" cx=\"${sliderHandleSize / 2}\" cy=\"${sliderHandleSize /\n 2}\" fill=\"${getSliderHandleColor(true)}\" />\n \n <circle r=\"${sliderHandleSize / 3}\" cx=\"${sliderHandleSize /\n 2}\" cy=\"${sliderHandleSize / 2}\" fill=\"black\" fill-opacity=\"0.15\" />\n\n </svg>')`;\n\n //\n const [value, setValue] = useState<number | undefined>();\n const [inputFieldHasFocus, setInputFieldHasFocus] = useState<boolean>(false);\n const [attempt, setAttempt] = useState<number>(0);\n const [result, setResult] = useState<Result>(undefined);\n const [resolved, setResolved] = useState<SubmitState>(0);\n const [showFeedback, setShowFeedback] = useState<Result>(result);\n const [isLive, setIsLive] = useState<boolean | undefined>(undefined);\n const dispatch = useDispatch();\n\n const [sharedQuestionMedia, from, to, feedback] = children;\n const [, , , submitBtn] = feedback?.props.children;\n\n const _value_ = value || sliderStartValue;\n\n const onSubmit = () => {\n let result: Result;\n if (value == correctAnswer) {\n result = 'correct';\n }\n\n // logic for attempts...\n if (result !== 'correct') {\n if (attempt < numberOfAttempts - 1) {\n setAttempt(attempt => {\n return (attempt += 1);\n });\n result = 'attempt';\n } else {\n result = 'incorrect';\n }\n }\n\n setResult(result);\n setShowFeedback(result);\n };\n\n useEffect(() => {\n if ((['correct', 'incorrect'] as Result[]).includes(result)) {\n setResolved(SubmitState.Resolved);\n //\n\n let questionElement = document.querySelector(\n `#i${InteractionContext.id} .chameleon-text p`\n ) as HTMLParagraphElement;\n let question;\n\n if (questionElement) {\n question = questionElement.innerText;\n }\n\n const action = {\n id: InteractionContext.id,\n type: 'likert',\n question,\n reportable: 'likert' as 'likert',\n response: String(value),\n correct: String(correctAnswer),\n result: (result === 'correct' ? 1 : 0) as Report['result'],\n };\n\n // dispatch if there's no scoringQuizzes etc\n let shouldDispatchScore = score;\n\n if (scoringQuizzes.length) {\n shouldDispatchScore = false;\n }\n //\n\n if (shouldDispatchScore) {\n dispatch(\n updateScoreAction(InteractionContext.id, result === 'correct' ? 1 : 0)\n );\n }\n\n dispatch(addScormResponseAction(action));\n\n const unlock = result === 'correct' || attempt === numberOfAttempts - 1;\n\n if (unlock) {\n unlockInteraction(InteractionContext.id);\n setIsLive(false);\n }\n\n if (result === 'incorrect' && showCorrectAnswer) {\n requestAnimationFrame(() => {\n setValue(correctAnswer);\n });\n }\n }\n }, [result]);\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n const showFeedbackSubscription = pubSub.subscribe(\n `${InteractionContext.id}`,\n ({ result }) => {\n console.log(result);\n setResult(result);\n setShowFeedback(result);\n }\n );\n\n return () => {\n showFeedbackSubscription();\n };\n }, []);\n\n const sliderThumb = {\n appearance: 'none',\n width: sliderHandleSize,\n height: sliderHandleSize,\n borderRadius: '50%',\n background: sliderHandle,\n boxShadow: '0 0 3px 0 rgba(0,0,0,0.2)',\n transition: 'box-shadow 0.2s',\n\n cursor: 'pointer',\n } as any;\n\n const sliderThumbFocus = {\n appearance: 'none',\n boxShadow: `0 0 0 1px #fff, 0 0 0 3px ${getSliderHandleColor()}`,\n } as any;\n\n return (\n <div\n style={{\n width: '100%',\n pointerEvents: resolved === SubmitState.Resolved ? 'none' : 'auto',\n }}\n >\n {includeQuestionTextPlusImage ? (\n <div style={{ marginBottom: 15 }}>{sharedQuestionMedia}</div>\n ) : null}\n\n <div\n css={css({\n display: 'flex',\n justifyContent: 'space-between',\n margin: '0 0 15px 0',\n })}\n >\n <FromToField field={from} />\n <FromToField field={to} />\n </div>\n\n <input\n type=\"range\"\n role=\"slider\"\n min={sliderMin}\n aria-valuemin={sliderMin}\n max={sliderMax}\n aria-valuemax={sliderMax}\n step={sliderAnswerFormat === 'variable' ? 0.01 : undefined}\n value={_value_}\n aria-valuenow={_value_}\n css={css({\n appearance: 'none',\n width: '100%',\n height: 10,\n background: rgba,\n borderRadius: 99999,\n\n '&::-webkit-slider-thumb': sliderThumb,\n '&::-moz-range-thumb': sliderThumb,\n\n ':focus': {\n outline: 'none !important',\n border: 'none !important',\n '&::-webkit-slider-thumb': sliderThumbFocus,\n '&::-moz-range-thumb': sliderThumbFocus,\n },\n })}\n onChange={(e: any) => {\n setIsLive(true);\n setValue(e.currentTarget.value);\n }}\n />\n\n <div\n style={{\n margin: '20px 0',\n }}\n >\n {!!showSliderStepMarkers && (\n <div\n style={{\n width: '100%',\n padding: `0 ${35 / 2}px`,\n }}\n >\n <div\n style={{\n position: 'relative',\n height: 30,\n margin: '10px 0',\n }}\n >\n {Array.from({ length: numberOfSliderSteps + 1 })\n .map((_, index) => index)\n .map((marker: number, index: number, arr) => {\n const distance = 100 / (arr.length - 1);\n const markerPosition = Math.round(marker * distance);\n\n return (\n <div\n key={`marker-${marker}`}\n style={{\n position: 'absolute',\n left: `calc(${markerPosition}%)`,\n width: 1,\n height: 10,\n background: sliderStepMarkerColor,\n }}\n />\n );\n })}\n </div>\n </div>\n )}\n\n {!!includeSliderAnswerInputBox && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n }}\n >\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n padding: 10,\n background: sliderInputBoxBackgroundColor,\n borderRadius: 15,\n border: `1px solid ${\n sliderInputBoxOutline\n ? sliderInputBoxOutlineColor\n : 'transparent'\n }`,\n\n boxShadow: 'none',\n transition: 'box-shadow 0.2s',\n ...(inputFieldHasFocus && {\n boxShadow: `0 0 0 1px #fff, 0 0 0 3px ${sliderInputBoxOutlineColor}`,\n }),\n })}\n >\n <input\n key={value}\n type=\"number\"\n aria-label=\"Type a value and click enter to update.\"\n min={sliderMin}\n max={sliderMax}\n defaultValue={_value_}\n css={css({\n all: 'unset',\n border: 'none !important',\n outline: 'none !important',\n width: 100,\n color: SliderAnswerTextColor,\n textAlign: 'center',\n fontFamily: 'inherit',\n fontSize: 16,\n\n '&:focus': {\n border: 'none !important',\n outline: 'none !important',\n },\n '&:focus-visible': {\n //\n },\n\n '::-webkit-inner-spin-button': {\n appearance: 'none',\n margin: 0,\n },\n\n MozAppearance: 'textfield',\n })}\n onKeyUp={e => {\n const { value } = e.currentTarget;\n\n if (e.key === 'Enter') {\n if (value < sliderMin) {\n e.preventDefault();\n setValue((sliderMin as unknown) as number);\n return;\n }\n\n if (value > sliderMax) {\n e.preventDefault();\n setValue((sliderMax as unknown) as number);\n return;\n }\n\n setIsLive(true);\n setValue((value as unknown) as number);\n }\n }}\n onFocus={e => {\n setInputFieldHasFocus(true);\n }}\n onBlur={e => {\n setInputFieldHasFocus(false);\n\n const localValue = e.currentTarget.value;\n\n if (!localValue) {\n e.currentTarget.value = String(value || 0);\n return;\n }\n\n setIsLive(true);\n setValue((localValue as unknown) as number);\n }}\n />\n </div>\n </div>\n )}\n </div>\n\n <div\n style={{\n visibility: 'hidden',\n opacity: 0,\n pointerEvents: 'none',\n transition: 'opacity 0.2s',\n\n ...((window.dev() || isLive) && {\n visibility: 'visible',\n opacity: 1,\n pointerEvents: 'auto',\n }),\n\n ...(resolved === SubmitState.Resolved && {\n opacity: 0,\n pointerEvents: 'none',\n }),\n }}\n >\n {cloneElement(submitBtn, {\n onClick() {\n onSubmit();\n },\n })}\n </div>\n\n {includeFeedback &&\n showFeedback &&\n cloneElement(feedback, {\n result,\n showAttemptNumber,\n attempt,\n numberOfAttempts,\n navigationBehaviour,\n onClose() {\n setShowFeedback(undefined);\n },\n useMediaInFeedback,\n })}\n </div>\n );\n};\n\nexport default Slider;\n","/** @jsx jsx */\n\nimport { Fragment as _, useContext, memo } from 'react';\nimport { jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport Slider from './Slider';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport Feedback from 'components/lib/Feedback/Feedback_updated_022022';\nimport { ImageContext } from 'components/lib/Image';\nimport CC_QuestionTextImage from 'assets/CC_QuestionTextImage.svg';\nimport Embed from 'components/lib/Embed';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Slider,\n Text: EditableText,\n // Image,\n Image: ({ children, ...props }) => {\n return (\n <Image\n {...{\n ...props,\n placeholder: imgPlaceholders[1],\n }}\n />\n );\n },\n TwoColumnLayout,\n SingleColumnLayout,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [slider, txt] = children;\n\n if (!includeAdditionalTextField) {\n return slider;\n }\n\n return (\n <_>\n {slider}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n ColumnContent: ({ children, ...props }) => {\n const { includeQuestionTextPlusImage } = useContext(\n InteractionContext\n )?.props;\n\n const [img, txt] = children;\n\n return includeQuestionTextPlusImage ? (\n <ImageContext.Provider\n value={{\n placeholder: CC_QuestionTextImage,\n }}\n >\n {img}\n </ImageContext.Provider>\n ) : (\n txt\n );\n },\n ContinueButton: ContinueBtn,\n Video,\n SVG,\n Media,\n EditableButton: EditableBtn,\n Audio,\n Embed,\n Transcript: ({ children, props }) => {\n return children;\n },\n Feedback,\n Correct: ({ children, props }) => children,\n Incorrect: ({ children, props }) => children,\n Attempt: ({ children, props }) => children,\n PDF,\n OpenPDF,\n};\n\n// memo(\nconst SliderDisplay = (props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n};\n//, shouldUpdate as any);\n\nexport default SliderDisplay;\n","import SliderDisplay from './SliderDisplay';\n\nexport default SliderDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport React, { cloneElement, Fragment as _ } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Modal from 'components/UI/Modal';\nimport { useMemo } from 'react';\nimport { ImageContext } from 'components/lib/Image';\nimport modalPlaceholderImage from 'assets/CC_Sortation_Placeholder.png';\nimport imagePlaceholder from 'assets/Square.png';\n\nconst Feedback = props => {\n const { useMediaInFeedback = true, onClose, children } = props;\n let [img, txt, btn] = children;\n\n const isImg = img?.props?.child === 1;\n\n let imgSrc;\n\n if (isImg) {\n imgSrc = img?.props?.children[1]?.props?.src;\n }\n\n const Img = useMemo(() => {\n return img;\n }, [imgSrc]);\n\n // </ImageContext.Provider>\n\n // ${isImg &&\n // `\n // position: relative;\n // display: flex;\n // align-items: center;\n // `}\n\n return (\n <Modal onClose={() => onClose()}>\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n max-width: 768px;\n padding: 50px;\n `}\n >\n {useMediaInFeedback && (\n <div\n css={css`\n position: relative;\n width: 100%;\n\n margin-bottom: 30px;\n\n .chameleon-image img {\n // max-height: 30vh !important;\n\n height: auto !important;\n object-fit: contain;\n }\n\n @media (max-width: 768px) {\n width: 100%;\n margin-bottom: 25px;\n }\n `}\n >\n <ImageContext.Provider\n key={imgSrc}\n value={{\n editWrapperType: 0,\n placeholder: imagePlaceholder || modalPlaceholderImage,\n padding: 10,\n }}\n >\n {Img}\n </ImageContext.Provider>\n </div>\n )}\n\n <div\n css={css`\n width: 100%;\n margin-bottom: 30px;\n `}\n >\n {txt}\n </div>\n <div\n css={css`\n display: flex;\n justify-self: flex-end;\n justify-content: center;\n width: 100%;\n `}\n >\n {window.dev() ? btn : React.cloneElement(btn, { onClick: onClose })}\n {/* {React.cloneElement(btn, { onClick: onClose })} */}\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default Feedback;\n","/** @jsx jsx */\n\nimport { Fragment as _, useContext, useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\n\nconst MatchingLayout = ({ children }) => {\n const context: any = useContext(interactionContext);\n const isOneColumn = context?.meta?.layout.match('One');\n\n const [layout, setLayout] = useState(1);\n\n const container = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!container.current || isOneColumn) {\n return;\n }\n\n const updateLayout = () => {\n const c = container.current as HTMLDivElement;\n const droppableContainer = c.querySelector(\n '.droppable-container'\n ) as HTMLDivElement;\n\n const dCWidth = droppableContainer.getBoundingClientRect().width;\n\n const cWidth = c.getBoundingClientRect().width;\n if (cWidth >= dCWidth * 2 + dCWidth / 2) {\n setLayout(1);\n return;\n }\n\n if (cWidth < dCWidth * 2 + 20) {\n setLayout(0);\n return;\n }\n\n setLayout(1);\n };\n\n updateLayout();\n\n const tick = setInterval(updateLayout, 1000 / 12);\n //\n return () => {\n clearInterval(tick);\n };\n }, []);\n\n //\n // console.log({ isOneColumn });\n if (isOneColumn) {\n return children;\n }\n\n return (\n <div\n ref={container}\n css={css`\n position: relative;\n ${layout === 1 && 'display: flex;'}\n width: 100%;\n `}\n >\n {children}\n </div>\n );\n};\n\nexport default MatchingLayout;\n","export const screenReaderInstructions = {\n draggable: `\n To pick up a draggable item, press enter or space.\n Use the arrow keys to move the item.\n Press enter or space again to drop the item in its new position, or press escape to cancel.\n `,\n};\n\n// we could memoize this. . .\nconst cachedContent: { [id: string]: string } = {};\n\nexport function getCachedContent(id): string | typeof cachedContent {\n return id ? cachedContent[id] : cachedContent;\n}\n\nexport const getElementContent = (\n id,\n element: HTMLElement | undefined = undefined\n) => {\n const item = (element || document).querySelector(id) as HTMLElement;\n\n if (!item) {\n return '';\n }\n\n if (cachedContent[id]) {\n return cachedContent[id];\n }\n\n const text = (item.querySelector('.chameleon-text') as HTMLElement)\n ?.innerText;\n\n const imgDescription = item.querySelector('img')?.getAttribute('alt');\n\n cachedContent[id] = text || imgDescription || '';\n return cachedContent[id];\n};\n\nexport const announcements = {\n onDragStart({ active }) {\n const draggableContent = getElementContent(`#match-drag-${active.id}`);\n\n return `Picked up draggable item ${draggableContent}`;\n },\n\n onDragOver({ active, over }) {\n const draggableContent = getElementContent(`#match-drag-${active.id}`);\n\n if (over) {\n const droppableContent = getElementContent(`#match-drop-${over.id}`);\n\n return `Draggable item ${draggableContent} was moved over droppable area ${droppableContent}.`;\n }\n\n return `Draggable item ${draggableContent} is no longer over a droppable area.`;\n },\n\n onDragEnd({ active, over }) {\n const draggableContent = getElementContent(`#match-drag-${active.id}`);\n\n if (over) {\n const droppableContent = getElementContent(`#match-drop-${over.id}`);\n\n return `Draggable item ${draggableContent} was dropped over droppable area ${droppableContent}`;\n }\n\n return `Draggable item ${draggableContent} was dropped.`;\n },\n onDragCancel({ active }) {\n const draggableContent = getElementContent(`#match-drag-${active.id}`);\n\n return `Dragging was cancelled. Draggable item ${draggableContent} was dropped back to its original position.`;\n },\n};\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport {\n DndContext,\n useSensor,\n useSensors,\n PointerSensor,\n KeyboardSensor,\n} from '@dnd-kit/core';\nimport Feedback from './Feedback';\nimport LayoutResponsiveContainer from './LayoutResponsiveContainer';\nimport checkReturnToInteractionEditing from 'services/checkReturnToInteractionEditing';\nimport { screenReaderInstructions, announcements } from './screenReader';\n\nconst Layout = ({\n id,\n columns,\n onDragStart,\n onDragEnd,\n feedback,\n useMediaInFeedback,\n setFeedback,\n reset,\n}) => {\n const [allPlaceHoldersResolved, setAllPlaceHoldersResolved] = useState<\n boolean\n >(false);\n //\n\n const layout = useRef<HTMLDivElement | null>(null);\n const availableDropsIndex = useRef<number>(NaN);\n\n useEffect(() => {\n const onKeyDown = e => {\n if (['tab', 'esc'].includes(e.key)) {\n availableDropsIndex.current = NaN;\n }\n };\n\n addEventListener('keydown', onKeyDown);\n\n return () => {\n removeEventListener('keydown', onKeyDown);\n };\n }, []);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter(e, { currentCoordinates }) {\n const droppableContainers = columns.column_b.filter(cB => {\n return !cB?.props?.isDragDisabled;\n });\n\n if (droppableContainers.length === 0) {\n return;\n }\n\n const getXY = direction => {\n if (direction === 1) {\n if (isNaN(availableDropsIndex.current)) {\n availableDropsIndex.current = 0;\n } else {\n availableDropsIndex.current < droppableContainers.length - 1\n ? (availableDropsIndex.current += 1)\n : (availableDropsIndex.current = 0);\n }\n }\n\n if (direction === -1) {\n if (isNaN(availableDropsIndex.current)) {\n availableDropsIndex.current = droppableContainers.length - 1;\n } else {\n availableDropsIndex.current > 0\n ? (availableDropsIndex.current -= 1)\n : (availableDropsIndex.current =\n droppableContainers.length - 1);\n }\n }\n\n let dropTarget = droppableContainers[availableDropsIndex.current];\n dropTarget = document.querySelector(\n `#match-drop-${dropTarget?.props?.id}`\n );\n\n if (!dropTarget) {\n return currentCoordinates;\n }\n\n return {\n x: dropTarget.getBoundingClientRect().left,\n y: dropTarget.getBoundingClientRect().top,\n };\n };\n\n switch (e.code) {\n case 'ArrowRight':\n return {\n ...getXY(1),\n };\n case 'ArrowLeft':\n return {\n ...getXY(-1),\n };\n case 'ArrowDown':\n return {\n ...getXY(1),\n };\n case 'ArrowUp':\n return {\n ...getXY(-1),\n };\n }\n\n return undefined;\n },\n })\n );\n\n const getPosition = id => {\n return {\n x: 0,\n y: 0,\n };\n };\n\n useEffect(() => {\n if (allPlaceHoldersResolved) {\n return;\n }\n\n const localAllPlaceHoldersResolved = columns.column_a.every((d, index) => {\n return d.key.includes('placeholder');\n });\n\n if (localAllPlaceHoldersResolved) {\n setAllPlaceHoldersResolved(true);\n }\n });\n\n return (\n <_>\n <div\n ref={layout}\n className={reset ? 'fader_-5s' : ''}\n css={css`\n position: relative;\n width: 100%;\n `}\n role=\"application\"\n >\n <DndContext\n autoScroll={true}\n sensors={sensors}\n accessibility={{\n screenReaderInstructions,\n announcements,\n }}\n onDragStart={onDragStart}\n onDragCancel={() => {\n availableDropsIndex.current = NaN;\n }}\n onDragEnd={onDragEnd}\n >\n <LayoutResponsiveContainer>\n <div\n css={css`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n width: 100%;\n\n ${allPlaceHoldersResolved &&\n `\n width: 0px;\n height: 0px;\n overflow: hidden;\n transition: all 0.2s;\n `}\n `}\n >\n {columns.column_a}\n </div>\n <div\n css={css`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n width: 100%;\n `}\n >\n {columns.column_b}\n </div>\n </LayoutResponsiveContainer>\n </DndContext>\n\n {feedback && (\n <Feedback\n useMediaInFeedback={useMediaInFeedback}\n onClose={() => {\n window.dev() && checkReturnToInteractionEditing(true);\n\n //\n let matchDragsFocusable: any = Array.from(\n //\n layout?.current?.querySelectorAll(\n '.match-drag-focusable'\n ) as any\n );\n\n if (matchDragsFocusable.length) {\n matchDragsFocusable[0]?.focus();\n } else {\n (layout?.current\n ?.closest('section')\n ?.querySelector(\n '[class*=\"navigationButton\"]'\n ) as HTMLAnchorElement)?.focus();\n }\n\n setFeedback(null);\n }}\n >\n {(feedback as any).props.children}\n </Feedback>\n )}\n </div>\n </_>\n );\n};\n\nexport default Layout;\n","/** @jsx jsx */\n\nimport React, { useMemo } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport EditableText from 'components/lib/EditableText';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport Media from 'components/lib/Media';\nimport getMediaParent from 'services/apiHelpers/getMediaParent';\nimport Embed from 'components/lib/Embed';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport Audio from 'components/lib/Audio';\nimport imagePlaceholder from 'assets/Square.png';\n\nconst reRenderedFeedback = feedback =>\n feedback\n ? renderBlock(getBlockById(feedback.props.id), {\n EditableButton: EditableBtn,\n Feedback: ({ children, ...props }) => children,\n Correct: ({ children, ...props }) => children,\n Incorrect: ({ children, ...props }) => children,\n Text: EditableText,\n Image: ({ children, ...props }) => {\n return (\n <Image\n {...{\n ...props,\n placeholder: imagePlaceholder,\n }}\n />\n );\n },\n Video,\n Audio,\n Transcript: () => null,\n SVG,\n Embed,\n Media,\n PDF,\n OpenPDF,\n })\n : null;\n\nexport default reRenderedFeedback;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n useEffect,\n useContext,\n useRef,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport EditorBtn from 'components/UI/EditorBtn';\nimport Layout from './Layout_v2';\nimport { VisuallyHidden } from 'components/UI/VisuallyHidden';\nimport reRenderedFeedback from './ReRenderedFeedback';\nimport pubSub from 'services/pubSub';\n\nfunction shuffle(array) {\n let m = array.length,\n t,\n i;\n\n let n = [...array];\n\n // While there remain elements to shuffle…\n\n while (m) {\n // Pick a remaining element…\n\n const i = Math.floor(Math.random() * m--);\n\n // And swap it with the current element.\n\n t = n[m];\n\n n[m] = n[i];\n\n n[i] = t;\n }\n\n i = Math.floor(Math.random() * n.length);\n\n if (n.every((option, k) => option.props.id === array[k].props.id)) {\n let j = Math.floor(Math.random() * n.length);\n\n while (j === i) {\n j = Math.floor(Math.random() * n.length);\n }\n\n t = n[i];\n\n n[i] = n[j];\n\n n[j] = t;\n }\n\n return n;\n}\n\nconst ResetText = () => {\n return (\n <_>\n <VisuallyHidden>Reset</VisuallyHidden>\n <svg\n width=\"75\"\n height=\"16\"\n viewBox=\"0 0 75 16\"\n css={css`\n margin-top: 2px;\n margin-left: 7px;\n `}\n >\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(-1063.000000, -799.000000)\">\n <g transform=\"translate(1062.000000, 794.000000)\">\n <path\n d=\"M7.752,9.568 C7.752,8.072 6.936,7.12 4.93,7.12 L2.55,7.12 L2.55,12.067 L4.947,12.067 C6.885,12.067 7.752,11.013 7.752,9.568 Z M1.36,6.117 L4.93,6.117 C7.684,6.117 8.976,7.613 8.976,9.568 C8.976,11.2 8.058,12.577 6.052,12.951 L9.112,18 L7.684,18 L4.743,13.036 L2.55,13.036 L2.55,18 L1.36,18 L1.36,6.117 Z M15.8,9.602 C14.117,9.602 12.638,10.69 12.502,12.849 L19.03,12.849 C19.081,10.69 17.517,9.602 15.8,9.602 Z M20.101,15.059 C19.676,16.81 18.18,18.136 15.851,18.136 C13.216,18.136 11.295,16.3 11.295,13.359 C11.295,10.401 13.182,8.582 15.851,8.582 C18.571,8.582 20.237,10.52 20.237,12.883 C20.237,13.257 20.237,13.495 20.203,13.818 L12.502,13.818 C12.604,15.994 14.117,17.133 15.851,17.133 C17.432,17.133 18.503,16.3 18.843,15.059 L20.101,15.059 Z M29.339,15.535 C29.339,17.031 28.03,18.136 26.109,18.136 C24.001,18.136 22.522,17.082 22.369,15.382 L23.593,15.382 C23.695,16.402 24.579,17.133 26.092,17.133 C27.418,17.133 28.166,16.419 28.166,15.535 C28.166,13.24 22.59,14.583 22.59,11.098 C22.59,9.721 23.899,8.582 25.854,8.582 C27.843,8.582 29.152,9.636 29.254,11.421 L28.064,11.421 C27.996,10.384 27.231,9.602 25.82,9.602 C24.579,9.602 23.797,10.265 23.797,11.081 C23.797,13.597 29.288,12.254 29.339,15.535 Z M36.044,9.602 C34.361,9.602 32.882,10.69 32.746,12.849 L39.274,12.849 C39.325,10.69 37.761,9.602 36.044,9.602 Z M40.345,15.059 C39.92,16.81 38.424,18.136 36.095,18.136 C33.46,18.136 31.539,16.3 31.539,13.359 C31.539,10.401 33.426,8.582 36.095,8.582 C38.815,8.582 40.481,10.52 40.481,12.883 C40.481,13.257 40.481,13.495 40.447,13.818 L32.746,13.818 C32.848,15.994 34.361,17.133 36.095,17.133 C37.676,17.133 38.747,16.3 39.087,15.059 L40.345,15.059 Z M43.497,15.484 L43.497,9.721 L42.205,9.721 L42.205,8.718 L43.497,8.718 L43.497,6.389 L44.704,6.389 L44.704,8.718 L47.254,8.718 L47.254,9.721 L44.704,9.721 L44.704,15.484 C44.704,16.623 45.095,16.98 46.166,16.98 L47.254,16.98 L47.254,18 L45.979,18 C44.364,18 43.497,17.337 43.497,15.484 Z\"\n fill=\"#ffffff\"\n fillRule=\"nonzero\"\n ></path>\n <g transform=\"translate(60.000000, 5.000000)\">\n <path\n d=\"M7.5696,0.5 C11.4736,0.5 14.6396,3.665 14.6396,7.569 C14.6396,11.475 11.4736,14.64 7.5696,14.64 C3.6656,14.64 0.5006,11.475 0.5006,7.569 C0.5006,5.617 1.2916,3.85 2.5706,2.57\"\n stroke=\"#ffffff\"\n ></path>\n <polygon\n fill=\"#ffffff\"\n points=\"1.2679 1.291 3.8259 1.291 3.8259 3.843\"\n ></polygon>\n </g>\n </g>\n </g>\n </g>\n </svg>\n </_>\n );\n};\n\nconst Placeholder = () => {\n const context = useContext(interactionContext);\n\n const { panelWidth = 250, panelHeight = 250 } = context.props;\n\n return (\n <div\n css={css`\n width: ${panelWidth}px;\n height: ${panelHeight}px;\n margin: 10px;\n background: transparent;\n border: 2px solid transparent;\n `}\n />\n );\n};\n\nconst Matching = props => {\n const { id, children, reset } = props as any;\n const MatchDrags = children[0].props.children;\n const MatchDrops = children[1].props.children;\n const Feedbacks = children[2].props.children;\n\n const context: any = useContext(interactionContext);\n\n const [feedback, setFeedback] = useState<any>(null);\n\n const itemsSeen = useRef(unlockInteraction(context.id, MatchDrags.length));\n\n const [columns, setColumns] = useState({\n column_a: window.dev()\n ? MatchDrags\n : MatchDrags?.length > 1\n ? shuffle(MatchDrags)\n : MatchDrags,\n column_b: MatchDrops,\n });\n\n const matchingDragIdToDropIdMap = MatchDrags.reduce((acc, curr, index) => {\n return {\n ...acc,\n [curr?.props?.id]: MatchDrops[index]?.props?.id,\n };\n }, {});\n\n const onDragStart = data => {\n // console.log(data);\n };\n\n const onDragEnd = data => {\n const { active, collisions, over } = data;\n\n if (!collisions?.length) {\n return;\n }\n\n const { id: dragId } = active;\n const { id: dropId } = over;\n\n const { column_a, column_b } = columns;\n\n if (matchingDragIdToDropIdMap[dragId] !== dropId) {\n return;\n }\n\n const dragIndex = column_a.findIndex((drag: any) => {\n return drag.props.id === dragId;\n });\n\n const dropIndex = column_b.findIndex((drop: any) => {\n return drop.props.id === dropId;\n });\n\n // add the drag to column_b\n const updatedColumnB = [...column_b];\n updatedColumnB[dropIndex] = column_a[dragIndex];\n\n // update columns\n const updatedColumns = {\n column_a: column_a.map((d, index) =>\n updatedColumnB.includes(d) ? (\n <Placeholder key={`placeholder_${index}`} />\n ) : (\n d\n )\n ),\n column_b: updatedColumnB.map((entry, index) =>\n index === dropIndex\n ? React.cloneElement(entry, {\n isDragDisabled: true,\n })\n : entry\n ),\n };\n\n setFeedback(Feedbacks[dropIndex]);\n setColumns(updatedColumns);\n };\n\n const idDep = MatchDrags.map(entry => {\n return entry.props.id;\n }).join('_');\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n setColumns({\n column_a: MatchDrags,\n column_b: MatchDrops,\n });\n }, [\n // idDep,\n MatchDrags,\n MatchDrops,\n Feedbacks,\n ]);\n\n useEffect(() => {\n if (window.dev()) return;\n\n if (context.props.lockDown === 0) return;\n feedback && itemsSeen.current(feedback.props.id);\n });\n\n useEffect(() => {\n const pS = pubSub.subscribe(\n `MATCHING_INTERACTION_FEEDBACK_${context.id}`,\n ({ eventType, index }) => {\n switch (eventType) {\n case 'click': {\n setFeedback(Feedbacks[index]);\n return;\n }\n }\n }\n );\n\n return () => pS();\n }, [Feedbacks]);\n\n return (\n <Layout\n key={window.dev() ? idDep : undefined}\n id={id}\n columns={columns}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n feedback={reRenderedFeedback(feedback)}\n useMediaInFeedback={context.props.useMediaInFeedback}\n setFeedback={setFeedback}\n reset={reset}\n />\n );\n};\n\nexport const MatchingWrapper = ({ children, ...props }) => {\n const [reset, setReset] = useState<number>(0);\n\n return (\n <_\n key={`Matching_${children[0].props.children.length}${reset &&\n `_${reset}`}`}\n >\n <Matching children={children} {...{ ...props, reset }} />\n {window.dev() && (\n <div\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 60px;\n `}\n >\n <EditorBtn\n label={<ResetText />}\n onClick={() => setReset(Math.random())}\n css={css`\n width: 150px;\n `}\n />\n </div>\n )}\n </_>\n );\n};\n\nexport default Matching;\n","import getStore from 'services/getStore';\n\nexport default id => {\n const media = Object.values(getStore().getState().blocks).filter(\n (b: any) => b.type === 'Media'\n ) as any;\n\n const mediaParent = media.find(m => m.children.find((c: any) => c.id === id));\n\n return mediaParent || null;\n};\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useContext, cloneElement } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport { useDraggable } from '@dnd-kit/core';\nimport { interactionContext } from './interactionContext';\nimport { useSelector } from 'react-redux';\nimport hexToRgb from 'services/hexToRGB';\nimport { usePubSub } from 'services/pubSub';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nconst MatchDrag = props => {\n const {\n draggableId,\n isDragDisabled = false,\n isDropDisabled = false,\n dropZoneColor,\n // style,\n children,\n } = props;\n\n const context = useContext(interactionContext);\n\n const {\n panelBackground: _panelBackground = '#fff',\n panelBackgroundOpacity: _panelBackgroundOpacity = 100,\n panelBackgroundDragging: _panelBackgroundDragging,\n panelBackgroundDraggingOpacity: _panelBackgroundDraggingOpacity = 100,\n textColorDragging = '#fff',\n panelWidth = 250,\n panelHeight = 250,\n panelOutline = false,\n panelOutlineColor = '',\n panelBorderRadius = 5,\n panelShadow = true,\n focusColor = props.panelBackground,\n } = context.props;\n\n const { r, g, b } = hexToRgb(_panelBackground);\n const panelBackgroundOpacity = _panelBackgroundOpacity * 0.01;\n const panelBackground = `rgba(${r}, ${g}, ${b}, ${panelBackgroundOpacity})`;\n\n const { r: rr, g: gg, b: bb } = hexToRgb(_panelBackgroundDragging);\n const panelBackgroundDraggingOpacity = _panelBackgroundDraggingOpacity * 0.01;\n const panelBackgroundDragging = `rgba(${rr}, ${gg}, ${bb}, 1)`;\n\n let [media] = children;\n\n if (media) {\n media = cloneElement(media, {\n onMediaChange(child) {\n mediaTypeUpdated(child);\n },\n });\n }\n\n let initialMediaType = media?.props?.child ?? 1;\n const [mediaType, mediaTypeUpdated] = useState<number>(initialMediaType);\n\n // this used as the key to have the fricken image update\n // grabbing the src off the img directly from props doesn't kick in\n // so. going to the SOURCE of the src\n const keyFromSrc =\n window.dev() &&\n useSelector(\n (state: any) => state.blocks[children[0].props.children[1].props.id].props\n ).src;\n\n const [hoverHilite, publish] = usePubSub(\n `MATCHING_INTERACTION_FEEDBACK_${context.id}`\n );\n\n const hover =\n hoverHilite &&\n hoverHilite.draggableId === draggableId &&\n hoverHilite.eventType === 'mouseOver';\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n isDragging,\n } = useDraggable({\n id: `${props.id}`,\n });\n\n const style = transform\n ? {\n transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`,\n }\n : undefined;\n\n const id = `match-drag-${props?.id}`;\n\n return (\n <div\n className=\"droppable-container\"\n css={css`\n position: relative;\n width: ${panelWidth}px;\n height: ${panelHeight}px;\n margin: 10px;\n text-align: center;\n background: ${'transparent' || '#fff' || lGrey1};\n border-radius: ${panelBorderRadius}px;\n `}\n >\n <div\n ref={setNodeRef}\n id={id}\n className={!isDragDisabled ? 'match-drag-focusable' : ''}\n css={css`\n position: relative;\n width: ${panelWidth}px;\n height: ${panelHeight}px;\n text-align: center;\n ${isDragDisabled &&\n `.draggable-content {\n box-shadow: 0 0 0 1px ${lGrey2};\n }`}\n\n touch-action: none;\n\n border-radius: ${panelBorderRadius}px;\n ${!isDragging &&\n `&:focus {\n //\n ${getButtonFocus(\n ['#fff', '#ffffff'].includes(panelBackground)\n ? lGrey0\n : focusColor || panelBackground\n )}\n }`}\n\n pointer-events: ${isDragDisabled ? 'none' : 'auto'};\n `}\n style={{\n zIndex: isDragging ? 2147483647 : 0,\n cursor: window.dev() ? 'auto' : 'grab',\n ...style,\n }}\n {...(!window.dev() &&\n !isDragDisabled && {\n ...listeners,\n ...attributes,\n })}\n >\n <div\n className=\"draggable-content matchingPanel\"\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: ${panelWidth}px;\n height: ${panelHeight}px;\n padding: 10px;\n padding: ${mediaType === 0 ? '10px' : '0px'};\n\n border: 1px solid\n ${panelOutline && panelOutlineColor\n ? panelOutlineColor\n : 'transparent'};\n\n border-radius: ${panelBorderRadius}px;\n background: ${isDragging\n ? panelBackgroundDragging\n : panelBackground};\n box-shadow: ${panelShadow ? '0 0 15px rgba(0, 0, 0, 0.3)' : 'none'};\n transition: background 0.2s, box-shadow 0.2s;\n overflow: hidden;\n\n .chameleon-image > div,\n .chameleon-image img {\n width: ${panelWidth}px !important;\n height: ${panelHeight}px !important;\n }\n\n * {\n ${isDragging && `color: ${textColorDragging} !important;`}\n }\n ${!window.dev() &&\n `\n user-select: none;\n `}\n\n ${window.dev() &&\n hover &&\n `\n transition: border 0.3s;\n border: 1px solid ${lPink};\n `}\n `}\n >\n {media}\n </div>\n </div>\n </div>\n );\n};\n\nexport default MatchDrag;\n","/** @jsx jsx */\n\nimport { Fragment as _, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useDroppable } from '@dnd-kit/core';\nimport { colors } from 'styles/variables';\nimport { interactionContext } from './interactionContext';\n\nconst { lPink, lGrey0, lGrey1 } = colors;\n\nconst MatchDrop = props => {\n const { droppableId, isDropDisabled = false, style, children } = props;\n\n const context = useContext(interactionContext);\n const {\n dropZoneColor = lGrey1,\n panelWidth = 250,\n panelHeight = 250,\n panelBorderRadius = 5,\n } = context.props;\n\n const mediaType = children[0].props.child;\n\n const { isOver, setNodeRef } = useDroppable({\n id: props.id || droppableId,\n });\n\n const id = `match-drop-${props?.id}`;\n\n return (\n <div\n ref={setNodeRef}\n id={id}\n className={'droppable-container'}\n css={css`\n position: relative;\n width: ${panelWidth}px;\n height: ${panelHeight}px;\n margin: 10px;\n text-align: center;\n background: ${'transparent' || '#fff' || lGrey1};\n ${!isDropDisabled && `border: 2px dashed ${dropZoneColor};`}\n border-radius: ${panelBorderRadius}px;\n overflow: hidden;\n\n oultine: 10px solid red;\n `}\n style={style}\n >\n <div\n className=\"matchingPanel\"\n css={css`\n position: absolute;\n display: flex;\n align-items: center;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n padding: ${mediaType === 0 ? '10px' : '0px'};\n\n .chameleon-image > div,\n .chameleon-image img {\n width: ${panelWidth}px !important;\n height: ${panelHeight}px !important;\n }\n `}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport default MatchDrop;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n memo,\n useMemo,\n createContext,\n useContext,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Matching from './Matching_v2';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { Block } from '@chameleoncreator/creator-app';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport Image from 'components/lib/Image';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport Transcript from 'components/lib/Video/Transcript';\nimport SVG from 'components/lib/SVG';\nimport Embed from 'components/lib/Embed';\nimport getMediaParent from 'services/apiHelpers/getMediaParent';\nimport MatchDrag from './MatchDrag';\nimport MatchDrop from './MatchDrop';\nimport shouldUpdate from 'services/shouldUpdate';\nimport imagePlaceholder from 'assets/Square.png';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { ImageContext } from 'components/lib/Image';\n\nconst SingleColumnLayout = Row.bind({}) as any;\n\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: ({ children, ...props }) => (\n <EditableText {...{ ...props, className: 'matching-text' }} />\n ),\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: EditableBtn,\n Image: ({ children, ...props }) => {\n const mediaParent = getMediaParent(props.id);\n\n //\n return mediaParent ? (\n <Image\n {...{\n ...props,\n placeholder: imgPlaceholders[1],\n }}\n />\n ) : (\n <Image {...props} />\n );\n },\n Video,\n Audio,\n SVG,\n Embed,\n Media,\n PDF,\n OpenPDF,\n Transcript,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [matching, txt] = children;\n\n if (!includeAdditionalTextField) {\n return matching;\n }\n\n return (\n <_>\n {matching}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n\n MatchPairs: ({ children, ...props }) => children,\n Matching({ children, ...props }) {\n return (\n <ImageContext.Provider\n value={{\n editWrapperType: 1,\n placeholder: imagePlaceholder,\n\n //\n canUpdateContainerHeight: false,\n }}\n >\n <Matching {...props}>{children}</Matching>\n </ImageContext.Provider>\n );\n },\n MatchDrag,\n MatchDrop,\n DragContainer: ({ children, ...props }) => children,\n DropContainer: ({ children, ...props }) => children,\n AnswerContainer: ({ children, ...props }) => null,\n Answer: () => null,\n Feedback: ({ children, ...props }) => children,\n Correct: ({ children, ...props }) => children,\n Incorrect: ({ children, ...props }) => children,\n Modal: () => null,\n ModalWithEditableBtn: () => null,\n};\n\nconst MatchingDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default MatchingDisplay;\n","import MatchingDisplay from './MatchingDisplay';\n\nexport default MatchingDisplay;\n","/** @jsx jsx */\n\nimport { Fragment as _, memo, useContext } from 'react';\nimport { jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport SVG from 'components/lib/SVG';\nimport PDF from 'components/lib/PDF';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport Embed from 'components/lib/Embed';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport mediaDefault from 'assets/Rectangle.png';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [media, txt] = children;\n\n if (!includeAdditionalTextField) {\n return media;\n }\n\n return (\n <_>\n {media}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n Image: ({ children, ...props }) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n\n return (\n <Image\n {...{\n ...props,\n placeholder: !mediaContext?.isAdditionalMedia\n ? mediaDefault\n : imgPlaceholders[1],\n }}\n />\n );\n //\n },\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: EditableBtn,\n Video,\n Audio,\n SVG,\n PDF,\n OpenPDF,\n Media,\n Embed,\n Transcript: ({ children }) => children,\n};\n\nconst MultiMediaDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{\n ...interactionBlock,\n isOpen: props.isOpen,\n updateItemsSeen: null,\n }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default MultiMediaDisplay;\n","import TextAndImage from './MultiMediaDisplay';\n\nexport default TextAndImage;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport React, { Fragment as _ } from 'react';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport EditMarker from 'components/UI/EditMarker';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { colors } from 'styles/variables';\nimport Hotspot_CTA from 'assets/Hotspot_CTA.svg';\nimport { useSelector } from 'react-redux';\n\nconst { lPink } = colors;\n\nconst fadeIn = keyframes`\n from {\n width: 0px;\n height: 0px;\n }\n to {\n width: 100px;\n height: 100px;\n }\n`;\n\nconst EditWrapper = ({\n id,\n width = 0,\n height = 0,\n // selected\n}) => {\n const selected = useSelector((state: any) => state.focusedNodeId === id);\n // console.log('hotpsot : focusedNodeId ?', selected);\n\n return (\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n ${selected && 'pointer-events: none;'}\n `}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n // width: calc(100% - 10px);\n // height: calc(100% - 10px);\n\n width: ${width - 10}px;\n height: ${height - 10}px;\n\n // background: rgba(0, 0, 0, 0.1);\n box-shadow: 0 0 0 1px lightGrey;\n // transition: all 0.2s;\n cursor: pointer;\n\n // animation: ${fadeIn} 0.2s forwards;\n\n &:hover {\n background: rgba(0, 0, 0, 0);\n box-shadow: 0 0 0 1px ${lPink};\n }\n\n ${selected &&\n `\n // width: calc(100%);\n // height: calc(100%);\n\n width: ${width + 10}px;\n height: ${height + 10}px;\n\n background: none;\n box-shadow: 0 0 0 1px ${lPink};\n \n `}\n `}\n onClick={e => {\n e.stopPropagation();\n if (selected) return;\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && (\n <_>\n {/* <img src={Hotspot_CTA} /> */}\n <EditMarker />\n </_>\n )}\n </div>\n </div>\n );\n};\n\nexport default EditWrapper;\n","/** @jsx jsx */\n\nimport React, { Fragment as _ } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Modal from 'components/UI/Modal';\nimport { colors } from 'styles/variables';\nimport checkReturnToInteractionEditing from 'services/checkReturnToInteractionEditing';\n\nconst { lGrey0 } = colors;\nconst maxWidth = 512;\n\nconst Feedback = props => {\n const { useMediaInFeedback = true, onClose, children } = props;\n const [image, text, btn] = children;\n\n //\n return (\n <Modal onClose={() => onClose()}>\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n max-width: 768px;\n padding: 50px;\n `}\n >\n {useMediaInFeedback && (\n <div\n css={css`\n width: 75%;\n width: 100%;\n\n margin-bottom: 30px;\n\n .chameleon-image img {\n // max-height: 30vh !important;\n\n height: auto !important;\n object-fit: contain;\n }\n\n @media (max-width: 768px) {\n width: 100%;\n margin-bottom: 25px;\n }\n `}\n >\n {image}\n </div>\n )}\n <div\n css={css`\n width: 100%;\n margin-bottom: 30px;\n `}\n >\n {text}\n </div>\n <div\n css={css`\n display: flex;\n justify-self: flex-end;\n justify-content: center;\n width: 100%;\n `}\n >\n {window.dev() ? btn : React.cloneElement(btn, { onClick: onClose })}\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default Feedback;\n","/** @jsx jsx */\n\nimport { Fragment as _, useState } from 'react';\nimport { css, jsx, keyframes } from '@emotion/core';\n\nconst HotSpotTickedWhenSeen = props => {\n const {\n x,\n y,\n size,\n inverseScale,\n color = '#00D9D3',\n displayAsRadio = false,\n } = props;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n x={x}\n y={y}\n fill=\"none\"\n overflow=\"visible\"\n css={css({\n '*': {\n transform: `scale(${inverseScale})`,\n },\n pointerEvents: 'none',\n })}\n >\n <circle\n cx={0}\n cy={0}\n r={10}\n style={{\n fill: '#fff',\n WebkitFilter: `drop-shadow(0 0 4px rgba(0, 0, 0, 0.15))`,\n filter: `drop-shadow(0 0 4px rgba(0, 0, 0, 0.15))`,\n }}\n />\n {displayAsRadio ? (\n <svg overflow=\"visible\" x={0} y={0}>\n <circle\n cx={0}\n cy={0}\n r={10}\n style={{\n fill: color,\n transform: 'scale(0.8)',\n }}\n />\n </svg>\n ) : (\n <svg overflow=\"visible\" x={-5} y={-4}>\n <path\n d=\"M1.21741 3.93192L4.06313 6.51129L8.99789 0.838809\"\n style={{\n stroke: color,\n strokeWidth: 2,\n transformOrigin: '5px 4px',\n }}\n />\n </svg>\n )}\n </svg>\n );\n};\n\nexport { HotSpotTickedWhenSeen };\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useRef } from 'react';\nimport { css, jsx, keyframes } from '@emotion/core';\nimport { HotSpotTickedWhenSeen } from './HotSpotTickedWhenSeen';\n\nconst outerPulse = (x, y) => keyframes`\n0% {\n // opacity: .5;\n opacity: 1;\n transform: scale(0);\n transform-origin: ${x}px ${y}px;\n}\n// 50% {\n// opacity: 0.8;\n// }\n80%, 100% {\n opacity: 0;\n transform: scale(1);\n transform-origin: ${x}px ${y}px;\n}\n`;\n\nconst innerPulse = (x, y) => keyframes`\n0% {\n transform: scale(.8);\n transform-origin: ${x}px ${y}px;\n}\n50% {\n transform: scale(1);\n transform-origin: ${x}px ${y}px;\n}\n100% {\n transform: scale(.8);\n transform-origin: ${x}px ${y}px;\n}\n`;\n\nconst focus = keyframes`\n0% {\n transform: scale(0);\n}\n100% {\n transform: scale(1);\n}\n`;\n\nconst blur = keyframes`\n0% {\n transform: scale(1);\n}\n100% {\n transform: scale(0);\n}`;\n\nconst VisibleHotSpot = ({\n id,\n // size = 50,\n location,\n color = 'rgba(255, 0, 99, 0.5)',\n hotSpotsAnimated,\n hotSpotsVisible,\n inverseScale,\n hasBeenSeen,\n showSeenState,\n // showCorrectAnswer,\n submitState,\n hotSpotFocus,\n focusStrokeWidth = 2,\n immediateFeedback = true,\n isCorrect = false,\n enabled = true,\n showChecked,\n onClick,\n correctAnswers = [],\n ...props\n}: {\n id: string;\n // size?: number;\n location: number[];\n color?: string;\n hotSpotsAnimated?: boolean;\n hotSpotsVisible?: boolean;\n creating?: boolean;\n hasBeenSeen?: boolean;\n showSeenState?: boolean | 0 | 1;\n showCorrectAnswer?: boolean;\n inverseScale: number;\n hotSpotFocus: string | undefined;\n focusStrokeWidth?: number;\n immediateFeedback?: boolean;\n submitState: string;\n isCorrect?: boolean;\n enabled?: boolean;\n showChecked?: boolean | undefined;\n onClick: (e: any) => void;\n\n correctAnswers?: number[];\n selected: boolean | undefined;\n}) => {\n //\n\n // updates onResize since parent does for calculating scaleFactor\n let size = (props as any).size || 50;\n if (window.innerWidth < 480) {\n size = size * 0.6;\n }\n\n const [hover, setHover] = useState(false);\n // bit of a dance here to make sure if something ' goes wrong ' and we have an array\n // of more than 2 entries ( nested array )\n const [x, y] = location;\n\n const visibility = window.dev() ? true : hotSpotsVisible;\n //\n\n const radii = useRef<{ outer: number; inner: number }>({\n outer: 0,\n inner: 0,\n });\n\n if (![0, Infinity].includes(size / 2)) {\n radii.current.outer = size / 2;\n }\n\n if (![0, Infinity].includes(size / 2 / 3)) {\n radii.current.inner = size / 2 / 3;\n }\n\n const selected = !immediateFeedback ? props?.selected : null;\n\n return (\n <g\n style={{\n pointerEvents: !immediateFeedback\n ? enabled\n ? 'auto'\n : 'none'\n : 'auto',\n\n // we'll stamp this in here as an ' override '\n // so as not to futz with the logic above that works\n // if we're a quiz. and selected. kill pointer\n ...(!immediateFeedback &&\n correctAnswers?.length === 1 &&\n selected && {\n pointerEvents: 'none',\n }),\n }}\n onMouseOver={() => setHover(true)}\n onMouseOut={() => setHover(false)}\n onClick={onClick}\n >\n <circle\n id={id}\n className=\"fader_-2s\"\n cx={x}\n cy={y}\n r={radii.current.outer} // size / 2\n css={css`\n animation: ${!window.dev() && !hasBeenSeen && hotSpotsAnimated\n ? !hover\n ? outerPulse(x, y)\n : ''\n : ''}\n 1.25s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;\n `}\n style={{\n fill: visibility ? color : 'transparent',\n ...(window.dev && window.dev()\n ? {\n cursor: 'pointer',\n opacity: hover ? 0.5 : 1,\n transition: 'opacity 0.2s',\n }\n : {\n cursor: 'pointer',\n }),\n\n transition: 'fill 0.1s',\n }}\n />\n\n {hotSpotsAnimated && (\n <circle\n cx={x}\n cy={y}\n r={radii.current.inner} // size / 2 / 3\n css={css`\n pointer-events: none;\n animation: ${!window.dev() ? (!hover ? innerPulse(x, y) : '') : ''}\n 1.25s cubic-bezier(0.455, 0.03, 0.515, 0.955) -0.4s infinite;\n `}\n style={{\n fill: visibility ? color : 'transparent',\n transition: 'fill 0.2s',\n }}\n />\n )}\n\n <svg x={x} y={y} overflow=\"visible\">\n {`hotspot-${hotSpotFocus}` === id && (\n <circle\n cx={0}\n cy={0}\n r={size / 1.8}\n css={css({\n pointerEvents: 'none',\n fill: 'transparent',\n stroke: color,\n strokeWidth: 2 * inverseScale,\n })}\n />\n )}\n </svg>\n\n {showChecked && (\n <HotSpotTickedWhenSeen\n x={x}\n y={y}\n size={size}\n color={color}\n inverseScale={inverseScale}\n displayAsRadio={submitState && submitState !== 'resolved'}\n />\n )}\n </g>\n );\n};\n\nexport default VisibleHotSpot;\n","/** @jsx jsx */\n\nimport { Fragment as _ } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { HotSpotTickedWhenSeen } from './HotSpotTickedWhenSeen';\n\ninterface IPolygonProps {\n id: string;\n points: string;\n hotSpotsVisible: boolean;\n r: string | number;\n g: string | number;\n b: string | number;\n hotSpotColor: string;\n onClick: (e: any) => void;\n immediateFeedback?: boolean;\n isCorrect?: boolean;\n enabled?: boolean;\n hasBeenSeen: boolean;\n hotSpotFocus: string | undefined;\n showSeenState?: boolean | 0 | 1;\n inverseScale: number;\n showChecked?: boolean | undefined;\n submitState?: string;\n correctAnswers?: number[] | undefined;\n selected?: boolean | undefined;\n}\nconst Polygon = (props: IPolygonProps) => {\n const {\n id,\n hotSpotsVisible,\n r,\n g,\n b,\n hotSpotColor,\n onClick,\n immediateFeedback = true,\n isCorrect = false,\n enabled = true,\n hasBeenSeen,\n showSeenState,\n hotSpotFocus,\n inverseScale,\n showChecked,\n submitState,\n correctAnswers = [],\n } = props;\n\n let points = props.points;\n\n let pointsToArray;\n if (points.includes(',')) {\n points = points.replace(/,/g, ' ');\n }\n\n pointsToArray = points.split(' ');\n\n const xPoints = pointsToArray.filter((p, i) => {\n return i % 2 < 1;\n });\n const yPoints = pointsToArray.filter((p, i) => {\n return i % 2 > 0;\n });\n\n const minX: number = Math.min(...xPoints);\n const maxX: number = Math.max(...xPoints);\n const minY: number = Math.min(...yPoints);\n const maxY: number = Math.max(...yPoints);\n\n const x = minX + (maxX - minX) / 2;\n const y = minY + (maxY - minY) / 2;\n\n const selected = !immediateFeedback ? props?.selected : null;\n\n return (\n <svg>\n <polygon\n id={id}\n points={points}\n css={css`\n ${((window.dev && window.dev()) || hotSpotsVisible) &&\n `&:hover {\n fill: rgba(${r}, ${g}, ${b}, 0.25) !important;\n }`}\n `}\n style={\n window.dev()\n ? {\n fill: `rgba(${r}, ${g}, ${b}, 0.5)`,\n stroke: hotSpotColor,\n strokeWidth: 1,\n cursor:\n (window.dev && window.dev()) || hotSpotsVisible\n ? 'pointer'\n : 'auto',\n transition: 'fill 0.1s',\n }\n : {\n fill: 'rgba(0, 0, 0, 0)',\n ...(hotSpotsVisible && {\n stroke: hotSpotColor,\n strokeWidth:\n `hotspot-${hotSpotFocus}` === id ? 3 * inverseScale : 1,\n cursor: 'pointer',\n transition: 'fill 0.1s',\n }),\n\n pointerEvents: !immediateFeedback\n ? enabled\n ? 'auto'\n : 'none'\n : 'auto',\n\n // we'll stamp this in here as an ' override '\n // so as not to futz with the logic above that works\n // if we're a quiz. and selected. kill pointer\n ...(!immediateFeedback &&\n correctAnswers?.length === 1 &&\n selected && {\n pointerEvents: 'none',\n }),\n }\n }\n onClick={onClick}\n />\n\n {showChecked && (\n <HotSpotTickedWhenSeen\n x={x}\n y={y}\n size={75 * inverseScale}\n color={hotSpotColor}\n inverseScale={inverseScale}\n displayAsRadio={submitState && submitState !== 'resolved'}\n />\n )}\n </svg>\n );\n};\n\nexport { Polygon };\n","import { createContext } from 'react';\n\nexport default createContext<any>(null);\n","/** @jsx jsx */\nimport { useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport Image from 'assets/Image.svg';\nimport SVG from 'assets/SVG.svg';\nimport PDF from 'assets/PDF_smallIcon.svg';\nimport Video from 'assets/Video.svg';\nimport Audio from 'assets/AudioIcon.svg';\nimport Text from 'assets/Text.svg';\nimport Embed from 'assets/Embed.svg';\nimport getBlocksByType from 'services/apiHelpers/getBlocksByType';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport editorContext from 'components/Editor/editorContext';\nimport { H2 as H2_v2 } from '../EditorUtilities/UI/Headings';\n\nconst { lGrey3 } = colors;\n\nconst mediaTypes = {\n 0: 'Text',\n 1: 'Image',\n 2: 'Video',\n 3: 'SVG',\n 4: 'Embed',\n 5: 'Audio',\n 6: 'PDF',\n} as const;\n\n// this type stuff here is a bit of overkill maybe. but as an effort to not change the id's themselves\n// do the typescripty work to build on top of the existing pattern / interface\n\nconst mediaTypeIDs = Object.values(mediaTypes).map(\n mediaType => `media-${mediaType}` as const\n);\n\ntype MediaTypeID = typeof mediaTypeIDs[number];\n\ninterface Icon {\n id: MediaTypeID;\n src: string;\n isActiveType: boolean;\n hasPermission?: 'ENABLED' | 'LOCKED' | 'HIDDEN';\n}\n\nconst Icon = ({ id, src, isActiveType, hasPermission }: Icon) => {\n if (hasPermission === 'HIDDEN') {\n return null;\n }\n\n const isLocked =\n hasPermission === 'LOCKED'\n ? `\n pointer-events: none;\n opacity: 0.25;\n `\n : '';\n\n return src ? (\n <img\n id={id}\n src={src}\n css={css`\n width: 35px;\n height: 35px;\n cursor: pointer;\n pointer-events: ${isActiveType ? 'none' : 'auto'};\n background: ${isActiveType ? lGrey3 : ''};\n border-radius: 5px;\n padding: 5px;\n transition: all 0.2s;\n &:hover {\n background: ${lGrey3};\n }\n\n ${isLocked}\n `}\n />\n ) : (\n <div\n id={id}\n className=\"fas fa-code\"\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 35px;\n height: 35px;\n cursor: pointer;\n pointer-events: ${isActiveType ? 'none' : 'auto'};\n background: ${isActiveType ? lGrey3 : ''};\n border-radius: 5px;\n padding: 5px;\n transition: all 0.2s;\n &:hover {\n background: ${lGrey3};\n }\n\n ${isLocked}\n `}\n />\n );\n};\n\nconst SetMediaType = ({\n block,\n mediaParent,\n}: {\n block?: any;\n mediaParent: any;\n}) => {\n const context = useContext(editorContext);\n const { creatorInteractionEmbed } = context?.permissions || {};\n\n if (!mediaParent) {\n return null;\n }\n\n const mediaType = mediaParent.props.child;\n const { removeTypes, forceInclude } = mediaParent?.props;\n\n const isActiveType = index => mediaType === index;\n\n const interactionParent = getBlocksByType('Interaction').find(\n i => findByKeyVal_V2(i.id, 'id', mediaParent.id) as any\n );\n\n // all of this is gonna be replaced by removeTypes\n // and we have the hack of forceInclude\n // the problem is having to juggle legacy\n\n const isInteractionType = (interactionParent, type) =>\n interactionParent ? interactionParent.meta.subType === type : undefined;\n\n const isFlipCard = isInteractionType(interactionParent, 'FlipCard');\n const isClickAndReveal = isInteractionType(\n interactionParent,\n 'ClickAndReveal'\n );\n const isMatching = isInteractionType(interactionParent, 'Matching');\n const isAccordion = isInteractionType(interactionParent, 'Accordion');\n\n // older modules might not have ' new ' types\n // filter applied\n const availableMediaTypes = mediaParent.children.map(p => {\n const block: any = getBlockById(p.id);\n return block.type.toLowerCase();\n });\n\n let hasEmbed = availableMediaTypes.includes('embed');\n let hasAudio = availableMediaTypes.includes('audio');\n let hasPDF = availableMediaTypes.includes('pdf');\n\n const interactionParentSubType: string = interactionParent?.meta?.subType;\n\n // check that media is a child of feedback\n const interactionFeedback = getBlocksByType('Feedback').find(\n i => findByKeyVal_V2(i.id, 'id', mediaParent.id) as any\n );\n\n const isChildOfFeedback =\n interactionFeedback &&\n interactionFeedback?.meta?.subType?.toLowerCase() === 'feedback';\n\n // we're going to allow these media types in all modals/feedback now\n if (isChildOfFeedback) {\n // hasEmbed = false;\n // hasPDF = false;\n }\n //\n\n return (\n <div\n css={css`\n margin-top: 20px;\n margin-bottom: 20px;\n `}\n >\n <div>\n <H2_v2\n css={css`\n margin: 0 0 5px 0;\n `}\n >\n {mediaTypes[mediaType]}\n </H2_v2>\n </div>\n\n <div\n css={css`\n display: flex;\n\n img {\n margin-right: 5px;\n }\n `}\n onClick={(e: any) => {\n const type = e.target.id.split('-')[1];\n\n if (!type) return;\n\n const typeIndex = {\n Text: 0,\n Image: 1,\n Video: 2,\n SVG: 3,\n Embed: 4,\n Audio: 5,\n PDF: 6,\n }[type];\n\n // if we change type to anything other than video. ensure lockDown is false\n // include for audio too\n // if (type.toLowerCase() !== 'video') {\n if (!['video', 'audio'].includes(type.toLowerCase)) {\n setBlockProps(interactionParent, {\n lockDown: false,\n });\n }\n\n setBlockProps(getBlockById(mediaParent.id), {\n child: typeIndex,\n });\n\n requestAnimationFrame(() => {\n setCurrentBlock(getBlockById(mediaParent.children[typeIndex].id));\n });\n }}\n >\n <Icon id=\"media-Text\" src={Text} isActiveType={isActiveType(0)} />\n\n <Icon id=\"media-Image\" src={Image} isActiveType={isActiveType(1)} />\n\n <Icon id=\"media-Video\" src={Video} isActiveType={isActiveType(2)} />\n\n {hasAudio && (\n <Icon id=\"media-Audio\" src={Audio} isActiveType={isActiveType(5)} />\n )}\n\n <Icon id=\"media-SVG\" src={SVG} isActiveType={isActiveType(3)} />\n\n {!(isAccordion || isFlipCard) && hasPDF && (\n <Icon id=\"media-PDF\" src={PDF} isActiveType={isActiveType(6)} />\n )}\n\n {!(isAccordion || isFlipCard) && hasEmbed && (\n <Icon\n id=\"media-Embed\"\n src={Embed}\n isActiveType={isActiveType(4)}\n hasPermission={creatorInteractionEmbed}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default SetMediaType;\n","import { colors } from 'styles/variables';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nconst imageLibraryColors = {\n blue0: '#eaefff',\n blue1: '#c9d7f4',\n lightGrey: '#eaefff',\n};\n\nconst thumbnailsContainerHeight = (offset: number = 250) =>\n `calc(100vh - ${offset}px)`;\n\nexport default {\n ...colors,\n ...imageLibraryColors,\n thumbnailsContainerHeight,\n};\n","/** @jsx jsx */\n\nimport React, { useRef, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditorBtn from 'components/UI/EditorBtn';\nimport { colors } from 'styles/variables';\nimport getStore from 'services/getStore';\n\ninterface IFileUploader {\n label: string;\n onUploadStart?: any;\n onUploadComplete: (result: { [key: string]: any }, e: any) => void;\n btnColor?: string;\n style?: { [key: string]: any };\n}\n\nconst store = getStore();\nconst { lPink, lGrey0, lGrey1 } = colors;\n\nconst onFileSelected = (e, onUploadComplete) => {\n e.persist();\n\n const { projectId } = store.getState();\n\n window.client.files\n .set(e.target.files, projectId)\n .then(d => {\n onUploadComplete(d, e);\n })\n .catch(error => onUploadComplete(error, e));\n};\n\nconst FileUploader = ({\n label,\n onUploadStart,\n onUploadComplete,\n btnColor = lGrey0,\n style = {},\n ...props\n}: IFileUploader) => {\n // const { projectId } = store.getState();\n const fileUpload = useRef<HTMLInputElement>(null);\n\n return (\n <div>\n <EditorBtn\n label={label}\n css={css`\n padding-left: 30px;\n padding-right: 30px;\n background: ${btnColor};\n `}\n style={style}\n onClick={() => {\n onUploadStart && onUploadStart();\n fileUpload.current!.click();\n }}\n {...props}\n />\n <input\n ref={fileUpload}\n type=\"file\"\n id=\"file-upload\"\n style={{ display: 'none' }}\n onChange={e => {\n // window.client.files\n // .set(e.target.files, projectId)\n // .then(d => {\n // onUploadComplete(d);\n // })\n // .catch(error => onUploadComplete(error));\n onFileSelected(e, onUploadComplete);\n }}\n />\n </div>\n );\n};\n\nfunction rawUploader(files, onUploadComplete) {\n const { projectId } = store.getState();\n\n const FileList = {\n 0: files[0],\n length: 1,\n };\n\n console.log(FileList);\n\n window.client.files\n .set(FileList, projectId)\n .then(d => {\n onUploadComplete(d);\n })\n .catch(error => onUploadComplete(`ERROR : ${error}`));\n}\n\nexport default FileUploader;\nexport { onFileSelected, rawUploader };\n","export const getSVGSize = (url: string) => {\n return new Promise((resolve, reject) => {\n fetch(url)\n .then(r => r.text())\n .then(t => {\n if (!t) {\n throw 'no text in response.';\n }\n\n let svg: HTMLElement | SVGSVGElement | null = document.createElement(\n 'div'\n );\n svg.innerHTML = t;\n svg = svg.querySelector('svg');\n\n if (!svg) {\n throw 'no svg in response. something went really wrong here.';\n }\n\n let viewBox: any = svg.getAttribute('viewBox');\n\n let w;\n let h;\n\n if (viewBox) {\n viewBox = viewBox.split(/ /g);\n w = viewBox[2];\n h = viewBox[3];\n }\n\n const width = svg.getAttribute('width');\n const height = svg.getAttribute('height');\n\n if (width && height) {\n w = width;\n h = height;\n }\n\n if (!w || !h) {\n throw 'no width or height values are set in svg.';\n }\n\n // do not want to use defaults. if the values are not there we want to know\n // { width: w || 1100, height: h || 618.75 }\n resolve({ width: w, height: h } as any);\n })\n .catch(err => {\n reject(err);\n });\n });\n};\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n useContext,\n useRef,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport colors from '../variables';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport EditorBtn from 'components/UI/EditorBtn';\nimport FileUploader from 'components/UI/FileUploader';\nimport { ImageLibraryContext } from '../../EditImage';\nimport { getSVGSize } from 'services/getSVGSize';\n\nconst { lPink, lGrey0, lightGrey } = colors;\n\nconst cache = {};\n\nconst NoImageSelected = () => {\n return (\n <span\n css={css`\n font-size: 14px;\n font-weight: 700;\n text-transform: uppercase;\n `}\n >\n no image selected\n </span>\n );\n};\n\nconst PreviewImg = ({ preview }) => {\n return (\n <div\n className=\"fader_-5s\"\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n min-height: 215px;\n ${preview &&\n `\nbackground: url(\"${preview.url}\") no-repeat;\nbackground-size: contain;\nbackground-position: center;\n\nborder: 1px solid ${lightGrey};\nborder-radius: 3px;\n\n`}\n `}\n />\n );\n};\n\nexport const PreviewInfo = ({ property, value }) => {\n return value ? (\n <div\n css={css`\n margin: 5px 0 0 0;\n word-break: break-all;\n font-size: 12px;\n `}\n >\n <span\n css={css`\n font-weight: 700;\n `}\n >\n {property}:\n </span>{' '}\n {value}\n </div>\n ) : null;\n};\n\nconst YourImagePreviewPanel = ({\n preview,\n onUploadImage,\n // onAddImage,\n // onClose,\n}) => {\n const { onAddImage, onClose } = useContext(ImageLibraryContext)!;\n\n const [imgData, setImgData] = useState<any>(undefined);\n const [uploadError, setUploadError] = useState(false);\n\n const mounted = useRef(true);\n\n useEffect(\n () => () => {\n mounted.current = false;\n },\n []\n );\n\n useEffect(() => {\n if (!preview) {\n return;\n }\n\n // reset it until loaded\n if (imgData) {\n mounted.current && setImgData(undefined);\n }\n\n if (cache[preview.url]) {\n setImgData(cache[preview.url]);\n return;\n }\n\n //\n const img = new Image();\n img.src = preview.url;\n\n img.onload = () => {\n let name: any = preview.name.split(/\\//g);\n name = name[name.length - 1];\n\n mounted.current &&\n setImgData(\n (cache[preview.url] = {\n name,\n size: preview.size ? `${preview.size / 1000}kb` : 0,\n width: img.width,\n height: img.height,\n })\n );\n };\n }, [preview]);\n\n return (\n <div\n css={css`\n position: relative;\n width: 100%;\n height: 100%;\n `}\n >\n {imgData ? (\n <_>\n <PreviewImg key={preview && preview.url} preview={preview} />\n <div\n css={css`\n padding: 10px;\n `}\n >\n <PreviewInfo property=\"Name\" value={imgData.name} />\n <PreviewInfo property=\"Size\" value={imgData.size} />\n </div>\n </_>\n ) : (\n <div\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n min-height: 50%;\n `}\n >\n {!preview ? <NoImageSelected /> : <LoadingSpinner />}\n </div>\n )}\n\n <div\n css={css`\n width: 100%;\n margin: 15px 0 0 0;\n `}\n >\n <EditorBtn\n label=\"Insert image\"\n style={{\n width: `${'175px' || '100%'}`,\n // height: 35,\n // height: '31px !important',\n margin: '0 0 15px 0',\n border: `1px solid ${lGrey0}`,\n background: '#fff',\n color: lGrey0,\n fontSize: 11,\n\n opacity: imgData ? 1 : 0.25,\n pointerEvents: imgData ? 'auto' : 'none',\n\n hover: {\n color: '#fff',\n background: '#28292b',\n },\n }}\n css={css`\n min-height: 30px;\n `}\n onClick={() => {\n // stripping double ( for mac ? ) and single quotes\n // which would break\n\n const url = preview.url.replace(/'|\"/g, '');\n const id = preview.id;\n\n // is uplodaded file an svg?\n if (/\\.(svg)$/i.test(preview.url)) {\n let width;\n let height;\n\n getSVGSize(preview.url)\n .then((size: any) => {\n width = size?.width;\n height = size?.height;\n })\n .catch(err => {\n console.log(err);\n })\n .finally(() => {\n onAddImage!({\n url,\n id,\n width,\n height,\n size: preview.size ? `${preview.size / 1000}kb` : 0,\n });\n //\n onClose!();\n });\n } else {\n onAddImage!({\n url,\n id,\n ...(imgData && {\n width: imgData.width,\n height: imgData.height,\n }),\n size: preview.size ? `${preview.size / 1000}kb` : 0,\n });\n //\n onClose!();\n }\n\n // calling onClose here breaks svg uploading\n // since called before the svg async bizniz above has resolved\n //\n // onClose!();\n }}\n />\n\n <FileUploader\n label=\"Upload image\"\n btnColor={lPink}\n style={{\n width: `${'175px' || '100%'}`,\n // height: 35,\n minHeight: 30,\n border: `1px solid ${lGrey0}`,\n background: lGrey0,\n color: '#fff',\n fontSize: 11,\n\n hover: {\n color: '#28292b',\n background: '#fff',\n },\n }}\n onUploadStart={() => {\n setUploadError(false);\n }}\n onUploadComplete={(result, e) => {\n if (!result.url) {\n setUploadError(true);\n return;\n }\n\n onUploadImage(result, e);\n }}\n />\n\n {uploadError && (\n <div\n css={css`\n margin-top: 10px;\n padding-right: 20px;\n font-weight: 500;\n color: ${lPink};\n font-size: 11px;\n `}\n >\n An error occured while uploading your image. Please try again.\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default YourImagePreviewPanel;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport colors from '../variables';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport ThumbnailContainer from '../ThumbnailContainer';\n\nconst { lPink, lGrey0, lGrey1, lGrey2, blue0, blue1, lightGrey } = colors;\n\nconst cache = {};\n\nconst YourImagePreview = ({ data, selected, setSelected }) => {\n const [loaded, setLoaded] = useState(cache[data.url]);\n\n const mounted = useRef(true);\n\n let name = data.url.split(/\\//g);\n name = name[name.length - 1];\n\n useEffect(() => {\n if (cache[data.url]) {\n return;\n }\n\n const img = new Image();\n img.src = data.url;\n\n img.onload = () => {\n mounted.current && setLoaded((cache[data.url] = true));\n };\n }, [data]);\n\n useEffect(() => () => { mounted.current = false }, []);\n\n return (\n <ThumbnailContainer\n selected={selected && selected.url === data.url}\n label={name}\n onClick={setSelected}\n >\n <_>\n {loaded ? (\n <img\n src={data.url}\n css={css`\n height: 100%;\n object-fit: contain;\n `}\n />\n ) : (\n <LoadingSpinner />\n )}\n </_>\n </ThumbnailContainer>\n );\n};\n\nexport default YourImagePreview;\n","/** @jsx jsx */\nimport React, { Fragment as _, useState, useEffect, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport variables from '../variables';\nimport YourImagePreviewPanel from './YourImagePreviewPanel';\nimport Search from '../Search';\nimport YourImagePreview from './YourImagePreview';\nimport { useQuery } from 'urql';\nimport gql from 'graphql-tag';\nimport PrevNextPage from '../PrevNextPage';\nimport { ImageLibraryContext } from '../../EditImage';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\n\nconst { thumbnailsContainerHeight } = variables;\nconst URL_PREFIX = window['chameleon'].CHAMELEON_URL;\n\n//\nconst uploadsQuery = gql`\n query pgqlUploads(\n $accountId: ID!\n $slug: ID!\n $filter: String\n $per: Int\n $page: Int\n ) {\n organization(accountId: $accountId) {\n data {\n project(slug: $slug) {\n data {\n name\n uploads(filter: $filter, per: $per, page: $page) {\n data {\n id\n name\n url\n size\n }\n meta {\n totalCount\n totalPages\n currentPage\n perPage\n }\n }\n }\n }\n }\n }\n }\n`;\n\nlet moduleImages: any[] = [];\n\nconst YourLibrary = () => {\n const {\n currentImageSrc,\n currentImageId,\n cacheSelected,\n cacheFilter,\n } = useContext(ImageLibraryContext)!;\n const [filter, setFilter] = useState(cacheFilter!.value);\n const [page, setPage] = useState(1);\n const [per] = useState(25);\n const { projectId } = useSelector((state: State) => {\n return {\n projectId: state.projectId,\n };\n });\n\n const urlParams = new URL(window?.top?.location?.href || '');\n const path = urlParams?.pathname;\n const pathSplit = path\n .split(/\\//g)\n .filter((entry: string) => entry && entry !== 'edit');\n const accountId = pathSplit[0] || '';\n const slug = pathSplit[1] || '';\n\n const [res, reload] = useQuery({\n query: uploadsQuery,\n variables: {\n accountId,\n slug,\n filter,\n page,\n per,\n },\n requestPolicy: 'cache-and-network',\n });\n let meta: any = {};\n\n if (res && res?.data) {\n const uploads = res?.data?.organization?.data?.project?.data?.uploads || {};\n\n moduleImages = [\n ...uploads?.data.map((entry: any) => ({\n ...entry,\n url: `${URL_PREFIX}${entry.url}`,\n })),\n ];\n meta = uploads?.meta;\n }\n const isMore = meta.totalCount && per < meta.totalCount;\n const [selected, setSelected] = useState(cacheSelected!.yourLibrary);\n\n // load the currently ' selected ' image by its id\n useEffect(() => {\n if (filter) {\n return;\n }\n if (!cacheSelected!.yourLibrary) {\n const existingImageData = moduleImages.find((entry: any) => {\n //\n return entry.id === currentImageId;\n });\n existingImageData &&\n setSelected((cacheSelected!.yourLibrary = existingImageData));\n }\n }, [moduleImages.length]);\n useEffect(() => {\n if (!filter) {\n return;\n }\n !cacheSelected!.yourLibrary &&\n setSelected((cacheSelected!.yourLibrary = moduleImages[0]));\n }, [filter, moduleImages.length]);\n return (\n <div\n css={css`\n position: relative;\n display: flex;\n width: 100%;\n height: 100%;\n `}\n >\n <div\n css={css`\n flex: 1;\n padding: 0 5px 0 0;\n `}\n >\n {/* <UploadImg /> */}\n <YourImagePreviewPanel\n preview={selected}\n onUploadImage={(result, e) => {\n setSelected((cacheSelected!.yourLibrary = result));\n reload();\n }}\n />\n </div>\n <div\n css={css`\n position: relative;\n flex: 2;\n // padding: 10px 20px ${isMore ? 40 : 10}px 20px;\n padding: 10px 20px 40px 20px;\n background: #eaefff;\n `}\n >\n <Search\n defaultValue={cacheFilter!.value}\n onSearch={value => {\n // setPage(1);\n setFilter((cacheFilter!.value = value));\n // unset. .\n setSelected((cacheSelected!.yourLibrary = null));\n // reload();\n }}\n />\n <div\n css={css`\n position: relative;\n height: ${thumbnailsContainerHeight()};\n overflow-y: auto;\n `}\n >\n <div\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(155px, 1fr));\n `}\n >\n {moduleImages.map((entry, i) => {\n //\n const { id, name, url } = entry;\n return (\n <YourImagePreview\n key={`${name}${i}`}\n data={{\n ...entry,\n url,\n }}\n selected={selected}\n setSelected={() => {\n setSelected(\n (cacheSelected!.yourLibrary = {\n ...entry,\n url,\n })\n );\n }}\n />\n );\n })}\n </div>\n </div>\n <PrevNextPage\n page={page}\n totalPages={meta.totalPages}\n updatePage={dir => {\n setPage(page => {\n return (dir === 'prev'\n ? page > 1 && page - 1\n : page < meta.totalPages && page + 1) as number;\n });\n }}\n />\n {/* {isMore && <LoadMore setPer={setPer} />} */}\n </div>\n </div>\n );\n};\nexport default YourLibrary;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { updateRecoloredChameleonImagesAction } from 'actions/updateRecoloredChameleonImagesAction';\nimport ColorPicker from 'components/UI/ColorPicker';\nimport EditorBtn from 'components/UI/EditorBtn';\nimport { rawUploader } from 'components/UI/FileUploader';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport { Fragment as _, useContext, useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport getStore from 'services/getStore';\nimport { colors } from 'styles/variables';\nimport { ImageLibraryContext } from '../../EditImage';\nimport { ChameleonsLibraryContext } from './ChameleonsLibrary';\nimport { getSVGSize } from 'services/getSVGSize';\n\nconst store = getStore();\n\nconst update = (property, value) => {\n store.dispatch(\n updateRecoloredChameleonImagesAction({\n [property]: value,\n })\n );\n};\n\nconst { lGrey0 } = colors;\n\nlet defaultColor = '#61CECE';\n\nconst SVGDisplay = ({ getRef, svg }) => {\n return (\n <div\n className=\"fader_-5s\"\n css={css`\n padding: 5px;\n `}\n >\n <div ref={ref => getRef(ref)} dangerouslySetInnerHTML={{ __html: svg }} />\n </div>\n );\n};\n\nconst SVGPreview = ({ src, label }) => {\n const { onAddImage, onClose } = useContext(ImageLibraryContext)!;\n const { cache } = useContext(ChameleonsLibraryContext)!;\n\n const [svg, setSvg] = useState<any>(cache[src] || null);\n const [changeColorElements, setChangeColorElements] = useState([] as any);\n\n const fill = useSelector((state: any) => {\n return state.theme.recoloredChameleonImages[src] || defaultColor;\n });\n\n const mounted = useRef(true);\n const svgDOM = useRef<any>(null);\n const placeholder = useRef<any>(null);\n\n useEffect(\n () => () => {\n mounted.current = false;\n },\n []\n );\n\n useEffect(() => {\n if (cache[src]) {\n mounted.current && setSvg(cache[src]);\n return;\n }\n\n // unload it to clear that visual glitch\n if (svg !== null) {\n if (placeholder.current) {\n placeholder.current.style.height = `${\n svgDOM.current.getBoundingClientRect().height\n }px`;\n }\n setSvg('unload');\n }\n\n //\n fetch(src)\n .then(r => r.text())\n .then(r => {\n if (placeholder.current) {\n placeholder.current.style.height = '0px';\n }\n mounted.current && setSvg(((cache as any)[src] = r));\n });\n }, [src]);\n\n useEffect(() => {\n if (!svgDOM.current) return;\n\n svgDOM.current.querySelector('svg');\n\n const changeColorElements = Array.from(\n svgDOM.current.querySelectorAll('*')\n ).filter((elem: any) => elem.id === 'Change_colour');\n\n mounted.current && setChangeColorElements(changeColorElements);\n }, [svg]);\n\n useEffect(() => {\n if (!svgDOM.current) return;\n\n changeColorElements.forEach((elem: any) => {\n Array.from(elem.querySelectorAll('*')).forEach(\n (childElem: any) => (childElem.style.fill = fill)\n );\n });\n });\n\n return svg === null ? (\n <LoadingSpinner />\n ) : (\n <_>\n <div\n css={css`\n position: relative;\n width: 100%;\n border: 1px solid #eaefff;\n `}\n >\n {/* <div ref={placeholder} style={{ height: 0 }} /> */}\n {svg !== 'unload' ? (\n <_>\n <SVGDisplay\n key={src}\n getRef={ref => (svgDOM.current = ref)}\n svg={svg}\n />\n <div\n css={css`\n display: flex;\n align-items: center;\n padding: 5px 15px;\n border-top: 1px solid #eaefff;\n font-family: inherit;\n font-size: 12px;\n color: #98add9 !important;\n `}\n >\n {label}\n </div>\n </_>\n ) : (\n <div\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n `}\n >\n <LoadingSpinner />\n </div>\n )}\n </div>\n <div\n css={css`\n display: flex;\n align-items: center;\n margin: 20px 0;\n font-family: inherit;\n font-size: 12px;\n `}\n >\n <ColorPicker\n inColor={fill}\n outColor={color => {\n update(src, color);\n }}\n />\n <div\n css={css`\n margin: 0 0 0 15px;\n `}\n >\n Primary colour\n </div>\n </div>\n\n <div\n css={css`\n margin: 20px 0;\n `}\n >\n <EditorBtn\n label=\"Insert image\"\n style={{\n ...{\n width: `${'175px' || '100%'}`,\n margin: '0 0 15px 0',\n border: `1px solid ${lGrey0}`,\n background: '#fff',\n color: lGrey0,\n fontSize: 11,\n\n hover: {\n color: '#fff',\n background: '#28292b',\n },\n },\n }}\n css={css`\n min-height: 30px;\n `}\n onClick={() => {\n //\n const svg = svgDOM.current.querySelector('svg');\n const bbox = svg.getBBox();\n const { width, height } = bbox;\n\n const blob = new Blob(\n [new XMLSerializer().serializeToString(svg)],\n { type: 'image/svg+xml;charset=utf-8' }\n );\n\n const newLabel = label || 'esvg';\n const fileName = `${newLabel}.svg`;\n\n rawUploader(\n [\n new File([blob], fileName, {\n type: 'image/svg+xml',\n }),\n ],\n $ => {\n getSVGSize($.url)\n .then((size: any) => {\n // console.log({ 'svg size': size });\n\n onAddImage!({\n url: $.url,\n id: $.id,\n\n width: size.width,\n height: size.height,\n });\n })\n .catch(err => {\n console.log(err);\n\n // some error\n });\n\n // onAddImage!({\n // url: $.url,\n // id: $.id,\n // });\n\n onClose!();\n }\n );\n }}\n />\n </div>\n </_>\n );\n};\n\nexport default SVGPreview;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n useRef,\n useEffect,\n createContext,\n useContext,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport SVGPreview from './SVGPreview';\nimport ChameleonsImagePreview, { SVG } from './ChameleonsImagePreview';\nimport Search from '../Search';\nimport PrevNextPage from '../PrevNextPage';\nimport variables from '../variables';\nimport { useQuery, Query } from 'urql';\nimport gql from 'graphql-tag';\nimport LoadMore from '../LoadMore';\nimport { ImageLibraryContext } from '../../EditImage';\nimport { svgs as mockSVGs } from 'assets/testing/svgs';\n\nconst { thumbnailsContainerHeight } = variables;\n\nconst ESVGQuery = gql`\n query eql($tags: String, $page: Int, $per: Int) {\n esvgs(tags: $tags, page: $page, per: $per) {\n data {\n id\n label\n url\n createdAt\n tags\n }\n meta {\n totalCount\n totalPages\n currentPage\n perPage\n }\n }\n }\n`;\n\nconst ChameleonsLibraryContext = createContext<any>(undefined);\n\nlet URL_PREFIX = window['chameleon'].CHAMELEON_URL;\n// || 'https://chameleon-development.herokuapp.com/';\nconst LOCAL_DEV_TESTING = window.location.href.match('http://localhost:');\n\nif (LOCAL_DEV_TESTING) {\n URL_PREFIX = '';\n}\n\nconst cache = {};\n\nlet cacheSelected = 0;\nlet cachedSearch;\nlet svgs;\n\nconst ChameleonsLibrary = () => {\n const { cacheSelected } = useContext(ImageLibraryContext)!;\n\n const [selected, setSelected] = useState(cacheSelected!.chameleonsLibrary);\n const [previewData, setPreviewData] = useState(null);\n\n const [tags, setTags] = useState(cachedSearch);\n const [page, setPage] = useState(1);\n const [per, setPer] = useState(120);\n // const tags = useRef('');\n\n const [res, reload] = useQuery({\n query: ESVGQuery,\n variables: {\n // tags: tags.current,\n tags,\n page,\n per,\n },\n requestPolicy: 'cache-and-network',\n });\n\n let meta: any = {};\n\n if (res.data) {\n svgs = res.data.esvgs.data.map((entry: any) => entry);\n meta = res.data.esvgs.meta;\n }\n\n // if (LOCAL_DEV_TESTING) {\n // try {\n // if (mockSVGs && mockSVGs.length) {\n // svgs = mockSVGs.map((entry: any, index: number) => {\n // return {\n // url: entry,\n // label: `SVG_${index}`,\n // };\n // });\n\n // meta = {\n // totalCount: mockSVGs.length,\n // totalPages: mockSVGs.length / per,\n // };\n // }\n // } catch (err) {\n // //\n // }\n // }\n\n const isMore = meta.totalCount && per < meta.totalCount;\n\n useEffect(() => {\n if (svgs && !previewData) {\n setPreviewData(svgs[cacheSelected!.chameleonsLibrary]);\n }\n });\n\n const onSetSelected = (index, src) => {\n setSelected((cacheSelected!.chameleonsLibrary = index));\n setPreviewData(src);\n };\n\n return (\n <ChameleonsLibraryContext.Provider\n value={{\n cache,\n updateCache(src, svgDOM) {\n return (cache[src] = svgDOM);\n },\n }}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n width: 100%;\n height: 100%;\n `}\n >\n <div\n css={css`\n flex: 1;\n padding: 0 5px 0 0;\n `}\n >\n {previewData && (\n <SVGPreview\n // key={tags}\n src={`${URL_PREFIX}${(previewData as any).url}`}\n label={(previewData as any).label}\n />\n )}\n </div>\n\n <div\n css={css`\n position: relative;\n flex: 2;\n // padding: 10px 20px ${isMore ? 40 : 10}px 20px;\n padding: 10px 20px 40px 20px;\n background: #eaefff;\n `}\n >\n <Search\n defaultValue={cachedSearch}\n onSearch={value => {\n setTags((cachedSearch = value));\n onSetSelected(0, svgs[0]);\n }}\n />\n\n <div\n css={css`\n position: relative;\n height: ${thumbnailsContainerHeight()};\n overflow-y: auto;\n `}\n >\n <div\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(155px, 1fr));\n `}\n >\n {svgs &&\n svgs\n .filter((_, i) => i < per)\n .map((entry: any, i) => {\n const src = `${URL_PREFIX}${entry.url}`;\n const label = entry.label;\n\n return (\n <ChameleonsImagePreview\n key={`thumbnail${i}`}\n src={src}\n label={label}\n selected={selected === i}\n onClick={() => onSetSelected(i, entry)}\n color=\"#61cece\"\n />\n );\n })}\n </div>\n </div>\n\n <PrevNextPage\n page={page}\n totalPages={meta.totalPages}\n updatePage={dir => {\n setPage(page => {\n return (dir === 'prev'\n ? page > 1 && page - 1\n : page < meta.totalPages && page + 1) as number;\n });\n }}\n />\n </div>\n </div>\n </ChameleonsLibraryContext.Provider>\n );\n};\n\nexport default ChameleonsLibrary;\nexport { ChameleonsLibraryContext };\n","// Update this index when you add a new flag. it should always be the last number added\n// Current index = 13\n\nexport enum FeatureFlag {\n CreateImageInteraction = 1,\n CreateFullPageTextInteraction = 2,\n CreateMultipleChoiceInteraction = 3,\n CreateFlipcardInteraction = 4,\n CreateAccordionInteraction = 5,\n CreateCarouselInteraction = 6,\n CreateSortationInteraction = 7,\n CreateMatchingInteraction = 8,\n CreateHotspotInteraction = 9,\n CreateFiveStarRatingInteraction = 10,\n AddESVGImage = 11,\n CreateResultsPageInteraction = 12,\n CreateClickAndRevealInteraction = 13,\n LandingPage = 16,\n CreateTopicPortalInteraction = 14,\n UseMyFeedbackApp = 15,\n}\n\nexport const isFeatureEnabled = (feature: FeatureFlag) => {\n switch (feature) {\n case FeatureFlag.CreateImageInteraction:\n return true;\n case FeatureFlag.CreateFullPageTextInteraction:\n return true;\n case FeatureFlag.CreateMultipleChoiceInteraction:\n return true;\n case FeatureFlag.CreateFlipcardInteraction:\n return true;\n case FeatureFlag.CreateAccordionInteraction:\n return true;\n case FeatureFlag.CreateCarouselInteraction:\n return true;\n case FeatureFlag.CreateSortationInteraction:\n return true;\n case FeatureFlag.CreateMatchingInteraction:\n return true;\n case FeatureFlag.CreateHotspotInteraction:\n return true;\n case FeatureFlag.CreateFiveStarRatingInteraction:\n return true;\n case FeatureFlag.AddESVGImage:\n return true;\n case FeatureFlag.CreateResultsPageInteraction:\n return true;\n case FeatureFlag.CreateClickAndRevealInteraction:\n return true;\n case FeatureFlag.LandingPage:\n return true;\n case FeatureFlag.CreateTopicPortalInteraction:\n return true;\n case FeatureFlag.UseMyFeedbackApp:\n return true;\n }\n};\n\nenum InteractionType {\n Image = 1,\n FullPageText = 2,\n MultipleChoice = 3,\n Flipcard = 4,\n Accordion = 5,\n Carousel = 6,\n Sortation = 7,\n Matching = 8,\n Hotspot = 9,\n FiveStarRating = 10,\n AddESVGImage = 11,\n ResultsPage = 12,\n ClickAndReveal = 13,\n LandingPage = 16,\n TopicPortal = 14,\n UseMyFeedbackApp = 15,\n}\n\nconst interactionTypeList = Object.keys(InteractionType)\n .filter(key => typeof InteractionType[key] === 'number')\n .map(key => InteractionType[key]);\n\nconst toCreateFlag = (interactionType: InteractionType): FeatureFlag => {\n switch (interactionType) {\n case InteractionType.Image:\n return FeatureFlag.CreateImageInteraction;\n case InteractionType.FullPageText:\n return FeatureFlag.CreateFullPageTextInteraction;\n case InteractionType.MultipleChoice:\n return FeatureFlag.CreateMultipleChoiceInteraction;\n case InteractionType.Flipcard:\n return FeatureFlag.CreateFlipcardInteraction;\n case InteractionType.Accordion:\n return FeatureFlag.CreateAccordionInteraction;\n case InteractionType.Carousel:\n return FeatureFlag.CreateCarouselInteraction;\n case InteractionType.Sortation:\n return FeatureFlag.CreateSortationInteraction;\n case InteractionType.Matching:\n return FeatureFlag.CreateMatchingInteraction;\n case InteractionType.Hotspot:\n return FeatureFlag.CreateHotspotInteraction;\n case InteractionType.FiveStarRating:\n return FeatureFlag.CreateFiveStarRatingInteraction;\n case InteractionType.ResultsPage:\n return FeatureFlag.CreateResultsPageInteraction;\n case InteractionType.ClickAndReveal:\n return FeatureFlag.CreateClickAndRevealInteraction;\n case InteractionType.LandingPage:\n return FeatureFlag.CreateClickAndRevealInteraction;\n case InteractionType.TopicPortal:\n return FeatureFlag.CreateTopicPortalInteraction;\n case InteractionType.UseMyFeedbackApp:\n return FeatureFlag.UseMyFeedbackApp;\n default:\n return -1;\n }\n};\n\nexport const createableInteractions = interactionTypeList\n .map(toCreateFlag)\n .filter(isFeatureEnabled);\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n useRef,\n createContext,\n useContext,\n useMemo,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Select from 'react-select';\nimport { colors } from 'styles/variables';\nimport setBlock from 'services/apiHelpers/setBlockProps';\nimport getMediaParent from 'services/apiHelpers/getMediaParent';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport SetMediaType from 'components/Editor/SetMediaType';\nimport ImageLibrary from './ImageLibrary';\nimport EditorBtn from 'components/UI/EditorBtn';\nimport getStore from 'services/getStore';\n// updated UI\nimport { H1 as H1_v2, H2 as H2_v2 } from '../EditorUtilities/UI/Headings';\nimport NumberPicker_v2 from '../EditorUtilities/UI/NumberPicker';\nimport Info from '../EditorUtilities/UI/Info';\nimport {\n isFeatureEnabled,\n FeatureFlag,\n} from '../../../services/isFeatureEnabled';\nimport helpers from 'components/lib/EditableText/LinkModal/helpers';\nimport getLocationName from 'services/getLocationName';\nimport { NavigationSettings } from 'components/NavigationSettings/NavigationSettings_v2';\nimport { NavigationSettingsButton } from 'components/NavigationSettings/NavigationSettingsButton';\nimport { NavigationWidget } from 'components/NavigationSettings/NavigationWidget';\nimport CheckBox_v2 from '../EditorUtilities/UI/CheckBox';\nimport ColorPicker_v2 from '../EditorUtilities/UI/ColorPicker';\n\nimport { PreviewInfo } from './ImageLibrary/YourLibrary/YourImagePreviewPanel';\n\ninterface IImageLibraryContext {\n currentImageSrc: string;\n currentImageId: string | number;\n onAddImage?: ({}: any) => void;\n onClose?: () => void;\n cacheSelected?: { [key: string]: any };\n cacheFilter?: { [key: string]: any };\n}\n\nconst ImageLibraryContext = createContext<IImageLibraryContext | undefined>(\n undefined\n);\n\nconst { lGrey0, lGrey1, mint } = colors;\n\nconst { getState } = getStore();\n\nfunction getImgName(src) {\n let name: any = src.split(/\\//g);\n name = name[name.length - 1];\n\n return name;\n}\nconst Panel = ({ title, info, children, ...props }) => {\n return (\n <div\n css={css`\n margin: 20px 0 0 0;\n `}\n {...props}\n >\n <div\n css={css`\n margin: 0 0 5px 0;\n `}\n >\n {!info ? <H2_v2>{title}</H2_v2> : <Info info={info}>{title}</Info>}\n </div>\n {children}\n </div>\n );\n};\n\nconst Input = ({ defaultValue, update }) => {\n return (\n <input\n type=\"text\"\n defaultValue={defaultValue}\n css={css`\n width: 100%;\n margin: 0 0 10px 0;\n padding: 10px;\n border: 1px solid ${lGrey1};\n outline: none;\n resize: none;\n font-family: 'Poppins';\n font-size: 12px;\n `}\n onKeyUp={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n update(e.currentTarget.value);\n }\n }}\n onBlur={e => {\n e.preventDefault();\n update(e.currentTarget.value);\n }}\n />\n );\n};\n\nconst ImageLibraryBtn = ({ imageLibrary, setImageLibrary }) => {\n return (\n <EditorBtn\n label=\"Insert image\"\n style={{\n flexShrink: 0,\n width: `${'175px' || '100%'}`,\n border: `1px solid ${lGrey0}`,\n background: '#fff',\n color: lGrey0,\n fontSize: 11,\n hover: {\n color: '#fff',\n background: '#28292b',\n },\n }}\n css={css`\n min-height: 30px;\n `}\n onClick={() => {\n setImageLibrary(!imageLibrary);\n }}\n />\n );\n};\n\nconst currentLink = (() => {\n let $;\n return link => {\n return link || link === null ? ($ = link) : $;\n };\n})();\n\nconst EditImage = ({ block, type = null }) => {\n const [imageLibrary, setImageLibrary] = useState(false);\n const [assetLibrary, setAssetLibrary] = useState(false);\n\n const description = useRef(null);\n\n const properties = {\n src: undefined,\n imageId: '',\n size: 0,\n borderStyle: 'rectangle',\n fit: 'fill',\n fixedHeight: false,\n fixedHeightValue: 350,\n maxHeight: 50,\n imgSize: 0,\n description: '',\n imageZoom: false,\n imageZoomBackgroundColor: '#fff',\n fullHeight: false,\n defaultHeight: true,\n imageHeight: undefined,\n ...block.props,\n };\n\n const {\n id,\n src,\n imageId,\n size,\n borderStyle,\n fit,\n // fixedHeight,\n // fixedHeightValue,\n // maxHeight,\n imgSize,\n imgContainerHeight = 0,\n imgMagnification = 100,\n description: desc,\n imageZoom,\n imageZoomIconColor,\n imageZoomBackgroundColor,\n // href,\n // hrefInfo,\n linkData = {\n url: '',\n title: '',\n target: '',\n },\n // fullHeight,\n // imageHeight,\n // defaultHeight,\n } = properties;\n\n // const [showNavigationModal, setShowNavigationModal] = useState(false);\n const [modal, showModal] = useState(false);\n // const [showModuleNavigation, setShowModuleNavigation] = useState(false);\n\n const { getCurrentLinkAttribute, getValue } = helpers(\n {},\n () => {},\n linkData,\n value => {\n console.log(value);\n }\n );\n\n const isTextAndImage = useMemo(() => {\n const currentInteractionBlock: any = getBlockById(\n getState().currentInteraction\n );\n return currentInteractionBlock?.meta.subType === 'TextAndImage';\n }, []);\n\n const moduleFrame = useMemo(() => frames[0], []);\n let imageContainerHeightPermission;\n\n if (moduleFrame && moduleFrame?.location?.href?.includes('module.html')) {\n const section = moduleFrame.document.querySelector('section');\n //\n const interactionBlock =\n section?.id && (getBlockById(section?.id.replace('i', '')) as any);\n\n const canUpdateContainerHeight = section\n ?.querySelector(`#chameleon-image-${block.id}`)\n ?.getAttribute('data-can-update-container-height');\n\n imageContainerHeightPermission = canUpdateContainerHeight === 'true';\n\n const modalContainer = moduleFrame?.document.querySelector(\n `#modal-container`\n );\n\n if (modalContainer) {\n const imgElement = moduleFrame?.document.querySelector(\n `#img-${block.id}`\n );\n if (imgElement && modalContainer.contains(imgElement)) {\n imageContainerHeightPermission = true;\n }\n //\n }\n }\n\n let location = linkData?.url || block.props.location;\n\n let locationName: string[] | string | undefined = getLocationName(\n linkData.url\n );\n\n if (linkData.target === '_blank') {\n locationName = linkData.url;\n }\n\n if (locationName && Array.isArray(locationName)) {\n locationName = locationName.join('/');\n }\n\n const localModeImageUpload = [\n 'http://localhost:3011/',\n 'http://reviewsite.inspiregroup.co.nz',\n ].some(entry => window.location.href.match(entry));\n\n const Option = key => ({ innerRef, innerProps, ...props }) => {\n const { value, label } = props;\n\n return (\n <div\n ref={innerRef}\n {...innerProps}\n css={css`\n display: flex;\n align-items: center;\n height: 35px;\n padding: 0 10px;\n font-size: 12px;\n font-weight: ${properties[key] === value ? 500 : 200};\n cursor: pointer;\n pointer-events: ${properties[key] === value ? 'none' : 'auto'};\n &:hover {\n background: #deebff;\n }\n `}\n onClick={e => {\n setBlock(block, { [key]: value });\n }}\n >\n {label}\n </div>\n );\n };\n\n const borderStyles = {\n circle: 'Circle',\n rectangle: 'Rectangle',\n roundedRectangle: 'Rounded rectangle',\n };\n\n const fits = {\n fill: 'Fill',\n contain: 'Contain',\n cover: 'Cover',\n };\n\n if (type && type === 'logo') {\n return (\n <div\n css={css`\n margin: 20px 0;\n `}\n >\n <ImageLibraryBtn\n imageLibrary={imageLibrary}\n setImageLibrary={setImageLibrary}\n />\n <Panel\n title=\"Image description\"\n info=\"Give your image a description for screen readers.\"\n css={css`\n font-size: 12px;\n `}\n >\n <Input\n defaultValue={desc}\n update={value => {\n setBlock(block, { description: value });\n }}\n />\n </Panel>\n\n {imageLibrary && (\n <ImageLibraryContext.Provider\n value={{\n onAddImage(result) {\n setBlock(block, { src: result.url, imageId: result.id });\n },\n onClose() {\n setImageLibrary(!imageLibrary);\n },\n currentImageSrc: src,\n currentImageId: imageId,\n cacheSelected: {\n yourLibrary: null,\n chameleonsLibrary: 0,\n },\n cacheFilter: {\n value: '',\n },\n }}\n >\n <ImageLibrary />\n </ImageLibraryContext.Provider>\n )}\n </div>\n );\n }\n\n return (\n <div>\n <SetMediaType block={block} mediaParent={getMediaParent(block.id)} />\n\n <Panel\n title=\"Image sizing guide\"\n info={\n <div\n css={css({\n span: {\n fontWeight: 500,\n },\n })}\n >\n <div\n style={{\n fontWeight: 500,\n margin: '0 0 10px 0',\n }}\n >\n Max widths for:\n </div>\n <div>\n Single Column <span>- 1100px</span>\n </div>\n <div>\n Two Column <span>- 1100px</span>\n </div>\n <div>\n Full screen Width <span>- 1920px</span>\n </div>\n <div>\n Background Image <span>- 1920px</span>\n </div>\n <div\n style={{\n margin: '10px 0 0 0',\n }}\n >\n Aim to keep file size below 1.5mb\n </div>\n </div>\n }\n css={css`\n font-size: 12px;\n `}\n >\n {!localModeImageUpload ? (\n <ImageLibraryBtn\n imageLibrary={imageLibrary}\n setImageLibrary={setImageLibrary}\n />\n ) : (\n <div\n style={{\n width: 'calc(100% - 0px)',\n }}\n >\n <Input\n defaultValue={desc}\n update={value => {\n console.log({ src: value });\n\n setBlock(block, { src: value || undefined });\n }}\n />\n </div>\n )}\n\n {/* <ImgSrcLabel src={src} /> */}\n\n {src && (\n <div style={{ margin: '10px 0 0 0' }}>\n <PreviewInfo property=\"Name\" value={getImgName(src)} />\n {!!size && <PreviewInfo property=\"Size\" value={size} />}\n </div>\n )}\n </Panel>\n\n <Panel\n title=\"Shape\"\n info=\"Set the border shape of your image.\"\n css={css`\n font-size: 12px;\n `}\n >\n <Select\n key={borderStyle}\n placeholder={borderStyles[borderStyle] || 'Select'}\n options={Object.keys(borderStyles).map((e, i) => ({\n value: e,\n label: borderStyles[e],\n }))}\n components={{ Option: Option('borderStyle') }}\n />\n </Panel>\n\n <Panel\n title=\"Image fit\"\n info=\"Set the position of the image within the frame.\"\n css={css`\n font-size: 12px;\n `}\n >\n <Select\n key={fit}\n placeholder={fits[fit] || 'Select'}\n options={Object.keys(fits).map((e, i) => ({\n value: e,\n label: fits[e],\n }))}\n components={{ Option: Option('fit') }}\n />\n </Panel>\n\n {imageContainerHeightPermission && (\n <_>\n <Panel\n title=\"Image container height\"\n info=\"Increase the size of your image by controlling the height of its container.\"\n css={css`\n font-size: 12px;\n `}\n >\n <NumberPicker_v2\n label=\"Value\"\n value={imgContainerHeight}\n min={-1000000}\n increment={5}\n onChange={value => {\n setBlockProps(block, { imgContainerHeight: value });\n }}\n />\n </Panel>\n </_>\n )}\n\n <_>\n <Panel\n title=\"Image magnification\"\n info=\"Display a magnified version of your image within its container. Values can be positive or negative.\"\n css={css`\n font-size: 12px;\n `}\n >\n <NumberPicker_v2\n label=\"Value\"\n value={imgMagnification}\n min={0}\n increment={5}\n onChange={value => {\n setBlockProps(block, { imgMagnification: value });\n }}\n />\n </Panel>\n </_>\n\n {!(1 === 1) && isTextAndImage && (\n <_>\n <Panel\n title=\"Image size\"\n info=\"Increase the default size of your image by the selected value.\"\n css={css`\n font-size: 12px;\n `}\n >\n <NumberPicker_v2\n label=\"Value\"\n value={imgSize}\n increment={5}\n onChange={value => {\n setBlockProps(block, { imgSize: value });\n }}\n />\n </Panel>\n </_>\n )}\n\n <Panel\n title=\"Image description\"\n info=\"Give your image a description for screen readers.\"\n css={css`\n font-size: 12px;\n `}\n >\n <Input\n defaultValue={desc}\n update={value => {\n setBlock(block, { description: value });\n }}\n />\n </Panel>\n\n <div>\n <CheckBox_v2\n label=\"Include image zoom\"\n on={imageZoom}\n onClick={() =>\n setBlockProps(block, {\n imageZoom: !imageZoom,\n })\n }\n />\n </div>\n\n {imageZoom && (\n <div\n css={css`\n margin-top: 10px;\n `}\n >\n <div\n style={{\n margin: '0 0 10px 0',\n }}\n >\n <ColorPicker_v2\n inColor={imageZoomIconColor}\n outColor={color =>\n setBlockProps(block, { imageZoomIconColor: color })\n }\n label=\"Icon colour\"\n />\n </div>\n\n <ColorPicker_v2\n inColor={imageZoomBackgroundColor}\n outColor={color =>\n setBlockProps(block, { imageZoomBackgroundColor: color })\n }\n label=\"Background colour\"\n />\n </div>\n )}\n\n {isFeatureEnabled(FeatureFlag.AddESVGImage) && (\n <_>\n {imageLibrary && (\n <ImageLibraryContext.Provider\n value={{\n onAddImage(result) {\n const { url, id, width, height, size } = result;\n\n console.log({ url, id, width, height, size });\n\n setBlock(block, {\n src: url,\n imageId: id,\n width,\n height,\n size,\n });\n },\n onClose() {\n setImageLibrary(!imageLibrary);\n },\n currentImageSrc: src,\n currentImageId: imageId,\n cacheSelected: {\n yourLibrary: null,\n chameleonsLibrary: 0,\n },\n cacheFilter: {\n value: '',\n },\n }}\n >\n <ImageLibrary />\n </ImageLibraryContext.Provider>\n )}\n\n {isTextAndImage && (\n <div style={{ margin: '15px 0 0 0', fontSize: 12 }}>\n <div\n style={{\n margin: '20px 0 10px 0',\n fontWeight: 500,\n }}\n >\n <Info info=\"Click Navigation to link your image to a location within the module or an external url.\">\n IMAGE NAVIGATION\n </Info>\n </div>\n\n <NavigationWidget\n showModal={showModal}\n linkData={linkData}\n locationName={locationName}\n />\n </div>\n )}\n\n {modal && (\n <div>\n <NavigationSettings\n linkData={linkData}\n tab={linkData?.target === '_blank' ? 'external' : 'module'}\n onClose={() => showModal(false)}\n >\n {(localLinkData, updateLocalLinkData, currentTab) => {\n let label = 'Save and close';\n\n return (\n <div>\n <div\n css={css({\n display: 'flex',\n })}\n >\n <NavigationSettingsButton\n label=\"Cancel\"\n onClick={() => {\n showModal(false);\n }}\n />\n\n <NavigationSettingsButton\n label={label}\n enabled={true}\n style={{\n background: mint,\n color: '#fff',\n boxShadow:\n '-16px -16px 27px rgba(255, 255, 255, 0.5), 16px 16px 27px rgba(37, 59, 176, 0.14393)',\n }}\n onClick={() => {\n setBlockProps(block, {\n linkData: {\n ...linkData,\n ...localLinkData,\n ...(location && {\n location: null,\n }),\n },\n });\n\n showModal(false);\n }}\n />\n </div>\n <div\n css={css({\n margin: '15px 0 0 0',\n fontSize: 14,\n color: '#98add9',\n textDecoration: 'underline',\n textAlign: 'center',\n cursor: 'pointer',\n\n ':hover': {\n opacity: 0.8,\n },\n })}\n onClick={() => {\n setBlockProps(block, {\n linkData: {\n url: '',\n title: '',\n target: '',\n },\n });\n\n showModal(false);\n }}\n >\n Remove link\n </div>\n </div>\n );\n }}\n </NavigationSettings>\n </div>\n )}\n </_>\n )}\n </div>\n );\n};\n\nexport default EditImage;\nexport { ImageLibraryContext };\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport { colors } from 'styles/variables';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport { addHotSpotOption } from 'factories/interactions/hotspot_isolated';\nimport { setBlocksAction } from 'actions/setBlocksAction';\nimport setBlock from 'services/apiHelpers/setBlockProps';\nimport getStore from 'services/getStore';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport HotspotControlBtn from './HotspotControlBtn';\nimport EditorBtn from 'components/UI/EditorBtn';\nimport { Block } from '@chameleoncreator/creator-app';\nimport Hotspot_Add from 'assets/Hotspot_Add.svg';\nimport Hotspot_Done from 'assets/Hotspot_Done.svg';\nimport imageUploadError from 'assets/imageUploadError_hotSpot.svg';\nimport BigSwitch from 'components/UI/BigSwitch';\nimport { H1 as H1_v2 } from '../EditorUtilities/UI/Headings';\nimport TogglePanel from '../EditorUtilities/UI/TogglePanel';\nimport CheckBox_v2 from '../EditorUtilities/UI/CheckBox';\nimport NumberPicker_v2 from '../EditorUtilities/UI/NumberPicker';\nimport ColorPicker_v2 from '../EditorUtilities/UI/ColorPicker';\nimport Info from '../EditorUtilities/UI/Info';\nimport { ImageLibraryContext } from '../EditImage/EditImage';\nimport ImageLibrary from '../EditImage/ImageLibrary';\nimport pubSub from 'services/pubSub';\nimport setNewBlockNewTree from 'services/apiHelpers/setNewBlockNewTree';\nimport {\n removeHotSpotOption,\n getNextHotSpotBlock,\n} from 'factories/interactions/hotspot_isolated';\nimport { getPolygonCenter } from './getPolygonCenter';\nimport { Circle, Rectangle, Freeform, HotSpotTypeRow } from './HotSpotTypes';\nimport { Panel } from '../EditorUtilities/UI/Panel';\nimport { Input } from '../EditorUtilities/UI/Input';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { SingleColumnElement } from '../EditorUtilities/grid';\nimport Button from '../EditorUtilities/UI/Button';\n// import CorrectAnswersWidget from '../EditAssessmentQuestion/CorrectAnswersWidget';\n// import ModuleNavigationModal from 'components/Editor/ModuleGlobalNavigation/ModuleGlobalNavigationModal';\nimport { NavigationSettings } from 'components/NavigationSettings/NavigationSettings_v2';\nimport { NavigationSettingsButton } from 'components/NavigationSettings/NavigationSettingsButton';\n// import { NavigationWidget } from 'components/NavigationSettings/NavigationWidget';\n// import { moduleNavigationActionsList } from 'components/NavigationSettings/ModuleNavigation';\nimport PlusIcon from 'assets/Plus_Icon.svg';\nimport { isObject } from 'services/isObject';\n\nconst store = getStore();\nconst { lPink, lGrey0, lGrey3, mint } = colors;\n\nconst togglePanelsCache = {};\n\nexport const UPDATE_RECTANGLE_HOTSPOT_LOCAL_STATE =\n 'UPDATE_RECTANGLE_HOTSPOT_LOCAL_STATE';\n\nconst isEmpty = (obj: any[] | { [key: string]: any }): boolean => {\n return !!!(Array.isArray(obj) ? obj : Object.values(obj)).length;\n};\n\nconst setUpdated = () => {\n return new Date().toString();\n};\n\nconst EditHotSpot = ({ block }: { block?: any }) => {\n const {\n image,\n src,\n imageId = undefined,\n hotspotType,\n hotSpotColor,\n hotSpotSize,\n hotSpotsAnimated = true,\n hotSpotsVisible = true,\n rectangleBorderRadius = 0,\n rectangleDisplayOutlineOnly = false,\n useMediaInFeedback = true,\n showSeenState = true,\n description = undefined,\n } = block.props;\n\n const { id: hotspotsBlockId, children } = block;\n\n const [imageLibrary, setImageLibrary] = useState(false);\n\n const [modal, showModal] = useState(false);\n\n const [hotspotNavigationId, setHotspotNavigationId] = useState(undefined);\n\n // current 'active' hotSpot\n const currentActiveHotspotWithNav = getBlockById(hotspotNavigationId);\n //\n let linkData = {\n url: '',\n title: '',\n target: '',\n };\n\n if (currentActiveHotspotWithNav) {\n const currentActiveHotspotWithNavProps = currentActiveHotspotWithNav.props;\n //\n if (currentActiveHotspotWithNavProps) {\n const navigation = currentActiveHotspotWithNavProps.navigation;\n // we'll put nav on linkData early if it exists ( means it's a super old build )\n // overwrite later if we have the updated linkData\n if (navigation) {\n linkData.url = navigation;\n }\n\n const savedLinkData = currentActiveHotspotWithNavProps.linkData;\n\n // if we have savedLinkData && it is indeed a plain object that can be destructured\n // that second check is just being superstitious though at this point\n if (savedLinkData && isObject(savedLinkData)) {\n const { url, title, target } = savedLinkData;\n\n linkData = {\n url: url || navigation || '',\n title: title || '',\n target: target || '_self',\n };\n }\n }\n }\n\n // this is our actual interaction ' root '\n const hotSpotIsolatedParent = (Object.values(\n getStore().getState().blocks\n ).filter((b: any) => b.meta && b.meta.subType === 'HotSpot') as any).filter(\n (c: any) =>\n findByKeyVal_V2(c.id, 'type', 'HotSpotIsolated')!.id === hotspotsBlockId\n )[0];\n\n const hotSpotScorable = findByKeyVal_V2(\n hotSpotIsolatedParent.id,\n 'type',\n 'HotSpotScorable'\n ) as any;\n\n const {\n lockDown,\n score,\n immediateFeedback = true,\n isGlobalNavigation = false,\n } = hotSpotIsolatedParent.props;\n\n // we'll put these specifically on the scorable component if it exists\n const {\n correctAnswers = [],\n numberOfAttempts = 1,\n showAttemptNumber = true,\n showCorrectAnswer = true,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n } = hotSpotScorable?.props || {};\n\n let useMediaInHotSpotScorableFeedback =\n hotSpotScorable?.props?.useMediaInFeedback;\n if (useMediaInHotSpotScorableFeedback === undefined) {\n useMediaInHotSpotScorableFeedback = true;\n }\n\n const [currentHotspotId, setCurrentHotspotId] = useState<number | undefined>(\n undefined\n );\n\n const scoringQuizzes = useScoringQuizzes();\n\n const currentBlock = useRef<Block>(block);\n currentBlock.current = block;\n\n const scaleFactors = useRef<{\n scale: number;\n inverseScale: number;\n }>({\n scale: 1,\n inverseScale: 1,\n });\n\n const { scale, inverseScale } = scaleFactors.current;\n\n const currentHotspotBlock = useRef<Block | null>(null);\n currentHotspotBlock.current = currentHotspotId\n ? getBlockById(currentHotspotId)\n : null;\n\n const saveTogglePanelState = (panel, open) => {\n togglePanelsCache[hotspotsBlockId] = {\n ...togglePanelsCache[hotspotsBlockId],\n [panel]: open,\n };\n\n setBlockProps(block, { ...block.props });\n };\n\n const setHotspotType = shape => {\n const prevHotspotType = hotspotType;\n\n const [newBlock, newTree] = getNextHotSpotBlock(block)!;\n\n const inverseScaled = value => {\n return value * inverseScale;\n };\n\n if (newBlock && newBlock.props) {\n (newBlock.children as Block[]).forEach(child => {\n const childBlock: Block = getBlockById(child.id);\n const points: any[] | any[][] = childBlock?.props?.points;\n\n let newPoints: any = [];\n\n if (prevHotspotType === 'circle') {\n //\n if (shape === 'polygon') {\n newPoints = [\n [points[0], points[1] - inverseScaled(25)],\n [points[0] + inverseScaled(25), points[1]],\n [points[0], points[1] + inverseScaled(25)],\n [points[0] - inverseScaled(25), points[1]],\n ];\n }\n\n if (shape === 'rectangle') {\n newPoints = {\n x: points[0] - inverseScaled(30),\n y: points[1] - inverseScaled(20),\n w: inverseScaled(60),\n h: inverseScaled(40),\n };\n }\n }\n\n if (prevHotspotType === 'rectangle') {\n //\n const points_ = { ...points } as any;\n const center = [points_.x + points_.w / 2, points_.y + points_.h / 2];\n\n if (shape === 'polygon') {\n newPoints = [\n [center[0], center[1] - inverseScaled(25)],\n [center[0] + inverseScaled(25), center[1]],\n [center[0], center[1] + inverseScaled(25)],\n [center[0] - inverseScaled(25), center[1]],\n ];\n }\n\n if (shape === 'circle') {\n const points_ = { ...points } as any;\n newPoints = [points_.x + points_.w / 2, points_.y + points_.h / 2];\n }\n }\n\n if (prevHotspotType === 'polygon') {\n //\n if (shape === 'circle') {\n newPoints = getPolygonCenter(points);\n }\n\n if (shape === 'rectangle') {\n const center = getPolygonCenter(points);\n\n newPoints = {\n x: center[0] - inverseScaled(30),\n y: center[1] - inverseScaled(20),\n w: inverseScaled(60),\n h: inverseScaled(40),\n };\n }\n }\n\n if (childBlock.props) {\n childBlock.props.shape = shape;\n childBlock.props.points = newPoints;\n // this was broken : setUpdated;\n childBlock.props.updated = setUpdated();\n }\n });\n\n newBlock.props.hotspotType = shape;\n }\n\n setCurrentHotspotId(undefined);\n setNewBlockNewTree(newTree, newBlock, store, setBlocksAction);\n };\n\n const createNew = e => {\n const hotSpotId = `#${Math.random()\n .toString(16)\n .substr(2, 6)}`;\n\n const [newBlock, newTree] = addHotSpotOption(block, block.children.length, {\n shape: hotspotType,\n name: `Hotspot ${hotSpotId}`,\n points: hotspotType === 'rectangle' ? {} : [],\n updated: setUpdated(),\n });\n\n if (newBlock === block) {\n return;\n }\n\n const store = getStore();\n\n setNewBlockNewTree(newTree, newBlock, store, setBlocksAction);\n\n if (newBlock && newBlock.children) {\n const lastChild = newBlock.children[newBlock.children.length - 1] as any;\n setCurrentHotspotId(lastChild?.id);\n }\n };\n\n const remove = (hotSpotBlock, index) => {\n const [newBlock, newTree] = removeHotSpotOption(hotSpotBlock, index);\n\n if (newBlock === hotSpotBlock) {\n return;\n }\n\n setNewBlockNewTree(newTree, newBlock, store, setBlocksAction);\n };\n\n const showFeedback = (feedbackFor: 'correct' | 'incorrect' | 'attempt') => {\n pubSub.publish(`SHOW_HOTSPOT_FEEDBACK_${hotSpotIsolatedParent.id}`, {\n result: feedbackFor,\n });\n };\n\n useEffect(() => {\n return () => {\n if (currentHotspotBlock.current) {\n currentHotspotBlock.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n return () => {\n // remove any hotspots that have no points\n const [newBlock, newTree] = getNextHotSpotBlock(currentBlock.current)!;\n\n const oldBlockHasChildren =\n currentBlock.current && Array.isArray(currentBlock.current.children);\n const newBlockHasChildren =\n newBlock.children && Array.isArray(newBlock.children);\n if (oldBlockHasChildren && newBlockHasChildren) {\n newBlock.children = (currentBlock.current.children as Block[]).filter(\n child => {\n const hotspot = getBlockById(child.id) as any;\n\n const { name, points } = hotspot?.props;\n //\n return !isEmpty(points);\n }\n );\n\n setNewBlockNewTree(newTree, newBlock, store, setBlocksAction);\n }\n };\n }, []);\n\n useEffect(() => {\n const pS = pubSub.subscribe(\n 'UPDATE_HOTSPOT_POINTS',\n ({ points, updateRectangleHotspotLocalState = undefined }) => {\n //\n\n if (!currentHotspotBlock.current) {\n return;\n }\n\n if (hotspotType === 'circle') {\n setBlockProps(currentHotspotBlock.current, {\n points,\n updated: new Date().toString(),\n });\n }\n\n if (hotspotType === 'polygon') {\n const currentHotspotBlockPoints =\n currentHotspotBlock.current?.props?.points;\n\n setBlockProps(currentHotspotBlock.current, {\n points: [...currentHotspotBlockPoints, points],\n updated: setUpdated(),\n });\n }\n\n if (hotspotType === 'rectangle') {\n if (updateRectangleHotspotLocalState) {\n pubSub.publish(\n `${UPDATE_RECTANGLE_HOTSPOT_LOCAL_STATE}_hotspot-${currentHotspotBlock.current.id}`,\n points\n );\n\n return;\n }\n\n setBlockProps(currentHotspotBlock.current, {\n points,\n updated: setUpdated(),\n });\n }\n }\n );\n\n return () => {\n pS();\n };\n }, [currentHotspotBlock.current, hotspotType]);\n\n useEffect(() => {\n const pS = pubSub.subscribe('UPDATE_HOTSPOT_SCALE_FACTORS', $ => {\n scaleFactors.current = $;\n //\n });\n\n return () => {\n pS();\n };\n }, [src]);\n\n useEffect(() => {\n const pS = pubSub.subscribe(\n `OPEN_GLOBAL_NAVIGATION_${hotSpotIsolatedParent.id}`,\n ({ id }) => {\n setHotspotNavigationId(id);\n requestAnimationFrame(() => {\n showModal(true);\n });\n }\n );\n\n return pS;\n }, []);\n\n return (\n <_>\n <TogglePanel\n label={<H1_v2>interaction functions & behaviours</H1_v2>}\n toggle={\n togglePanelsCache[hotspotsBlockId]\n ? togglePanelsCache[hotspotsBlockId]['interaction: settings']\n : true\n }\n onToggle={open => saveTogglePanelState('interaction: settings', open)}\n >\n <CheckBox_v2\n label=\"Lock down\"\n on={!!lockDown}\n onClick={() => {\n setBlockProps(hotSpotIsolatedParent, {\n lockDown: !!lockDown ? 0 : 1,\n });\n }}\n />\n\n {hotSpotScorable && !immediateFeedback && (\n <div\n style={{\n ...(scoringQuizzes.length && {\n opacity: 0.5,\n pointerEvents: 'none',\n }),\n }}\n >\n {!!scoringQuizzes.length && (\n <div\n style={{\n margin: '0 0 5px 0',\n fontSize: 12,\n fontWeight: 500,\n color: 'red',\n }}\n >\n Scoring is disabled for this interaction while an assessment is\n scoring.\n </div>\n )}\n <CheckBox_v2\n label=\"Score\"\n on={!!score}\n onClick={() =>\n setBlockProps(hotSpotIsolatedParent, { score: !score })\n }\n />\n </div>\n )}\n\n {/* was score */}\n {!immediateFeedback && (\n <_>\n <div\n style={{\n display: 'flex',\n width: '100%',\n margin: '10px 0 15px 0',\n }}\n >\n <Button\n enabled={true}\n onClick={e => {\n showFeedback('correct');\n }}\n style={{\n margin: '0 5px 0 0',\n }}\n >\n Show correct\n </Button>\n\n <Button\n enabled={true}\n onClick={e => {\n showFeedback('incorrect');\n }}\n style={{\n margin: '0 0 0 5px',\n }}\n >\n Show incorrect\n </Button>\n </div>\n <div\n css={css({\n margin: '10px 0 0 0',\n })}\n >\n <NumberPicker_v2\n label=\"Number of attempts\"\n min={1}\n value={numberOfAttempts}\n onChange={value => {\n setBlockProps(hotSpotScorable, { numberOfAttempts: value });\n }}\n />\n </div>\n {numberOfAttempts > 1 && (\n <SingleColumnElement>\n <Button\n enabled={true}\n onClick={e => {\n showFeedback('attempt');\n }}\n >\n Show attempt feedback\n </Button>\n </SingleColumnElement>\n )}\n {numberOfAttempts > 1 && (\n <CheckBox_v2\n label=\"Show attempt number\"\n on={showAttemptNumber ? 1 : 0}\n onClick={() =>\n setBlockProps(hotSpotScorable, {\n showAttemptNumber: !showAttemptNumber,\n })\n }\n />\n )}\n <div\n css={css`\n margin: 10px 0 0 0;\n `}\n >\n <CheckBox_v2\n label=\"Include media in feedback\"\n on={useMediaInHotSpotScorableFeedback ? 1 : 0}\n onClick={() =>\n setBlockProps(hotSpotScorable, {\n useMediaInFeedback: !useMediaInHotSpotScorableFeedback,\n })\n }\n />\n </div>\n <div\n css={css`\n margin: 10px 0 0 0;\n `}\n >\n <CheckBox_v2\n label=\"Show correct answer on completion\"\n on={showCorrectAnswer ? 1 : 0}\n onClick={() =>\n setBlockProps(hotSpotScorable, {\n showCorrectAnswer: !showCorrectAnswer,\n })\n }\n />\n </div>\n\n <div\n style={{\n margin: '15px 0 15px 0',\n }}\n >\n <Info\n info=\"Control how you would like the interaction to progress when resolved.\"\n style={{ margin: '0 0 5px 0' }}\n >\n Navigation\n </Info>\n\n <div>\n <CheckBox_v2\n label=\"Remain on page when answered correct\"\n on={navigationBehaviour.correct ? 1 : 0}\n style={{\n margin: '0 0 10px 0',\n }}\n onClick={() =>\n setBlockProps(hotSpotScorable, {\n navigationBehaviour: {\n ...navigationBehaviour,\n correct: !navigationBehaviour.correct,\n },\n })\n }\n />\n\n <CheckBox_v2\n label=\"Remain on page when answered incorrect\"\n on={navigationBehaviour.incorrect ? 1 : 0}\n style={{\n margin: '0 0 10px 0',\n }}\n onClick={() =>\n setBlockProps(hotSpotScorable, {\n navigationBehaviour: {\n ...navigationBehaviour,\n incorrect: !navigationBehaviour.incorrect,\n },\n })\n }\n />\n </div>\n </div>\n </_>\n )}\n </TogglePanel>\n\n <TogglePanel\n label={<H1_v2>hotspot styling</H1_v2>}\n toggle={\n togglePanelsCache[hotspotsBlockId]\n ? togglePanelsCache[hotspotsBlockId]['hotspot: styling']\n : true\n }\n onToggle={open => saveTogglePanelState('hotspot: styling', open)}\n hr={false}\n >\n <div\n css={css`\n margin: 15px 0 0 0;\n `}\n >\n <EditorBtn\n label=\"Insert image\"\n style={{\n width: `${'175px' || '100%'}`,\n margin: '0 0 15px 0',\n border: `1px solid ${lGrey0}`,\n background: '#fff',\n color: lGrey0,\n fontSize: 11,\n\n hover: {\n color: '#fff',\n background: '#28292b',\n },\n }}\n css={css`\n min-height: 30px;\n `}\n onClick={() => {\n setImageLibrary(!imageLibrary);\n }}\n />\n </div>\n\n <Panel\n title=\"Image description\"\n info=\"Give your image a description for screen readers.\"\n css={css`\n font-size: 12px;\n `}\n >\n <Input\n defaultValue={description}\n update={value => {\n setBlock(block, { description: value });\n }}\n />\n </Panel>\n <div\n css={css`\n margin: 10px 0 0 0;\n `}\n >\n <Info\n info={\n <_>\n <div>\n Select \"Circle\" to create round hot spots with an optional\n pulsing animation.\n </div>\n <div>\n Select \"Rectangle\" to draw an outline around areas of\n interest.\n </div>\n <div>\n Select \"Freeform\" to draw an outline around areas of interest.\n </div>\n </_>\n }\n >\n Type\n </Info>\n </div>\n\n <div\n css={css({\n position: 'relative',\n margin: '0 0 0 -15px',\n })}\n >\n <HotSpotTypeRow\n selected={hotspotType === 'circle'}\n label=\"Circle\"\n onClick={() => {\n setHotspotType('circle');\n }}\n >\n <Circle\n color={hotspotType === 'circle' ? hotSpotColor : undefined}\n />\n </HotSpotTypeRow>\n\n <HotSpotTypeRow\n selected={hotspotType === 'rectangle'}\n label=\"Rectangle\"\n onClick={() => {\n setHotspotType('rectangle');\n }}\n >\n <Rectangle\n color={hotspotType === 'rectangle' ? hotSpotColor : undefined}\n />\n </HotSpotTypeRow>\n\n <HotSpotTypeRow\n selected={hotspotType === 'polygon'}\n label=\"Freeform\"\n onClick={() => {\n setHotspotType('polygon');\n }}\n >\n <Freeform\n color={hotspotType === 'polygon' ? hotSpotColor : undefined}\n />\n </HotSpotTypeRow>\n </div>\n\n <ColorPicker_v2\n key=\"hotSpotColor\"\n inColor={hotSpotColor}\n outColor={color => setBlockProps(block, { hotSpotColor: color })}\n label=\"Color\"\n />\n {hotspotType === 'circle' && [\n <NumberPicker_v2\n key=\"hotSpotSize\"\n value={hotSpotSize}\n increment={5}\n onChange={value => {\n setBlockProps(block, { hotSpotSize: value });\n }}\n label=\"Size\"\n />,\n <CheckBox_v2\n key=\"hotSpotsAnimated\"\n label=\"Include animation\"\n on={hotSpotsAnimated}\n onClick={() => {\n setBlockProps(block, { hotSpotsAnimated: !hotSpotsAnimated });\n }}\n />,\n ]}\n\n {hotspotType === 'rectangle' && (\n <_>\n <NumberPicker_v2\n key=\"rectangleBorderRadius\"\n value={rectangleBorderRadius}\n increment={1}\n onChange={value => {\n setBlockProps(block, { rectangleBorderRadius: value });\n }}\n label=\"Border radius\"\n />\n\n <CheckBox_v2\n label=\"Display outline only\"\n on={rectangleDisplayOutlineOnly}\n onClick={() => {\n setBlockProps(block, {\n rectangleDisplayOutlineOnly: !rectangleDisplayOutlineOnly,\n });\n }}\n style={{\n marginTop: 10,\n }}\n />\n </_>\n )}\n <CheckBox_v2\n label=\"Visibilty\"\n on={hotSpotsVisible}\n onClick={() => {\n setBlockProps(block, { hotSpotsVisible: !hotSpotsVisible });\n }}\n />\n {/* !score && */}\n {!isGlobalNavigation && (\n <div\n css={css`\n margin: 10px 0 0 0;\n `}\n >\n <CheckBox_v2\n label=\"Include media in feedback\"\n on={useMediaInFeedback ? 1 : 0}\n onClick={() =>\n setBlockProps(block, {\n useMediaInFeedback: !useMediaInFeedback,\n })\n }\n />\n </div>\n )}\n\n <div\n css={css`\n margin: 10px 0 0 0;\n `}\n >\n <CheckBox_v2\n label={\n immediateFeedback ? 'Show seen state' : 'Show selected state'\n }\n on={!!showSeenState}\n onClick={() =>\n setBlockProps(block, { showSeenState: !!showSeenState ? 0 : 1 })\n }\n />\n </div>\n\n {immediateFeedback && (\n <div\n css={css`\n margin: 15px 0 0 0;\n `}\n >\n <Info\n info={\n <_>\n <div style={{ margin: '0 0 10px 0' }}>\n Choose between having your content display in a modal window\n or navigate to another location in your module or an\n external resource.\n </div>\n <div>\n Once you've created a hotspot, click on it in the module\n view to add/update content or navigation.\n </div>\n </_>\n }\n style={{ margin: '0 0 5px 0' }}\n >\n Content type\n </Info>\n\n <BigSwitch\n leftItem=\"Modal\"\n rightItem=\"Navigation\"\n leftValue=\"modal\"\n rightValue=\"navigation\"\n value={isGlobalNavigation ? 'navigation' : 'modal'}\n callback={value => {\n setBlockProps(hotSpotIsolatedParent, {\n isGlobalNavigation: value === 'navigation' ? true : false,\n });\n }}\n />\n </div>\n )}\n\n {(true || image) && (\n <div\n css={css`\n margin: 15px 0 0 0;\n // border: 1px solid ${lGrey3};\n // padding: 5px 0;\n `}\n >\n <div>\n {children.map((child, i) => {\n const { id } = child;\n const hotspot: Block = getBlockById(id);\n const { name, points, navigation } = hotspot?.props as any;\n\n const editing = currentHotspotId === id;\n\n return (\n <HotspotControlBtn\n key={`HotspotControlBtn_${id}`}\n hotSpot={child}\n label={name}\n type=\"hoverRemove\"\n color={lGrey0}\n rotation={45}\n editing={editing}\n immediateFeedback={immediateFeedback}\n isGlobalNavigation={isGlobalNavigation}\n updateNavigation={() => {\n return;\n\n setHotspotNavigationId(id);\n requestAnimationFrame(() => {\n showModal(true);\n });\n }}\n onMouseOver={e => {\n pubSub.publish(`ON_HOTSPOT_HOVER`, {\n hotspotId: id,\n hover: true,\n });\n }}\n onMouseOut={e => {\n pubSub.publish(`ON_HOTSPOT_HOVER`, {\n hotspotId: id,\n hover: false,\n });\n }}\n updateLabel={value => {\n setBlockProps(hotspot, {\n name: value,\n updated: setUpdated(),\n });\n }}\n score={score}\n isCorrectAnswer={correctAnswers.includes(i)}\n onUpdateCorrectAnswer={() => {\n const updatedCorrectAnswers = [...correctAnswers];\n if (updatedCorrectAnswers.includes(i)) {\n updatedCorrectAnswers.splice(\n updatedCorrectAnswers.indexOf(i),\n 1\n );\n } else {\n updatedCorrectAnswers.push(i);\n }\n\n setBlockProps(hotSpotScorable, {\n correctAnswers: updatedCorrectAnswers.sort(),\n });\n }}\n onReDraw={e => {\n if (block.props.hotspotType === 'polygon') {\n // clear the points of this polygon\n setBlockProps(hotspot, {\n points: [],\n });\n }\n\n setCurrentHotspotId(child.id);\n }}\n onDone={() => {\n setCurrentHotspotId(undefined);\n }}\n onClick={e => {\n if (\n window.confirm(\n 'Are you sure? Deleting a hotspot is an undoable operation and the content associated with it will also be removed.'\n )\n )\n remove(block, i);\n }}\n css={css`\n cursor: pointer;\n pointer-events: ${currentHotspotId ? 'none' : 'auto'};\n padding-right: 12px;\n transition: background 0.2s;\n background: ${currentHotspotId === id ? mint : ''};\n\n ${!editing &&\n `&:hover {\n background: #eaefff;\n _color: ${lPink};\n }`}\n `}\n />\n );\n })}\n </div>\n\n <div\n css={css`\n display: flex;\n align-items: center;\n width: calc(100% - 10px);\n height: 40px;\n background: url(\"${\n true || !currentHotspotId\n ? PlusIcon || Hotspot_Add\n : Hotspot_Done\n }\") no-repeat;\n background-size: 25px 25px;\n background-position: center right;\n padding: 0 10px;\n\n font-size: 12px;\n color: true || ${!currentHotspotId ? lPink : mint};\n\n cursor: pointer;\n\n &:hover {\n opacity: 0.8;\n }\n\n ${currentHotspotId &&\n `\n opacity: 0.2;\n pointer-events: none;\n `}\n `}\n onClick={e => {\n !currentHotspotId\n ? createNew(e)\n : setCurrentHotspotId(undefined);\n }}\n >\n Add new hotspot\n </div>\n </div>\n )}\n </TogglePanel>\n\n {imageLibrary && (\n <ImageLibraryContext.Provider\n value={{\n onAddImage(result) {\n const url = (result && result.url) || imageUploadError;\n\n setBlockProps(block, {\n src: url,\n imageId: result.id,\n imgWidth: result.width,\n imgHeight: result.height,\n });\n },\n onClose() {\n setImageLibrary(!imageLibrary);\n },\n currentImageSrc: src || image,\n currentImageId: imageId,\n cacheSelected: {\n yourLibrary: null,\n chameleonsLibrary: 0,\n },\n cacheFilter: {\n value: '',\n },\n }}\n >\n <ImageLibrary />\n </ImageLibraryContext.Provider>\n )}\n\n <_>\n {modal && (\n <div>\n <NavigationSettings\n id={block.id}\n // noActions\n linkData={linkData}\n tab=\"module\"\n onClose={() => showModal(false)}\n >\n {(localLinkData, updateLocalLinkData, currentTab) => {\n let label = 'Save and close';\n\n return (\n <_>\n <NavigationSettingsButton\n label=\"Cancel\"\n onClick={() => {\n showModal(false);\n }}\n />\n\n <NavigationSettingsButton\n label={label}\n enabled={true}\n style={{\n background: mint,\n color: '#fff',\n boxShadow:\n '-16px -16px 27px rgba(255, 255, 255, 0.5), 16px 16px 27px rgba(37, 59, 176, 0.14393)',\n }}\n onClick={() => {\n // double tapping the get of this hotSpot in case we go stale\n const currentActiveHotspotWithNav = getBlockById(\n hotspotNavigationId\n );\n\n setBlockProps(currentActiveHotspotWithNav, {\n linkData: {\n ...linkData,\n ...localLinkData,\n },\n });\n\n showModal(false);\n }}\n />\n </_>\n );\n }}\n </NavigationSettings>\n </div>\n )}\n </_>\n </_>\n );\n};\n\nexport default EditHotSpot;\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useRef, useEffect, useContext } from 'react';\nimport { css, jsx, keyframes } from '@emotion/core';\nimport pubSub from 'services/pubSub';\nimport { UPDATE_RECTANGLE_HOTSPOT_LOCAL_STATE } from 'components/Editor/EditHotSpotIsolated/EditHotSpotIsolated_v2';\nimport { HotSpotTickedWhenSeen } from './HotSpotTickedWhenSeen';\nimport hexToRGB from 'services/hexToRGB';\n\nconst Rectangle = props => {\n const {\n id,\n name,\n currentHotspotId,\n root,\n inverseScale,\n hasBeenSeen,\n showSeenState,\n hotSpotFocus,\n color,\n points,\n immediateFeedback = true,\n isCorrect = false,\n enabled = true,\n showChecked,\n onClick,\n rectangleBorderRadius = 0,\n rectangleDisplayOutlineOnly,\n hotSpotsVisible,\n submitState,\n correctAnswers,\n } = props;\n\n const [hover, setHover] = useState(false);\n\n // const selected = id === `hotspot-${currentHotspotId}`;\n const selected = !immediateFeedback ? props?.selected : null;\n\n const [rectState, setRectState] = useState<{\n x: number;\n y: number;\n w: number;\n h: number;\n }>({\n x: 0,\n y: 0,\n w: 0,\n h: 0,\n ...points,\n });\n\n const drawing = useRef<boolean>(false);\n const startXY = useRef<{ startX: number; startY: number }>({\n startX: 0,\n startY: 0,\n });\n\n const { r, g, b } = hexToRGB(color);\n\n const getParsedColor = opacity => {\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n };\n\n useEffect(() => {\n //\n const pS = pubSub.subscribe(\n `${UPDATE_RECTANGLE_HOTSPOT_LOCAL_STATE}_${id}`,\n points => {\n setRectState(points);\n }\n );\n\n return () => {\n pS();\n };\n }, []);\n\n const visibility = window.dev() ? true : hotSpotsVisible;\n\n const tickPosition = {\n x: rectState.x + rectState.w - 2.5,\n y: rectState.y + 2.5,\n };\n\n return (\n <svg>\n <rect\n key={`rect${0}`}\n id={id}\n rx={rectangleBorderRadius}\n x={rectState.x}\n y={rectState.y}\n width={rectState.w}\n height={rectState.h}\n style={{\n fill: visibility\n ? getParsedColor(rectangleDisplayOutlineOnly ? 1 : 0.4)\n : 'transparent',\n ...(rectangleDisplayOutlineOnly && {\n fill: 'transparent',\n stroke: color,\n strokeWidth: 3 * inverseScale,\n }),\n\n ...(!immediateFeedback &&\n showChecked && {\n fill: 'transparent',\n stroke: color,\n strokeWidth: 3 * inverseScale,\n }),\n\n cursor: 'pointer',\n opacity: hover ? 0.5 : 1,\n\n ...(`hotspot-${hotSpotFocus}` === id && {\n fill: 'transparent',\n stroke: color,\n strokeWidth: 3 * inverseScale,\n }),\n\n ...(!window.dev() && {\n transition: 'all 0.2s',\n }),\n\n pointerEvents: !immediateFeedback\n ? enabled\n ? 'auto'\n : 'none'\n : 'auto',\n\n // we'll stamp this in here as an ' override '\n // so as not to futz with the logic above that works\n // if we're a quiz. and selected. kill pointer\n ...(!immediateFeedback &&\n correctAnswers?.length === 1 &&\n selected && {\n pointerEvents: 'none',\n }),\n }}\n onMouseOver={() => setHover(true)}\n onMouseOut={() => setHover(false)}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n }}\n />\n\n {immediateFeedback && showChecked && (\n <HotSpotTickedWhenSeen\n x={tickPosition.x}\n y={tickPosition.y}\n size={75 * inverseScale}\n color={color}\n inverseScale={inverseScale}\n displayAsRadio={submitState && submitState !== 'resolved'}\n />\n )}\n </svg>\n );\n};\n\nexport default Rectangle;\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useState,\n createContext,\n useContext,\n useRef,\n useEffect,\n cloneElement,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport pubSub from 'services/pubSub';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\n\ninterface IHotSpotScorableContext {\n selected: any[];\n updateSelected: (item: any) => number[] | void;\n attempt: number;\n numberOfAttempts: number;\n updateAttempt: () => void;\n useMediaInFeedback: boolean;\n showCorrectAnswer: boolean;\n submitState: 'initial' | 'pending' | 'resolved';\n correctAnswers: number[];\n}\n\nconst HotSpotScorableContext = createContext({});\n\nenum SubmitState {\n INITIAL = 'initial',\n PENDING = 'pending',\n RESOLVED = 'resolved',\n}\n\nconst HotSpotScorable = props => {\n const { children } = props;\n\n const [hotspot, feedbacks] = children;\n const [\n correctFeedback,\n incorrectFeedback,\n attemptFeedback,\n submitBtn,\n ] = feedbacks.props.children;\n\n const hotspots = hotspot.props.children;\n const InteractionContext = useContext(interactionContext);\n const { id: InteractionContextId } = InteractionContext;\n\n // need to base this scorable on the immediateFeedback bool\n // only place score becomes relevant is on submission. the action obj\n const {\n lockDown,\n immediateFeedback = true,\n score,\n } = InteractionContext?.props;\n\n const {\n correctAnswers = [],\n showAttemptNumber = true,\n useMediaInFeedback = true,\n numberOfAttempts = 1,\n showCorrectAnswer = true,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n } = props;\n\n const [result, setResult] = useState<string | null>(null);\n const [selected, setSelected] = useState<any[]>([]);\n const [attempt, setAttempt] = useState<number>(0);\n const [feedback, setFeedback] = useState<string | null>(null);\n const [submitState, setSubmitState] = useState<SubmitState>(\n SubmitState.INITIAL\n );\n\n const scoringQuizzes = useScoringQuizzes();\n const dispatch = useDispatch();\n\n const updateSelected = (item): number[] => {\n if (correctAnswers.length === 1) {\n setSelected([item]);\n return [item];\n }\n\n const updatedSelected = [...selected];\n\n if (updatedSelected.includes(item)) {\n updatedSelected.splice(updatedSelected.indexOf(item), 1);\n } else {\n updatedSelected.push(item);\n }\n\n setSelected(updatedSelected);\n\n return updatedSelected;\n };\n\n const updateAttempt = () => {\n setAttempt(attempt => {\n return (attempt += 1);\n });\n\n if (attempt === numberOfAttempts - 1) {\n setSubmitState(SubmitState.RESOLVED); // 'resolved'\n setResult('incorrect');\n setFeedback('incorrect');\n return;\n }\n\n setResult('attempt');\n setFeedback('attempt');\n };\n\n const onSubmit = () => {\n if (selected.sort().join('') === correctAnswers.sort().join('')) {\n setSubmitState(SubmitState.RESOLVED); // 'resolved'\n setResult('correct');\n //\n setFeedback('correct');\n return;\n }\n\n updateAttempt();\n };\n\n useEffect(() => {\n //\n\n const InteractionContextId = InteractionContext.id;\n const isCorrect = result === 'correct';\n\n let questionText: HTMLDivElement | string = document.querySelector(\n `#i${InteractionContextId} .chameleon-text`\n ) as HTMLDivElement;\n\n if (questionText) {\n questionText = questionText.innerText;\n }\n\n if (isCorrect || attempt >= numberOfAttempts) {\n // score &&\n const responseExpanded = selected\n .map(entry => {\n return hotspots[entry].props.name;\n })\n .join(',');\n\n const correctExpanded = correctAnswers\n .map(entry => {\n return hotspots[entry].props.name;\n })\n .join(',');\n\n const action = {\n id: InteractionContextId,\n type: 'fill-in',\n question: questionText,\n reportable: 'multichoice' as 'multichoice',\n response: responseExpanded,\n correct: correctExpanded,\n result: (isCorrect ? 1 : 0) as 0 | 1,\n };\n\n // dispatch if there's no scoringQuizzes etc\n let shouldDispatchScore = score;\n\n if (scoringQuizzes.length) {\n shouldDispatchScore = false;\n }\n\n if (shouldDispatchScore) {\n dispatch(updateScoreAction(InteractionContextId, isCorrect ? 1 : 0));\n }\n\n dispatch(addScormResponseAction(action));\n }\n }, [feedback]);\n\n useEffect(() => {\n const pS = pubSub.subscribe(\n `SHOW_HOTSPOT_FEEDBACK_${InteractionContext.id}`,\n $ => {\n setResult($.result);\n setFeedback($.result);\n }\n );\n\n return pS;\n }, []);\n\n useEffect(() => {\n if (submitState === SubmitState.RESOLVED) {\n // 'resolved'\n unlockInteraction(InteractionContextId);\n }\n }, [submitState]);\n\n const value: IHotSpotScorableContext = {\n selected,\n updateSelected,\n attempt,\n numberOfAttempts,\n updateAttempt,\n useMediaInFeedback,\n submitState,\n showCorrectAnswer,\n correctAnswers,\n };\n\n if (immediateFeedback) {\n return hotspot;\n }\n\n return (\n <HotSpotScorableContext.Provider value={value}>\n {hotspot}\n\n {feedback &&\n cloneElement(feedbacks, {\n result: result,\n attempt,\n navigationBehaviour,\n showAttemptNumber,\n numberOfAttempts,\n useMediaInFeedback,\n onOpened: () => {},\n\n onClose: () => {\n setResult(null);\n setFeedback(null);\n },\n })}\n\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n margin: '20px 0 0 0',\n opacity: selected.length ? 1 : 0,\n ...(window.dev() && {\n opacity: 1,\n }),\n ...(!window.dev() &&\n submitState === 'resolved' && {\n opacity: 0.2,\n pointerEvents: 'none',\n }),\n\n transition: 'opacity 0.2s',\n })}\n >\n {cloneElement(submitBtn, {\n onClick: onSubmit,\n })}\n </div>\n </HotSpotScorableContext.Provider>\n );\n};\n\nexport default HotSpotScorable;\nexport { HotSpotScorableContext, IHotSpotScorableContext };\n","export const onMouseDown = ({\n hotspotType,\n drawing,\n startXY,\n root,\n inverseScale,\n rectState,\n pubSub,\n}) => {\n return e => {\n if (hotspotType !== 'rectangle') {\n return;\n }\n\n drawing.current = true;\n startXY.current = {\n startX:\n (e.clientX - root.current!.getBoundingClientRect().left) * inverseScale,\n startY:\n (e.clientY - root.current!.getBoundingClientRect().top) * inverseScale,\n };\n\n rectState.current = {\n x: 0,\n y: 0,\n w: 0,\n h: 0,\n };\n\n pubSub.publish('UPDATE_HOTSPOT_POINTS', rectState.current);\n };\n};\n","export const onMouseMove = ({\n hotspotType,\n drawing,\n startXY,\n root,\n inverseScale,\n rectState,\n pubSub,\n}) => {\n return e => {\n if (!drawing.current) {\n return;\n }\n\n const { startX, startY } = startXY.current;\n\n const clientX =\n (e.clientX - root.current!.getBoundingClientRect().left) * inverseScale;\n const clientY =\n (e.clientY - root.current!.getBoundingClientRect().top) * inverseScale;\n\n const negX = clientX < startX;\n const negY = clientY < startY;\n\n const x = negX ? Math.abs(clientX) : startX;\n const y = negY ? Math.abs(clientY) : startY;\n const w = Math.abs(clientX - startX);\n const h = Math.abs(clientY - startY);\n\n rectState.current = {\n x,\n y,\n w,\n h,\n };\n\n pubSub.publish('UPDATE_HOTSPOT_POINTS', {\n points: rectState.current,\n updateRectangleHotspotLocalState: true,\n });\n };\n};\n","export const onMouseUp = ({\n hotspotType,\n drawing,\n startXY,\n root,\n inverseScale,\n rectState,\n pubSub,\n}) => {\n return e => {\n if (hotspotType !== 'rectangle') {\n return;\n }\n\n drawing.current = false;\n\n pubSub.publish('UPDATE_HOTSPOT_POINTS', {\n points: rectState.current,\n updateRectangleHotspotLocalState: false,\n });\n };\n};\n","export const onClick = ({\n hotspotType,\n drawing,\n startXY,\n root,\n inverseScale,\n rectState,\n pubSub,\n}) => {\n return e => {\n if (hotspotType === 'rectangle') {\n return;\n }\n\n e.persist();\n\n pubSub.publish('UPDATE_HOTSPOT_POINTS', {\n points: [\n (e.clientX - root.current!.getBoundingClientRect().left) * inverseScale,\n (e.clientY - root.current!.getBoundingClientRect().top) * inverseScale,\n ],\n });\n };\n};\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useState,\n useContext,\n useRef,\n useMemo,\n useEffect,\n useLayoutEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport { InteractionContext as ContainerContext } from '../../Layouts/ContainerLogical';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport isIE from 'services/isIE';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport getStore from 'services/getStore';\nimport EditWrapper from './EditWrapper';\nimport { useSelector } from 'react-redux';\nimport HotspotSVGError from 'assets/HotspotSVGError.svg';\nimport hexToRGB from 'services/hexToRGB';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport Feedback from './Feedback';\nimport VisibleHotSpot from './VisibleHotSpot';\nimport { Polygon } from './Polygon';\nimport Rectangle from './Rectangle';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport pubSub from 'services/pubSub';\nimport setNewBlockNewTree from 'services/apiHelpers/setNewBlockNewTree';\nimport { getNextHotSpotBlock } from 'factories/interactions/hotspot_isolated';\nimport { setBlocksAction } from 'actions/setBlocksAction';\nimport { getSVGSize } from 'services/getSVGSize';\nimport { useHotSpotTransformOldToNew } from './useHotSpotTransformOldToNew';\nimport { colors } from 'styles/variables';\nimport {\n HotSpotScorableContext as _HotSpotScorableContext,\n IHotSpotScorableContext,\n} from './HotSpotScorable';\nimport { getMouseEvents } from './getMouseEvents';\n//\nimport hotspotDefaultIMG_ from 'assets/Widest Image.png';\nimport hotSpotLandingPageDefaultIMG_ from 'assets/hotspotLandingPageImg.png';\nimport hotspotQuizImg_ from 'assets/hotspotQuizImg.png';\nimport { lastCharInStringIsPeriod } from 'services/lastCharInStringIsPeriod';\nimport { ModuleContext } from 'components/Module/Module_v2';\nimport { State } from 'store/store';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\n\n// circleci: 0\n\nexport const OPEN_GLOBAL_NAVIGATION_ = 'OPEN_GLOBAL_NAVIGATION_';\n\nconst store = getStore();\nconst { lPink } = colors;\n\nconst HotSpot = ({ children, ...props }) => {\n const context: any = useContext(interactionContext);\n\n const containerContext = useContext(ContainerContext);\n\n let {\n id,\n image,\n src,\n // imgWidth = 2000 || 960,\n // imgHeight = 685 || 465,\n hotspotType = 'circle',\n hotSpotColor,\n hotSpotSize,\n hotSpots,\n hotSpotsAnimated = true,\n hotSpotsVisible = true,\n useMediaInFeedback = true,\n showSeenState = true,\n rectangleBorderRadius = 0,\n rectangleDisplayOutlineOnly = false,\n description = '',\n } = props;\n\n const moduleContext = useContext(ModuleContext);\n const { exit, setComplete, setCompleteAndExit, resetModule } = moduleContext;\n\n const {\n immediateFeedback = true,\n score = false,\n isGlobalNavigation = false,\n sId,\n fullWidth,\n } = context?.props;\n\n const imgWidth = fullWidth ? 2084 : 960;\n const imgHeight = fullWidth ? 709 : 465;\n\n if (!image) {\n image = hotspotDefaultIMG_;\n\n if (!immediateFeedback) {\n image = hotspotQuizImg_;\n }\n\n if (isGlobalNavigation) {\n image = hotSpotLandingPageDefaultIMG_;\n }\n }\n\n if (src) {\n image = src;\n }\n\n const HotSpotScorableContext: any = useContext(_HotSpotScorableContext);\n\n const {\n updateAttempt,\n correctAnswers = [],\n selected = [],\n updateSelected,\n submitState,\n showCorrectAnswer,\n } = HotSpotScorableContext;\n\n const isFocused = getStore().getState().focusedNodeId === id;\n const [imgSize, setImgSize] = useState([imgWidth, imgHeight]);\n const [imgLoading, setImgLoading] = useState(0);\n const [creating, setCreating] = useState(false);\n const [hotSpotFocus, setHotSpotFocus] = useState<string | undefined>(\n undefined\n );\n\n const [SVGHasNoDimensionsError, setSVGHasNoDimensionsError] = useState<\n boolean\n >(false);\n\n const [showFeedback, setShowFeedback] = useState<string | null>(null);\n\n const [{ scale, inverseScale }, setScale] = useState({\n scale: 1 || 0.3,\n inverseScale: 1 || 1 * (1 / 0.3),\n });\n\n const [currentHotspotId, setCurrentHotspotId] = useState<string | undefined>(\n undefined\n );\n\n const landingPageSeenState = useSelector((state: State) => {\n return state?.landingPagesSeenState?.[sId || context.id] || [];\n });\n\n const updateHotspotSeen = (id: number, clear?: boolean) => {\n if (!immediateFeedback) {\n return;\n }\n\n store.dispatch({\n type: 'UPDATE_LANDING_PAGE_SEEN_STATE',\n data: {\n parentId: sId || context.id,\n childIndex: children.findIndex(child => {\n return child?.props?.id === id;\n }),\n clear,\n },\n });\n };\n\n const container = useRef<HTMLDivElement>(null);\n const root = useRef<HTMLDivElement>(null);\n const mounted = useRef(true);\n const currentHotspot = useRef<string | null>(null);\n const hasPointsOnProps = useRef<boolean | undefined>(undefined);\n\n const drawing = useRef<boolean>(false);\n const startXY = useRef<{ startX: number; startY: number }>({\n startX: 0,\n startY: 0,\n });\n const rectState = useRef<any>({});\n\n let { isOpen } = context;\n\n const interactionsLocked = useSelector(\n (state: any) => state.interactionsLocked\n );\n\n const interactionsOpen: any = useSelector(\n (state: any) => state.interactionsOpen\n );\n\n if (interactionsOpen.includes(context.id)) {\n isOpen = true;\n }\n\n const { r, g, b } = hexToRGB(hotSpotColor);\n\n const getParsedColor = opacity => {\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n };\n\n //\n\n const names: string[] = [];\n const points: (number[] | number)[] = children.map((child, index) => {\n const { name, points, updated } = child?.props;\n\n names.push(name);\n\n // if there's no hotpsots it's because they were removed explicitly by code\n // in the last update cycle\n // WE DO NOT WANT TO DO THAT GOING FORWARD !!!\n // we set an updated prop to some value explicitly when that point has been\n // updated in the editor. we can preference it then for use\n // otherwise. we use what's on the hotSpots\n\n //\n\n // can't use hotSpots[name] since there's potentially dupes\n return !hotSpots || updated ? points : Object.values(hotSpots)[index];\n });\n\n const hotSpotFocusRef = useRef<string | undefined>(undefined);\n const rectangleCoords = useRef<any>({});\n\n useHotSpotTransformOldToNew({\n id,\n hotSpots,\n children,\n getNextHotSpotBlock,\n getBlockById,\n setNewBlockNewTree,\n store,\n setBlocksAction,\n });\n\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n\n useEffect(() => {\n // if already unlocked. bail\n if (!interactionsLocked.includes(context.id)) {\n return;\n }\n\n if (landingPageSeenState.length === children.length) {\n unlockInteraction(context.id);\n }\n }, [landingPageSeenState.length]);\n\n useEffect(() => {\n const pS = pubSub.subscribe(`CURRENT_HOTSPOT_ID_${id}`, $ => {\n const { hotspotsBlockId, currentHotspotId } = $;\n\n setCurrentHotspotId(currentHotspotId);\n });\n\n return () => {\n pS();\n };\n });\n\n useEffect(() => {\n const pS = pubSub.subscribe(`ON_HOTSPOT_HOVER`, ({ hotspotId, hover }) => {\n const hotSpotRoot = document.querySelector(`#hotspots-${id}`);\n\n if (!hotSpotRoot) return;\n\n const markers = Array.from(\n hotSpotRoot.querySelectorAll(\n hotspotType === 'rectangle' ? 'rect' : hotspotType\n )\n );\n\n if (!markers.length) {\n return;\n }\n\n markers.forEach(\n (marker: any) => (marker.style.fill = getParsedColor(0.5))\n );\n\n if (!hover) return;\n\n const marker: any = markers.find(\n (marker: any) => marker.id === `hotspot-${hotspotId}`\n );\n\n if (marker) {\n marker.style.fill = getParsedColor(0.8); // 'rgba(255, 0, 99, 0.8)'\n }\n });\n\n return () => {\n pS();\n };\n }, [hotspotType, hotSpotColor]);\n\n useLayoutEffect(() => {\n const onResize = () => {\n if (container.current) {\n const { width, height } = container.current.getBoundingClientRect();\n if (imgSize[0]) {\n let $ = width / imgSize[0];\n\n if (imgSize[0] <= width) {\n $ = 1;\n }\n\n if (mounted.current) {\n setScale({\n scale: $,\n inverseScale: 1 * (1 / $),\n });\n //\n requestAnimationFrame(() => {\n pubSub.publish('UPDATE_HOTSPOT_SCALE_FACTORS', {\n scale: $,\n inverseScale: 1 * (1 / $),\n });\n });\n }\n }\n }\n };\n\n onResize();\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [isOpen, imgSize]);\n\n useEffect(() => {\n setImgLoading(1);\n setSVGHasNoDimensionsError(false);\n\n //\n\n let svgImgWidth = imgWidth;\n let svgImgHeight = imgHeight;\n\n if (/\\.(svg)$/i.test(image)) {\n getSVGSize(image)\n .then((size: any) => {\n svgImgWidth = size.width;\n svgImgHeight = size.height;\n })\n .catch(err => {\n if (window.dev()) {\n alert(\n `This svg image does not have a value for width and/or height. It will default to ${svgImgWidth}*${svgImgHeight}`\n );\n }\n })\n .finally(() => {\n setImgLoading(2);\n setImgSize([svgImgWidth, svgImgHeight]);\n });\n } else {\n const img = new Image();\n img.src = image;\n\n if (window.dev()) {\n img.onerror = e => {\n // if an error occurs loading the current src\n // let's clear it out and prompt a retry;\n\n setBlockProps(getBlockById(id), {\n src: '',\n });\n\n alert(\n 'There was an error while attempting to load your image. Please try again.'\n );\n };\n }\n\n img.onload = e => {\n setImgLoading(2);\n setImgSize([img.width, img.height]);\n };\n }\n }, [isOpen, image, fullWidth]);\n\n let feedback = children.filter(child => {\n const { id, name } = child?.props as any;\n return [id, name].includes(showFeedback);\n });\n\n feedback = feedback[0]?.props.children;\n\n const showChecked = (index, id) => {\n if (immediateFeedback || submitState !== 'resolved' || !showCorrectAnswer) {\n return (\n showSeenState &&\n (landingPageSeenState.includes(index) || selected.includes(index))\n );\n }\n\n if (showCorrectAnswer !== undefined) {\n return submitState === 'resolved'\n ? correctAnswers.includes(index)\n : undefined;\n }\n };\n\n const { onMouseDown, onMouseMove, onMouseUp, onClick } = useMemo(() => {\n return getMouseEvents({\n hotspotType,\n drawing,\n startXY,\n root,\n inverseScale,\n rectState,\n pubSub,\n });\n }, [hotspotType, inverseScale]);\n\n // gotta fix my deps\n\n const getShapeProps = ({ id, index }) => {\n let hasBeenSeen;\n\n if (!immediateFeedback) {\n hasBeenSeen = selected.includes(index);\n } else {\n hasBeenSeen = landingPageSeenState.includes(index);\n }\n //\n\n return {\n id: `hotspot-${id}`,\n color: getParsedColor(0.8),\n hotSpotsAnimated: submitState === 'resolved' ? false : hotSpotsAnimated,\n hotSpotsVisible,\n size: hotSpotSize * inverseScale,\n inverseScale,\n creating,\n hasBeenSeen,\n showSeenState,\n showCorrectAnswer:\n submitState === 'resolved' && showCorrectAnswer\n ? correctAnswers.includes(index)\n : undefined,\n submitState,\n showChecked: showChecked(index, id),\n hotSpotFocus,\n immediateFeedback,\n\n isCorrect: correctAnswers.includes(index),\n selected: selected.includes(index),\n correctAnswers,\n enabled: !immediateFeedback && !selected.includes(id),\n onClick(e) {\n if (isGlobalNavigation) {\n if (window.dev()) {\n pubSub.publish(`OPEN_GLOBAL_NAVIGATION_${context.id}`, {\n id,\n });\n\n return;\n }\n\n const { linkData } = children[index]?.props;\n\n if (linkData?.url) {\n const { url, target } = linkData;\n\n requestAnimationFrame(() => {\n updateHotspotSeen(id);\n });\n\n switch (url) {\n case 'next': {\n containerContext.next(url);\n return;\n }\n case 'exit': {\n exit();\n return;\n }\n case 'setComplete': {\n setComplete();\n return;\n }\n case 'setCompleteAndExit': {\n setCompleteAndExit();\n return;\n }\n case 'resetModule': {\n resetModule();\n return;\n }\n }\n\n //\n\n if (target === '_self') {\n window.location.hash = url;\n return;\n }\n\n window.open(url, target);\n }\n\n return;\n }\n\n if (!immediateFeedback) {\n // we're quizzin' it\n if (window.dev()) {\n return;\n } else {\n updateSelected(index);\n //\n return;\n }\n }\n\n setShowFeedback(hotSpots ? names[index] : id);\n\n requestAnimationFrame(() => {\n updateHotspotSeen(id);\n });\n },\n };\n };\n\n return !!imgSize.length ? (\n <div\n ref={container}\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n min-height: ${imgSize[1] * scale}px;\n\n ${isIE() &&\n `\n width: 100%;\n overflow: hidden;\n `}\n\n ${submitState === 'resolved' &&\n `\n * {\n pointer-events: none !important;\n }\n `}\n `}\n >\n <div className=\"sr-only\">\n <p>{description}</p>\n </div>\n <div\n css={css`\n position: relative;\n width: ${imgSize[0] * scale}px;\n height: ${imgSize[1] * scale}px;\n * {\n margin: 0;\n padding: 0;\n }\n `}\n >\n <div\n ref={root}\n id={`hotspots-${id}`}\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: ${imgSize[0]}px;\n height: ${imgSize[1]}px;\n transform: scale(${scale});\n transform-origin: 0 0;\n `}\n onMouseDown={onMouseDown}\n onMouseMove={onMouseMove}\n onMouseUp={onMouseUp}\n onClick={onClick}\n >\n {[0, 2].includes(imgLoading) ? (\n <svg\n viewBox={`0 0 ${imgSize[0]} ${imgSize[1]}`}\n preserveAspectRatio=\"xMidYMid meet\"\n overflow=\"visible\"\n onClick={e => {\n if (e.target !== e.currentTarget) {\n return;\n }\n }}\n >\n <image\n xlinkHref={image}\n width={imgSize[0]}\n height={imgSize[1]}\n style={{\n pointerEvents: 'none',\n }}\n />\n {/* <title>{description}</title> */}\n {(!window.dev() ? true : isFocused) &&\n points\n .filter((points: any) => {\n if (SVGHasNoDimensionsError) {\n return false;\n }\n\n if (['rectangle', 'polygon'].includes(hotspotType)) {\n return true;\n }\n\n if (points?.length && points?.every(entry => entry > 0)) {\n return true;\n }\n })\n .map((points: any, i) => {\n const id = children[i]?.props.id;\n\n if (hotspotType === 'rectangle') {\n return (\n <Rectangle\n key={`hotspot-${i}-${JSON.stringify(points)}`}\n {...{\n ...getShapeProps({ id, index: i }),\n points: points || [],\n\n color: hotSpotColor,\n rectangleBorderRadius,\n rectangleDisplayOutlineOnly,\n currentHotspotId,\n }}\n />\n );\n }\n\n if (hotspotType === 'polygon') {\n return (\n <Polygon\n key={`hotspot-${i}-${hotSpotColor}`}\n {...{\n ...getShapeProps({ id, index: i }),\n points: (Array.isArray(points) ? points : []).join(\n ' '\n ),\n hotSpotColor,\n r,\n g,\n b,\n }}\n />\n );\n }\n\n if (hotspotType === 'circle') {\n return (\n <VisibleHotSpot\n key={`hotspot-${i}`}\n {...{\n ...getShapeProps({ id, index: i }),\n location: [points[0], points[1]],\n }}\n />\n );\n }\n })}\n </svg>\n ) : (\n <LoadingSpinner\n size={46 * inverseScale}\n lineWeight={5 * inverseScale}\n />\n )}\n </div>\n\n <div\n css={css({\n position: 'absolute',\n })}\n >\n {children.map((child, index) => {\n const { id, name, linkData } = child.props;\n\n const keyId = `hotspot-focus-trigger-${id}`;\n\n // some title/label additional thing to have parity with showing ticks\n const titleOrLabel =\n (isGlobalNavigation ? linkData?.title || linkData?.url : name) ||\n '';\n\n const addHasBeenSeenTitleOrLabel = landingPageSeenState.includes(\n index\n )\n ? `${!lastCharInStringIsPeriod(titleOrLabel) ? '.' : ''} Seen.`\n : '';\n\n return isGlobalNavigation ? (\n <a\n key={keyId}\n id={keyId}\n href={window.dev() ? null : linkData?.url}\n title={`${linkData?.title ||\n linkData?.url}${addHasBeenSeenTitleOrLabel}`}\n target={linkData?.target}\n onFocus={() => {\n setHotSpotFocus((hotSpotFocusRef.current = id));\n }}\n onBlur={() => {\n setHotSpotFocus(undefined);\n }}\n />\n ) : (\n <button\n key={`hotspot-focus-trigger-${index}`}\n id={`hotspot-focus-trigger-${id}`}\n css={css({\n position: 'absolute',\n outline: 'none',\n border: 'none',\n width: 0,\n height: 0,\n overflow: 'hidden',\n })}\n aria-label={`${name}${addHasBeenSeenTitleOrLabel}`}\n onFocus={() => {\n setHotSpotFocus((hotSpotFocusRef.current = id));\n }}\n onBlur={() => {\n setHotSpotFocus(undefined);\n }}\n onClick={e => {\n if (!immediateFeedback) {\n // we're quizzin' it\n if (window.dev()) {\n return;\n } else {\n updateSelected(index);\n //\n return;\n }\n }\n\n setShowFeedback(id);\n\n requestAnimationFrame(() => {\n updateHotspotSeen(id);\n });\n }}\n />\n );\n })}\n </div>\n </div>\n {showFeedback && (\n <Feedback\n useMediaInFeedback={useMediaInFeedback}\n onClose={() => {\n if (hotSpotFocusRef.current) {\n requestAnimationFrame(() => {\n const hotSpotFocusTrigger = document.querySelector(\n `#hotspot-focus-trigger-${hotSpotFocusRef.current}`\n ) as HTMLButtonElement;\n if (hotSpotFocusTrigger) {\n hotSpotFocusTrigger.focus();\n }\n });\n }\n //\n setShowFeedback(null);\n }}\n >\n {feedback}\n </Feedback>\n )}\n\n {SVGHasNoDimensionsError && (\n <img\n src={HotspotSVGError}\n css={css({\n position: 'relative',\n width: '100%',\n cursor: 'pointer',\n borderRadius: '45px',\n\n boxShadow: `0 0 0 1px transparent`,\n\n ...(isFocused && {\n pointerEvents: 'none',\n boxShadow: `0 0 0 1px ${lPink}`,\n }),\n\n ':hover': {\n boxShadow: `0 0 0 1px ${lPink}`,\n },\n })}\n onClick={() => {\n setCurrentBlock({ id });\n }}\n />\n )}\n\n {window.dev() && (!image || imgLoading === 2) && (\n <EditWrapper\n id={props.id}\n width={imgSize[0] * scale}\n height={imgSize[1] * scale}\n />\n )}\n </div>\n ) : null;\n};\n\nexport default HotSpot;\n","import { useEffect } from 'react';\n\nexport const useHotSpotTransformOldToNew = ({\n hotSpots,\n id,\n children,\n getNextHotSpotBlock,\n getBlockById,\n setNewBlockNewTree,\n store,\n setBlocksAction,\n}) => {\n return useEffect(() => {\n if (!hotSpots) {\n return;\n }\n\n // note :\n // the goal here is to update the points on props to match\n // what we get from the hotSpots.points\n //\n // if we get errors we can compare the values\n // go to the projects blocks directly and remove the ' zombie ' points on the props ( look for hotSpotName )\n // then when this runs again it should update\n // or. since we have the values off hotSpots.points we can update the props.points with those values\n\n const someHotspotsUpdated = children.some(child => {\n const { updated } = child.props; //hotSpot?.props;\n\n return updated;\n });\n\n // if any of the hotSpots have been updated we can return\n //\n if (someHotspotsUpdated) {\n return;\n }\n\n const [newBlock, newTree] = getNextHotSpotBlock(getBlockById(id))!;\n\n if (newBlock && newBlock.children) {\n const hotSpotPoints = Object.values(hotSpots);\n\n (newBlock.children as []).forEach((child: any, index) => {\n // somewhere in here check for no content maybe ?\n // no. just ensure there's no diff between names / points ( length ) and children.length ?\n const hotSpot = getBlockById(child.id) as any;\n\n const { name } = hotSpot?.props;\n\n if (name) {\n // can't use hotSpots[name] since there's potentially dupes\n // hotSpots[name] ? hotSpots[name] : [];\n\n hotSpot.props.points = hotSpotPoints[index] || [];\n }\n });\n }\n\n // we were removing the hotSpots prop in the old case. DO NOT DO THAT !!!!\n // we'll keep them to aid in debugging later if it comes to that\n\n setNewBlockNewTree(newTree, newBlock, store, setBlocksAction);\n }, []);\n};\n","import { onMouseDown } from './onMouseDown';\nimport { onMouseMove } from './onMouseMove';\nimport { onMouseUp } from './onMouseUp';\nimport { onClick } from './onClick';\n\nexport const getMouseEvents = $ => {\n return {\n onMouseDown: onMouseDown($),\n onMouseMove: onMouseMove($),\n onMouseUp: onMouseUp($),\n onClick: onClick($),\n };\n};\n","export function lastCharInStringIsPeriod(str: string): boolean {\n return /\\.$/.test(str.trim());\n}\n","/** @jsx jsx */\n\nimport { Fragment as _, memo, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport HotSpot from './HotSpot';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { Block } from '@chameleoncreator/creator-app';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport shouldUpdate from 'services/shouldUpdate';\nimport HotSpotScorable from './HotSpotScorable';\nimport Feedback from 'components/lib/Feedback/Feedback_updated_022022';\nimport Audio from 'components/lib/Audio';\nimport Embed from 'components/lib/Embed';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: EditableBtn,\n Image: ({ children, ...props }) => {\n //\n const mediaContext = useContext(MediaContext) as IMediaContext;\n\n return (\n <Image\n {...{\n ...props,\n placeholder: imgPlaceholders[1],\n maxHeight: 30,\n }}\n />\n );\n },\n Video,\n Media,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [hotspot, txt] = children;\n\n if (!includeAdditionalTextField) {\n return hotspot;\n }\n\n return (\n <_>\n {hotspot}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n HotSpotElement: ({ children, ...props }) => children,\n HotSpotIsolated: HotSpot,\n HotSpotScorable,\n Answer: () => null,\n Feedback,\n Correct: ({ children, ...props }) => children,\n Incorrect: ({ children, ...props }) => children,\n Attempt: ({ children, ...props }) => children,\n Modal: () => null,\n ModalWithEditableBtn: () => null,\n Audio,\n SVG,\n Embed,\n PDF,\n OpenPDF: ({ children, ...props }) => {\n return (\n <div\n css={css({\n img: {\n maxHeight: 'none !important',\n },\n })}\n >\n <OpenPDF {...(props as any)}>{children}</OpenPDF>\n </div>\n );\n },\n};\n\nconst HotSpotDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{\n ...interactionBlock,\n isOpen: props.isOpen,\n updateItemsSeen: null,\n }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default HotSpotDisplay;\n","import HotSpotDisplay from './HotSpotDisplay';\n\nexport default HotSpotDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport { FiveStarRatingContext } from './FiveStarRating_v2';\n\nconst { lGrey2 } = colors;\n\nconst Message = ({\n placeholder = 'Type your message here. . .',\n onUpdateCallback,\n style = {},\n cssStyle = {},\n ...props\n}) => {\n const [hasValue, setHasValue] = useState(false);\n\n const onUpdate = useContext(FiveStarRatingContext)[onUpdateCallback];\n\n return (\n <textarea\n placeholder={placeholder}\n aria-label={placeholder}\n style={{\n width: '100%',\n padding: '10px 20px',\n fontFamily: 'inherit',\n fontSize: 16,\n // fontWeight: 200,\n resize: 'none',\n // border: `1px solid ${lGrey2}`,\n textAlign: 'center',\n ...style,\n }}\n css={css(cssStyle)}\n onFocus={e => {\n e.currentTarget.placeholder = '';\n }}\n onBlur={e => {\n if (!e.currentTarget.value) {\n e.currentTarget.placeholder = placeholder;\n e.currentTarget.style.textAlign = 'center';\n }\n }}\n onKeyUp={e => {\n const { value } = e.currentTarget;\n requestAnimationFrame(() => {\n if (!value) {\n setHasValue(false);\n return onUpdate('');\n }\n });\n\n if (value && !hasValue) setHasValue(true);\n\n onUpdate(value);\n }}\n // {...props}\n />\n );\n};\n\nexport default Message;\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\n\nexport const TextEntry = props => {\n const {\n id,\n message,\n messageContainer,\n messageUnderline,\n messageTextColor = '#000',\n messageTextBackgroundColor,\n messageBorderRadius,\n messageBorderColor = '#d2dff9',\n messageFontFamily = 'inherit',\n messageFontSize = 16,\n onUpdate = () => {},\n textAlign,\n placeholderText = 'Type your message here...',\n } = props;\n\n const maxLinesBeforeScrolling = (props.maxLinesBeforeScrolling || 4) - 1;\n\n const [hasFocus, setHasFocus] = useState<boolean>(false);\n const textArea = useRef<HTMLTextAreaElement>(null);\n const textAreaProxy = useRef<HTMLDivElement>(null);\n\n let computedPadding = 0;\n\n if (textArea.current) {\n const computedStyle = getComputedStyle(textArea.current);\n computedPadding =\n parseInt(computedStyle.paddingTop, 10) +\n parseInt(computedStyle.paddingBottom, 10);\n }\n\n const maxHeight =\n props.maxLinesBeforeScrolling * 2 * messageFontSize + computedPadding;\n\n let newLineCheck = 0;\n for (let i = 0; i < message.length; i += 1) {\n if (/\\n/.test(message[i])) {\n newLineCheck += 1;\n }\n }\n\n const textAreaHeight =\n textAreaProxy?.current?.getBoundingClientRect().height || 0;\n\n const shouldScroll =\n newLineCheck > maxLinesBeforeScrolling || textAreaHeight >= maxHeight;\n\n const textAreaProxyHTML = message.replace(/\\n/g, '<br/>');\n const placeholder = !hasFocus ? placeholderText : '';\n\n const sharedStyles = {\n width: '100%',\n height: '100%',\n maxHeight,\n background: 'transparent',\n padding: '5px 10px' || '15px 5px 0px 5px',\n fontFamily: messageFontFamily,\n fontSize: messageFontSize,\n color: messageTextColor,\n };\n\n return (\n <div\n style={{\n width: '100%',\n }}\n >\n <div\n style={{\n position: 'relative',\n maxHeight: sharedStyles.maxHeight,\n ...(messageContainer && {\n height: 150,\n padding: `10px ${messageBorderRadius || 20}px 10px 10px`,\n background: messageTextBackgroundColor,\n borderRadius: messageBorderRadius,\n boxShadow: `0 0 0 ${hasFocus ? 3 : 1}px ${\n hasFocus && messageBorderColor === 'transparent'\n ? '#d2dff9'\n : messageBorderColor\n }`,\n transition: 'box-shadow 0.1s',\n }),\n }}\n >\n {messageUnderline && (\n <div\n ref={textAreaProxy}\n style={{\n ...sharedStyles,\n visibility: 'hidden',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n }}\n dangerouslySetInnerHTML={{\n __html: `${textAreaProxyHTML}<br/>${\n newLineCheck > maxLinesBeforeScrolling ? ' ' : ''\n }`,\n }}\n aria-hidden=\"true\"\n />\n )}\n\n <label htmlFor={id} className=\"sr-only\">\n {placeholder}\n </label>\n\n <textarea\n ref={textArea}\n id={id}\n placeholder={placeholder}\n css={css({\n position: messageUnderline ? 'absolute' : 'relative',\n left: 0,\n top: 0,\n border: 'none',\n outline: 'none',\n resize: 'none',\n\n ...sharedStyles,\n overflow: shouldScroll ? 'auto' : 'hidden',\n\n textAlign: textAlign || (message || hasFocus ? 'left' : 'center'),\n\n ':focus': {\n border: 'none !important',\n outline: 'none !important',\n },\n\n '::placeholder': {\n color: messageTextColor,\n },\n })}\n onFocus={() => {\n setHasFocus(true);\n }}\n onBlur={() => {\n setHasFocus(false);\n }}\n onChange={e => {\n onUpdate(e.currentTarget.value);\n }}\n // aria-label={placeholder}\n />\n </div>\n\n {messageUnderline && (\n <div\n style={{\n width: '100%',\n height: 1,\n marginTop: 10,\n boxShadow: `0 0 0 ${hasFocus ? 1 : 0}px ${messageBorderColor}`,\n background: messageBorderColor,\n transition: 'box-shadow 0.3s',\n }}\n />\n )}\n </div>\n );\n};\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n createContext,\n useContext,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport useSetState from 'hooks/useSetState';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Id_ from './Message';\nimport collectFeedbackSubmitted from 'assets/collectFeedbackSubmitted.svg';\nimport { useDispatch } from 'react-redux';\nimport pubSub from 'services/pubSub';\nimport hexToRgb from 'services/hexToRGB';\nimport { colors } from 'styles/variables';\nimport { TextEntry } from 'components/UI/TextEntry';\n\nconst { lGrey2 } = colors;\nconst FiveStarRatingContext = createContext<any>(undefined);\n\nconst FeedbackSubmitted = ({ color }) => {\n return (\n <div\n className=\"fader_-5s\"\n css={css`\n // position: absolute;\n display: flex;\n flex-direction: column;\n justify-content: center;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n margin: 30px 0 0 0;\n `}\n >\n <img\n src={collectFeedbackSubmitted}\n // style={{ maxHeight: '50vh' }}\n />\n <div\n css={css`\n margin: 50px 0 0 0;\n font-size: 18px;\n text-align: center;\n\n color: ${color};\n `}\n role=\"alert\"\n >\n Thanks! Your feedback has been submitted.\n {/* {children} */}\n </div>\n </div>\n );\n};\n\nconst FiveStarRating = props => {\n const { children, onSubmit = () => {} } = props;\n let [FiveStarList, Message, SubmitBtn, FeedbackSubmittedEditable] = children;\n\n const interactionContext = useContext(InteractionContext);\n\n const {\n useMyFeedbackApp = 0,\n // ratingEndpoint,\n emailRequired = 1,\n emailOptional = 0,\n anonymityRequired = 0,\n identityPlaceholder,\n include5StarRating = true,\n includeMessageText = true,\n // messageTextColor = '#000',\n messageTextBackgroundColor = '#fff',\n messageTextBackgroundOpacity = 100,\n // messageBorder = true,\n messageBorderRadius = 0,\n // messageBorderColor = lGrey2,\n reference = '',\n collectionKey = '',\n textColor,\n isTextEntry,\n messageTextColor = '#000',\n messageBorderColor = '#d2dff9',\n fontFamily = 'inherit',\n messageFontSize = 16,\n } = interactionContext.props;\n\n // console.log({ isTextEntry });\n\n let ratingEndpoint = interactionContext.props?.ratingEndpoint;\n // ratingEndpoint will be undefined for modules before we\n // made the update to include hosting\n //\n if (!ratingEndpoint) {\n if (useMyFeedbackApp) {\n ratingEndpoint = 'collect';\n } else {\n ratingEndpoint = 'email';\n }\n }\n\n //\n const {\n state: { rating, learnerIdentity, message },\n setState,\n } = useSetState({\n rating: null,\n learnerIdentity: '',\n message: '',\n });\n\n const showTextEntry = isTextEntry || (!isTextEntry && includeMessageText);\n\n let {\n messageContainer,\n messageBorder = true,\n messageUnderline,\n } = interactionContext.props;\n\n if (!isTextEntry && !messageUnderline) {\n messageContainer = true;\n }\n\n if (isTextEntry && !messageContainer) {\n messageBorder = true;\n messageUnderline = true;\n }\n\n const [submitted, setSubmitted] = useState(false);\n\n let hasLearnerIdentity = learnerIdentity !== '';\n\n const dispatch = useDispatch();\n\n const { r, g, b } = hexToRgb(\n messageTextBackgroundColor === '#fff'\n ? '#ffffff'\n : messageTextBackgroundColor\n );\n const a = messageTextBackgroundOpacity / 100;\n\n const Id =\n ratingEndpoint === 'collect' && (!!emailRequired || !!emailOptional) ? (\n <Id_\n placeholder={identityPlaceholder || 'Enter your id'}\n onUpdateCallback=\"onUpdateLearnerIdentity\"\n cssStyle={{\n height: 45,\n margin: '0 0 10px 0',\n overflow: 'hidden',\n color: messageTextColor,\n\n '::placeholder': {\n color: messageTextColor,\n },\n\n ...(!messageUnderline\n ? {\n background:\n `rgba(${r}, ${g}, ${b}, ${a})` || messageTextBackgroundColor,\n border: messageBorder\n ? `1px solid ${messageBorderColor}`\n : 'none',\n borderRadius: messageBorderRadius,\n\n boxShadow: `0 0 0 0 ${messageBorderColor}`,\n transition: 'box-shadow 0.1s',\n\n '&:focus': {\n outline: 'none !important',\n border: 'none !important',\n\n boxShadow: `0 0 0 3px ${\n !messageBorder ? '#d2dff9' : messageBorderColor\n }`,\n },\n }\n : {\n background: 'transparent',\n outline: 'none',\n border: 'none',\n\n borderRadius: 0,\n\n borderBottomColor: 'transparent',\n transition: 'all 0.2s',\n\n '&:focus': {\n outline: 'none !important',\n border: 'none !important',\n\n borderBottomStyle: 'solid !important',\n borderBottomWidth: '3px !important',\n borderBottomColor: `${\n !messageBorder ? '#d2dff9' : messageBorderColor\n } !important`,\n },\n }),\n }}\n aria-autocomplete=\"given-name\"\n />\n ) : null;\n\n useEffect(() => {\n pubSub.subscribe(\n `SHOW_HIDE_RATING_FEEDBACK_${interactionContext.id}`,\n ({ showSubmissionFeedback }) => {\n setSubmitted(showSubmissionFeedback);\n }\n );\n }, []);\n\n return (\n <FiveStarRatingContext.Provider\n value={{\n rating,\n message,\n hasLearnerIdentity,\n learnerIdentity,\n include5StarRating,\n onSubmit() {\n setSubmitted(true);\n onSubmit();\n dispatch({\n type: 'SUBMIT_FEEDBACK',\n data: {\n key: collectionKey,\n rating: rating === null || isTextEntry ? undefined : rating + 1,\n message,\n identity: learnerIdentity,\n reference,\n },\n });\n },\n alertLearnerIdentity() {},\n onUpdateRating(index) {\n setState({ rating: index === rating ? null : index });\n },\n onUpdateLearnerIdentity(learnerIdentity) {\n setState({ learnerIdentity });\n },\n onUpdateMessage(message) {\n setState({ message });\n },\n }}\n >\n <div\n css={css`\n display: flex;\n align-items: center;\n position: relative;\n width: 100%;\n height: 100%;\n `}\n >\n {!submitted && (\n <div\n css={css`\n width: 100%;\n height: 100%;\n opacity: 1;\n ${submitted &&\n `\n opacity: 0;\n transition: opacity 0.3s;\n `}\n `}\n >\n {!isTextEntry && include5StarRating && FiveStarList}\n {Id}\n {/* {includeMessageText && Message} */}\n {showTextEntry && (\n <TextEntry\n id={`text=-entry-${props.id}`}\n message={message}\n onUpdate={message => {\n setState({ message });\n }}\n messageContainer={messageContainer}\n messageUnderline={messageUnderline}\n messageTextColor={messageTextColor}\n messageTextBackgroundColor={\n `rgba(${r}, ${g}, ${b}, ${a})` || messageTextBackgroundColor\n }\n messageBorderRadius={messageBorderRadius}\n messageBorderColor={\n messageBorder || messageUnderline\n ? messageBorderColor\n : 'transparent'\n }\n messageFontFamily={fontFamily}\n messageFontSize={messageFontSize}\n maxLinesBeforeScrolling={10}\n maxHeight={240}\n />\n )}\n {SubmitBtn}\n </div>\n )}\n\n {submitted &&\n (FeedbackSubmittedEditable ?? (\n <FeedbackSubmitted color={textColor} />\n ))}\n </div>\n </FiveStarRatingContext.Provider>\n );\n};\n\nexport default FiveStarRating;\nexport { FiveStarRatingContext };\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n useContext,\n useRef,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport { FiveStarRatingContext } from './FiveStarRating_v2';\n\nconst FiveStarList = (props) => {\n const { children } = props;\n\n const { starColor, shape = 'star' } = useContext(interactionContext).props;\n const { rating, onUpdateRating } = useContext(FiveStarRatingContext);\n\n const [hoverIndex, setHoverIndex] = useState<number | undefined>();\n\n const shapesRoot = useRef<HTMLDivElement>(null);\n const shapesContainer = useRef<HTMLDivElement>(null);\n\n const shapesRootDefaultPadding = 50;\n\n useEffect(() => {\n if (!shapesRoot.current || !shapesContainer.current) {\n return;\n }\n\n const onResize = () => {\n if (!shapesRoot.current || !shapesContainer.current) {\n return;\n }\n\n const winWidth = window.innerWidth;\n if (winWidth >= 1100) {\n return;\n }\n\n const scaleFactor = winWidth / 1100;\n\n shapesRoot.current.style.padding = `${\n shapesRootDefaultPadding * scaleFactor\n }px`;\n\n shapesContainer.current.style.transform = `scale(${scaleFactor})`;\n };\n\n onResize();\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n return (\n <div\n ref={shapesRoot}\n css={css`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n padding: ${shapesRootDefaultPadding}px;\n `}\n >\n <div\n key={shape}\n ref={shapesContainer}\n className=\"fader_-5s\"\n css={css`\n display: flex;\n // margin: 0 0 20px 0;\n `}\n >\n {children.map((child, index) =>\n React.cloneElement(child, {\n key: `child_${index}`,\n index,\n shape,\n color: starColor,\n onHover(index) {\n setHoverIndex(index);\n },\n isHovered: hoverIndex && hoverIndex >= index,\n rating,\n selected: rating !== null && index <= rating,\n onClick() {\n onUpdateRating(index);\n },\n })\n )}\n </div>\n </div>\n );\n};\n\nexport default FiveStarList;\n","/** @jsx jsx */\n\nimport { useState } from 'react';\nimport { css, jsx } from '@emotion/core';\n\nexport const Heart = props => {\n const { styles } = props;\n\n return (\n <g>\n <path\n css={css(styles)}\n d=\"M10.1,0.1C8.1-0.1,6.8,1.5,6.4,2.2C6,1.5,4.7-0.1,2.8,0.1C-0.1,0.4-0.7,3.6,1.2,6c1.5,2.1,5.2,6,5.3,6.1v0 c0,0,0,0,0,0c0,0,0,0,0,0v0c0.1-0.1,3.7-4,5.3-6.1C13.5,3.6,12.9,0.4,10.1,0.1z\"\n />\n </g>\n );\n};\n\nexport const heart = (\n <g>\n <path d=\"M10.1,0.1C8.1-0.1,6.8,1.5,6.4,2.2C6,1.5,4.7-0.1,2.8,0.1C-0.1,0.4-0.7,3.6,1.2,6c1.5,2.1,5.2,6,5.3,6.1v0 c0,0,0,0,0,0c0,0,0,0,0,0v0c0.1-0.1,3.7-4,5.3-6.1C13.5,3.6,12.9,0.4,10.1,0.1z\" />\n </g>\n);\n","/** @jsx jsx */\n\nimport { useState } from 'react';\nimport { css, jsx } from '@emotion/core';\n\nexport const Diamond = props => {\n const { styles } = props;\n\n return (\n <g>\n <path\n css={css(styles)}\n d=\"M13.73,6.76A8.26,8.26,0,0,1,7.12.15.17.17,0,0,0,6.94,0a.18.18,0,0,0-.18.15A8.24,8.24,0,0,1,.15,6.76.18.18,0,0,0,0,6.94a.17.17,0,0,0,.15.18,8.26,8.26,0,0,1,6.61,6.61.18.18,0,0,0,.18.15.17.17,0,0,0,.18-.15,8.27,8.27,0,0,1,6.61-6.61.17.17,0,0,0,.15-.18A.18.18,0,0,0,13.73,6.76Z\"\n />\n </g>\n );\n};\n\nexport const diamond = (\n <g>\n <path d=\"M13.73,6.76A8.26,8.26,0,0,1,7.12.15.17.17,0,0,0,6.94,0a.18.18,0,0,0-.18.15A8.24,8.24,0,0,1,.15,6.76.18.18,0,0,0,0,6.94a.17.17,0,0,0,.15.18,8.26,8.26,0,0,1,6.61,6.61.18.18,0,0,0,.18.15.17.17,0,0,0,.18-.15,8.27,8.27,0,0,1,6.61-6.61.17.17,0,0,0,.15-.18A.18.18,0,0,0,13.73,6.76Z\" />\n </g>\n);\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\n\nexport const Smiley = (props) => {\n const { styles, hasFocus, selected } = props;\n\n const { stroke, strokeWidth, ...$ } = styles;\n\n const { fill } = $;\n const transition = 'all 0.2s';\n\n return (\n <g>\n <path\n d=\"M6.32.2a6.12,6.12,0,1,0,6.11,6.12A6.12,6.12,0,0,0,6.32.2ZM8.64,4.05a.5.5,0,1,1-.5.5A.49.49,0,0,1,8.64,4.05ZM4,4.05a.5.5,0,1,1-.5.5A.49.49,0,0,1,4,4.05ZM6.32,9.7A3.75,3.75,0,0,1,2.7,7.15a.1.1,0,1,1,.19-.07A3.56,3.56,0,0,0,6.32,9.5,3.56,3.56,0,0,0,9.75,7.08.09.09,0,0,1,9.87,7a.12.12,0,0,1,.07.13A3.76,3.76,0,0,1,6.32,9.7Z\"\n style={{\n fill: selected ? fill : 'transparent',\n transition,\n }}\n />\n <path\n d=\"M6.32,0a6.32,6.32,0,1,0,6.31,6.32A6.32,6.32,0,0,0,6.32,0Zm0,12.43a6.12,6.12,0,1,1,6.11-6.11A6.12,6.12,0,0,1,6.32,12.43Z\"\n style={{\n fill: selected ? 'transparent' : fill,\n transition,\n ...(hasFocus && {\n stroke: fill,\n strokeWidth: 0.5,\n }),\n }}\n />\n <path\n d=\"M9.87,7a.09.09,0,0,0-.12.07A3.56,3.56,0,0,1,6.32,9.5,3.56,3.56,0,0,1,2.89,7.08a.1.1,0,1,0-.19.07A3.75,3.75,0,0,0,6.32,9.7,3.76,3.76,0,0,0,9.94,7.14.12.12,0,0,0,9.87,7Z\"\n style={{\n fill: selected ? 'transparent' : fill,\n transition,\n }}\n />\n <path\n d=\"M4,5a.5.5,0,1,0-.5-.49A.49.49,0,0,0,4,5Z\"\n style={{\n fill: selected ? 'transparent' : fill,\n transition,\n }}\n />\n <path\n d=\"M8.64,5a.5.5,0,1,0-.5-.49A.49.49,0,0,0,8.64,5Z\"\n style={{\n fill: selected ? 'transparent' : fill,\n transition,\n }}\n />\n </g>\n );\n\n return (\n <g id=\"open\">\n <circle\n cx=\"6.32\"\n cy=\"6.32\"\n r=\"6.22\"\n style={{\n ...(selected\n ? {\n fill: $.fill,\n }\n : {\n fill: 'none',\n stroke: $.fill,\n strokeMiterlimit: 10,\n strokeWidth: 0.2,\n }),\n transition: 'all 0.2s',\n }}\n />\n <path\n d=\"M9.84,7.11A3.68,3.68,0,0,1,6.32,9.6,3.67,3.67,0,0,1,2.79,7.11\"\n style={{\n fill: 'none',\n stroke: selected ? '#fff' : $.fill,\n strokeLinecap: 'round',\n strokeMiterlimit: 10,\n strokeWidth: 0.2,\n transition: 'all 0.2s',\n }}\n />\n <circle\n cx=\"4\"\n cy=\"4.55\"\n r=\"0.5\"\n style={{\n fill: selected ? '#fff' : $.fill,\n transition: 'all 0.2s',\n }}\n />\n\n <circle\n cx=\"8.64\"\n cy=\"4.55\"\n r=\"0.5\"\n style={{\n fill: selected ? '#fff' : $.fill,\n transition: 'all 0.2s',\n }}\n />\n </g>\n );\n};\n","/** @jsx jsx */\n\nimport { Fragment as _, useState } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { Heart } from './Heart';\nimport { Diamond } from './Diamond';\nimport { Smiley } from './Smiley';\n\nconst Star = ({\n index,\n rating,\n color,\n selected,\n onHover,\n isHovered,\n onClick,\n shape = 'star',\n}) => {\n const [isClicked, setIsClicked] = useState(false);\n const [hasFocus, setHasFocus] = useState(false);\n const size = {\n star: [114, 108],\n heart: [12.9, 12.2],\n diamond: [13.88, 13.88],\n smiley: [12.95, 12.95],\n }[shape] || [114, 108];\n\n const strokeWidths = {\n star: [3, 1],\n heart: [1, 0.1],\n diamond: [1, 0.1],\n smiley: [1, 0.1],\n }[shape] || [3, 1];\n\n const styles = {\n fill: `${selected ? color : 'transparent'}`,\n stroke: color,\n strokeWidth: strokeWidths[1], // hasFocus ? strokeWidths[0] :\n transition: 'all 0.2s',\n\n ...(selected &&\n !isClicked && {\n ':hover': {\n opacity: 0.5,\n },\n }),\n\n ...((isHovered || isHovered === index) && {\n fill: color,\n }),\n };\n\n return (\n <div\n css={css`\n position: relative;\n width: ${114 || size[0] / 1.5}px;\n height: ${108 || size[1] / 1.5}px;\n margin: 0 10px;\n transition: all 0.2s;\n\n @media (max-width: 480px) {\n width: ${114 || size[0] / 2}px;\n height: ${108 || size[1] / 2}px;\n margin: 0 5px;\n }\n `}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${size.join(' ')}`}\n overflow=\"visible\"\n >\n {shape === 'star' && (\n <polygon\n css={{\n ...css({\n ...styles,\n ...(hasFocus && {\n strokeWidth: `5 !important`,\n }),\n }),\n }}\n points=\"57 88.5 22.32 106.73 28.94 68.12 0.89 40.77 39.66 35.13 57 0 74.34 35.13 113.11 40.77 85.06 68.12 91.68 106.73 57 88.5\"\n />\n )}\n {shape === 'heart' && (\n <Heart\n styles={{\n ...styles,\n ...(hasFocus && {\n strokeWidth: `1 !important`,\n }),\n }}\n />\n )}\n {shape === 'diamond' && (\n <Diamond\n styles={{\n ...styles,\n ...(hasFocus && {\n strokeWidth: `1 !important`,\n }),\n }}\n />\n )}\n {shape === 'smiley' && (\n <Smiley\n styles={{\n ...styles,\n fill: color,\n }}\n hasFocus={hasFocus}\n selected={selected || isHovered || isHovered === index}\n />\n )}\n </svg>\n <button\n aria-label={`${shape} ${index + 1} of 5`}\n aria-pressed={rating == index}\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n border: none;\n outline: none;\n background: transparent;\n cursor: pointer;\n `}\n onFocus={() => {\n setHasFocus(true);\n }}\n onBlur={() => {\n setHasFocus(false);\n }}\n onClick={() => {\n setIsClicked(true);\n onClick();\n }}\n onMouseOver={() => {\n onHover(index);\n }}\n onMouseOut={() => {\n onHover();\n }}\n onMouseLeave={() => setIsClicked(false)}\n />\n </div>\n );\n};\n\nexport default Star;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport { useContext } from 'react';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { FiveStarRatingContext } from './FiveStarRating_v2';\nimport { interactionContext } from './interactionContext';\n\nconst myFeedbackApp = ({ key, rating, message, identity, reference }) => {\n const myHeaders = new Headers();\n myHeaders.append('Accept', 'application/json');\n myHeaders.append('Content-Type', 'application/json');\n\n //\n const raw = JSON.stringify({\n key,\n response: {\n content: message,\n rating,\n identity,\n reference,\n },\n });\n\n const requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow',\n };\n\n const endPoint =\n window.top!['collectResponseEndpoint'] ||\n 'https://collect.chameleoncreator.com/api/v1/responses/create';\n\n if (!(window as any).hosted) {\n fetch(endPoint, requestOptions)\n .then(response => {\n return response.text();\n })\n .then(result => console.log(result))\n .catch(error => console.log('error', error));\n }\n};\n\nconst SubmitBtn = props => {\n const context = useContext(interactionContext)!;\n const {\n hasLearnerIdentity,\n learnerIdentity,\n rating,\n message,\n alertLearnerIdentity,\n onSubmit,\n } = useContext(FiveStarRatingContext)!;\n\n const {\n useMyFeedbackApp,\n // ratingEndpoint,\n emailRequired,\n reference = '',\n collectionKey = '',\n submissionEmailDestination,\n subject,\n includeMessageText = true,\n isTextEntry,\n } = context.props;\n\n let ratingEndpoint = context.props?.ratingEndpoint;\n // ratingEndpoint will be undefined for modules before we\n // made the update to include hosting\n //\n if (!ratingEndpoint) {\n if (useMyFeedbackApp) {\n ratingEndpoint = 'collect';\n } else {\n ratingEndpoint = 'email';\n }\n }\n\n // console.log('SUBMIT TO :', { ratingEndpoint }, ratingEndpoint === 'collect');\n\n const submitted = unlockInteraction(context.id, 1);\n\n let enabled = includeMessageText === false || message !== '';\n\n // if (useMyFeedbackApp && emailRequired) {\n if (ratingEndpoint === 'collect' && emailRequired) {\n if (includeMessageText) {\n enabled = hasLearnerIdentity && message !== '';\n } else {\n enabled = hasLearnerIdentity;\n }\n }\n\n return (\n <div\n css={css`\n display: flex;\n justify-content: center;\n width: 100%;\n margin: 20px 0 0 0;\n ${!window.dev() &&\n `\n opacity: ${enabled ? 1 : 0.25};\n pointer-events: ${enabled ? 'auto' : 'none'};\n transition: opacity 0.5s;\n `}\n `}\n >\n <EditableBtn\n onClick={() => {\n onSubmit();\n if (ratingEndpoint === 'scorm') {\n submitted(1);\n return;\n }\n //\n // if (!!useMyFeedbackApp) {\n if (ratingEndpoint === 'collect') {\n myFeedbackApp({\n key: collectionKey,\n rating: rating === null || isTextEntry ? undefined : rating + 1,\n message,\n identity: learnerIdentity,\n reference,\n });\n\n submitted(1);\n return;\n }\n\n const parsedMessage = `Rating: ${\n rating !== null ? rating + 1 : 'not rated'\n }\\r\\n\\r\\n${message}`;\n\n location.href = `mailto:${submissionEmailDestination}?${subject &&\n `subject=${encodeURIComponent(subject)}&`}body=${encodeURIComponent(\n parsedMessage\n )}`;\n\n submitted(1);\n }}\n enabled={enabled}\n {...props}\n />\n </div>\n );\n};\n\nexport default SubmitBtn;\n","/** @jsx jsx */\n\nimport { Fragment as _, memo } from 'react';\nimport { jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext } from './interactionContext';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { Block } from '@chameleoncreator/creator-app';\nimport IELayout from 'components/Layouts/IELayout';\nimport FiveStarRating from './FiveStarRating_v2';\nimport FiveStarList from './FiveStarList';\nimport Star from './Star';\nimport Message from './Message';\nimport SubmitBtn from './SubmitBtn';\nimport shouldUpdate from 'services/shouldUpdate';\nimport Image from 'components/lib/Image';\nimport { FeedbackSubmittedEditable } from './FeedbackSubmittedEditable';\nimport collectFeedbackSubmitted from 'assets/CC_AW_Feedback-min.png';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: ({ children, ...props }) => (\n <EditableText {...{ ...props, className: 'flipcard-text' }} />\n ),\n InteractionColumn: ({ children }) => {\n return children?.[0] || null;\n },\n Image: ({ children, ...props }) => {\n return (\n <Image\n {...{\n ...props,\n placeholder: collectFeedbackSubmitted,\n }}\n />\n );\n },\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n FiveStarRating,\n FiveStarList,\n FeedbackSubmitted: FeedbackSubmittedEditable,\n Star,\n TextArea: Message,\n ContinueButton: ContinueBtn,\n EditableButton: SubmitBtn,\n ...IELayout(interactionContext),\n};\n\nconst FiveStarRatingDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <interactionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </interactionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default FiveStarRatingDisplay;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n createContext,\n useContext,\n cloneElement,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\n\nexport const FeedbackSubmittedEditable = props => {\n const { children } = props;\n const [img, txt] = children;\n\n // console.log(img);\n\n return (\n <div\n className=\"fader_-5s\"\n css={css`\n display: flex;\n flex-direction: column;\n justify-content: center;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n `}\n >\n {img}\n <div\n css={css`\n margin: 25px 0 0 0;\n font-size: 18px;\n text-align: center;\n `}\n role=\"alert\"\n >\n {txt}\n </div>\n </div>\n );\n};\n","import FiveStarRatingDisplay from './FiveStarRatingDisplay_v2';\nimport FiveStarRating from './FiveStarRating_v2';\n\nexport default FiveStarRatingDisplay;\nexport { FiveStarRating };\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n useContext,\n useRef,\n useEffect,\n useLayoutEffect,\n createContext,\n ReactElement,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext as _interactionContext } from './interactionContext';\nimport updateReadOnlyText from 'services/updateReadOnlyText';\n\ninterface ResultsPageContentProps {\n children: ReactElement[] | ReactElement | string | null;\n}\n\ninterface ResultsPageContext {\n passed: boolean;\n}\n\nconst ResultsPageContext = createContext<ResultsPageContext | undefined>(\n undefined\n);\n\nconst ResultsPageContent = (props: ResultsPageContentProps) => {\n const interactionContext = useContext(_interactionContext);\n const { displayPassFailContent, score, passed } = interactionContext;\n const { children } = props;\n\n const passFailContent = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n const checkingSectionHeight = setInterval(() => {\n const section = document.querySelector(\n `#i${interactionContext.id}`\n ) as HTMLElement;\n\n if (!section) {\n return;\n }\n //\n const height = section.offsetHeight;\n if (height) {\n // console.log('updateReadOnlyText !!!', section);\n //\n // sometimes the content here will not updateReadOnlyText on initial render\n // this is to give it another nudge when it renders at its display height\n\n updateReadOnlyText(section);\n clearInterval(checkingSectionHeight);\n }\n }, 1000 / 12);\n\n return () => {\n clearInterval(checkingSectionHeight);\n };\n }, []);\n\n return (\n <div\n ref={passFailContent}\n css={css`\n width: 100%;\n `}\n >\n {window.dev()\n ? children![displayPassFailContent === 'passed' ? 0 : 1]\n : children![passed ? 0 : 1]}\n </div>\n );\n};\n\nexport default ResultsPageContent;\nexport { ResultsPageContext };\n","import { Fragment as _, useContext, ReactElement } from 'react';\nimport { interactionContext as _interactionContext } from './interactionContext';\n\ninterface ResultsPageMediaProps {\n children: ReactElement[] | ReactElement | string | null;\n}\n\nconst ResultsPageMedia = (props: ResultsPageMediaProps) => {\n const interactionContext = useContext(_interactionContext);\n\n const {\n displayPassFailContent,\n passed,\n } = interactionContext;\n\n const { showImage = true } = interactionContext.props;\n\n const { children } = props as any;\n\n return showImage\n ? window.dev()\n ? children[displayPassFailContent === 'passed' ? 0 : 1]\n : children[passed ? 0 : 1]\n : null;\n};\n\nexport default ResultsPageMedia;\n","/** @jsx jsx */\n\nimport { useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\n\nconst GraphCircle = ({ color = '#F6306B', textColor = '#000', score }) => {\n const [animatedValue, setAnimatedValue] = useState(Math.random());\n const [actualValue, setActualValue] = useState(0);\n const mounted = useRef(true);\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n const tick = setTimeout(() => {\n if (mounted.current) {\n clearTimeout(tick);\n setAnimatedValue(Math.random());\n }\n }, 3000);\n }, [animatedValue]);\n\n useEffect(\n () => () => {\n mounted.current = false;\n },\n []\n );\n\n useEffect(() => {\n if (!window.dev()) {\n const tick = setTimeout(() => {\n if (mounted.current) {\n clearTimeout(tick);\n setActualValue(score);\n }\n }, 100);\n }\n }, [score]);\n\n return (\n <div\n css={css`\n position: relative;\n width: 100%;\n max-width: 360px;\n height: 100%;\n `}\n >\n <svg viewBox=\"0 0 360 360\" className=\"circular-chart\">\n <path\n stroke={color}\n fill=\"none\"\n strokeWidth=\"10\"\n strokeLinecap=\"round\"\n strokeDasharray={`${1100 *\n (window.dev() ? animatedValue : Number(actualValue) / 100)}, 1100`}\n d=\"M180 4.929\n a 175.07 175.07 0 0 1 0 350.1411\n a 175.07 175.07 0 0 1 0 -350.1411\"\n style={{\n transition: 'all 0.5s',\n }}\n ></path>\n <g fill=\"none\" id=\"Group\" transform=\"translate(24.000000, 24.000000)\">\n <path\n d=\"M-2.84217094e-14,155.589034 C-2.84217094e-14,69.6593898 69.6593898,-2.84217094e-14 155.589034,-2.84217094e-14 C241.518677,-2.84217094e-14 311.178067,69.6593898 311.178067,155.589034 C311.178067,241.517905 241.518677,311.178067 155.589034,311.178067 C69.6593898,311.178067 -2.84217094e-14,241.517905 -2.84217094e-14,155.589034 Z\"\n id=\"Stroke-1\"\n stroke={color}\n strokeWidth=\"2\"\n ></path>\n <path\n d=\"M167.935431,310.691118 C225.368578,306.18147 274.029533,270.487297 297.007888,220.53059 C297.007888,220.53059 250.406391,224.331359 217.219551,175.845693 C197.166289,146.547653 162.268255,144.383176 145.351669,167.549176 C134.567896,182.315957 110.117728,228.427107 80.8104211,225.84101 C54.0614131,223.480394 31.7981149,176.610171 0.59042412,169.098209 C2.08849212,186.511319 6.45373872,203.104353 13.2120331,218.403179 L13.2128053,218.403951 C13.6838473,219.471132 14.1680167,220.53059 14.6622247,221.584643 C14.6823019,221.627886 14.7023791,221.67113 14.7224563,221.713601 C15.2035369,222.737538 15.6962005,223.753753 16.1981305,224.764563 C16.2336517,224.834833 16.2684007,224.905875 16.3039219,224.976918 C16.7981299,225.96765 17.3039209,226.952978 17.8189783,227.931355 C17.8629937,228.017069 17.9077813,228.102011 17.9525689,228.186181 C18.4653097,229.156064 18.9873169,230.11977 19.5193627,231.077298 C19.5680113,231.163784 19.6166599,231.250271 19.6653085,231.336757 C20.1988987,232.293513 20.7417553,233.243319 21.2954227,234.187719 C21.3432991,234.2688 21.3919477,234.350654 21.4398241,234.431735 C21.9996691,235.382313 22.5680083,236.325941 23.1471583,237.263392 C23.1857683,237.32594 23.2259227,237.389261 23.2645327,237.452581 C23.8575823,238.409337 24.4591261,239.359143 25.0722529,240.301227 C25.0900135,240.329026 25.1085463,240.356053 25.1270791,240.383852 C30.8676139,249.20006 37.4791903,257.396963 44.8374841,264.855642 C44.9270593,264.94599 45.0143179,265.038654 45.1046653,265.129001 C45.7919233,265.823209 46.4892199,266.506606 47.1896053,267.186914 C47.3579449,267.350621 47.5239679,267.515871 47.6930797,267.678806 C48.3486775,268.310465 49.0127695,268.932858 49.6784059,269.552163 C49.9000273,269.757568 50.1185599,269.964518 50.3409535,270.168378 C50.9764741,270.752934 51.6197167,271.329767 52.2660481,271.904284 C52.5255073,272.135172 52.7849665,272.367604 53.0467423,272.596947 C53.6706799,273.144437 54.3007951,273.684977 54.9332269,274.222428 C55.2243463,274.470305 55.5154657,274.717409 55.8081295,274.962196 C56.4251173,275.478798 57.0475105,275.989994 57.6722203,276.496557 C57.9895945,276.7537 58.3069687,277.01007 58.6266595,277.264896 C59.2405585,277.755243 59.8583185,278.240185 60.4799395,278.721266 C60.8166187,278.981497 61.1548423,279.240184 61.4938381,279.498099 C62.1085093,279.966052 62.7254971,280.429372 63.3478903,280.887287 C63.7031023,281.149835 64.0598587,281.409294 64.4173873,281.667981 C65.0328307,282.11354 65.6505907,282.556783 66.2722117,282.993848 C66.6436399,283.25408 67.0173847,283.511222 67.3903573,283.768365 C68.0088895,284.194619 68.6289661,284.620101 69.2544481,285.037862 C69.6382315,285.294232 70.0258759,285.545969 70.4127481,285.800023 C71.0351413,286.208517 71.6590789,286.615466 72.2876497,287.015466 C72.6830161,287.267203 73.0830157,287.512763 73.4806987,287.760639 C74.1108139,288.152916 74.7401569,288.544422 75.3749053,288.927433 C75.7779937,289.170676 76.1849431,289.406197 76.5895759,289.645579 C77.2289575,290.022413 77.8667947,290.401563 78.5123539,290.770674 C78.9162145,291.00079 79.3247083,291.223956 79.7301133,291.450983 C80.3849389,291.817778 81.0382201,292.185345 81.6984511,292.542873 C82.0876399,292.752912 82.4806897,292.954456 82.8714229,293.161406 C83.5563643,293.525112 84.2405335,293.890362 84.9316525,294.243258 C85.2142777,294.387659 85.5023083,294.524339 85.7857057,294.667968 C87.3501829,295.455612 88.9293319,296.215457 90.5239249,296.950591 C90.8243107,297.088815 91.1200633,297.233216 91.4219935,297.369123 C92.0358925,297.647888 92.6582857,297.914297 93.2768179,298.185339 C93.7856977,298.408505 94.2914887,298.636304 94.8034573,298.853292 C95.3880127,299.10194 95.9787457,299.339006 96.5671621,299.579932 C97.1200573,299.806959 97.6714081,300.037847 98.2281643,300.258696 C98.8042255,300.487267 99.3856921,300.7058 99.9648421,300.927421 C100.539359,301.14827 101.113104,301.370664 101.691481,301.584563 C102.265226,301.795374 102.842832,301.999235 103.419665,302.20464 C104.01117,302.414678 104.601903,302.627033 105.195725,302.830122 C105.76947,303.026261 106.345531,303.213905 106.921592,303.403094 C107.526225,303.602322 108.130085,303.801549 108.737806,303.993055 C109.312323,304.174522 109.889929,304.349039 110.467534,304.524329 C111.082978,304.709657 111.699193,304.894985 112.318498,305.074907 C112.894559,305.240158 113.472937,305.401548 114.052087,305.561393 C114.678341,305.735138 115.305367,305.905794 115.93471,306.071817 C116.512316,306.223169 117.091466,306.369887 117.67216,306.515832 C118.308453,306.674906 118.947063,306.831662 119.586444,306.982241 C120.166366,307.119693 120.747833,307.254056 121.330072,307.38533 C121.975631,307.529731 122.624279,307.671044 123.274471,307.808495 C123.854394,307.931275 124.435088,308.051738 125.017327,308.166796 C125.676013,308.298842 126.337789,308.423939 126.999564,308.546718 C127.577942,308.654826 128.157864,308.76139 128.739331,308.862548 C129.410373,308.97915 130.083731,309.088803 130.757862,309.196139 C131.335467,309.290347 131.912301,309.382239 132.490678,309.468725 C133.177164,309.570656 133.866739,309.664092 134.555541,309.757528 C135.128514,309.834748 135.699942,309.914285 136.273686,309.985327 C136.978705,310.072586 137.68604,310.149806 138.393375,310.227026 C138.956309,310.288802 139.518471,310.354439 140.083721,310.410809 C140.81345,310.482624 141.547812,310.543628 142.281402,310.605404 C142.82812,310.651736 143.374065,310.703473 143.923099,310.743627 C144.692211,310.80077 145.465183,310.844786 146.238155,310.890345 C146.754757,310.921233 147.269814,310.958299 147.78796,310.983782 C148.648191,311.026253 149.513055,311.05328 150.377147,311.081851 C150.810351,311.095751 151.242011,311.118144 151.675987,311.128183 C152.976372,311.159843 154.280618,311.178376 155.589497,311.178376 C155.998763,311.178376 156.404168,311.165249 156.813434,311.16216 C159.156289,311.113511 163.055127,310.944399 167.935431,310.691118\"\n id=\"Fill-3\"\n fill={color}\n opacity=\"0.36063058\"\n ></path>\n <path\n d=\"M304.215371,201.746748 C296.230051,193.783049 284.644735,186.569157 268.723515,186.190007 C232.520462,185.327459 210.108902,230.150581 180.800823,232.736678 C151.493516,235.323548 129.154528,203.253121 114.750696,185.650239 C100.346864,168.047357 62.2773895,164.208562 42.8828143,193.947528 C33.8967229,207.725893 21.8318701,215.574533 13.7438473,219.617773 C38.1530893,273.609224 92.4835369,311.178299 155.589265,311.178299 C225.446338,311.178299 284.549754,265.138963 304.215371,201.746748 Z\"\n id=\"Fill-5\"\n fill={color}\n opacity=\"0.659458705\"\n ></path>\n </g>\n </svg>\n\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n `}\n >\n <h1 style={{ color: textColor, textAlign: 'center' }}>\n {window.dev() ? Math.ceil(animatedValue * 100) : score}%\n </h1>\n </div>\n </div>\n );\n};\n\nexport default GraphCircle;\n","/** @jsx jsx */\n\nimport { useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\n\nconst { lGrey1 } = colors;\n\nconst GraphBar = ({ color = '#F6306B', textColor = '#000', score }) => {\n const [animatedValue, setAnimatedValue] = useState(Math.random());\n const mounted = useRef(true);\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n const tick = setTimeout(() => {\n if (mounted.current) {\n clearTimeout(tick);\n setAnimatedValue(Math.random());\n }\n }, 3000);\n }, [animatedValue]);\n\n useEffect(\n () => () => {\n mounted.current = false;\n },\n []\n );\n\n return (\n <div\n css={css`\n display: flex;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 0 0 50px 0;\n `}\n >\n <div\n css={css`\n width: 100%;\n max-width: 360px;\n height: 30px;\n padding: 3px;\n border-radius: 9999px;\n background: ${lGrey1};\n `}\n >\n <div\n css={css`\n width: ${window.dev() ? 100 * animatedValue : score}%;\n height: 100%;\n border-radius: 9999px;\n background: ${color};\n transition: all 0.3s;\n `}\n />\n\n <div\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n margin: 10px;\n `}\n >\n <h1 style={{ color: textColor, textAlign: 'center' }}>\n {window.dev() ? Math.ceil(animatedValue * 100) : score}%\n </h1>\n </div>\n </div>\n </div>\n );\n};\n\nexport default GraphBar;\n","/** @jsx jsx */\n\nimport { useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport GraphCircle from './GraphCircle';\nimport GraphBar from './GraphBar';\nimport { interactionContext as _interactionContext } from './interactionContext';\n\nconst GraphContainer = () => {\n const interactionContext = useContext(_interactionContext);\n const { score } = interactionContext;\n const {\n graphType,\n graphColor,\n graphTextColor = '#000',\n } = interactionContext.props;\n\n return (\n <div\n css={css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n padding: 30px;\n `}\n >\n {graphType === 'circle' ? (\n <GraphCircle\n color={graphColor}\n textColor={graphTextColor}\n score={Number(score)}\n />\n ) : (\n <GraphBar\n color={graphColor}\n textColor={graphTextColor}\n score={Number(score)}\n />\n )}\n </div>\n );\n};\n\nexport default GraphContainer;\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useMemo, useEffect, useContext } from 'react';\nimport { jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { Block, Blocks } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport ResultsPageContent from './ResultsPageContent';\nimport ResultsPageMedia from './ResultsPageMedia';\nimport { useSelector } from 'react-redux';\nimport ResultsPageResult from './ResultsPageResult';\nimport useIntersectionObserver from 'hooks/useIntersectionObserver';\nimport { getAllScoringInteractions } from 'services/scoring';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { State } from 'store/store';\nimport { findBlocksIn } from 'selectors/block';\nimport { createSelector } from 'reselect';\nimport pubSub from 'services/pubSub';\nimport { imgPlaceholders } from 'components/lib/Image';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n Image: ({ children, ...props }) => {\n return (\n <Image\n {...{\n ...props,\n placeholder:\n // only the 1 imgPlaceholder for now\n imgPlaceholders[1],\n }}\n />\n );\n //\n },\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: ContinueBtn,\n Video,\n SVG,\n Media,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [results, txt] = children;\n\n if (!includeAdditionalTextField) {\n return results;\n }\n\n return (\n <_>\n {results}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n ResultsPageContent,\n ResultsPageContentPassed: ({ children }) => children[0],\n ResultsPageContentFailed: ({ children }) => children[0],\n ResultsPageResult,\n ResultsPageMedia,\n};\n\n/**\n * activeBlockSelector finds blocks that are accessible from the root block\n */\nconst activeBlockSelector = (blocks: Blocks, rootId: string): Block[] => {\n return findBlocksIn(blocks, blocks[rootId], (i: any) => i);\n};\n\n/**\n * scoringBlocks finds all the blocks that are scorable and have it turned on\n */\nconst scoringBlocks = (blocks: Block[]): string[] => {\n return blocks\n .filter((b: any) => {\n return b?.props?.score && b.props.score === true;\n })\n .map((b: any) => b.id);\n};\n\nlet printResultsInteractionData;\nconst prettyPrintScoreData = (scoreData: {\n [key: string]: number | undefined;\n}) => {\n return Object.keys(scoreData).reduce((acc, curr) => {\n const name = getBlockById(curr)?.props?.name;\n return {\n ...acc,\n [name]: scoreData[curr],\n };\n }, {});\n};\n\n/**\n * This selector pulls out all the active blocks from the store\n */\nconst loadActiveBlocks = createSelector(\n [(state: State) => state.blocks, (state: State) => state.rootBlockId!],\n activeBlockSelector\n);\n\nconst loadScoringBlocks = createSelector(loadActiveBlocks, scoringBlocks);\n\nconst getModuleBlock = createSelector(\n (state: State) => state.blocks,\n (blocks: Blocks) => Object.values(blocks).find(b => b.type === 'Module')\n);\n\nconst ResultsPageDisplay = props => {\n const interactionBlock = getBlockById(props.blockId);\n\n const [displayPassFailContent, setDisplayPassFailContent] = useState(\n 'passed'\n );\n\n const { scoreData = {} } = useSelector((state: State) => ({\n scoreData: state.userBehaviour.score,\n }));\n\n const moduleBlock = useSelector(getModuleBlock);\n let mbProps = { passMark: 80 };\n if (moduleBlock) {\n mbProps = moduleBlock.props as { passMark: number };\n }\n\n const {\n scoringByTopic = false,\n scoringByTopicPassmark,\n } = interactionBlock?.props as any;\n\n const passMark =\n scoringByTopic && scoringByTopicPassmark\n ? scoringByTopicPassmark\n : mbProps.passMark;\n\n const scoringInteractions = useSelector(loadScoringBlocks);\n const numberOfScorableInteractions = scoringInteractions.length;\n\n // sketching out scorable interactions in topic\n const currentTopicBlock = useSelector((state: State) => {\n const { currentTopic, blocks } = state;\n\n return currentTopic ? blocks[currentTopic] : null;\n });\n\n const interactionsInTopic = getInteractionsInTopic(currentTopicBlock);\n\n const interactionsInTopicScoring = interactionsInTopic.filter(entry => {\n return entry.props?.score;\n });\n\n const interactionsInTopicIds = interactionsInTopic.map(entry => entry.id);\n\n // filter scoreData\n const topicScoreData = Object.keys(scoreData).reduce((acc, curr) => {\n return {\n ...acc,\n ...(interactionsInTopicIds.includes(curr) && {\n [curr]: scoreData[curr],\n }),\n };\n }, {});\n\n const allScoringInteractions = getAllScoringInteractions();\n\n const getScoreDataFromScoringInteractions = scoreData => {\n return allScoringInteractions.reduce((acc, curr) => {\n return {\n ...acc,\n [curr]: !!scoreData[curr] ? 1 : 0,\n };\n }, {});\n };\n\n const scoreDataFromScoringInteractions = getScoreDataFromScoringInteractions(\n scoringByTopic ? topicScoreData : scoreData\n );\n\n const scoreRaw = Object.values(scoreDataFromScoringInteractions).reduce<\n number\n >((acc, curr) => acc + Number(curr), 0);\n\n const scorePercent =\n ((scoreRaw || 0) /\n (scoringByTopic\n ? interactionsInTopicScoring.length\n : numberOfScorableInteractions)) *\n 100 || 0;\n\n const hasScoringInteractions = !!allScoringInteractions?.length;\n\n const passed = hasScoringInteractions\n ? scorePercent >= Number(passMark)\n : true;\n\n const score = hasScoringInteractions ? scorePercent.toFixed() : 100;\n\n const { init } = useIntersectionObserver(true);\n\n useEffect(() => {\n init([document.querySelector(`#i${interactionBlock.id}`)], {\n threshold: 0.5,\n });\n }, []);\n\n useEffect(() => {\n // receives the event from the editor settings\n // show feedback for passed / failed\n const pS = pubSub.subscribe(\n `displayResultsInteractionPassFailContent_${interactionBlock.id}`,\n ({ displayPassFailContent }) => {\n setDisplayPassFailContent(displayPassFailContent);\n }\n );\n\n return pS;\n });\n\n clearTimeout(printResultsInteractionData);\n printResultsInteractionData = setTimeout(() => {\n console.log('RESULTS INTERACTION DATA :');\n console.log({\n hasScoringInteractions,\n numberOfScorableInteractions,\n scoringInteractions: scoringInteractions.map(\n id => getBlockById(id)?.props?.name\n ),\n topicScoreData: prettyPrintScoreData(topicScoreData),\n scoreData: prettyPrintScoreData(scoreData),\n scoreDataFromScoringInteractions,\n scoreRaw,\n scorePercent,\n passed,\n });\n }, 1000);\n\n const container = (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{\n ...interactionBlock,\n displayPassFailContent,\n score,\n passed,\n }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n\n return window.dev()\n ? container\n : useMemo(() => {\n return container;\n }, [\n props.isOpen,\n displayPassFailContent,\n score,\n passed,\n interactionBlock.props!.lockDown,\n ]);\n};\n\nexport default ResultsPageDisplay;\n","import ResultsPageDisplay from './ResultsPageDisplay';\n\nexport default ResultsPageDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useContext, useEffect, useRef } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport { interactionContext } from './interactionContext';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport { ImageContext } from 'components/lib/Image';\nimport getStore from 'services/getStore';\nimport landingPageCake_1 from 'assets/landingPageCake_1.png';\nimport landingPageCake_2 from 'assets/landingPageCake_2.png';\nimport landingPageCake_3 from 'assets/landingPageCake_3.png';\nimport landingPageCake_4 from 'assets/landingPageCake_4.png';\nimport landingPageCake_5 from 'assets/landingPageCake_5.png';\nimport landingPageCake_6 from 'assets/landingPageCake_6.png';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\n\nconst { lGrey2 } = colors;\n\nconst cakes = [\n landingPageCake_1,\n landingPageCake_2,\n landingPageCake_3,\n landingPageCake_4,\n landingPageCake_5,\n landingPageCake_6,\n];\n\nconst store = getStore();\n\nconst ClickAndReveals = ({ children, ...props }) => {\n const context = useContext(interactionContext);\n const { id: contextId } = context;\n\n const itemsSeen = useRef(\n unlockInteraction(context.id, (children as any).length)\n );\n\n const { sId, isLandingPage } = context.props;\n\n context.numPanels = children.length;\n\n const landingPageSeenState = useSelector((state: State) => {\n return state?.landingPagesSeenState?.[sId || context.id] || [];\n });\n\n // console.log({ landingPageSeenState });\n\n context.updateClickAndRevealSeen = id => {\n store.dispatch({\n type: 'UPDATE_LANDING_PAGE_SEEN_STATE',\n data: {\n parentId: sId || contextId,\n childIndex: children.findIndex(child => {\n return child?.props?.id === id;\n }),\n },\n });\n };\n\n useEffect(() => {\n // console.log(landingPageSeenState.length, context.numPanels);\n if (landingPageSeenState.length == context.numPanels) {\n unlockInteraction(contextId);\n }\n }, [landingPageSeenState.length]);\n\n return (\n <div\n css={css`\n display: flex;\n justify-content: center;\n width: 100%;\n `}\n >\n <div\n css={css`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n height: 100%;\n `}\n >\n {children.map((child: any, index: number) => {\n const element = React.cloneElement(child, {\n key: child.props.id,\n parentId: props.id,\n seen: landingPageSeenState.includes(index),\n });\n const reIndex = index % 6;\n\n return isLandingPage ? (\n <ImageContext.Provider\n key={`${child.props.id}-cake`}\n value={{\n placeholder: cakes[reIndex],\n }}\n >\n {element}\n </ImageContext.Provider>\n ) : (\n element\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default ClickAndReveals;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useState,\n useRef,\n useContext,\n useEffect,\n cloneElement,\n} from 'react';\nimport { css as _css } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport { interactionContext } from './interactionContext';\nimport checkReturnToInteractionEditing from 'services/checkReturnToInteractionEditing';\nimport Modal from 'components/UI/Modal';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport pubSub from 'services/pubSub';\nimport getStore from 'services/getStore';\nimport { getHexToRgbWithDefaultFallback } from 'services/hexToRGB';\nimport { headingStylesForPanelsAndCards } from 'styles/headingStylesForPanelsAndCards';\n\nconst store = getStore();\nconst { lGrey0, lPink } = colors;\n\nconst PanelColumn = ({ width, children }) => {\n //\n return (\n <div\n css={css`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-shrink: 0;\n width: ${width}px;\n margin: 20px;\n cursor: pointer;\n\n @media (max-width: ${width + 30}px) {\n width: 100% !important;\n max-width: 100% !important;\n height: auto !important;\n }\n `}\n >\n {children}\n </div>\n );\n};\n\nconst ClickAndRevealSeenTick = ({\n title = '',\n width = 16,\n height = 15,\n color,\n}) => {\n const titleComped = `${title ? `${title}. ` : ''}Content has been seen`;\n\n return (\n <svg\n width=\"16px\"\n height=\"15px\"\n viewBox=\"0 0 16 15\"\n version=\"1.1\"\n aria-describedby=\"title\"\n >\n <title>{'Content has been seen' || titleComped}</title>\n <g\n id=\"Page-1\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <polyline\n id=\"Path\"\n stroke={color}\n strokeWidth=\"2\"\n transform=\"translate(7.486953, 6.527846) rotate(6.000000) translate(-7.486953, -6.527846) \"\n points=\"0.886953048 9.1308343 6.78684502 13.1278461 14.086953 -0.0721539421\"\n />\n </g>\n </svg>\n );\n};\n\nconst ClickAndReveal = ({ children, ...props }) => {\n //\n\n const [showFeedback, setShowFeedback] = useState(false);\n\n let [imageText, text, content] = children;\n\n let imageDescription = '';\n\n switch (imageText.props.child) {\n case 0: {\n // text\n const doc = new DOMParser().parseFromString(\n imageText.props.children[0].props.content,\n 'text/html'\n );\n imageDescription = doc && doc.body.innerText;\n break;\n }\n\n case 1: {\n // image\n imageDescription = imageText.props.children[1].props.description;\n break;\n }\n\n case 5: {\n // pdf\n imageDescription = imageText.props.children[5].props.description;\n break;\n }\n }\n\n // if there's no description added to a link\n // attempt to fall back to the alt text of the image ( if it exists )\n let altTextForAnchorTag = '';\n\n if (imageText) {\n if (imageText?.props?.child === 1) {\n altTextForAnchorTag = imageText.props.children[1]?.props?.description;\n }\n\n imageText = cloneElement(imageText, {\n onMediaChange(child) {\n mediaTypeUpdated(child);\n },\n });\n }\n\n let initialMediaType = imageText?.props?.child ?? 1;\n const [mediaType, mediaTypeUpdated] = useState<number>(initialMediaType);\n //\n\n const [panelContainsImageZoom, setPanelContainsImageZoom] = useState(false);\n //\n let imgZoomIsActiveElement = false;\n\n const context: any = useContext(interactionContext);\n\n const { id, updateClickAndRevealSeen } = context;\n const interactionSId = context.props.sId || id;\n\n const {\n sId,\n includePanelBackground = true,\n panelBackgroundOpacity = 100,\n backgroundColor = '#ffffff',\n //'#0199ff', ^ < that blue\n clickAndRevealPanelTextColor,\n includeLabel = true,\n clickAndRevealLabelTextColor,\n showSeenState = true,\n clickAndRevealShowSeenStateBackgroundColor,\n clickAndRevealShowSeenStateTickColor,\n width,\n height,\n panelOutline,\n panelOutlineColor,\n borderRadius,\n borderColor,\n focusColor,\n layout,\n useGlobalNavigation = false,\n globalNavigation = {},\n } = context.props;\n\n const seen = props?.seen;\n\n const panelImg = useRef<HTMLDivElement>(null);\n\n let labelContent;\n\n if (includeLabel && text?.props?.content) {\n const doc = new DOMParser().parseFromString(\n text.props.content,\n 'text/html'\n );\n labelContent = doc && doc.body.innerText;\n }\n\n let ariaLabel = `${imageDescription ? imageDescription : ''}${\n labelContent ? ` ${labelContent}` : ''\n }${!!showSeenState && seen ? ' Seen.' : ' Not seen.'}`.trim();\n\n const onClose = () => {\n window.dev() && checkReturnToInteractionEditing(true);\n setShowFeedback(!showFeedback);\n };\n\n const linkData = {\n url: props?.linkData?.url || `#${props?.navigation}` || '',\n title: props?.linkData?.title || '',\n target: props?.linkData?.target || '_self',\n };\n\n useEffect(() => {\n if (!useGlobalNavigation) {\n return;\n }\n\n const panelId = props.id;\n\n // if this panel has props.navigation we're good and can bail\n if (props.navigation) {\n return;\n }\n\n // if globalNavigation[props.id] we update the panel props with that location\n // maybe delete the globalNavigation prop from the parent since it'd no longer be needed\n\n if (globalNavigation[panelId]) {\n const panelBlock = getBlockById(panelId);\n\n setBlockProps(panelBlock, {\n navigation: globalNavigation[panelId],\n });\n }\n\n // added empty array dependency\n }, []);\n\n const { r, g, b } = getHexToRgbWithDefaultFallback(\n backgroundColor,\n '#ffffff'\n );\n\n let a = panelBackgroundOpacity / 100;\n if (!backgroundColor) {\n a = 0;\n }\n\n useEffect(() => {\n const pS = pubSub.subscribe(\n `CLICK_AND_REVEAL_FEEDBACK_${props.parentId}`,\n $ => {\n if ($.id !== props.id) {\n if ($.eventType === 'click') {\n setShowFeedback(false);\n }\n return;\n }\n\n switch ($.eventType) {\n case 'mouseOver': {\n panelImg.current!.style.boxShadow = `0 0 0 2px ${lPink}`;\n return;\n }\n case 'mouseOut': {\n panelImg.current!.style.boxShadow = 'null';\n return;\n }\n case 'click': {\n setShowFeedback(true);\n return;\n }\n }\n }\n );\n\n return () => pS();\n }, []);\n\n const returnToLastFocused = () => {\n // get the element we just had focus on\n const findLastFocused = setInterval(() => {\n // TODO - update this doofer to focus back on <a> or button\n\n const lastFocused: any = document.querySelector(`#panel-${props.id}`);\n\n if (lastFocused) {\n clearInterval(findLastFocused);\n lastFocused.focus();\n }\n }, 125);\n };\n\n // fixing this up\n // was the below\n // height: ${!!includeLabel ? '100%' : `${height}px`};\n // changed to : height: ${!!!includeLabel ? `${height}px` : 'auto'};\n // but. this is easier to read\n let useFixedHeightOrAuto = 'auto';\n\n if (includeLabel === 0) {\n useFixedHeightOrAuto = `${height}px`;\n }\n\n const panel = (\n <div>\n <div\n ref={panelImg}\n id={`panel-img-${props.id}`}\n className=\"clickAndRevealPanel\"\n css={css`\n position: ${includeLabel ? 'absolute' : 'relative'};\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0;\n top: 0;\n width: ${width}px;\n height: ${height}px;\n\n .chameleon-image > div,\n .chameleon-image img:not(.zoom-image img) {\n width: ${width}px !important;\n height: ${height}px !important;\n }\n\n .zoom-image {\n bottom: 5px;\n right: ${5 + borderRadius / 2}px;\n transform: scale(0.8);\n }\n\n ${mediaType === 0 &&\n `\n padding: ${window.dev() ? '10px' : '20px'};\n `}\n\n white-space: pre-wrap;\n overflow-wrap: break-word;\n\n\n background: ${\n includePanelBackground\n ? `rgba(${r}, ${g}, ${b}, ${a})` || backgroundColor\n : 'transparent'\n };\n\n color: ${clickAndRevealPanelTextColor};\n\n ${\n panelOutline\n ? `\n border: 1px solid ${panelOutlineColor || backgroundColor};\n border-radius: ${borderRadius}px;\n `\n : `border-radius: ${borderRadius}px;`\n }\n\n overflow: hidden;\n\n * {\n p,\n li {\n line-height: 1.2em !important;\n }\n }\n\n ${headingStylesForPanelsAndCards}\n\n cursor: pointer;\n transition: opacity 0.2s;\n\n ${!window.dev() &&\n `\n &:hover {\n opacity: 0.8;\n }\n `}\n\n &:focus {\n // ${getButtonFocus(backgroundColor || lGrey0)}\n }\n\n * div {\n color: ${clickAndRevealPanelTextColor};\n }\n\n @media (max-width: ${width + 30}px) {\n position: relative !important;\n width: 100% !important;\n height: auto !important;\n\n .chameleon-image > div,\n .chameleon-image img:not(.zoom-image img) {\n width: calc(100vw - 30px) !important;\n height: auto !important;\n }\n }\n `}\n onKeyUp={\n window.dev()\n ? () => {}\n : e => {\n if (![' ', 'Enter'].includes(e.key) || imgZoomIsActiveElement) {\n return;\n }\n\n setShowFeedback(!showFeedback);\n }\n }\n >\n {imageText}\n </div>\n\n {!!showSeenState && (window.dev() || seen) && (\n <div\n css={css`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n right: -22px;\n top: -22px;\n width: 44px;\n height: 44px;\n background: ${clickAndRevealShowSeenStateBackgroundColor || lGrey0};\n border-radius: 50%;\n pointer-events: none;\n `}\n >\n <ClickAndRevealSeenTick\n title={linkData.title || altTextForAnchorTag || ''}\n color={clickAndRevealShowSeenStateTickColor || '#fff'}\n />\n </div>\n )}\n </div>\n );\n\n const panelLabel = !!includeLabel ? (\n <div\n id={`panel-label-${props.id}`}\n css={css`\n display: flex;\n justify-content: center;\n color: ${clickAndRevealLabelTextColor};\n width: 100%;\n margin: ${window.dev() ? height : height + 15}px 0 0 0;\n cursor: auto;\n //double up needed for editing. . .\n * div {\n color: ${clickAndRevealLabelTextColor};\n }\n\n @media (max-width: ${width + 30}px) {\n margin: 15px 0 0 0 !important;\n }\n `}\n >\n {text}\n </div>\n ) : null;\n\n return (\n <_>\n <PanelColumn width={width}>\n {!useGlobalNavigation ? (\n <button\n id={`panel-${props.id}`}\n css={css({\n outline: 'none',\n border: 'none',\n margin: 0,\n padding: 0,\n background: 'none',\n\n '&:focus-visible': {\n [`#panel-img-${props.id}`]: {\n transition: 'box-shadow 0.2s',\n boxShadow: (getButtonFocus(\n focusColor || backgroundColor || lGrey0\n ) as string)\n .replace('box-shadow:', '')\n .trim(),\n },\n },\n })}\n onKeyUp={e => {\n // this prevents the click from firing when typing\n // in the a text field\n if (window.dev()) {\n e.preventDefault();\n return;\n }\n\n const { activeElement } = document;\n\n imgZoomIsActiveElement = [\n 'expand image',\n 'close expanded image view',\n ].includes(String(activeElement?.ariaLabel));\n }}\n //\n onClick={e => {\n if (imgZoomIsActiveElement) {\n return;\n }\n\n setShowFeedback(!showFeedback);\n }}\n aria-label={ariaLabel}\n //\n >\n {panel}\n </button>\n ) : (\n <a\n id={`panel-${props.id}`}\n href={window.dev() ? null : linkData.url}\n title={linkData.title || altTextForAnchorTag}\n target={linkData.target}\n css={css({\n textDecoration: 'none !important',\n\n '&:focus': {\n [`#panel-img-${props.id}`]: {\n transition: 'box-shadow 0.2s',\n boxShadow: (getButtonFocus(\n focusColor || backgroundColor || lGrey0\n ) as string)\n .replace('box-shadow:', '')\n .trim(),\n },\n },\n })}\n onFocus={e => {\n // updateCardContent(e);\n }}\n onKeyUp={e => {\n // this prevents the click from firing when typing\n // in the a text field\n if (window.dev()) {\n e.preventDefault();\n return;\n }\n\n if (e.keyCode === 32) {\n e.currentTarget.click();\n }\n }}\n onClick={e => {\n // make sure <a> does not nav\n\n if (window.dev()) {\n e.preventDefault();\n }\n\n if (window.dev() && useGlobalNavigation) {\n if (store.getState().focusedNodeId !== id) {\n setCurrentBlock({ id });\n }\n pubSub.publish('SET_CLICK_AND_REVEAL_GLOBAL_NAVIGATION_PANEL', {\n panelId: props.id,\n });\n return;\n }\n\n if (!linkData.url) {\n alert('No navigation has been set on this panel');\n return;\n }\n\n updateClickAndRevealSeen(props.id);\n }}\n >\n {panel}\n </a>\n )}\n {panelLabel}\n </PanelColumn>\n\n {showFeedback && (\n <Modal\n onClose={() => {\n updateClickAndRevealSeen(props.id);\n\n returnToLastFocused();\n onClose();\n }}\n >\n {React.cloneElement(content, {\n key: layout,\n layout,\n onClose() {\n updateClickAndRevealSeen(props.id);\n\n returnToLastFocused();\n onClose();\n },\n })}\n </Modal>\n )}\n </_>\n );\n};\n\nexport default ClickAndReveal;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useState, useRef, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport { MediaContext } from 'components/lib/Media/Media';\n\nconst Content = ({ layout, children }) => {\n const [mediaChanged, setMediaChanged] = useState(children.props.child);\n\n let minHeightInDev =\n window.dev() && [1, 3].includes(mediaChanged) ? `min-height: 50vh;` : '';\n\n return (\n <MediaContext.Provider\n value={{\n onMediaChange(child) {\n if (mediaChanged !== child) {\n setMediaChanged(child);\n }\n },\n }}\n >\n <div\n css={css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: ${layout.includes('Two') ? '50%' : '100%'};\n margin: ${layout.includes('Two') ? '0 10px' : '10px 0'};\n ${minHeightInDev}\n @media (max-width: 768px) {\n width: 100%;\n }\n `}\n >\n {children}\n </div>\n </MediaContext.Provider>\n );\n};\n\nconst ClickAndRevealContent = props => {\n const { onClose, children } = props;\n const [columnA, columnB, btn] = children;\n\n const { layout } = useContext(interactionContext).props;\n\n const DOMLayout = {\n 'Two column': [columnA, columnB],\n 'Two column reversed': [columnB, columnA],\n 'One column': [columnA, columnB],\n 'One column reversed': [columnB, columnA],\n 'No image': [columnA],\n }[layout];\n\n return (\n <div\n css={css`\n width: 100%;\n padding: 50px;\n `}\n >\n <div\n css={css`\n width: 100%;\n\n ${layout.includes('Two') &&\n `\n display: flex;\n \n @media (max-width: 768px) {\n display: block;\n `}\n `}\n >\n <Content layout={layout}>{DOMLayout[0]}</Content>\n\n {layout !== 'No image' && (\n <Content layout={layout}>{DOMLayout[1]}</Content>\n )}\n </div>\n <div\n css={css`\n display: flex;\n justify-content: center;\n width: 100%;\n margin: 30px 0 0 0;\n `}\n >\n {React.cloneElement(btn, { onClick: () => onClose() })}\n </div>\n </div>\n );\n};\n\nexport default ClickAndRevealContent;\n","/** @jsx jsx */\n\nimport { Fragment as _, memo, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport ClickAndReveals from './ClickAndReveals';\nimport ClickAndReveal from './ClickAndReveal';\nimport ClickAndRevealContent from './ClickAndRevealContent';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport SVG from 'components/lib/SVG';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Container from 'components/Layouts/ContainerLogical';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport continueBtn from '../ContinueBtn/continueBtn_v2';\nimport { Block } from '@chameleoncreator/creator-app';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport getMediaParent from 'services/apiHelpers/getMediaParent';\nimport shouldUpdate from 'services/shouldUpdate';\nimport imagePlaceholder from 'assets/clickToRevealMagicMan.png';\nimport Embed from 'components/lib/Embed';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { ImageContext } from 'components/lib/Image';\nimport modalPlaceholder from 'assets/CC_Sortation_Placeholder.png';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: ({ children, ...props }) => (\n <EditableText {...{ ...props, className: 'click-and-reveal-text' }} />\n ),\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [clickAndReveals, txt] = children;\n\n if (!includeAdditionalTextField) {\n return clickAndReveals;\n }\n\n return children;\n },\n ClickAndReveals,\n ClickAndReveal({ children, ...props }) {\n return (\n <ImageContext.Provider\n value={{\n editWrapperType: 1,\n editWrapperSize: '65%',\n editWrapperUseIcon: false,\n placeholder: imagePlaceholder,\n //\n canUpdateContainerHeight: false,\n }}\n >\n <ClickAndReveal {...props}>{children}</ClickAndReveal>\n </ImageContext.Provider>\n );\n },\n\n Feedback: ({ children, ...props }) => children,\n Content: ({ children, ...props }) => {\n const { layout = '' } = props;\n\n return (\n <span\n css={css({\n width: '100%',\n height: '100%',\n '[class*=\"OpenPDF\"]': {\n ...(layout.toLowerCase().includes('one') && {\n img: {\n maxHeight: '50vh !important',\n },\n }),\n },\n })}\n >\n <ImageContext.Provider\n value={{\n editWrapperType: 0,\n editWrapperSize: '100%',\n placeholder: modalPlaceholder,\n padding: 5,\n }}\n >\n <ClickAndRevealContent {...props}>{children}</ClickAndRevealContent>\n </ImageContext.Provider>\n </span>\n );\n },\n ColumnRowA: ({ children, ...props }) => children,\n ColumnRowB: ({ children, ...props }) => children,\n Image: ({ children, ...props }) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n const { isAdditionalMedia } = mediaContext;\n\n const mediaParent = getMediaParent(props.id);\n\n return mediaParent ? (\n <Image\n {...{\n ...props,\n placeholder: imgPlaceholders[1],\n }}\n />\n ) : (\n <Image {...{ ...props, usePlaceholderValue: true }} />\n );\n },\n Video,\n Audio,\n Transcript: () => null,\n SVG: ({ children, ...props }) => (\n <SVG {...{ ...props, editWrapperType: 1 }} />\n ),\n Media,\n Embed,\n PDF,\n OpenPDF: ({ children, ...props }) => {\n return <OpenPDF {...(props as any)}>{children}</OpenPDF>;\n },\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: continueBtn,\n EditableButton: EditableBtn,\n};\n\nconst ClickAndRevealDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default ClickAndRevealDisplay;\n","import ClickAndRevealDisplay from './ClickAndRevealDisplay';\n\nexport default ClickAndRevealDisplay;\n","import { createContext } from 'react';\r\n\r\nexport const interactionContext = createContext<any>(null);\r\n","/** @jsx jsx */\r\n\r\nimport React, { Fragment as _, useContext, useRef } from 'react';\r\nimport { css, jsx } from '@emotion/core';\r\nimport { colors } from 'styles/variables';\r\nimport { interactionContext } from './interactionContext';\r\nimport { unlockInteraction } from 'services/unlockInteraction';\r\nimport { Box } from 'theme-ui';\r\nimport EditMarker from 'components/UI/EditMarker';\r\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\r\nimport { useSelector } from 'react-redux';\r\n\r\nconst { lPink, lGrey2 } = colors;\r\n\r\nconst EditCardWrapper = ({ id }) => {\r\n // , selected\r\n // children\r\n\r\n const focusedNodeId = useSelector((state: any) => state.focusedNodeId);\r\n const selected = focusedNodeId === id;\r\n\r\n const gutter = 9;\r\n\r\n return (\r\n <div\r\n css={css({\r\n position: 'absolute',\r\n left: gutter,\r\n top: gutter,\r\n width: `calc(100% + ${-(gutter * 2)}px)`,\r\n height: `calc(100% + ${-(gutter * 2)}px)`,\r\n // margin: gutter,\r\n\r\n // borderRadius: `${selected ? '24px' : 0} 24px 24px 24px`,\r\n boxShadow: `${selected ? `0 0 0 1px ${lPink}` : '0 0 0 1px lightGrey'}`,\r\n ...(!selected && {\r\n cursor: 'pointer',\r\n\r\n '&:hover': {\r\n boxShadow: `0 0 0 1px ${lPink}`,\r\n },\r\n }),\r\n transition: 'box-shadow 0.2s, border-radius 0.2s',\r\n })}\r\n onClick={e => {\r\n e.stopPropagation();\r\n\r\n if (selected) return;\r\n\r\n // console.log({ mediaParentId });\r\n\r\n setCurrentBlock({ id });\r\n }}\r\n >\r\n {/* {children} */}\r\n\r\n {!selected && (\r\n <EditMarker\r\n style={{\r\n // left: 0,\r\n // transform: 'scaleX(-1)',\r\n right: 0,\r\n zIndex: '2147483647',\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default EditCardWrapper;\r\n","const arrayToGridLike = (arr: any[], numColumns: number) => {\r\n if (numColumns < 1) {\r\n console.warn(`${arr} > ${numColumns} : WILL NOT PRODUCE A ' GRID ' !!!`);\r\n return arr;\r\n }\r\n //\r\n\r\n const _: any[] = [...arr];\r\n const $: any[] = [];\r\n\r\n while (_.length) {\r\n $.push(_.splice(0, numColumns));\r\n }\r\n\r\n return $;\r\n};\r\n\r\nexport default arrayToGridLike;\r\n","/** @jsx jsx */\r\n\r\nimport React, { Fragment as _, useEffect, useRef, FC, Children } from 'react';\r\nimport { css, jsx } from '@emotion/core';\r\nimport isIE from 'services/isIE';\r\nimport { Box } from 'theme-ui';\r\nimport arrayToGridLike from 'services/arrayToGridLike';\r\n\r\nconst Masonry: FC<{\r\n maxColumns: number;\r\n maxGridWidth?: number;\r\n minCellWidth?: number;\r\n images?: string[];\r\n uniformHeight?: boolean;\r\n}> = props => {\r\n // these are not the right vars for the right now\r\n const {\r\n maxColumns,\r\n maxGridWidth = window.innerWidth,\r\n images = [],\r\n uniformHeight = false,\r\n children,\r\n } = props;\r\n\r\n const container = useRef<HTMLDivElement>(null);\r\n const cells = useRef<HTMLDivElement[]>([]);\r\n const imgsLoaded = useRef<boolean>(false);\r\n //\r\n\r\n useEffect(() => {\r\n const imgsLoadedProgress: string[] = [];\r\n\r\n if (!images.length) {\r\n imgsLoaded.current = true;\r\n return;\r\n }\r\n\r\n images.forEach((src: string) => {\r\n const img = new Image();\r\n img.src = src;\r\n\r\n img.onload = () => {\r\n imgsLoadedProgress.push(src);\r\n\r\n if (imgsLoadedProgress.length === images.length) {\r\n imgsLoaded.current = true;\r\n }\r\n };\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!container.current) {\r\n return;\r\n }\r\n\r\n const cellMinWidth = maxGridWidth / maxColumns;\r\n\r\n let frame;\r\n let callTickFromResize;\r\n\r\n const tick = (e?: undefined) => {\r\n if (!container.current) {\r\n return;\r\n }\r\n\r\n // console.log('ticking. . .');\r\n\r\n let tallestCell;\r\n\r\n if (uniformHeight) {\r\n const cellHeights: number[] = cells.current.map(\r\n (cell: HTMLDivElement) => {\r\n cell.style.height = 'auto';\r\n return cell.offsetHeight;\r\n }\r\n );\r\n\r\n tallestCell = cells.current[\r\n cellHeights.indexOf(Math.max(...cellHeights))\r\n ] as HTMLDivElement;\r\n }\r\n\r\n let columns = Math.min(\r\n Math.round(container.current.offsetWidth / cellMinWidth),\r\n maxColumns\r\n );\r\n\r\n // fall back to 1 column\r\n const grid = arrayToGridLike(cells.current, columns || 1);\r\n\r\n grid.forEach((key, rowIndex) => {\r\n grid[rowIndex].forEach((child, columnIndex) => {\r\n const currentCell = grid[rowIndex][columnIndex];\r\n\r\n if (!currentCell) {\r\n return;\r\n }\r\n\r\n currentCell.style.top = '0px';\r\n\r\n const width = Math.round(container.current!.offsetWidth / columns);\r\n\r\n currentCell.style.left = `${width * columnIndex}px`;\r\n currentCell.style.width = `${width}px`;\r\n\r\n if (uniformHeight) {\r\n // we've calculated which cell is the tallest\r\n // update all other cells to match its height\r\n\r\n const updatedCells = [...cells.current];\r\n updatedCells.splice(cells.current.indexOf(tallestCell), 1);\r\n updatedCells.forEach(cell => {\r\n cell.style.height = `${tallestCell.offsetHeight}px`;\r\n });\r\n }\r\n\r\n if (rowIndex > 0) {\r\n const cellAboveCurrentCell = grid[rowIndex - 1][columnIndex];\r\n\r\n const top =\r\n cellAboveCurrentCell.offsetTop +\r\n cellAboveCurrentCell.offsetHeight;\r\n\r\n currentCell.style.top = `${top}px`;\r\n }\r\n });\r\n });\r\n\r\n // setting the height of the container\r\n const baselines = cells.current.map((cell: HTMLDivElement) => {\r\n return cell.offsetTop + cell.offsetHeight;\r\n });\r\n const baseline = Math.max(...baselines);\r\n\r\n container.current.style.minHeight = `${baseline}px`;\r\n\r\n //\r\n //\r\n // in dev we're just gonna keep the ticking going\r\n // too many cases ( component updates ) to be checking for when to kill it\r\n // maybe use the slower frameRated setInterval ?\r\n\r\n if (window.dev && window.dev()) {\r\n clearInterval(frame);\r\n frame = setInterval(() => tick(), 1000 / 24);\r\n\r\n // frame = requestAnimationFrame(() => tick());\r\n return;\r\n }\r\n\r\n // if we resize the browser window we no longer need to ' poll '\r\n if (e) {\r\n return;\r\n }\r\n\r\n clearInterval(frame);\r\n frame = setInterval(() => tick(), 1000 / 24);\r\n\r\n // frame = requestAnimationFrame(() => tick());\r\n };\r\n\r\n callTickFromResize = e => {\r\n tick(e);\r\n };\r\n\r\n tick();\r\n //\r\n window.addEventListener('resize', callTickFromResize);\r\n\r\n return () => {\r\n // cancelAnimationFrame(frame);\r\n clearInterval(frame);\r\n\r\n window.removeEventListener('resize', callTickFromResize);\r\n };\r\n }, []);\r\n\r\n return (\r\n <Box\r\n ref={container}\r\n sx={{\r\n position: 'relative',\r\n width: '100%',\r\n //\r\n ...(isIE() && {\r\n width: 'calc(100vw - 30px)',\r\n maxWidth: 1100,\r\n }),\r\n }}\r\n >\r\n {Children.map(children, (child, index) => {\r\n return (\r\n <Box\r\n key={`cell-${index}`}\r\n ref={(node: HTMLDivElement) => {\r\n if (!node) {\r\n return;\r\n }\r\n\r\n if (!cells.current.includes(node)) {\r\n cells.current.push(node);\r\n }\r\n }}\r\n sx={{\r\n position: 'absolute',\r\n }}\r\n >\r\n {child}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default Masonry;\r\n","import isIE from 'services/isIE';\r\nimport arrayToGridLike from 'services/arrayToGridLike';\r\n\r\nexport const grids = (grid, settings: any = {}) => {\r\n const { numColumns = 3, children } = settings;\r\n\r\n const minWidth = Math.round(1100 / numColumns + 40);\r\n\r\n const uniformHeightBreakpoints = Array.from({ length: numColumns })\r\n .map((_, i) => i)\r\n .reverse()\r\n .reduce((acc, curr, i) => {\r\n return {\r\n ...acc,\r\n [`@media (max-width: ${minWidth * (curr + 1)}px)`]: {\r\n gridTemplateColumns: `repeat(${curr + 1}, 1fr)`,\r\n\r\n ...(isIE() && {\r\n // display: '-ms-grid',\r\n msGridColumns: `(1fr)[${curr + 1}]`,\r\n }),\r\n },\r\n };\r\n }, {});\r\n\r\n const getUniformHeightsLayout = () => {\r\n const cells = arrayToGridLike(children, numColumns);\r\n\r\n let gridCellCounter = -1;\r\n\r\n const uniformHeightsLayout = cells\r\n .map((row, rowIndex) => {\r\n return cells[rowIndex].reduce((acc, curr, index) => {\r\n const gridCell = `.grid-cell-${(gridCellCounter += 1)}`;\r\n\r\n return {\r\n ...acc,\r\n [gridCell]: {\r\n msGridColumn: index + 1,\r\n msGridRow: rowIndex + 1,\r\n },\r\n };\r\n }, {});\r\n })\r\n .reduce((acc, curr, index) => {\r\n return {\r\n ...acc,\r\n ...curr,\r\n };\r\n }, {});\r\n\r\n return { ...uniformHeightsLayout };\r\n };\r\n\r\n const getBannerColumnsLayout = () => {\r\n const newChildren = [...children];\r\n newChildren.splice(0, 1);\r\n\r\n const cells = arrayToGridLike(newChildren, numColumns);\r\n\r\n let gridCellCounter = 0;\r\n\r\n const bannerColumnsLayout = cells\r\n .map((row, rowIndex) => {\r\n return cells[rowIndex].reduce((acc, curr, index) => {\r\n const gridCell = `.grid-cell-${(gridCellCounter += 1)}`;\r\n\r\n return {\r\n ...acc,\r\n [gridCell]: {\r\n gridColumn: index + 1,\r\n gridRow: rowIndex + 2,\r\n\r\n msGridColumn: index + 1,\r\n msGridRow: rowIndex + 2,\r\n },\r\n };\r\n }, {});\r\n })\r\n .reduce((acc, curr, index) => {\r\n return {\r\n ...acc,\r\n ...curr,\r\n };\r\n }, {});\r\n\r\n return { ...bannerColumnsLayout };\r\n };\r\n\r\n return {\r\n uniformHeight: {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${numColumns}, minmax(215px, 1fr))`,\r\n\r\n ...(isIE() && {\r\n display: '-ms-grid',\r\n msGridColumns: `(1fr)[${numColumns}]`,\r\n\r\n ...getUniformHeightsLayout(),\r\n }),\r\n\r\n ...uniformHeightBreakpoints,\r\n },\r\n '2/3HeroImage': {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, 1fr)',\r\n gridTemplateRows: `repeat(${children.length - 1})`,\r\n\r\n ...(isIE() && {\r\n display: '-ms-grid',\r\n msGridColumns: '1fr 1fr 1fr',\r\n }),\r\n\r\n width: '100%',\r\n\r\n '.grid-cell-0': {\r\n gridColumn: '1/3',\r\n gridRow: `1/${children.length}`,\r\n\r\n msGridColumnSpan: 2,\r\n msGridRowSpan: 2,\r\n },\r\n\r\n ...children.reduce((acc, curr, index) => {\r\n return {\r\n ...acc,\r\n [`.grid-cell-${index + 1}`]: {\r\n gridColumn: 3,\r\n gridRow: index + 1,\r\n\r\n msGridColumn: 3,\r\n msGridRow: index + 1,\r\n },\r\n };\r\n }, {}),\r\n\r\n '@media (max-width: 768px)': {\r\n display: 'block',\r\n },\r\n },\r\n bannerColumns: {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${numColumns}, 1fr)`,\r\n // 3\r\n gridTemplateRows: `repeat(${(children.length - 1) / numColumns})`,\r\n // 3\r\n\r\n ...(isIE() && {\r\n display: '-ms-grid',\r\n msGridColumns: Array.from({ length: numColumns })\r\n .map((entry, index: number) => {\r\n return '1fr';\r\n })\r\n .join(' '),\r\n }),\r\n\r\n width: '100%',\r\n\r\n '.grid-cell-0': {\r\n gridColumn: `1/${numColumns + 1}`,\r\n gridRow: 1,\r\n msGridColumnSpan: numColumns,\r\n msGridRow: 1,\r\n },\r\n\r\n ...getBannerColumnsLayout(),\r\n\r\n '@media (max-width: 768px)': {\r\n display: 'block',\r\n },\r\n },\r\n }[grid];\r\n};\r\n","/** @jsx jsx */\r\n\r\nimport React, {\r\n Fragment as _,\r\n useState,\r\n useContext,\r\n useEffect,\r\n useRef,\r\n FC,\r\n Children,\r\n} from 'react';\r\nimport { css, jsx } from '@emotion/core';\r\nimport { colors } from 'styles/variables';\r\nimport { interactionContext } from './interactionContext';\r\nimport { unlockInteraction } from 'services/unlockInteraction';\r\nimport { Box } from 'theme-ui';\r\nimport EditMarker from 'components/UI/EditMarker';\r\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\r\nimport { useSelector } from 'react-redux';\r\nimport EditCardWrapper from './EditCardWrapper';\r\n// import Masonry from 'masonry-layout';\r\nimport Masonry from './Masonry';\r\nimport { grids } from './grids';\r\n\r\nconst { lPink, lGrey2 } = colors;\r\n\r\nconst ContentCards: FC = ({ children, ...props }) => {\r\n const context: any = useContext(interactionContext);\r\n let { grid, numColumns, uniformHeight } = context.props;\r\n const [init, setInit] = useState(false);\r\n const gridContainer = useRef<HTMLDivElement>(null);\r\n\r\n const updateCounter = useRef<number>(0);\r\n const masonryContainer = useRef<HTMLSpanElement>(null);\r\n const cardOrder = useRef<string>('');\r\n cardOrder.current = Children.map(children, (child: any, index) => {\r\n const { props } = child.props.children[1];\r\n\r\n const { id } = props;\r\n return id;\r\n }).join();\r\n\r\n // console.log(cardOrder.current);\r\n\r\n const images: string[] = [];\r\n\r\n const imagesInCards = cards => {\r\n [...cards].forEach((card: React.ReactElement) => {\r\n if (card && card.props) {\r\n if (card.props.child === 1) {\r\n !images.includes(card.props.src) && images.push(card.props.src);\r\n }\r\n\r\n if (card.props.children && card.props.children.length) {\r\n imagesInCards(card.props.children);\r\n }\r\n }\r\n });\r\n };\r\n\r\n imagesInCards(children);\r\n\r\n if (['masonry', 'uniformHeight'].includes(grid)) {\r\n return (\r\n <Masonry\r\n key={`masonry_${Children.count(children)}_${numColumns}_${grid}_${\r\n cardOrder.current\r\n }`}\r\n maxColumns={numColumns}\r\n maxGridWidth={1100}\r\n minCellWidth={320}\r\n images={images}\r\n uniformHeight={grid === 'uniformHeight'}\r\n >\r\n {Children.map(children, (child: any, index: number) => {\r\n return (\r\n <Box\r\n key={child.props.id}\r\n // className=\"grid-item\"\r\n sx={{\r\n position: 'relative',\r\n padding: '20px',\r\n ...(grid === 'uniformHeight' && {\r\n height: '100%',\r\n '.card': {\r\n height: '100%',\r\n // outline: '2px solid red',\r\n },\r\n\r\n //\r\n }),\r\n }}\r\n >\r\n {window.dev && window.dev() && (\r\n <EditCardWrapper id={child.props.id} />\r\n )}\r\n {React.cloneElement(child, {\r\n parentId: (props as any).id,\r\n className: `card-${index}`,\r\n ...(grid === 'bannerColumns' &&\r\n {\r\n //\r\n }),\r\n })}\r\n </Box>\r\n );\r\n })}\r\n </Masonry>\r\n );\r\n }\r\n\r\n return (\r\n <Box\r\n useRef={gridContainer}\r\n sx={{\r\n // outline: '2px solid lime',\r\n ...css(grids(grid, { numColumns, children })),\r\n // ...grids(grid, { numColumns, children }),\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n >\r\n {Children\r\n // .filter((child: any, index: number) => {\r\n // return (\r\n // ['masonry', 'uniformHeight'].includes(grid) || index < gridCellCount\r\n // );\r\n // })\r\n .map(children, (child: any, index: number) => {\r\n const className = `grid-cell-${index}`;\r\n\r\n // const msGridColumn = ((numColumns + index) % numColumns) + 1;\r\n // const msGridRow = Math.trunc(index / numColumns) + 1;\r\n\r\n return (\r\n <Box\r\n key={className}\r\n className={className}\r\n sx={{\r\n position: 'relative',\r\n padding: '20px',\r\n\r\n ...(['uniformHeight'].includes(grid) && {\r\n '> div': {\r\n height: '100%',\r\n },\r\n\r\n // msGridColumn,\r\n // msGridRow,\r\n }),\r\n\r\n ...(['bannerColumns'].includes(grid) && {\r\n // '> div:not(:first-child)': {\r\n '> div': {\r\n height: '100%',\r\n },\r\n }),\r\n }}\r\n >\r\n {window.dev && window.dev() && (\r\n <EditCardWrapper id={child.props.id} />\r\n )}\r\n {React.cloneElement(child, {\r\n parentId: (props as any).id,\r\n className: `card-${index}`,\r\n ...(grid === 'bannerColumns' &&\r\n index === 0 && {\r\n checkBannerColumnsForDefaultImage: true,\r\n }),\r\n })}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default ContentCards;\r\n","/** @jsx jsx */\r\n\r\nimport { Fragment as _, useContext, useEffect } from 'react';\r\nimport { css as _css } from 'emotion';\r\nimport { jsx, css } from '@emotion/core';\r\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\r\nimport getBlockById from 'services/apiHelpers/getBlockById';\r\nimport { interactionContext } from './interactionContext';\r\nimport { Box } from 'theme-ui';\r\nimport { useSelector } from 'react-redux';\r\nimport { contentCard_default } from 'factories/interactions/contentcard';\r\nimport hexToRgb, { getHexToRgbWithDefaultFallback } from 'services/hexToRGB';\r\n\r\nconst Text = props => {\r\n const { sx = {}, children } = props;\r\n\r\n return (\r\n <Box className=\"text\" sx={sx}>\r\n {children}\r\n </Box>\r\n );\r\n};\r\n\r\nconst ButtonWrapper = ({ sx = {}, children }) => {\r\n return (\r\n <Box\r\n className=\"btn\"\r\n sx={{\r\n display: 'flex',\r\n justifyContent: 'center',\r\n width: '100%',\r\n margin: '15px 0 20px 0',\r\n padding: '0 10px',\r\n\r\n a: {\r\n minWidth: 'calc(100% - 20px)',\r\n },\r\n\r\n ...(window.dev() && {\r\n '> div': {\r\n //\r\n // so the editWrapper behaves\r\n minWidth: '100%',\r\n },\r\n }),\r\n //\r\n ...sx,\r\n }}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n};\r\n\r\nconst ContentCard = ({ children, ...props }) => {\r\n //\r\n\r\n let [media, text, btn] = children;\r\n\r\n // the order these are in from the factory :\r\n // Text\r\n // Image\r\n // Video\r\n // SVG\r\n // Embed\r\n // Audio\r\n // PDF\r\n const medias = ['text', 'image', 'video', 'svg', 'embed', 'audio', 'pdf'];\r\n const mediaIndex = media?.props?.child;\r\n\r\n const context = useContext(interactionContext) as any;\r\n\r\n const { id } = props as any;\r\n const block = getBlockById(id);\r\n\r\n // get the props directly off the block so updates happen\r\n const { selected, _props } = useSelector((state: any) => {\r\n return {\r\n selected: id === state.focusedNodeId,\r\n _props: block.props,\r\n };\r\n });\r\n\r\n let {\r\n includeCardBackground = true,\r\n contentCardBackgroundColor,\r\n contentcardBackgroundOpacity = 100,\r\n contentCardPanelTextColor,\r\n contentCardContentTextColor,\r\n width,\r\n height,\r\n borderRadius,\r\n outline = false,\r\n borderColor,\r\n imagePosition,\r\n includeText,\r\n includeButton = true,\r\n includeShadow,\r\n gridCell,\r\n className,\r\n uniformHeight = false,\r\n } = {\r\n ...(context.props as any),\r\n ...{\r\n //\r\n ..._props,\r\n ...(window.dev && window.dev() && selected && _props),\r\n },\r\n } as any;\r\n\r\n let mediaPadding: string | undefined;\r\n\r\n if (medias[mediaIndex]) {\r\n mediaPadding = {\r\n text: window.dev && window.dev() ? '10px' : '20px 20px 0 20px',\r\n pdf: window.dev && window.dev() ? '15px' : '0',\r\n undefined: '0',\r\n }[medias[mediaIndex]];\r\n }\r\n\r\n if (!mediaPadding) {\r\n mediaPadding = '0';\r\n }\r\n\r\n const textMargin = window.dev && window.dev() ? '10px' : '20px';\r\n\r\n const mediaBorderRadius =\r\n !includeCardBackground && !outline && !includeShadow\r\n ? {\r\n borderRadius,\r\n overflow: 'hidden',\r\n }\r\n : {};\r\n\r\n const { r, g, b } = getHexToRgbWithDefaultFallback(\r\n contentCardBackgroundColor,\r\n '#ffffff'\r\n );\r\n\r\n let a = contentcardBackgroundOpacity / 100;\r\n if (!contentCardBackgroundColor) {\r\n a = 0;\r\n }\r\n\r\n return (\r\n <Box\r\n id={`card_${id}`}\r\n className={'card' || className}\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n\r\n width: '100%',\r\n background: includeCardBackground\r\n ? `rgba(${r}, ${g}, ${b}, ${a})` || contentCardBackgroundColor\r\n : 'transparent',\r\n borderRadius,\r\n ...(includeShadow && {\r\n boxShadow: '0px 0px 10px rgba(13, 16, 40, 0.15)',\r\n }),\r\n\r\n ...(outline && {\r\n border: `1px solid ${borderColor}`,\r\n }),\r\n\r\n overflow: 'hidden',\r\n\r\n div: {\r\n color: contentCardContentTextColor,\r\n },\r\n\r\n '.video-player-container': {\r\n margin: 0,\r\n },\r\n\r\n '.media': {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n }}\r\n >\r\n {imagePosition === 'top' && (\r\n <_>\r\n <span>\r\n <Box\r\n className=\"media\"\r\n sx={{\r\n width: '100%',\r\n padding: mediaPadding,\r\n ...mediaBorderRadius,\r\n }}\r\n >\r\n {media}\r\n </Box>\r\n {includeText && (\r\n <Text\r\n sx={{\r\n margin: textMargin,\r\n }}\r\n >\r\n {text}\r\n </Text>\r\n )}\r\n </span>\r\n {includeButton && <ButtonWrapper>{btn}</ButtonWrapper>}\r\n </_>\r\n )}\r\n\r\n {imagePosition === 'right' && (\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flex: 1,\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n\r\n '@media (max-width: 768px)': {\r\n flexDirection: 'column',\r\n },\r\n }}\r\n >\r\n {includeText && (\r\n <Text\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n flex: 1,\r\n margin: textMargin,\r\n }}\r\n >\r\n {text}\r\n </Text>\r\n )}\r\n <Box\r\n className=\"media\"\r\n sx={{\r\n flex: 1,\r\n padding: mediaPadding,\r\n ...mediaBorderRadius,\r\n\r\n '@media (max-width: 768px)': {\r\n padding: '20px 0',\r\n\r\n img: {\r\n maxHeight: '50vh !important',\r\n },\r\n },\r\n }}\r\n >\r\n {media}\r\n </Box>\r\n </Box>\r\n {includeButton && <ButtonWrapper>{btn}</ButtonWrapper>}\r\n </Box>\r\n )}\r\n\r\n {imagePosition === 'bottom' && (\r\n <_>\r\n <span>\r\n {includeText && <Text sx={{ margin: textMargin }}>{text}</Text>}\r\n <Box\r\n className=\"media\"\r\n sx={{\r\n width: '100%',\r\n padding: mediaPadding,\r\n ...mediaBorderRadius,\r\n }}\r\n >\r\n {media}\r\n </Box>\r\n </span>\r\n {includeButton && <ButtonWrapper>{btn}</ButtonWrapper>}\r\n </_>\r\n )}\r\n\r\n {imagePosition === 'left' && (\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flex: 1,\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n\r\n '@media (max-width: 768px)': {\r\n flexDirection: 'column',\r\n },\r\n }}\r\n >\r\n <Box\r\n className=\"media\"\r\n sx={{\r\n flex: 1,\r\n padding: mediaPadding,\r\n ...mediaBorderRadius,\r\n\r\n '@media (max-width: 768px)': {\r\n padding: '20px 0',\r\n\r\n img: {\r\n maxHeight: '50vh !important',\r\n },\r\n },\r\n }}\r\n >\r\n {media}\r\n </Box>\r\n {includeText && (\r\n <Text\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n flex: 1,\r\n margin: textMargin,\r\n }}\r\n >\r\n {text}\r\n </Text>\r\n )}\r\n </Box>\r\n {includeButton && <ButtonWrapper>{btn}</ButtonWrapper>}\r\n </Box>\r\n )}\r\n\r\n {imagePosition === 'full' && (\r\n <Box\r\n className=\"media\"\r\n sx={{\r\n width: '100%',\r\n height: '100%',\r\n\r\n '*': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n }}\r\n >\r\n {media}\r\n </Box>\r\n )}\r\n\r\n {imagePosition === 'none' && (\r\n <Box>\r\n <Text sx={{ margin: `20px ${textMargin}` }}>{text}</Text>\r\n {includeButton && <ButtonWrapper>{btn}</ButtonWrapper>}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default ContentCard;\r\n","/** @jsx jsx */\r\n\r\nimport React, { Fragment as _, memo, useMemo, useContext } from 'react';\r\nimport { css, jsx } from '@emotion/core';\r\nimport EditableText from 'components/lib/EditableText';\r\nimport ContentCards from './ContentCards';\r\nimport ContentCard from './ContentCard';\r\nimport renderBlock from 'services/apiHelpers/renderBlock';\r\nimport { Row, Column, Button, Box } from '@chameleoncreator/creator-ui';\r\nimport Image from 'components/lib/Image';\r\nimport Video from 'components/lib/Video';\r\nimport Audio from 'components/lib/Audio';\r\nimport SVG from 'components/lib/SVG';\r\nimport Embed from 'components/lib/Embed';\r\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\r\nimport { interactionContext as InteractionContext } from './interactionContext';\r\nimport Container from 'components/Layouts/ContainerLogical';\r\nimport getBlockById from 'services/apiHelpers/getBlockById';\r\nimport continueBtn from '../ContinueBtn/continueBtn_v2';\r\nimport { Block } from '@chameleoncreator/creator-app';\r\nimport EditableBtn from 'components/lib/EditableBtn';\r\nimport PDF from 'components/lib/PDF';\r\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\r\nimport shouldUpdate from 'services/shouldUpdate';\r\nimport { imgPlaceholders } from 'components/lib/Image';\r\nimport { ImageContext } from 'components/lib/Image';\r\n\r\nconst SingleColumnLayout = Row.bind({}) as any;\r\nSingleColumnLayout.defaultProps = {\r\n ...(Row as any).defaultProps,\r\n flexDirection: 'column',\r\n};\r\n\r\nconst TwoColumnLayout = Row.bind({}) as any;\r\nTwoColumnLayout.defaultProps = {\r\n ...(Row as any).defaultProps,\r\n flexDirection: 'row',\r\n};\r\n\r\nconst Components = {\r\n Row,\r\n Column,\r\n Text: EditableText,\r\n InteractionColumn: ({ children, ...props }) => {\r\n const interactionContext = useContext(InteractionContext);\r\n const { includeAdditionalTextField } = interactionContext.props;\r\n\r\n const [cards, txt] = children;\r\n\r\n if (!includeAdditionalTextField) {\r\n return cards;\r\n }\r\n\r\n return (\r\n <_>\r\n {cards}\r\n <div\r\n style={{\r\n margin: '20px 0 0 0',\r\n }}\r\n >\r\n {txt}\r\n </div>\r\n </_>\r\n );\r\n },\r\n ContentCards,\r\n ContentCard({ children, ...props }) {\r\n return (\r\n <ImageContext.Provider\r\n value={{\r\n editWrapperType: 1,\r\n editWrapperSize: '90%',\r\n placeholder: imgPlaceholders[0],\r\n }}\r\n >\r\n <ContentCard {...props}>{children}</ContentCard>\r\n </ImageContext.Provider>\r\n );\r\n },\r\n ColumnRowA: ({ children, ...props }) => children,\r\n ColumnRowB: ({ children, ...props }) => children,\r\n\r\n Image: ({ children, ...props }) => {\r\n const mediaContext = useContext(MediaContext) as IMediaContext;\r\n const { isAdditionalMedia } = mediaContext;\r\n\r\n return (\r\n <Image\r\n {...{\r\n ...props,\r\n placeholder: imgPlaceholders[1],\r\n }}\r\n />\r\n );\r\n },\r\n Video,\r\n Audio,\r\n Transcript: () => null,\r\n SVG,\r\n PDF,\r\n OpenPDF,\r\n Embed,\r\n Media,\r\n TwoColumnLayout: TwoColumnLayout,\r\n SingleColumnLayout: SingleColumnLayout,\r\n ContinueButton: continueBtn,\r\n EditableButton: EditableBtn,\r\n};\r\n\r\nconst ContentCardDisplay = memo((props: any) => {\r\n const interactionBlock = getBlockById(props.blockId);\r\n return (\r\n <Container\r\n id={interactionBlock.id}\r\n key={interactionBlock.id}\r\n {...interactionBlock.props}\r\n {...props}\r\n >\r\n <InteractionContext.Provider value={{ ...interactionBlock }}>\r\n {(interactionBlock.children as Block[]).map(child => {\r\n return renderBlock(child, Components);\r\n })}\r\n </InteractionContext.Provider>\r\n </Container>\r\n );\r\n}, shouldUpdate as any);\r\n\r\nexport default ContentCardDisplay;\r\n","import ContentCardDisplay from './ContentCardDisplay';\r\n\r\nexport default ContentCardDisplay;\r\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","import { Result } from './SelectOptionsRoot';\n\nexport const onSubmit = (\n selectedOptions,\n correctAnswers,\n attempt,\n numberOfAttempts,\n setAttempt,\n setResult,\n setShowFeedback,\n showCorrectAnswer,\n setSelectedOptions,\n interactionContext,\n options,\n scoringQuizzes,\n dispatch,\n updateScoreAction,\n addScormResponseAction,\n unlockInteraction,\n setIsLive,\n score\n) => {\n let result: Result = 'correct';\n\n for (const key in selectedOptions) {\n if (selectedOptions[key] !== correctAnswers[key]) {\n result = 'incorrect';\n }\n }\n\n // logic for attempts...\n if (result !== 'correct') {\n if (attempt < numberOfAttempts - 1) {\n setAttempt(attempt => {\n return (attempt += 1);\n });\n result = 'attempt';\n }\n }\n\n setResult(result);\n setShowFeedback(result);\n\n if (result === 'incorrect' && showCorrectAnswer) {\n setSelectedOptions(correctAnswers);\n }\n\n let questionText: any = Array.from(\n document.querySelectorAll(\n `#i${interactionContext.id} form .chameleon-text`\n ) as any\n );\n\n let [question, ...optionQuestions] = questionText;\n question = question.innerText;\n\n let responseExpanded: any = Array.from(\n document.querySelectorAll(\n `#i${interactionContext.id} form [class*=\"singleValue\"]`\n ) as any\n );\n\n if (optionQuestions) {\n //\n optionQuestions = optionQuestions.map((entry, index) => {\n return entry.innerText;\n });\n }\n\n let correctExpanded: any = options\n .map((entry, index) => {\n const { id, values, correctAnswer = {} } = entry.props;\n\n return `${optionQuestions[index]}[.]${\n values[correctAnswer[entry.props.id] || 0]\n }`;\n })\n .join('[,]');\n\n if (responseExpanded) {\n responseExpanded = responseExpanded\n .map((entry, index) => {\n return `${optionQuestions[index]}[.]${entry.innerText}`;\n })\n .join('[,]');\n }\n\n const action = {\n id: interactionContext.id,\n type: 'fill-in',\n question: question,\n reportable: 'multichoice' as 'multichoice',\n response: responseExpanded,\n correct: correctExpanded,\n result: result === 'correct' ? 1 : 0,\n };\n\n // console.log(action);\n\n // dispatch if there's no scoringQuizzes etc\n let shouldDispatchScore = score;\n\n if (scoringQuizzes.length) {\n shouldDispatchScore = false;\n }\n //\n\n if (shouldDispatchScore) {\n dispatch(\n updateScoreAction(interactionContext.id, result === 'correct' ? 1 : 0)\n );\n }\n\n dispatch(addScormResponseAction(action));\n\n const unlock = result === 'correct' || attempt === numberOfAttempts - 1;\n\n if (unlock) {\n unlockInteraction(interactionContext.id);\n setIsLive(false);\n }\n};\n","/** @jsx jsx */\nimport React, { useState, createContext, useContext, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport pubSub from 'services/pubSub';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { useDispatch } from 'react-redux';\nimport { onSubmit } from './onSubmit';\nimport { colors } from 'styles/variables';\n\nconst { lGrey0, mint } = colors;\n\nexport const SelectOptionsContext = createContext<any>(null);\n\nexport type Result = 'correct' | 'incorrect' | 'attempt' | undefined;\n\nconst SelectOptionsRoot = ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const {\n lockDown,\n numberOfAttempts,\n showAttemptNumber = true,\n useMediaInFeedback,\n showCorrectAnswer,\n dividerColor = mint,\n dropDownBorderColor = '#19D1CF',\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n score,\n randomizeOptions = false,\n useFeedback = true,\n } = interactionContext.props;\n\n const [question, optionsContainer, submitBtn, feedback] = children;\n const options = optionsContainer.props.children;\n\n const [selectedOptions, setSelectedOptions] = useState<\n (number | undefined)[]\n >(options.map(o => undefined));\n\n const [attempt, setAttempt] = useState<number>(0);\n const [result, setResult] = useState<Result>(undefined);\n const [showFeedback, setShowFeedback] = useState<Result>(result);\n const [isLive, setIsLive] = useState<boolean | undefined>(undefined);\n const dispatch = useDispatch();\n\n const scoringQuizzes = useScoringQuizzes();\n\n const correctAnswers = options.reduce((acc, curr, index) => {\n const { id, correctAnswer = 0 } = curr.props;\n\n return [...acc, correctAnswer];\n }, []);\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n const showFeedbackSubscription = pubSub.subscribe(\n `${interactionContext.id}`,\n ({ result }) => {\n console.log(result);\n setResult(result);\n setShowFeedback(result);\n }\n );\n\n return () => {\n showFeedbackSubscription();\n };\n }, []);\n\n useEffect(() => {\n if (result || isLive) {\n return;\n }\n\n //\n if (selectedOptions.every(o => o !== undefined)) {\n setIsLive(true);\n }\n }, [selectedOptions]);\n\n return (\n <SelectOptionsContext.Provider\n value={{\n selectedOptions,\n setSelectedOptions: (index: number, value: number) => {\n setSelectedOptions(selectedOptions => {\n const updatedSelectedOptions = [...selectedOptions];\n updatedSelectedOptions[index] = value;\n\n return updatedSelectedOptions;\n });\n },\n isLive,\n setIsLive,\n onSubmit,\n result: showFeedback,\n onClose: () => {\n setShowFeedback(undefined);\n },\n correctAnswers,\n }}\n >\n <form\n id={`select-options-${props?.id}`}\n onSubmit={e => {\n e.preventDefault();\n }}\n >\n <div\n css={css({\n margin: `0 0 ${window.dev() ? 12 : 17}px 0`,\n padding: `0 0 ${window.dev() ? 10 : 15}px 0`,\n borderBottom: `1px solid ${dividerColor}`,\n })}\n >\n {question}\n </div>\n\n <div\n css={css`\n //\n `}\n >\n <div\n css={css({\n pointerEvents: isLive === false ? 'none' : 'auto',\n })}\n data-select-options-parent-id={optionsContainer?.props?.id}\n >\n {options.map((option, index) => {\n return React.cloneElement(option, {\n index,\n });\n })}\n </div>\n\n <div></div>\n\n <div\n css={css({\n margin: '20px 0 0 0',\n ...(!window.dev() && {\n visibility: isLive ? 'visible' : 'hidden',\n pointerEvents: isLive ? 'auto' : 'none',\n }),\n })}\n onClick={\n window.dev()\n ? undefined\n : () => {\n onSubmit(\n selectedOptions,\n correctAnswers,\n attempt,\n numberOfAttempts,\n setAttempt,\n setResult,\n setShowFeedback,\n showCorrectAnswer,\n setSelectedOptions,\n interactionContext,\n options,\n scoringQuizzes,\n dispatch,\n updateScoreAction,\n addScormResponseAction,\n unlockInteraction,\n setIsLive,\n score\n );\n }\n }\n >\n {submitBtn}\n </div>\n </div>\n\n {useFeedback &&\n showFeedback &&\n React.cloneElement(feedback, {\n result,\n showAttemptNumber,\n attempt,\n numberOfAttempts,\n navigationBehaviour,\n onClose() {\n setShowFeedback(undefined);\n },\n useMediaInFeedback,\n })}\n </form>\n </SelectOptionsContext.Provider>\n );\n};\n\nexport default SelectOptionsRoot;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\n\nconst SelectOptions = ({ children, ...props }) => {\n return (\n <div\n id={'wtf wtf wtf !!!???' || props?.id || ''}\n css={css`\n //\n `}\n >\n {children}\n </div>\n );\n};\n\nexport default SelectOptions;\n","/** @jsx jsx */\n\nimport { useContext, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport { SelectOptionsContext } from './SelectOptionsRoot';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport Select from 'react-select';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport EditMarker from 'components/UI/EditMarker';\nimport tick_mint from 'assets/tick_mint.svg';\n\nconst SelectOption = ({ children, ...props }) => {\n const iContext = useContext(interactionContext);\n\n const {\n dropDownTextColor = '#1D2026',\n dropDownBorder = true,\n dropDownBorderColor = '#19D1CF',\n dropDownBorderRadius = 10,\n dropDownBackgroundColor = 'transparent',\n } = iContext.props;\n\n const selectOptionsContext = useContext(SelectOptionsContext);\n\n const {\n selectedOptions,\n setSelectedOptions,\n correctAnswers,\n } = selectOptionsContext;\n\n const { id, type, index: selectGroupIndex, values } = props;\n\n const menuIsOpen = useSelector((state: State) => {\n if (!window.dev()) {\n return undefined;\n }\n return state.focusedNodeId === id;\n });\n\n const value = values[selectedOptions[id]];\n const [txt] = children;\n const nameId = `i${id}`;\n\n const _ = ({ innerRef, innerProps, ...props }) => {\n const { label, isFocused, data } = props;\n const { index } = data;\n\n return (\n <div\n ref={innerRef}\n {...innerProps}\n css={css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n lineHeight: '1.1em',\n padding: '5px 10px',\n\n cursor: 'pointer',\n\n ...(window.dev()\n ? {\n color: dropDownTextColor,\n }\n : {\n color: dropDownTextColor,\n opacity: `${isFocused ? 0.8 : 1};`,\n }),\n })}\n >\n {label}\n {window.dev() && correctAnswers[selectGroupIndex] === index ? (\n <div\n css={css({\n width: 20,\n height: 20,\n borderRadius: '50%',\n background: `url('${tick_mint}') no-repeat`,\n backgroundSize: 20,\n })}\n />\n ) : null}\n </div>\n );\n };\n\n useEffect(() => {}, []);\n\n return (\n <div\n id={nameId}\n css={css({\n margin: '5px 0',\n })}\n onClick={\n window.dev()\n ? e => {\n setCurrentBlock(menuIsOpen ? null : { id });\n }\n : undefined\n }\n >\n <div\n css={css({\n flex: 1,\n })}\n >\n {txt}\n </div>\n\n <div style={{ height: 10 }} />\n\n <div\n css={css({\n position: 'relative',\n\n '[class*=\"control\"]': {\n '*': {\n ':focus': {\n border: '0px !important',\n },\n },\n },\n\n '*': {\n fontSize: '16px !important',\n color: `${dropDownTextColor} !important`,\n\n ...(menuIsOpen && {\n '[class*=\"MenuList\"]': {\n '*': {\n pointerEvents: 'none',\n },\n },\n }),\n },\n })}\n >\n {/* @ts-ignore */}\n <Select\n key={value}\n menuIsOpen={menuIsOpen}\n isSearchable={false}\n styles={{\n control: (base, state) => {\n const { isFocused } = state;\n\n ['borderColor', 'boxShadow', '&:hover'].forEach(entry => {\n delete base[entry];\n });\n\n return {\n ...base,\n background: dropDownBackgroundColor,\n minHeight: 45,\n border: dropDownBorder\n ? `1px solid ${dropDownBorderColor}`\n : 'none',\n borderRadius: dropDownBorderRadius,\n cursor: 'pointer',\n ...(!window.dev() &&\n isFocused && {\n boxShadow: `0 0 0 2px ${dropDownBorderColor}`,\n }),\n\n '[class*=\"placeholder\"]': {\n width: '97.5%',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n\n '[class*=\"indicatorSeparator\"]': {\n display: 'none',\n },\n };\n },\n menu: (base, state) => ({\n ...base,\n borderRadius: 10 || dropDownBorderRadius,\n boxShadow: `0 23px 36px rgba(0, 0, 0, 0.2)`,\n\n background:\n dropDownBackgroundColor === 'transparent'\n ? '#fff'\n : dropDownBackgroundColor,\n }),\n }}\n placeholder={value}\n value={value}\n onChange={({ value }) => {\n setSelectedOptions(selectGroupIndex, values.indexOf(value));\n }}\n options={[\n ...values.map((value, index) => {\n return { value, label: value, index };\n }),\n ]}\n components={{ Option: _ }}\n />\n\n {window.dev() && (\n <div\n css={css({\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n })}\n >\n <div\n css={css({\n position: 'absolute',\n left: -2,\n top: -2,\n width: 'calc(100% + 4px)',\n height: 'calc(100% + 4px)',\n boxShadow: menuIsOpen\n ? '0 0 0 1px #ff0063'\n : '0 0 0 1px lightGrey',\n cursor: 'pointer',\n transition: 'box-shadow 0.2s',\n\n ':hover': {\n background: 'rgba(0,0,0,0.02)',\n },\n })}\n >\n {!menuIsOpen && <EditMarker />}\n </div>\n </div>\n )}\n </div>\n <div style={{ height: 20 }} />\n </div>\n );\n};\n\nexport default SelectOption;\n","/** @jsx jsx */\n\nimport { Children, Fragment as _, memo, useContext } from 'react';\nimport { jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { imgPlaceholders } from 'components/lib/Image';\nimport Audio from 'components/lib/Audio';\nimport Transcript from 'components/lib/Video/Transcript';\nimport Embed from 'components/lib/Embed';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport SelectOptionsRoot from './SelectOptionsRoot';\nimport SelectOptions from './SelectOptions';\nimport SelectOption from './SelectOption';\nimport Feedback from 'components/lib/Feedback/Feedback_updated_022022';\nimport MultiChoice_default from 'assets/Rectangle.png';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n InteractionColumn: ({ children }) => {\n return children?.[0] || null;\n },\n Image: ({ children, ...props }) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n const { isAdditionalMedia } = mediaContext;\n\n return (\n <Image\n {...{\n ...props,\n placeholder: !isAdditionalMedia\n ? MultiChoice_default\n : imgPlaceholders[1],\n }}\n />\n );\n },\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n const [select, txt] = children;\n\n if (!includeAdditionalTextField) {\n return select;\n }\n\n return (\n <_>\n {select}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n Video,\n Audio,\n Transcript,\n SVG,\n Embed,\n Media,\n PDF,\n OpenPDF,\n SelectOptionsRoot,\n SelectOptions,\n SelectOption,\n Question: ({ children, ...props }) => children,\n Feedback,\n Correct: ({ children, ...props }) => children,\n Incorrect: ({ children, ...props }) => children,\n Attempt: ({ children, ...props }) => children,\n EditableButton: EditableBtn,\n};\n\nconst SelectOptionsDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default SelectOptionsDisplay;\n","import SelectOptionsDisplay from './SelectOptionsDisplay';\n\nexport default SelectOptionsDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport { css as _css } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { colors } from 'styles/variables';\nimport TopicPanelDefaultIcon from 'assets/CC_Topic Portal V3_Topic Portal Placeholder Icon.png';\n//PortalAvatar.svg'; // TopicPanelDefaultIcon.png';\nimport { useCachedResource } from 'services/useCachedResource';\nimport { CHAMELEON_CACHE_v1 } from 'services/imageCache';\n\nconst { lPink } = colors;\n\nconst TopicIcon = ({\n topicIcon,\n size = 60,\n isEditing,\n iconSelected,\n setIconSelected,\n}) => {\n const src = topicIcon?.url || TopicPanelDefaultIcon;\n const cachedImgSrc = useCachedResource(CHAMELEON_CACHE_v1, src);\n\n return (\n <div\n style={{\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n left: 0,\n top: 0,\n width: 'inherit',\n height: size,\n pointerEvents: window.dev() ? 'auto' : 'none',\n }}\n >\n <div\n css={css`\n flex-stretch: 0;\n width: ${size}px;\n height: ${size}px;\n border-radius: 50%;\n background: url('${cachedImgSrc || src}') no-repeat;\n background-size: cover;\n background-position: center;\n transform: translateY(-50%);\n \n ${isEditing &&\n `\n cursor: pointer;\n &:hover {\n transition: box-shadow 0.15s;\n box-shadow: 0 0 0 2px ${lPink};\n }\n `}\n `}\n onClick={\n isEditing\n ? e => {\n e.stopPropagation();\n setIconSelected(!iconSelected);\n }\n : () => {}\n }\n />\n </div>\n );\n};\n\nexport default TopicIcon;\n","/** @jsx jsx */\n\nimport React, {\n useState,\n useContext,\n useEffect,\n useMemo,\n Fragment as _,\n} from 'react';\nimport { css as _css } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { colors, getButtonFocus } from 'styles/variables';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { interactionContext } from './interactionContext';\nimport { useSelector } from 'react-redux';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport hexToRGB from 'services/hexToRGB';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport pubSub from 'services/pubSub';\nimport TopicIcon from './TopicIcon';\nimport getTopicSId from 'services/getTopicSId';\nimport { getTopicsComplete } from 'services/apiHelpers/getTopicsComplete';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport hexToRgb, { getHexToRgbWithDefaultFallback } from 'services/hexToRGB';\n\nconst { lGrey0, lPink } = colors;\n\nconst ProgressBar = ({ color, percentComplete }) => {\n const width = 130;\n const height = 8;\n const { r, g, b } = hexToRGB(color);\n\n return (\n <div\n css={css`\n position: relative;\n width: ${width}px;\n height: ${height}px;\n border-radius: 9999px;\n background: rgba(${r}, ${g}, ${b}, 0.3);\n transition: background 0.1s;\n `}\n >\n <div\n css={css`\n position: absolute;\n left: 0;\n top: 0;\n width: ${width * (percentComplete / 100)}px;\n height: ${height}px;\n border-radius: 9999px;\n background: rgb(${r}, ${g}, ${b});\n transition: background 0.1s;\n `}\n />\n </div>\n );\n};\n\nconst TopicNameContainer = ({ addImage, cardSize, children }) => {\n const shared = `\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0;\n width: 100%;\n `;\n return !!addImage ? (\n <div\n css={css`\n ${shared}\n top: ${cardSize === 'small' ? '40px' : '55px'};\n height: calc(100% - ${cardSize === 'small' ? '95px' : '110px'});\n `}\n >\n {children}\n </div>\n ) : (\n <div\n css={css`\n ${shared}\n top: 20px;\n height: calc(100% - 75px);\n `}\n >\n {children}\n </div>\n );\n};\n\nconst TopicPanel = ({\n topic,\n updateTopicComplete,\n displayedTopics,\n children,\n}) => {\n const context: any = useContext(interactionContext);\n const { id: interactionId } = context;\n const {\n graphColor = '#61cece',\n cardColor = '#fff',\n textColor = '#1e2533',\n navigateToTopic = true,\n addImage = true,\n // iconSize,\n cardWidth = 235,\n cardHeight = 150,\n hideTopicsThatIncludeATopicPortal = true,\n completeInSequence = false,\n includeShadow = true,\n focusColor = '#000000',\n panelBackgroundOpacity = 100,\n panelOutline = false,\n panelOutlineColor,\n borderRadius = 20,\n iconWidth,\n iconHeight,\n backgroundMedia = false,\n includeCustomText = false,\n positionTextBelow = false,\n fontSize = 16,\n } = context.props;\n\n const [media, txt] = children || [];\n\n let imageFit;\n if (media?.props?.child === 1) {\n imageFit = media?.props?.children[1]?.props?.fit;\n }\n\n let { font = '' } = context.props;\n\n const { r, g, b } = getHexToRgbWithDefaultFallback(cardColor, '#ffffff');\n\n let a = panelBackgroundOpacity / 100;\n if (!cardColor) {\n a = 0;\n }\n\n const { focusedNodeId, theme, interactionsSeen } = useSelector(\n (state: any) => state\n );\n const interactionsInTopics = useMemo(\n () =>\n getTopics().reduce((acc, curr, index) => {\n let topicName = curr?.props?.name;\n //\n return {\n ...acc,\n [curr.id]: getInteractionsInTopic(curr),\n };\n }, {}),\n []\n );\n const [iconSelected, setIconSelected] = useState<Boolean>(false);\n const { id } = topic;\n const { name, topicIcon = {} } = topic.props;\n const isEditing = focusedNodeId === interactionId;\n\n const cardSize = cardWidth === 235 ? 'small' : 'large';\n\n let { iconSize } = context.props;\n if (!iconSize) {\n iconSize = cardWidth <= 235 ? 60 : 90;\n }\n\n let navigationEnabled =\n !isEditing && navigateToTopic && getCurrentTopic()!.id !== id;\n\n const navigate = navigationEnabled\n ? () => {\n if (window.dev && window.dev()) {\n return;\n }\n\n const targetLocation = getTopicSId(topic);\n\n if (targetLocation) {\n window.location.hash = targetLocation;\n }\n }\n : null;\n\n // nuclear\n if (window.dev()) {\n navigationEnabled = false;\n }\n\n const interactionsInTopic = getInteractionsInTopic(topic)\n .filter((i: any) => {\n if (!hideTopicsThatIncludeATopicPortal) {\n return true;\n }\n return i?.meta?.subType !== 'TopicPortal';\n })\n .map((i: any) => i.id);\n\n const interactionsInTopicSeen = interactionsInTopic.filter((i: any) => {\n return interactionsSeen\n .filter((i: any) => {\n return i && getBlockById(i)?.meta?.subType !== 'TopicPortal';\n })\n .includes(i);\n });\n\n const topicsComplete = getTopicsComplete(\n interactionsInTopics,\n interactionsSeen\n );\n\n let percentComplete = Number(\n (\n (interactionsInTopicSeen.length / interactionsInTopic.length) *\n 100\n ).toFixed()\n );\n\n if (isNaN(percentComplete)) {\n percentComplete = 0;\n }\n\n // update font : theme > local\n // does the section get a font ?\n font = !font ? theme?.fontFamily : font;\n //\n\n let unlocked;\n const topics = useMemo(() => {\n return displayedTopics || getTopics();\n }, []);\n if (!!completeInSequence) {\n topics.forEach((t, i, arr) => {\n if (i === 0) {\n unlocked = true;\n } else if (t.id === id) {\n unlocked = topicsComplete[arr[i - 1]?.id];\n }\n });\n } else {\n unlocked = true;\n }\n\n if (window.dev()) {\n unlocked = true;\n }\n\n useEffect(() => {\n const pS = pubSub.subscribe('UPDATE_TOPIC_ICON', $ => {\n if (!$.topic) {\n return;\n }\n $.topic.id !== id && setIconSelected(false);\n });\n\n return () => pS();\n }, []);\n\n useEffect(() => {\n iconSelected &&\n pubSub.publish(\n 'UPDATE_TOPIC_ICON',\n iconSelected\n ? {\n topic,\n }\n : null\n );\n }, [iconSelected]);\n\n useEffect(() => {\n if (percentComplete === 100) {\n updateTopicComplete(topic.id);\n }\n }, [percentComplete]);\n\n let focus;\n // if(!focusColor) {}\n focus = getButtonFocus(\n (focusColor || cardColor) !== '#fff' ? focusColor || cardColor : '#1e2533',\n '0 20px 60px -25px rgba(0, 0, 0, 0.4)'\n ).split(':')[1];\n\n const pointerEvents = unlocked ? 'auto' : 'none';\n\n const title = `Go to ${name}. Progress: ${percentComplete}%`;\n\n return interactionsInTopic.length === 0 ? null : (\n <div\n css={css({\n position: 'relative',\n\n width: cardWidth,\n margin: `${addImage ? iconSize / 2 : 20}px 15px 20px 15px`,\n //\n\n pointerEvents,\n // and ANYTHING in-between\n '*': {\n pointerEvents,\n },\n\n opacity: unlocked ? 1 : 0.2,\n\n '.chameleon-image': {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: cardWidth,\n height: cardHeight,\n },\n\n '.chameleon-image img': {\n width: `${cardWidth -\n (imageFit === 'contain' ? 20 : 0)}px !important`,\n height: `${cardHeight -\n (imageFit === 'contain' ? 20 : 0)}px !important`,\n },\n })}\n >\n <a\n href={`#${getTopicSId(topic)}`}\n title={title}\n target=\"_self\"\n css={css({\n position: 'relative',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n\n width: 'inherit',\n height: cardHeight,\n\n ...(panelOutline && {\n border: `1px solid ${panelOutlineColor || 'rgba(0, 0, 0, 0.05)'}`,\n }),\n\n borderRadius,\n background: `rgba(${r}, ${g}, ${b}, ${a})}`,\n\n boxShadow: includeShadow\n ? `0 20px 60px -25px rgba(0, 0, 0, 0.4)`\n : 'none',\n\n transition: 'all 0.15s',\n\n ...(navigationEnabled\n ? {\n cursor: 'pointer',\n\n '&:hover': {\n opacity: 0.8,\n },\n }\n : { pointerEvents: 'none' }),\n\n '&:focus': {\n boxShadow: focus,\n },\n\n overflow: 'hidden',\n })}\n onClick={e => {\n if (window.dev()) {\n e.preventDefault();\n return;\n }\n }}\n onKeyUp={e => {\n if (![' ', 'Enter'].includes(e.key)) {\n return;\n }\n\n if (window) {\n window.location.hash = getTopicSId(topic) as string;\n }\n }}\n >\n {!!backgroundMedia && (\n <div\n css={css({\n width: cardWidth,\n height: cardHeight,\n\n // pointerEvents: 'auto', < this was overriding the root pointerEvent\n '.chameleon-image > div': {\n borderRadius,\n },\n })}\n >\n {media}\n </div>\n )}\n\n {!positionTextBelow && (\n <_>\n {!includeCustomText ? (\n <TopicNameContainer addImage={addImage} cardSize={cardSize}>\n <div\n css={css`\n padding: 5px 15px;\n font-size: ${fontSize}px;\n font-family: ${font};\n color: ${textColor};\n text-align: center;\n `}\n >\n {name}\n </div>\n </TopicNameContainer>\n ) : (\n <div\n css={css({\n position: 'absolute',\n left: 0,\n width: '100%',\n padding: window.dev() ? 5 : 0,\n // zIndex: 1, // causing overlap with header in output when scrolling\n pointerEvents: 'auto',\n })}\n >\n {txt}\n </div>\n )}\n\n <div\n css={css`\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: center;\n left: 0;\n bottom: 0;\n width: 100%;\n height: ${cardSize === 'small' ? '55px' : '65px'};\n `}\n >\n <div\n css={css({\n margin: '0 0 0px 0',\n fontSize: '14px',\n color: graphColor,\n })}\n >\n {percentComplete}%\n </div>\n <ProgressBar\n color={graphColor}\n percentComplete={percentComplete}\n />\n </div>\n </_>\n )}\n </a>\n\n {!!positionTextBelow && (\n <div\n css={css({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: window.dev() ? 0 : 10,\n })}\n >\n <div\n css={css`\n width: 100%;\n padding: 5px 15px;\n font-size: ${fontSize}px;\n font-family: ${font};\n color: ${textColor};\n text-align: center;\n `}\n >\n {!includeCustomText ? name : txt}\n </div>\n <div\n css={css({\n margin: '0 0 0px 0',\n fontSize: '14px',\n color: graphColor,\n })}\n >\n {percentComplete}%\n </div>\n <ProgressBar color={graphColor} percentComplete={percentComplete} />\n </div>\n )}\n\n {!!addImage && (\n <TopicIcon\n topicIcon={topicIcon}\n size={iconSize}\n // || cardWidth <= 235 ? 60 : 90}\n isEditing={isEditing}\n iconSelected={iconSelected}\n setIconSelected={setIconSelected}\n />\n )}\n </div>\n );\n};\n\nexport default TopicPanel;\n","export const getTopicsComplete = (interactionsInTopics, interactionsSeen) => {\n const temp = {};\n Object.keys(interactionsInTopics).forEach(key => {\n const interactions = interactionsInTopics[key];\n temp[key] = interactions.every(i => {\n return interactionsSeen.includes(i.id);\n });\n });\n\n return temp;\n};\n","import getBlockById from 'services/apiHelpers/getBlockById';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport getStore from 'services/getStore';\nimport {\n addTopicPortalMedia as _addTopicPortalMedia_,\n removeTopicPortalMedia as _removeTopicPortalMedia_,\n} from 'factories/interactions/topicportal';\nimport { setBlockAction } from 'actions/setBlockAction';\nimport { setBlocksAction } from 'actions/setBlocksAction';\nimport setNewBlockNewTree from 'services/apiHelpers/setNewBlockNewTree';\nimport { Block } from '@chameleoncreator/creator-app';\n\nconst addTopicPortalMedia = (topicPortalContainerBlock, index, props) => {\n const [newBlock, newTree] = _addTopicPortalMedia_(\n topicPortalContainerBlock,\n // topicPortalContainerBlock.children.length,\n index,\n props\n );\n\n if (newBlock === topicPortalContainerBlock) {\n return;\n }\n\n const store = getStore();\n\n if (newTree) {\n setNewBlockNewTree(newTree, newBlock, store, setBlocksAction);\n } else {\n store.dispatch(setBlockAction(newBlock));\n }\n};\n\nconst removeTopicPortalMedia = (topicPortalContainerBlock, index) => {\n const [newBlock, newTree] = _removeTopicPortalMedia_(\n topicPortalContainerBlock,\n index\n );\n\n if (newBlock === topicPortalContainerBlock) {\n return;\n }\n\n const store = getStore();\n\n if (newTree) {\n setNewBlockNewTree(newTree, newBlock, store, setBlocksAction);\n } else {\n store.dispatch(setBlockAction(newBlock));\n }\n};\n\nexport const updateTopicPortalMedia = (topics, blockId) => {\n const getTopicPortalContainerBlock = () => {\n return findByKeyVal_V2(blockId, 'type', 'TopicPortalContainer');\n };\n\n const getTopicPortalContainerBlockChildrenData = () => {\n return (getTopicPortalContainerBlock()?.children as []).map(\n (child: Block) => {\n const block = getBlockById(child.id);\n return block?.props?.topicId;\n }\n );\n };\n\n const addMedia = () => {\n topics.forEach((t, index) => {\n if (!getTopicPortalContainerBlockChildrenData().includes(t.id)) {\n // console.log('addTopicPortalMedia :', t.id);\n addTopicPortalMedia(getTopicPortalContainerBlock(), index, t.id);\n }\n });\n };\n\n const removeMedia = () => {\n getTopicPortalContainerBlockChildrenData().forEach((tId, index) => {\n const topicIds = topics\n .map(t => {\n return t.id;\n })\n .reduce((acc, curr) => {\n return {\n ...acc,\n [curr]: curr,\n };\n }, {});\n\n // if there's not a ' matching ' topic === topicPortalChild\n // remove that child\n if (!topicIds[tId]) {\n // console.log('removeTopicPortalMedia :', tId);\n removeTopicPortalMedia(getTopicPortalContainerBlock(), index);\n }\n });\n };\n\n return {\n addMedia,\n removeMedia,\n };\n};\n","/** @jsx jsx */\n\nimport React, { useContext, useRef, useEffect } from 'react';\nimport { css as _css } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport TopicPanel from './TopicPanel';\nimport { interactionContext } from './interactionContext';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { updateTopicPortalMedia } from './updateTopicPortalMedia';\n\nconst TopicPortalContainer = props => {\n const context = useContext(interactionContext);\n const {\n selectedTopics = [],\n hideTopicsThatIncludeATopicPortal = true,\n } = context?.props;\n //\n\n const { children } = props;\n\n const topics = getTopics();\n\n const displayedTopics = topics.filter((t: any, index: number) => {\n const topicIncludesPortal = getInteractionsInTopic(t).find(i => {\n return i?.meta?.subType === 'TopicPortal';\n });\n\n if (selectedTopics.length) {\n return (\n selectedTopics.includes(t?.props?.sId) || selectedTopics.includes(t.id)\n );\n }\n\n return (\n !(hideTopicsThatIncludeATopicPortal && topicIncludesPortal) &&\n t.props.hiddenFromPortal !== true\n );\n });\n\n window.dev() &&\n console.log(\n 'portal will unlock when these topics ( updated to reference the sId ) are complete :',\n displayedTopics.map(t => {\n return `${t?.props?.sId} || ${t?.id} ${t?.props?.name}`;\n })\n );\n\n const { lockDown } = context.props;\n\n const itemsSeen = useRef(\n unlockInteraction(context.id, (displayedTopics as any).length)\n );\n\n const { addMedia, removeMedia } = updateTopicPortalMedia(topics, context.id);\n\n const updateTopicComplete = id => {\n // if (lockDown === 0) {\n // return;\n // }\n\n itemsSeen.current(id);\n };\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n if (topics.length > children.length) {\n addMedia();\n return;\n }\n\n removeMedia();\n\n return () => {};\n }, [topics.length]);\n\n return (\n <div\n css={css`\n width: 100%;\n `}\n >\n <div\n css={css`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n margin: 12px 0 12px 0;\n `}\n >\n {displayedTopics.map((t: any, index: number) => {\n const topicMedia = props.children.find(media => {\n return media?.props?.topicId === t.id;\n });\n\n return (\n <TopicPanel\n key={t.id}\n topic={t}\n updateTopicComplete={updateTopicComplete}\n displayedTopics={displayedTopics}\n >\n {topicMedia ? topicMedia.props.children : null}\n </TopicPanel>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default TopicPortalContainer;\n","/** @jsx jsx */\n\nimport { Fragment as _, memo, useContext } from 'react';\nimport { jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Media, { MediaContext, IMediaContext } from 'components/lib/Media';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Container from 'components/Layouts/ContainerLogical';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport continueBtn from '../ContinueBtn/continueBtn_v2';\nimport { Block } from '@chameleoncreator/creator-app';\nimport TopicPortalContainer from './TopicPortalContainer';\nimport shouldUpdate from 'services/shouldUpdate';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport SVG from 'components/lib/SVG';\nimport Embed from 'components/lib/Embed';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { imgPlaceholders } from 'components/lib/Image';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n InteractionColumn: ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const { includeAdditionalTextField } = interactionContext.props;\n\n const [topicPortal, txt] = children;\n\n if (!includeAdditionalTextField) {\n return topicPortal;\n }\n\n return (\n <_>\n {topicPortal}\n <div\n style={{\n margin: '20px 0 0 0',\n }}\n >\n {txt}\n </div>\n </_>\n );\n },\n\n TopicPortalContainer,\n TopicPortalMedia: ({ children, ...props }) => {\n return children;\n },\n Media,\n\n Image: ({ children, ...props }) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n\n return (\n <Image\n {...{\n ...props,\n placeholder: imgPlaceholders[1],\n //\n editWrapperType: 1,\n editWrapperSize: '80%',\n editWrapperUseIcon: false,\n canUpdateContainerHeight: false,\n }}\n />\n );\n },\n\n Video,\n Audio,\n SVG,\n PDF,\n OpenPDF,\n Embed,\n Transcript: ({ children }) => children,\n TwoColumnLayout: TwoColumnLayout,\n SingleColumnLayout: SingleColumnLayout,\n ContinueButton: continueBtn,\n};\n\nconst TopicPortalDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default TopicPortalDisplay;\n","import TopicPortalDisplay from './TopicPortalDisplay';\n\nexport default TopicPortalDisplay;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport EditableBtn from 'components/lib/EditableBtn';\n\nconst SubmitBtn = props => {\n const { enabled, onSubmit } = props;\n\n return (\n <div\n css={css`\n // // display: flex;\n // // justify-content: center;\n // width: 100%;\n ${!window.dev() &&\n `\n opacity: ${enabled ? 1 : 0.25};\n pointer-events: ${enabled ? 'auto' : 'none'};\n transition: opacity 0.5s;\n `}\n `}\n >\n <EditableBtn\n onClick={() => {\n onSubmit();\n }}\n enabled={enabled}\n {...props}\n />\n </div>\n );\n};\n\nexport default SubmitBtn;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useContext,\n useState,\n cloneElement,\n useRef,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { useDispatch } from 'react-redux';\nimport { submitToCollect } from 'services/submitToCollect';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport { Report } from 'store/store';\nimport Modal from 'components/UI/Modal';\n\ntype Result = 'correct' | 'incorrect' | 'attempt' | undefined;\n\nconst TextEntry = props => {\n const interactionContext = useContext(InteractionContext);\n\n // const { setShowFeedback } = interactionContext;\n\n const {\n messageTextColor = '#000',\n messageBorderColor = '#d2dff9',\n messageFontFamily = 'inherit',\n messageFontSize = 16,\n ratingEndpoint,\n collectionKey,\n learnerIdentity,\n reference,\n submissionEmailDestination,\n subject,\n score,\n correctAnswer,\n } = interactionContext.props;\n\n const { children } = props;\n\n const [\n _submitBtn_,\n // feedbackSubmitted,\n feedbackNonScoring,\n feedbackScoring,\n ] = children;\n\n const targetFeedback = score ? feedbackScoring : feedbackNonScoring;\n // console.log({ score, targetFeedback });\n\n const submitted = unlockInteraction(interactionContext.id, 1);\n\n const [textAreaStyle, setTextAreaStyle] = useState<{\n height?: number;\n overflow?: string;\n }>({});\n\n const [isLive, setIsLive] = useState<boolean>(false);\n const [isSubmitted, setIsSubmitted] = useState<boolean>(false);\n const [showFeedback, setShowFeedback] = useState<boolean>(false);\n\n const [result, setResult] = useState<Result>(undefined);\n const [hasFocus, setHasFocus] = useState<boolean>(false);\n\n const scoringQuizzes = useScoringQuizzes();\n const dispatch = useDispatch();\n\n const message = useRef<string>('');\n const textArea = useRef<HTMLTextAreaElement>(null);\n const textAreaProxy = useRef<HTMLDivElement>(null);\n\n const updateTextAreaStyle = () => {\n if (!textAreaProxy.current) {\n return;\n }\n\n const height = textAreaProxy.current.offsetHeight;\n setTextAreaStyle({\n overflow: height < 240 ? 'hidden' : 'auto',\n });\n };\n\n const submitBtn = cloneElement(children[0], {\n enabled: isLive,\n onSubmit() {\n //\n // console.log(ratingEndpoint, {\n // key: collectionKey,\n // rating: undefined,\n // message: message?.current,\n // identity: learnerIdentity,\n // reference,\n // });\n\n switch (ratingEndpoint) {\n case 'collect': {\n submitToCollect({\n key: collectionKey,\n rating: undefined,\n message: message.current,\n identity: learnerIdentity,\n reference,\n });\n\n submitted(1);\n break;\n }\n\n case 'email': {\n location.href = `mailto:${submissionEmailDestination}?${subject &&\n `subject=${encodeURIComponent(subject)}&`}body=${encodeURIComponent(\n message.current\n )}`;\n\n submitted(1);\n break;\n }\n\n case 'hosting': {\n dispatch({\n type: 'SUBMIT_FEEDBACK',\n data: {\n key: collectionKey,\n rating: undefined,\n message: message?.current,\n identity: learnerIdentity,\n reference,\n },\n });\n\n submitted(1);\n break;\n }\n }\n\n // setIsSubmitted(true);\n\n //scorm\n\n if (!score) {\n setShowFeedback(true);\n\n return;\n }\n\n const { id } = interactionContext;\n\n const section = document.querySelector(`#i${id}`) as HTMLElement;\n\n const chameleonTextElement = section?.querySelector(\n `.chameleon-text p`\n ) as HTMLElement;\n\n // question might be an image ? get its alt ?\n let question = '';\n if (chameleonTextElement) {\n question = chameleonTextElement.innerText;\n }\n\n const correctAnswerParsed =\n correctAnswer && correctAnswer.replace(/ /g, '').split(/,/g);\n\n const isCorrect = correctAnswerParsed.includes(\n message.current.toLowerCase().replace(/ /g, '')\n );\n // message.current.toLowerCase().replace(/ /g, '') === correctAnswer;\n console.log(correctAnswerParsed, isCorrect);\n\n const action = {\n id,\n type: 'long-fill-in',\n question,\n reportable: 'longfillin',\n // ,\n response: message?.current,\n correct: correctAnswer,\n //message?.current,\n result: isCorrect ? 1 : 0,\n } as Report;\n\n console.log(JSON.stringify(action, null, 2));\n // dispatch if there's no scoringQuizzes etc\n let shouldDispatch = true;\n\n if (scoringQuizzes.length) {\n shouldDispatch = false;\n }\n\n if (shouldDispatch) {\n dispatch(updateScoreAction(id, 1));\n dispatch(addScormResponseAction(action));\n }\n\n setResult(isCorrect ? 'correct' : 'incorrect');\n setShowFeedback(true);\n\n submitted(1);\n },\n });\n\n useEffect(() => {\n if (!textAreaProxy.current) {\n return;\n }\n\n updateTextAreaStyle();\n }, []);\n\n useEffect(() => {\n if (isSubmitted) {\n setShowFeedback(true);\n }\n }, [isSubmitted]);\n\n // console.log(\n // // textAreaStyle,\n // // textArea?.current?.scrollHeight,\n // message?.current\n // );\n\n const sharedStyles = {\n width: '100%',\n height: '100%',\n maxHeight: 240,\n padding: '5px 5px 5px 20px',\n fontFamily: messageFontFamily,\n fontSize: messageFontSize,\n color: messageTextColor,\n };\n\n const textAreaProxyHTML = message?.current.replace(/\\n/g, '<br>');\n\n return (\n <div\n style={{\n width: '100%',\n }}\n >\n <div\n style={{\n position: 'relative',\n maxHeight: sharedStyles.maxHeight,\n }}\n >\n <div\n ref={textAreaProxy}\n style={{\n ...sharedStyles,\n visibility: 'hidden',\n overflow: 'hidden',\n }}\n dangerouslySetInnerHTML={{\n __html: textAreaProxyHTML || '*',\n }}\n aria-hidden=\"true\"\n />\n\n <textarea\n ref={textArea}\n placeholder=\"Type your message here...\"\n css={css({\n position: 'absolute',\n left: 0,\n top: 0,\n border: 'none',\n outline: 'none',\n resize: 'none',\n ...sharedStyles,\n ...textAreaStyle,\n\n ':focus': {\n border: 'none !important',\n outline: 'none !important',\n // boxShadow: `0 0 0 1px ${messageTextColor}`,\n },\n })}\n onFocus={() => {\n setHasFocus(true);\n }}\n onBlur={() => {\n setHasFocus(false);\n }}\n onKeyUp={e => {\n updateTextAreaStyle();\n message.current = e.currentTarget.value;\n setIsLive(!!message.current);\n }}\n />\n </div>\n\n <div\n style={{\n width: '100%',\n height: 1,\n marginTop: 10,\n // border: `${hasFocus ? 2 : 1}px solid ${messageBorderColor}`,\n boxShadow: `0 0 0 ${hasFocus ? 1 : 0}px ${messageBorderColor}`,\n background: messageBorderColor,\n transition: 'box-shadow 0.3s',\n }}\n />\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n margin: '20px 0 0 0',\n }}\n >\n {submitBtn}\n </div>\n\n {showFeedback && (\n <_>\n {score ? (\n cloneElement(feedbackScoring, {\n result,\n showAttemptNumber: false,\n attempt: 1,\n numberOfAttempts: 1,\n navigationBehaviour: {\n correct: false,\n incorrect: true,\n },\n onClose() {\n setShowFeedback(false);\n },\n useMediaInFeedback: true,\n })\n ) : (\n <Modal\n onClose={() => {\n setShowFeedback(false);\n }}\n contentContainerStyles={{\n position: 'absolute',\n width: '100vw',\n maxWidth: '100vw',\n height: '100vh',\n margin: 0,\n padding: 0,\n borderRadius: 0,\n }}\n >\n {cloneElement(feedbackNonScoring, {\n onClose() {\n console.log('why you no close !?!?');\n setShowFeedback(false);\n },\n })}\n </Modal>\n )}\n </_>\n )}\n </div>\n );\n};\n\nexport default TextEntry;\n","export const submitToCollect = ({\n key,\n rating,\n message,\n identity,\n reference,\n}) => {\n const myHeaders = new Headers();\n myHeaders.append('Accept', 'application/json');\n myHeaders.append('Content-Type', 'application/json');\n\n //\n const raw = JSON.stringify({\n key,\n response: {\n rating,\n content: message,\n identity,\n reference,\n },\n });\n\n const requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow',\n };\n\n const endPoint =\n window.top!['collectResponseEndpoint'] ||\n 'https://collect.chameleoncreator.com/api/v1/responses/create';\n\n if (!(window as any).hosted) {\n fetch(endPoint, requestOptions)\n .then(response => {\n return response.text();\n })\n .then(result => console.log(result))\n .catch(error => console.log('error', error));\n }\n};\n","/** @jsx jsx */\n\nimport {\n Children,\n Fragment as _,\n useState,\n memo,\n cloneElement,\n useContext,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport SVG from 'components/lib/SVG';\nimport PDF from 'components/lib/PDF';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport SubmitBtn from './SubmitBtn';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport Embed from 'components/lib/Embed';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport IELayout from 'components/Layouts/IELayout';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport Media_default from 'assets/Rectangle.png';\nimport TextEntry from './TextEntry';\nimport Feedback from 'components/lib/Feedback/Feedback_updated_022022';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n InteractionColumn: ({ children }) => {\n return children?.[0] || null;\n },\n TextEntry,\n FeedbackNonScoring: props => {\n const { onClose, children } = props;\n\n const [img, txt, btn] = children;\n return (\n <div\n css={css({\n display: 'flex',\n flexDirection: 'column',\n alignContent: 'center',\n // width: '100vw',\n // height: '100vh',\n // padding: 50,\n })}\n >\n <div>{img}</div>\n\n <div\n css={css({\n margin: '20px 0',\n })}\n >\n {txt}\n </div>\n\n <div\n css={css({\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n })}\n onClick={onClose}\n >\n {btn}\n </div>\n </div>\n );\n },\n Feedback,\n Correct: ({ children, ...props }) => children,\n Incorrect: ({ children, ...props }) => children,\n Attempt: ({ children, ...props }) => children,\n Image: ({ children, ...props }) => {\n const updatedProps = {\n ...props,\n };\n\n if (!props.src) {\n updatedProps.placeholder = Media_default;\n }\n\n return <Image {...{ ...updatedProps, usePlaceholderValue: true }} />;\n //\n },\n ColumnImageAndText: ({ children }) => {\n const interactionContext = useContext(InteractionContext);\n const { showFeedback, props } = interactionContext;\n const { useMediaInColumn = true } = props;\n\n // console.log({ showFeedback });\n\n if (showFeedback) {\n return null;\n }\n\n const [img, txt] = children;\n\n return (\n <div>\n <div>{img}</div>\n <div style={{ margin: '20px 0' }}>{txt}</div>\n </div>\n );\n return useMediaInColumn ? children : txt;\n },\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: SubmitBtn,\n //EditableBtn\n Video,\n Audio,\n SVG,\n PDF,\n OpenPDF,\n Media,\n Embed,\n Transcript: ({ children }) => children,\n ...IELayout(InteractionContext),\n};\n\nconst TextEntryDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n const [showFeedback, setShowFeedback] = useState<boolean>(false);\n\n const renderedBlock = (interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n });\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{\n ...interactionBlock,\n isOpen: props.isOpen,\n updateItemsSeen: null,\n showFeedback,\n setShowFeedback($: boolean) {\n setShowFeedback($);\n },\n }}\n >\n {renderedBlock}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default TextEntryDisplay;\n","import TextAndImage from './TextEntryDisplay';\n\nexport default TextAndImage;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport EditableBtn from 'components/lib/EditableBtn';\n\nconst SubmitBtn = props => {\n const { enabled, onSubmit } = props;\n\n return (\n <div\n css={css`\n // // display: flex;\n // // justify-content: center;\n // width: 100%;\n ${!window.dev() &&\n `\n opacity: ${enabled ? 1 : 0.25};\n pointer-events: ${enabled ? 'auto' : 'none'};\n transition: opacity 0.5s;\n `}\n `}\n >\n <EditableBtn\n onClick={() => {\n onSubmit();\n }}\n enabled={enabled}\n {...props}\n />\n </div>\n );\n};\n\nexport default SubmitBtn;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport { useState, useRef, useEffect, useLayoutEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\n\n//\n\ninterface TextAreaDynamicHeightProps {\n minHeight?: number | undefined;\n maxLinesBeforeScrolling?: number | undefined;\n // maxHeightBeforeScrolling?: number | undefined;\n style?: { [key: string]: string | number };\n initialValue?: string | undefined;\n placeholder?: string;\n onUpdate?: (value: string) => void | undefined;\n}\n\nexport const TextAreaDynamicHeight = (props: TextAreaDynamicHeightProps) => {\n const {\n minHeight = 30,\n maxLinesBeforeScrolling,\n // maxHeightBeforeScrolling,\n onUpdate,\n style = {},\n initialValue = '',\n placeholder = 'Type your message here...',\n ...rest\n } = props;\n\n const [init, setInit] = useState(false);\n const [characterHeightMeasured, setCharacterHeightMeasured] = useState(0);\n const [value, setValue] = useState(initialValue);\n\n const characterHeight = useRef<HTMLDivElement>(null);\n const proxy = useRef<HTMLDivElement>(null);\n const textArea = useRef<HTMLTextAreaElement>(null);\n\n const _style_: any = {\n all: 'unset',\n width: '100%',\n whiteSpace: 'pre-wrap',\n ...style,\n };\n\n let computedStyles = {\n fontFamily: 'inherit',\n fontSize: '0px',\n paddingTop: '0px',\n paddingBottom: '0px',\n };\n\n if (proxy?.current) {\n computedStyles = getComputedStyle(proxy?.current);\n }\n\n const computedFontFamily = computedStyles?.fontFamily;\n const computedFontSize = parseInt(computedStyles?.fontSize, 10);\n const paddingTop = parseInt(computedStyles?.paddingTop, 10);\n const paddingBottom = parseInt(computedStyles?.paddingBottom, 10);\n\n let maxHeight = maxLinesBeforeScrolling\n ? characterHeightMeasured * maxLinesBeforeScrolling +\n (paddingTop + paddingBottom)\n : '100%';\n\n useLayoutEffect(() => {\n characterHeight.current &&\n setCharacterHeightMeasured(characterHeight.current.scrollHeight);\n });\n\n useEffect(() => {\n if (textArea.current && value !== initialValue) {\n setValue(initialValue);\n }\n //\n }, [initialValue]);\n\n useEffect(() => {\n if (textArea.current && proxy.current && characterHeight.current) {\n setInit(true);\n }\n });\n\n return (\n <div\n style={{\n position: 'relative',\n visibility: init ? 'visible' : 'hidden',\n minHeight,\n maxHeight,\n }}\n >\n <div\n ref={characterHeight}\n style={{\n // all: 'unset',\n fontFamily: computedFontFamily,\n fontSize: computedFontSize,\n position: 'absolute',\n visibility: 'hidden',\n }}\n >\n Aa\n </div>\n <div\n ref={proxy}\n style={{\n ..._style_,\n visibility: 'hidden',\n }}\n dangerouslySetInnerHTML={{\n __html: `${value.replace(/\\n/g, '<br />')}<br />`,\n }}\n ></div>\n <textarea\n ref={textArea}\n value={value}\n placeholder={placeholder}\n onChange={e => {\n const { value } = e.currentTarget;\n //\n setValue(value);\n onUpdate && onUpdate(value);\n }}\n style={{\n ..._style_,\n display: 'block',\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n }}\n {...rest}\n />\n </div>\n );\n};\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useContext,\n useState,\n cloneElement,\n useRef,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport hexToRgb from 'services/hexToRGB';\nimport { TextAreaDynamicHeight } from 'components/UI/TextAreaDynamicHeight';\nimport { State } from 'store/store';\n\nconst TextEntryVariable = props => {\n const interactionContext = useContext(InteractionContext);\n\n const {\n messageTextColor = '#000',\n messageBorderColor = '#d2dff9',\n messageFontFamily = 'inherit',\n messageFontSize = 16,\n messageTextBackgroundColor,\n messageTextBackgroundOpacity,\n variableName,\n } = interactionContext.props;\n\n const { children } = props;\n\n const [_submitBtn_] = children;\n\n const [isLive, setIsLive] = useState<boolean>(false);\n const [isSubmitted, setIsSubmitted] = useState<string>('');\n const [hasFocus, setHasFocus] = useState<boolean>(false);\n\n const dispatch = useDispatch();\n\n const moduleVariables = useSelector((state: State) => {\n return state.moduleVariables || {};\n });\n\n const message = useRef<string>(moduleVariables[variableName] || '');\n\n const { r, g, b } = hexToRgb(messageTextBackgroundColor);\n\n let a = messageTextBackgroundOpacity / 100;\n let backgroundColorRGBA = `rgba(${r}, ${g}, ${b}, ${a})`;\n\n const sharedStyles = {\n width: '100%',\n height: '100%',\n maxHeight: 240,\n padding: '5px 5px 5px 20px',\n fontFamily: messageFontFamily,\n fontSize: messageFontSize,\n color: messageTextColor,\n background: backgroundColorRGBA,\n };\n\n const submitBtn = cloneElement(_submitBtn_, {\n onClick() {\n dispatch({\n type: 'UPDATE_MODULE_VARIABLES',\n data: {\n [variableName]: message.current,\n },\n });\n\n setIsSubmitted(message.current);\n },\n enabled: !isSubmitted && isLive,\n });\n\n useEffect(() => {\n if (isSubmitted) {\n unlockInteraction(interactionContext.id);\n }\n }, [isSubmitted]);\n\n return (\n <div\n style={{\n width: '100%',\n }}\n >\n <div\n css={css({\n position: 'relative',\n color: messageTextColor,\n fontSize: messageFontSize,\n\n 'textarea::placeholder': {\n color: messageTextColor,\n },\n\n 'textarea:focus': {\n border: 'none !important',\n outline: 'none !important',\n },\n })}\n >\n <TextAreaDynamicHeight\n minHeight={35}\n maxLinesBeforeScrolling={5}\n placeholder=\"Type your response here...\"\n onUpdate={value => {\n setIsSubmitted('');\n //\n setIsLive(!!value);\n\n message.current = value?.trim();\n }}\n //\n {...{\n onFocus() {\n // console.log('focus true');\n setHasFocus(true);\n },\n\n onBlur() {\n // console.log('focus false');\n setHasFocus(false);\n },\n\n name: variableName,\n }}\n initialValue={moduleVariables[variableName]}\n />\n </div>\n\n <div\n style={{\n width: '100%',\n height: 1,\n marginTop: 5,\n boxShadow: `0 0 0 ${hasFocus ? 1 : 0}px ${messageBorderColor}`,\n background: messageBorderColor,\n transition: 'box-shadow 0.3s',\n }}\n />\n <div\n style={{\n position: 'relative',\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n margin: '20px 0 0 0',\n }}\n >\n {submitBtn}\n </div>\n </div>\n );\n};\n\nexport default TextEntryVariable;\n","/** @jsx jsx */\n\nimport {\n Children,\n Fragment as _,\n useState,\n memo,\n cloneElement,\n useContext,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport SVG from 'components/lib/SVG';\nimport PDF from 'components/lib/PDF';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport SubmitBtn from './SubmitBtn';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport Embed from 'components/lib/Embed';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport IELayout from 'components/Layouts/IELayout';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport Media_default from 'assets/Rectangle.png';\nimport TextEntryVariable from './TextEntryVariable';\nimport Feedback from 'components/lib/Feedback/Feedback_updated_022022';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: ({ children, ...props }) => {\n return (\n <EditableText\n {...{\n ...props,\n placeholder:\n 'Ask your users a question here, \"i.e what is your name\"',\n }}\n />\n );\n },\n InteractionColumn: ({ children }) => {\n return children?.[0] || null;\n },\n TextEntryVariable,\n Image: ({ children, ...props }) => {\n const updatedProps = {\n ...props,\n };\n\n if (!props.src) {\n updatedProps.placeholder = Media_default;\n }\n\n return <Image {...{ ...updatedProps, usePlaceholderValue: true }} />;\n //\n },\n ColumnImageAndText: ({ children }) => {\n // return null;\n\n const interactionContext = useContext(InteractionContext);\n const { props } = interactionContext;\n const { useMediaInColumn = false } = props;\n\n const [img, txt] = children;\n\n return (\n <div>\n {useMediaInColumn ? <div>{img}</div> : null}\n <div style={{ margin: '20px 0' }}>{txt}</div>\n </div>\n );\n },\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: SubmitBtn,\n //EditableBtn\n Video,\n Audio,\n SVG,\n PDF,\n OpenPDF,\n Media,\n Embed,\n Transcript: ({ children }) => children,\n ...IELayout(InteractionContext),\n};\n\nconst TextEntryVariableDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n const [showFeedback, setShowFeedback] = useState<boolean>(false);\n\n const renderedBlock = (interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n });\n\n // console.log({ 'isOpen: props.isOpen': props.isOpen });\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{\n ...interactionBlock,\n isOpen: props.isOpen,\n updateItemsSeen: null,\n showFeedback,\n setShowFeedback($: boolean) {\n setShowFeedback($);\n },\n }}\n >\n {renderedBlock}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default TextEntryVariableDisplay;\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useContext,\n useState,\n cloneElement,\n useRef,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { useDispatch } from 'react-redux';\nimport { submitToCollect } from 'services/submitToCollect';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport { Report } from 'store/store';\nimport pubSub from 'services/pubSub';\nimport { TextEntry } from 'components/UI/TextEntry';\n\ntype Result = 'correct' | 'incorrect' | 'attempt' | undefined;\nenum SubmitState {\n Initial = 0,\n Resolved = 2,\n}\n\nconst TextEntryQuiz = props => {\n const interactionContext = useContext(InteractionContext);\n\n const {\n messageTextColor = '#000',\n messageBorderColor = '#d2dff9',\n fontFamily = 'inherit',\n messageFontSize = 16,\n score,\n correctAnswer = '',\n useMediaInColumn = true,\n lockDown = 0,\n numberOfAttempts = 1,\n showAttemptNumber = true,\n useMediaInFeedback = true,\n showCorrectAnswer = true,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n includeFeedback = true,\n includeQuestionTextPlusImage,\n correctAnswerRequirement = 'any',\n } = interactionContext.props;\n\n const { children } = props;\n\n let [txt, submitBtn, feedback] = children;\n\n const [textAreaStyle, setTextAreaStyle] = useState<{\n height?: number;\n overflow?: string;\n }>({});\n\n const [attempt, setAttempt] = useState<number>(0);\n const [result, setResult] = useState<Result>(undefined);\n const [resolved, setResolved] = useState<SubmitState>(0);\n const [isLive, setIsLive] = useState<boolean | undefined>(undefined);\n const [isSubmitted, setIsSubmitted] = useState<boolean>(false);\n const [showFeedback, setShowFeedback] = useState<boolean>(false);\n\n const [hasFocus, setHasFocus] = useState<boolean>(false);\n\n const scoringQuizzes = useScoringQuizzes();\n const dispatch = useDispatch();\n\n const message = useRef<string>('');\n const [_message_, setMessage] = useState('');\n message.current = _message_;\n\n submitBtn = cloneElement(submitBtn, {\n onClick() {\n const { id } = interactionContext;\n const questionTextElement = document.querySelector(\n `#text-entry-quiz-question-${id}`\n ) as HTMLDivElement;\n const chameleonTextElement = questionTextElement?.querySelector(\n `.chameleon-text p`\n ) as HTMLElement;\n\n // question might be an image ? get its alt ?\n let question = '';\n if (chameleonTextElement) {\n question = chameleonTextElement.innerText;\n }\n\n let correctAnswerStringToArray;\n let isCorrect;\n\n // if a correctAnswer has been provided. and not undefined (or empty string)\n if (!!correctAnswer) {\n correctAnswerStringToArray = correctAnswer\n .replace(/ /g, '')\n .split(/,/g)\n .map(entry => {\n return entry.toLowerCase();\n // .trim(); < no need to trim if we're removing all spaces\n });\n\n isCorrect = correctAnswerStringToArray[\n correctAnswerRequirement === 'any' ? 'some' : 'every'\n ](entry => {\n const regEx = new RegExp(entry, 'g');\n return regEx.test(message.current.replace(/ /g, '').toLowerCase());\n });\n } else {\n isCorrect = true;\n }\n\n let result: Result = isCorrect ? 'correct' : 'incorrect';\n\n const action = {\n id,\n type: 'fill-in',\n question,\n reportable: 'fillin',\n response: message?.current,\n correct: `${correctAnswerRequirement} of: ${correctAnswer}`,\n result: isCorrect ? 1 : 0,\n } as Report;\n\n // dispatch if scoring and there's no scoringQuizzes etc\n\n let shouldDispatchScore = Boolean(score);\n\n //\n if (scoringQuizzes.length) {\n shouldDispatchScore = false;\n }\n\n if (shouldDispatchScore) {\n dispatch(updateScoreAction(id, action.result));\n }\n\n dispatch(addScormResponseAction(action));\n\n const unlock = result === 'correct' || attempt === numberOfAttempts - 1;\n\n if (unlock) {\n unlockInteraction(id);\n setIsLive(false);\n\n setResolved(2);\n }\n\n if (result !== 'correct') {\n if (attempt < numberOfAttempts - 1) {\n setAttempt(attempt => {\n return (attempt += 1);\n });\n result = 'attempt';\n } else {\n result = 'incorrect';\n }\n }\n\n setResult(result);\n setShowFeedback(true);\n },\n });\n\n useEffect(() => {\n if (isSubmitted) {\n setShowFeedback(true);\n }\n }, [isSubmitted]);\n\n useEffect(() => {\n const pS = pubSub.subscribe(\n `TEXT_ENTRY_QUIZ_${interactionContext.id}`,\n ({ showFeedback }) => {\n setResult(showFeedback);\n setShowFeedback(true);\n }\n );\n\n return pS;\n }, []);\n\n const sharedStyles = {\n width: '100%',\n height: '100%',\n maxHeight: 240,\n padding: '5px 5px 5px 20px',\n fontFamily,\n fontSize: messageFontSize,\n color: messageTextColor,\n };\n\n return (\n <div\n style={{\n width: '100%',\n ...(resolved && {\n pointerEvents: 'none',\n }),\n }}\n >\n <div\n id={`text-entry-quiz-question-${interactionContext.id}`}\n style={{ margin: '0 0 20px 0' }}\n >\n {txt}\n </div>\n <div\n style={{\n position: 'relative',\n maxHeight: sharedStyles.maxHeight,\n }}\n >\n <TextEntry\n message={message.current}\n onUpdate={value => {\n setMessage(value);\n setIsLive(!!value);\n }}\n messageContainer={null}\n messageUnderline={messageBorderColor}\n messageTextColor={messageTextColor}\n // messageTextBackgroundColor={\n // `rgba(${r}, ${g}, ${b}, ${a})` || messageTextBackgroundColor\n // }\n messageTextBackgroundColor={'transparent'}\n messageBorderRadius={0}\n messageBorderColor={messageBorderColor}\n messageFontFamily={fontFamily}\n messageFontSize={messageFontSize}\n textAlign={'left'}\n maxLinesBeforeScrolling={4}\n // maxHeight={115}\n placeholderText=\"Type your answer here...\"\n />\n </div>\n\n <div\n style={{\n width: '100%',\n margin: '20px 0 0 0',\n }}\n >\n <div\n style={{\n ...(!window.dev() && {\n opacity: isLive ? 1 : 0.25,\n pointerEvents: isLive ? 'auto' : 'none',\n transition: 'opacity 0.5s',\n }),\n }}\n >\n {submitBtn}\n </div>\n </div>\n\n {includeFeedback &&\n showFeedback &&\n cloneElement(feedback, {\n result,\n showAttemptNumber,\n attempt,\n numberOfAttempts,\n navigationBehaviour,\n onClose() {\n setShowFeedback(false);\n },\n useMediaInFeedback,\n })}\n </div>\n );\n};\n\nexport default TextEntryQuiz;\n","import TextEntryVariableDisplay from './TextEntryVariableDisplay';\n\nexport default TextEntryVariableDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n\nimport {\n Children,\n Fragment as _,\n useState,\n memo,\n cloneElement,\n useContext,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Audio from 'components/lib/Audio';\nimport SVG from 'components/lib/SVG';\nimport PDF from 'components/lib/PDF';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport SubmitBtn from './SubmitBtn';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport Embed from 'components/lib/Embed';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport IELayout from 'components/Layouts/IELayout';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport Media_default from 'assets/Rectangle.png';\nimport TextEntryQuiz from './TextEntryQuiz';\nimport Feedback from 'components/lib/Feedback/Feedback_updated_022022';\nimport CC_Text_Entry_Quiz_Placeholder from 'assets/CC_Text_Entry_Quiz_Placeholder.png';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n TextEntryQuiz,\n InteractionColumn: ({ children }) => {\n return children?.[0] || null;\n },\n Feedback,\n Correct: ({ children, ...props }) => children,\n Incorrect: ({ children, ...props }) => children,\n Attempt: ({ children, ...props }) => children,\n Image: ({ children, ...props }) => {\n const updatedProps = {\n ...props,\n };\n\n if (!props.src) {\n updatedProps.placeholder = CC_Text_Entry_Quiz_Placeholder;\n }\n return <Image {...{ ...updatedProps, usePlaceholderValue: true }} />;\n //\n },\n\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton: EditableBtn,\n Video,\n Audio,\n SVG,\n PDF,\n OpenPDF,\n Media,\n Embed,\n Transcript: ({ children }) => children,\n ...IELayout(InteractionContext),\n};\n\nconst TextEntryQuizDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n const [showFeedback, setShowFeedback] = useState<boolean>(false);\n\n const renderedBlock = (interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n });\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{\n ...interactionBlock,\n isOpen: props.isOpen,\n updateItemsSeen: null,\n showFeedback,\n setShowFeedback($: boolean) {\n setShowFeedback($);\n },\n }}\n >\n {renderedBlock}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default TextEntryQuizDisplay;\n","import TextEntryQuizDisplay from './TextEntryQuizDisplay';\n\nexport default TextEntryQuizDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext(null);\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\n\nconst Assessment = ({ children, ...props }) => {\n // console.log('Assessment', children);\n\n return (\n <div\n css={css`\n padding: 10px;\n `}\n >\n {children}\n </div>\n );\n};\n\nexport default Assessment;\n","import React, { Fragment as _, useContext } from 'react';\nimport { Box } from 'theme-ui';\n\nconst AssessmentIntroduction = ({ children, ...props }) => {\n return (\n <Box\n sx={{\n minHeight: '100vh',\n background: 'red',\n }}\n >\n <h1>Assessment Introduction</h1>\n </Box>\n );\n};\n\nexport default AssessmentIntroduction;\n","import React, { Fragment as _, useContext } from 'react';\nimport { Box } from 'theme-ui';\n\nconst AssessmentQuestion = ({ children, ...props }) => {\n return (\n <Box\n sx={{\n minHeight: '100vh',\n background: 'lime',\n }}\n >\n <h1>Assessment Question</h1>\n </Box>\n );\n};\n\nexport default AssessmentQuestion;\n","import React, { Fragment as _, useContext } from 'react';\nimport { Box } from 'theme-ui';\n\nconst AssessmentResults = ({ children, ...props }) => {\n return (\n <Box\n sx={{\n minHeight: '100vh',\n background: 'yellow',\n }}\n >\n <h1>Assessment Results</h1>\n </Box>\n );\n};\n\nexport default AssessmentResults;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n memo,\n useMemo,\n useState,\n useContext,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport { colors } from 'styles/variables';\nimport getTempTextImageData from 'services/getTempTextImageContinueBtnData';\nimport expandBlock from 'services/apiHelpers/expandBlock';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column, Button, Box } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { connect } from 'react-redux';\nimport { interactionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport IELayout from 'components/Layouts/IELayout';\nimport Assessment from './Assessment';\nimport AssessmentIntroduction from './AssessmentIntroduction';\nimport AssessmentQuestion from './AssessmentQuestion';\nimport AssessmentResults from './AssessmentResults';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n // FullPageText: ({ children, ...props }) => (\n // <div\n // css={css`\n // padding: 10px;\n // `}\n // >\n // {children}\n\n // <TermsAndConditions\n // // onClick={() => {\n // // console.log('terms met');\n // // }}\n // />\n // </div>\n // ),\n Assessment,\n AssessmentIntroduction,\n AssessmentQuestions: ({ children, ...props }) => children,\n AssessmentQuestion,\n AssessmentResults,\n Image,\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n Video,\n SVG,\n Media,\n ...IELayout(interactionContext),\n};\n\nconst AssessmentDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <interactionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null } as any}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </interactionContext.Provider>\n </Container>\n );\n});\n// shouldUpdate\n\nexport default AssessmentDisplay;\n","import AssessmentDisplay from './AssessmentDisplay';\n\nexport default AssessmentDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext(null);\n","import React, { Fragment as _, useContext } from 'react';\nimport { Box } from 'theme-ui';\nimport { interactionContext as InteractionContext } from './interactionContext';\n\nconst AssessmentIntroduction = ({ children, ...props }) => {\n const interactionContext = useContext<any>(InteractionContext);\n\n const [img, text] = children;\n\n const { includeMedia = true } = interactionContext.props;\n\n return (\n <Box\n sx={{\n padding: '20px',\n }}\n >\n {includeMedia && (\n <Box\n sx={{\n margin: '20px 0',\n img: {\n maxHeight: '50vh',\n },\n }}\n >\n {img}\n </Box>\n )}\n\n <Box\n sx={{\n marginBottom: '20px',\n }}\n >\n {text}\n </Box>\n </Box>\n );\n};\n\nexport default AssessmentIntroduction;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, memo } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport { colors } from 'styles/variables';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column, Button, Box } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Transcript from 'components/lib/Video/Transcript';\nimport SVG from 'components/lib/SVG';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport IELayout from 'components/Layouts/IELayout';\nimport AssessmentIntroduction from './AssessmentIntroduction';\nimport PDF from 'components/lib/PDF';\nimport Audio from 'components/lib/Audio';\nimport Embed from 'components/lib/Embed';\nimport imagePlaceholder from 'assets/new_assessment_intro_default.png';\nimport shouldUpdate from 'services/shouldUpdate';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n AssessmentIntroduction,\n Image: ({ children, ...props }) => {\n return (\n <Image\n {...{\n ...props,\n placeholder: imagePlaceholder,\n }}\n />\n );\n },\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n Video,\n SVG,\n Media,\n Audio,\n EditableButton: null,\n Embed,\n Transcript,\n PDF,\n OpenPDF: ({ children, ...props }) => children,\n ...IELayout(interactionContext),\n};\n\nconst AssessmentIntroductionDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <interactionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null } as any}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </interactionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default AssessmentIntroductionDisplay;\n","import AssessmentIntroductionDisplay from './AssessmentIntroductionDisplay';\n\nexport default AssessmentIntroductionDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext({});\n","import React, { Fragment as _, FC } from 'react';\nimport { Box } from 'theme-ui';\n\ninterface ISubmitContinue {\n selected: string[];\n location: string;\n navigateToResults: boolean;\n onSubmit: () => void;\n children;\n}\n\nconst SubmitContinue: FC<ISubmitContinue> = props => {\n const { selected, location, navigateToResults, onSubmit, children } = props;\n\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n margin: '20px 0',\n //\n\n transition: 'opacity 0.2s',\n visibility:\n window.dev && window.dev()\n ? 'visible'\n : !selected.length\n ? 'hidden'\n : 'visible',\n }}\n >\n <Box\n sx={{\n cursor: 'pointer',\n }}\n onClick={(e: React.MouseEvent) => {\n if (window.dev && window.dev()) {\n return;\n }\n\n navigateToResults ? requestAnimationFrame(onSubmit) : onSubmit();\n }}\n >\n <Box\n sx={{\n 'div [class*=\"NavigationButton\"]': {\n top: '-10px',\n height: 'calc(100% + 20px)',\n },\n }}\n >\n {React.cloneElement(children, {\n location: navigateToResults ? location : 'next',\n })}\n </Box>\n </Box>\n </Box>\n );\n};\n\nexport default SubmitContinue;\n","import React, {\n Fragment as _,\n createContext,\n useState,\n useRef,\n useContext,\n useEffect,\n useMemo,\n} from 'react';\nimport { Box } from 'theme-ui';\nimport { AssessmentContext } from 'components/Module/AssessmentContainer';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { updateAssessmentAction } from 'actions/updateAssessmentAction';\nimport { useSelector, useDispatch } from 'react-redux';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { State } from 'store/store';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport SubmitContinue from './SubmitContinue';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { Report } from 'store/store';\n\ninterface IAssessmentQuestionContext {\n singleSelect: boolean;\n selected: string[];\n isLocked: boolean;\n}\n\nconst AssessmentQuestionContext = createContext<IAssessmentQuestionContext>({\n singleSelect: true,\n selected: [],\n isLocked: false,\n});\n\nconst CONTINUE = 'Continue';\nconst SUBMIT = 'Submit';\n\nconst hasUpdatedScoreRaw: any = {};\n\nconst AssessmentQuestion = ({ children, ...props }) => {\n const assessmentContext = useContext(AssessmentContext);\n const interactionContext = useContext<any>(InteractionContext);\n\n const { assessmentId, maxAttempts } = assessmentContext;\n\n const { scoring } = getBlockById(assessmentId).props as any;\n // console.log({ scoring });\n\n const {\n name,\n includeMedia = true,\n dividerColor = '#CADCF2',\n questionCounterColor = 'inherit',\n font = 'inherit',\n textColor,\n correctOptions,\n //\n } = interactionContext.props;\n\n const { id } = props;\n\n // questionCounter,\n const [img, text, options, submitBtn] = children;\n\n // set the default correctOptions to the first option\n if (!correctOptions.length) {\n // correctOptions = [options.props.children[0].props.id];\n }\n\n const assessment = useSelector((state: State) => {\n // since now we're destroying the assessment in preview on reload\n return state.assessments[assessmentId] || {};\n });\n\n const assessmentData = assessment && assessment.data ? assessment.data : {};\n const questionData =\n assessment && assessment.results && assessment.results[id]\n ? assessment.results[id]\n : {};\n\n const {\n answer = [],\n isCorrect = undefined,\n attemptCount = 0,\n submitButtonLabel = 'Submit',\n navigateToResults = false,\n isLocked = false,\n } = questionData;\n\n const selected = answer;\n const setSelected = selected => {\n dispatch(\n updateAssessmentAction({\n assessmentId,\n questionData: {\n [id]: {\n ...questionData,\n answer: selected,\n },\n },\n })\n );\n };\n\n const dispatch = useDispatch();\n //\n\n const interactionsInAssessment = useMemo(() => {\n return getInteractionsInTopic(getBlockById(assessmentId));\n }, [window.dev() ? Math.random() : assessmentId]);\n // this might well fail in dev. need to account for window.dev()\n // here in dev we ? a random value which has the effect of running each time\n // to account for adding removing questions or other settings applied\n // outside of the question\n\n const questions = interactionsInAssessment.filter((i: any) => {\n return [i.props.type, i.meta.subType].includes('AssessmentQuestion');\n });\n\n const questionIndex = questions.findIndex((q: any) => {\n //\n return q.children[0].id === id;\n });\n\n const singleSelect = correctOptions.length === 1;\n\n if (window.dev && window.dev()) {\n // isLocked = false;\n }\n\n const location = useMemo(() => {\n const assessment = getCurrentTopic() as Block;\n const resultsPage =\n interactionsInAssessment[interactionsInAssessment.length - 1];\n return `${assessment?.props?.sId || assessment.id}/${resultsPage?.props\n ?.sId || resultsPage.id}`;\n }, []);\n //\n\n const onSubmit = () => {\n if (submitButtonLabel === 'Continue') {\n return;\n }\n\n //\n const isCorrect = selected.sort().join() === correctOptions.sort().join();\n\n dispatch(\n updateAssessmentAction({\n assessmentId,\n questionData: {\n [id]: {\n id,\n questionName: name,\n answer: selected,\n correctAnswer: correctOptions,\n isCorrect,\n attemptCount: attemptCount ? attemptCount + 1 : 1,\n submitButtonLabel: 'Continue',\n navigateToResults: false,\n isLocked: true,\n },\n },\n })\n );\n\n let questionText: HTMLDivElement | string = document.querySelector(\n `#i${interactionContext.id} form .chameleon-text`\n ) as HTMLDivElement;\n\n if (questionText) {\n questionText = questionText.innerText;\n }\n\n //\n\n const optionIds = options.props.children.map((o: any) => {\n return o.props.id;\n });\n\n const response = selected\n .map(s => {\n return `${optionIds.indexOf(s) + 1}`;\n })\n .sort()\n .join(',');\n\n const getCorrectAndResponseOptions = entry => {\n let answer = '';\n\n const content = document.querySelector(`#i${entry}`) as HTMLInputElement;\n if (content && content.labels) {\n answer = content.labels[0].innerText;\n }\n\n // console.log(answer);\n\n return answer;\n };\n\n const correctExpanded = correctOptions\n .map(getCorrectAndResponseOptions)\n .join(',');\n\n const responseExpanded = selected\n .map(getCorrectAndResponseOptions)\n .join(',');\n\n // console.log(questionText);\n // console.log('correct :', correctExpanded);\n // console.log('response :', responseExpanded);\n\n // this mimics the multichoice / sortation pattern of updating userBehaviour\n //\n const action = {\n id,\n type: 'fill-in',\n question: questionText,\n reportable: 'multichoice' as 'multichoice',\n response: responseExpanded,\n correct: correctExpanded,\n result: !isCorrect ? 0 : 1,\n } as Report;\n\n if (scoring) {\n dispatch(updateScoreAction(interactionContext.id, !isCorrect ? 0 : 1));\n dispatch(addScormResponseAction(action));\n }\n };\n\n useEffect(() => {\n if (!scoring || hasUpdatedScoreRaw[interactionContext.id]) {\n return;\n }\n\n //\n if (isLocked && isCorrect && !hasUpdatedScoreRaw[interactionContext.id]) {\n dispatch(updateScoreAction(interactionContext.id, 1));\n hasUpdatedScoreRaw[interactionContext.id] = true;\n\n // console.log('send scoreRaw on load. . .', {\n // isLocked,\n // isCorrect,\n // [interactionContext.id]: hasUpdatedScoreRaw[interactionContext.id],\n // });\n }\n }, [isLocked, isCorrect]);\n\n return (\n <AssessmentQuestionContext.Provider\n value={\n {\n singleSelect,\n selected: window.dev && window.dev() ? correctOptions : selected,\n setSelected(id) {\n if (singleSelect) {\n setSelected([id]);\n\n return;\n }\n\n const newSelected: string[] = [...selected];\n\n if (!newSelected.includes(id)) {\n newSelected.push(id);\n setSelected(newSelected);\n return;\n }\n\n newSelected.splice(newSelected.indexOf(id), 1);\n setSelected(newSelected);\n },\n isLocked,\n } as IAssessmentQuestionContext\n }\n >\n <form\n style={{\n width: '100%',\n height: '100%',\n }}\n onSubmit={e => {\n e.preventDefault();\n }}\n >\n <Box\n sx={{\n // margin: '50px 0',\n padding: '50px 20px',\n // this'll lock the question\n ...(isLocked && {\n '*': {\n // pointerEvents: 'none',\n // opacity: 0.5,\n },\n }),\n }}\n >\n <Box\n as=\"h4\"\n sx={{\n margin: includeMedia ? 0 : '20px 0',\n fontSize: '16px',\n color: questionCounterColor || textColor,\n textAlign: 'center',\n fontFamily: `${font} !important`,\n\n '*': {\n fontFamily: `${font} !important`,\n },\n }}\n >\n Question {questionIndex + 1} of {questions.length}\n </Box>\n {includeMedia && (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n margin: '20px 0',\n img: {\n // maxWidth: 'calc(30vh) !important',\n },\n }}\n >\n {img}\n </Box>\n )}\n\n <Box sx={{}}>{text}</Box>\n\n <Box\n as=\"hr\"\n sx={{\n margin: '30px 0 25px 0',\n border: `1px solid ${dividerColor || '#CADCF2'}`,\n }}\n aria-hidden=\"true\"\n />\n <Box\n sx={{\n ...(isLocked && {\n pointerEvents: 'none',\n }),\n }}\n >\n {options}\n </Box>\n\n <SubmitContinue\n selected={selected}\n location={location}\n onSubmit={onSubmit}\n navigateToResults={navigateToResults}\n >\n {React.cloneElement(submitBtn, {\n label: submitButtonLabel,\n })}\n </SubmitContinue>\n </Box>\n </form>\n </AssessmentQuestionContext.Provider>\n );\n};\n\nexport default AssessmentQuestion;\nexport { AssessmentQuestionContext };\n","import React, { Fragment as _, useContext } from 'react';\nimport { Box } from 'theme-ui';\nimport { AssessmentQuestionContext } from './AssessmentQuestion';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { getButtonFocus } from 'styles/variables';\nimport hexToRGB from 'services/hexToRGB';\n\nconst CheckboxRadioBtn = props => {\n const assessmentQuestionContext = useContext<any>(AssessmentQuestionContext);\n const { singleSelect, selected, setSelected } = assessmentQuestionContext;\n const { id, color, selectedColor } = props;\n\n return (\n <Box\n id={`checkbox-radio-${id}`}\n sx={{\n width: 20,\n height: 20,\n background: selected.includes(id) ? selectedColor : color,\n borderRadius: singleSelect ? '50%' : 0,\n boxShadow: '0 0 0 1px rgba(0,0,0,0.15)',\n transition: 'background, box-shadow 0.15s',\n\n cursor: 'pointer',\n ':hover': {\n boxShadow: '0 0 3px 2px rgba(0,0,0,0.15)',\n },\n\n pointerEvents: window.dev() ? 'none' : 'auto',\n }}\n ></Box>\n );\n};\n\nconst AssessmentQuestionOption = ({ children, ...props }) => {\n const assessmentQuestionContext = useContext<any>(AssessmentQuestionContext);\n const interactionContext = useContext<any>(InteractionContext);\n\n const {\n singleSelect,\n selected,\n setSelected,\n isLocked,\n } = assessmentQuestionContext;\n\n const {\n optionBackgroundColor = 'fff',\n dropShadow = true,\n optionCheckboxColor,\n optionCheckboxSelectedColor,\n optionBorderRadius = 10,\n } = interactionContext.props;\n\n const { id, qNum, numOptions, index } = props;\n\n const lastOptionIsOddIndex = index === numOptions - 1 && !!(numOptions % 2);\n let marginX = lastOptionIsOddIndex ? 'noMargin' : index % 2;\n //\n\n const margin = {\n 0: '10px 20px 10px 0',\n 1: '10px 0 10px 20px',\n noMargin: '10px 0',\n }[marginX];\n\n // TODO - extract this\n let optionBackgroundColorIsWhite: number[] | boolean = Object.values(\n hexToRGB(optionBackgroundColor) || {}\n );\n\n if (optionBackgroundColorIsWhite.length) {\n optionBackgroundColorIsWhite = optionBackgroundColorIsWhite.every(\n entry => entry === 0\n );\n }\n\n const focus = getButtonFocus(\n optionBackgroundColorIsWhite ? '#000' : optionBackgroundColor\n ).replace('box-shadow: ', '');\n\n return (\n <Box\n className=\"chameleon-assessment-option\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n minHeight: 50,\n width: '100%',\n maxWidth: 'calc(50% - 20px)',\n margin,\n padding: '0 0 0 10px',\n background: optionBackgroundColor,\n borderRadius: optionBorderRadius,\n boxShadow: dropShadow ? '0px 0px 6px 0px rgba(0,0,0,0.15)' : 'none',\n\n transition: 'box-shadow 0.1s',\n\n '&:focus-visible': {\n boxShadow: `${focus.trim()}`,\n },\n\n '@media screen and (max-width: 768px)': {\n maxWidth: '100%',\n margin: '10px 0 !important',\n },\n\n // we kill pointerEvents at the root\n // and enable for children below specifically\n // . . .\n pointerEvents: 'none',\n\n ...(isLocked && {\n '* :not([class*=\"TextToSpeech\"])': {\n pointerEvents: 'none !important',\n },\n }),\n }}\n tabIndex={isLocked ? -1 : 0}\n onKeyDown={e => {\n if (window.dev()) {\n return;\n }\n\n // something something to prevent the window from scrolling\n // when using the spaceBar to select / deselect option\n if (e.keyCode === 32) {\n e.preventDefault();\n }\n }}\n onKeyUp={e => {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (!['Enter', ' '].includes(e.key)) {\n return;\n }\n\n setSelected(id);\n }}\n onClick={() => {\n setSelected(id);\n }}\n >\n {!window.dev() && (\n <input\n id={`i${id}`}\n type={singleSelect ? 'radio' : 'checkbox'}\n value={`i${id}`}\n name={interactionContext.props.id}\n checked={(selected as any).includes(id)}\n readOnly\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n opacity: 0,\n }}\n tabIndex={-1}\n disabled={isLocked}\n />\n )}\n\n <label\n htmlFor={`i${id}`}\n style={{\n display: 'flex',\n flex: 1,\n pointerEvents: !window.dev() ? 'none' : 'auto',\n }}\n tabIndex={-1}\n >\n <Box\n sx={{\n flex: 1,\n padding: '12.5px 0 12.5px 10px',\n ...(window.dev() && {\n padding: '7.5px 0 5px 0px',\n '.chameleon-text': {\n padding: '5px 10px 5px 5px',\n },\n }),\n\n '[class*=\"TextToSpeech\"]': {\n pointerEvents: 'auto',\n },\n }}\n >\n {children}\n </Box>\n </label>\n\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n width: 50,\n }}\n >\n <CheckboxRadioBtn\n id={id}\n color={!!optionCheckboxColor ? optionCheckboxColor : '#fff'}\n selectedColor={\n !!optionCheckboxSelectedColor ? optionCheckboxSelectedColor : '#000'\n }\n />\n </Box>\n </Box>\n );\n};\n\nexport default AssessmentQuestionOption;\n","import React, {\n Fragment as _,\n createContext,\n useState,\n useContext,\n} from 'react';\nimport { Box } from 'theme-ui';\nimport { AssessmentContext } from 'components/Module/AssessmentContainer';\n\nconst AssessmentQuestionOptions = ({ children, ...props }) => {\n const assessmentContext = useContext(AssessmentContext);\n\n const { answersWrappingAlignment = 'center' } = assessmentContext;\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent:\n answersWrappingAlignment === 'center' ? 'center' : 'flex-start',\n }}\n >\n {[...children].map((child, index) => {\n return React.cloneElement(child, {\n numOptions: children.length,\n index,\n });\n })}\n </Box>\n );\n};\n\nexport default AssessmentQuestionOptions;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n memo,\n useMemo,\n useState,\n useContext,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport { colors } from 'styles/variables';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column, Button, Box } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport Transcript from 'components/lib/Video/Transcript';\nimport SVG from 'components/lib/SVG';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport IELayout from 'components/Layouts/IELayout';\nimport EditableButton from 'components/lib/EditableBtn';\nimport AssessmentQuestion from './AssessmentQuestion';\nimport AssessmentQuestionOption from './AssessmentQuestionOption';\nimport AssessmentQuestionOptions from './AssessmentQuestionOptions';\nimport Audio from 'components/lib/Audio';\nimport PDF from 'components/lib/PDF';\nimport Embed from 'components/lib/Embed';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport imagePlaceholder from 'assets/CC_Assessment Question Image.png';\nimport shouldUpdate from 'services/shouldUpdate';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n QuestionCounter: ({ children, ...props }) => {\n //\n return children;\n },\n AssessmentQuestion,\n AssessmentQuestionOptions,\n AssessmentQuestionOption,\n Image: ({ children, ...props }) => {\n return (\n <Image\n {...{\n ...props,\n placeholder: imagePlaceholder,\n }}\n />\n );\n },\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n Video,\n SVG,\n Media,\n Audio,\n EditableButton,\n Embed,\n Transcript,\n LearnMore: () => null,\n PDF,\n OpenPDF: ({ children, ...props }) => children,\n ...IELayout(interactionContext),\n};\n\ntype InteractionContextValue = {\n id: string;\n props: { [key: string]: any };\n};\n\nconst AssessmentQuestionDisplay = memo((props: any) => {\n const interactionBlock: Block = getBlockById(props.blockId);\n\n let correctOptions = interactionBlock?.props?.correctOptions || [0];\n if (!correctOptions.length || correctOptions.includes(undefined)) {\n correctOptions = [0];\n }\n\n const assessmentQuestionOptions = findByKeyVal_V2(\n interactionBlock.id,\n 'type',\n 'AssessmentQuestionOptions'\n ) as Block;\n\n const assessmentQuestionOptionsChildren = assessmentQuestionOptions.children as Block[];\n const optionsIds = assessmentQuestionOptionsChildren.map(entry => {\n return entry.id;\n });\n\n correctOptions = correctOptions.map(entry => {\n return typeof entry === 'string' ? entry : optionsIds[entry];\n });\n\n useEffect(() => {\n // if any of the saved correctOptions are ' old ' / id based\n // transform them immediately to indicies and save\n\n const correctOptionsHaveSavedIds = correctOptions.some(entry => {\n return typeof entry === 'string';\n });\n\n if (!correctOptionsHaveSavedIds) {\n return;\n }\n\n const updatedCorrectOptions = correctOptions.map(entry => {\n return typeof entry === 'string'\n ? assessmentQuestionOptionsChildren.findIndex(child => {\n return child.id === entry;\n })\n : entry;\n });\n\n setBlockProps(interactionBlock, {\n correctOptions: updatedCorrectOptions,\n });\n }, [correctOptions.join()]);\n\n const interactionContextValue: InteractionContextValue = {\n id: interactionBlock.id,\n props: {\n ...interactionBlock.props,\n correctOptions,\n },\n };\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <interactionContext.Provider value={interactionContextValue}>\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </interactionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default AssessmentQuestionDisplay;\n","import AssessmentIntroductionDisplay from './AssessmentQuestionDisplay';\n\nexport default AssessmentIntroductionDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext(null);\n","import React, { Fragment as _ } from 'react';\n\nconst AssessmentCorrect = ({ color = '#00D9D3' }: { color: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 22 22\"\n fill=\"none\"\n aria-describedby=\"title\"\n >\n <title>Correct</title>\n <circle\n cx=\"11\"\n cy=\"11\"\n r=\"10.5\"\n style={{\n stroke: color,\n }}\n // stroke=\"#00D9D3\"\n />\n\n <path\n d=\"M7.29627 11.6366L10.7257 14.1772L14.9599 8.46152\"\n style={{\n stroke: color,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n // stroke=\"#00D9D3\"\n // stroke-linecap=\"round\"\n // stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nexport default AssessmentCorrect;\n","import React, { Fragment as _ } from 'react';\n\nconst AssessmentIncorrect = ({ color = '#9E6CFF' }: { color: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 22 22\"\n fill=\"none\"\n aria-describedby=\"title\"\n >\n <title>Incorrect</title>\n <circle\n cx=\"11\"\n cy=\"11\"\n r=\"10.5\"\n style={{\n stroke: color,\n }}\n // stroke=\"#9E6CFF\"\n />\n <path\n d=\"M8 8L14 14\"\n style={{\n stroke: color,\n strokeLinecap: 'round',\n }}\n // stroke=\"#9E6CFF\"\n // stroke-linecap=\"round\"\n />\n <path\n d=\"M8 14L14 8\"\n style={{\n stroke: color,\n strokeLinecap: 'round',\n }}\n // stroke=\"#9E6CFF\"\n // stroke-linecap=\"round\"\n />\n </svg>\n );\n};\n\nexport default AssessmentIncorrect;\n","import React from 'react';\nimport { Box } from 'theme-ui';\n\nexport const ScoreBar = ({ color, score }) => {\n return (\n <Box\n sx={{\n position: 'relative',\n width: '100%',\n maxWidth: '360px',\n height: '15px',\n borderRadius: '9999px',\n background: '#fff',\n overflow: 'hidden',\n }}\n >\n <Box\n sx={{\n position: 'absolute',\n width: 'inherit',\n height: '100%',\n borderRadius: 'inherit',\n background: `${color}25`,\n }}\n >\n <Box\n sx={{\n width: `${score}%`,\n height: '100%',\n borderRadius: 'inherit',\n background: color,\n transition: 'all 0.3s',\n }}\n />\n </Box>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from 'theme-ui';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { getButtonFocus } from 'styles/variables';\n\nexport const Button = ({\n color,\n textColor,\n hidden = false,\n borderColor = 'transparent',\n buttonBorderRadius = 99999,\n onClick,\n children,\n}: {\n color: string;\n textColor: string;\n hidden?: boolean;\n borderColor?: string;\n buttonBorderRadius?: number;\n onClick?: () => void;\n children: any;\n}) => {\n //\n const focus = getButtonFocus(\n borderColor !== 'transparent' ? borderColor : color,\n `0 0 0 1px ${borderColor !== 'transparent' ? borderColor : color}`\n ).replace('box-shadow: ', '');\n\n return (\n <Box\n as=\"button\"\n sx={{\n outline: 'none',\n border: 'none',\n position: 'relative',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '0px 30px',\n width: '150px',\n minHeight: '100%',\n borderRadius: buttonBorderRadius,\n //'50px',\n background: color,\n boxShadow: `0 0 0 1px ${borderColor}`,\n color: textColor,\n visibility: hidden ? 'hidden' : 'auto',\n ...(window.dev &&\n !window.dev() && {\n cursor: 'pointer',\n '&:hover': {\n opacity: 0.5,\n transition: 'opacity 0.2s',\n },\n }),\n\n '&:focus': {\n boxShadow: focus,\n },\n }}\n onClick={onClick}\n >\n {children}\n </Box>\n );\n};\n\nexport const ReVisitTryAgain = ({\n // isCorrect,\n // correctColor = '',\n // incorrectColor = '',\n color = '',\n buttonBorderRadius,\n resetQuestion = () => {},\n // id = undefined,\n indexA,\n children,\n}) => {\n return (\n <Button\n color=\"#fff\"\n textColor={color}\n borderColor={color}\n buttonBorderRadius={buttonBorderRadius}\n onClick={() => {\n if (window.dev && window.dev()) {\n return;\n }\n\n // if (!isCorrect) {\n // // resetQuestion(id);\n // resetQuestion();\n // }\n // if(resetQuestion) {\n // }\n resetQuestion();\n\n const currentTopic = getCurrentTopic() as any;\n\n const interactionsInTopic = getInteractionsInTopic(currentTopic);\n\n const assessmentQuestions = interactionsInTopic.filter((c: any) => {\n return c.meta.subType === 'AssessmentQuestion';\n });\n\n const targetQuestion = assessmentQuestions.filter((c, i) => {\n return i === indexA;\n })[0] as any;\n\n const targetLocation = `${currentTopic.props.sId ||\n currentTopic.id}/${targetQuestion.props.sId || targetQuestion.id}`;\n\n window.location.hash = targetLocation;\n requestAnimationFrame(() => {\n const section = document.querySelector(\n `#i${targetQuestion.id}`\n ) as HTMLElement;\n\n section?.focus();\n });\n // console.log(targetLocation);\n }}\n >\n {/* {isCorrect ? 'Re-visit' : 'Try again'} */}\n\n {/* {enableReVisit && isCorrect && 'Re-visit'}\n {enableTryAgain && isCorrect && 'Try again'} */}\n\n {children}\n </Button>\n );\n};\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n useContext,\n useEffect,\n useState,\n useRef,\n useMemo,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { Box } from 'theme-ui';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { AssessmentContext } from 'components/Module/AssessmentContainer';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { State, QuestionData, Question } from 'store/store';\nimport { updateAssessmentAction } from 'actions/updateAssessmentAction';\nimport { Block } from '@chameleoncreator/creator-app';\nimport pubSub from 'services/pubSub';\nimport { colors } from 'styles/variables';\nimport setCurrentBlock from 'services/apiHelpers/setCurrentBlock';\nimport EditMarker from 'components/UI/EditMarker';\nimport AssessmentCorrect from 'components/UI/AssessmentCorrect';\nimport AssessmentIncorrect from 'components/UI/AssessmentIncorrect';\nimport unlockInteraction from 'services/unlockInteraction';\nimport { ScoreBar } from './ScoreBar';\nimport { getQuestionsInAssessment } from './getQuestionsInAssessment';\nimport { Button, ReVisitTryAgain } from './Button';\nimport { getAttempt } from './getAttempt';\nimport { unlockAssessment } from './unlockAssessment';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\n\nconst { lPink, lGrey0, lGrey1, mint, purple } = colors;\n\ntype AttemptCount = Pick<QuestionData, 'attemptCount'>;\n\nconst AssessmentResults = ({ children, ...props }) => {\n const assessmentContext = useContext(AssessmentContext);\n\n const { name, scoring } = assessmentContext;\n const interactionContext = useContext<any>(InteractionContext);\n //\n const { assessmentId, learnMoreResetsAssessment = false } = assessmentContext;\n const assessment = getCurrentTopic() as Block;\n //\n\n const { id: interactionId } = interactionContext;\n const { graphColor = mint } = interactionContext.props;\n\n const correctColor = interactionContext.props.correctColor || mint;\n const incorrectColor = interactionContext.props.incorrectColor || purple;\n\n const {\n enableLearnMore,\n enableTryAgain = true,\n enableReVisit = true,\n includeResultsGraph = true,\n resultsPercentTextColor,\n attemptCounterTextColor,\n questionTitleColor = '#000',\n showAttemptCounter = true,\n showFeedbackText = false,\n addAssessmentRetry = true,\n //\n backgroundPanelColor = '#fff',\n backgroundPanelBorderRadius = 50,\n backgroundPanelDropShadow = true,\n\n buttonBorderRadius = 18,\n } = interactionContext.props;\n\n const [feedbackPassed, feedbackFailed] = children;\n\n const [showCorrect, setShowCorrect] = useState<boolean>(false);\n\n const assessmentData = useSelector((state: State) => {\n return state.assessments[assessmentId] || {};\n //\n });\n\n const { focusedNodeId } = useSelector((state: State) => {\n return state;\n //\n });\n\n const interactionsLocked = useSelector((state: State) => {\n return state.interactionsLocked;\n });\n\n const dispatch = useDispatch();\n\n // should we get this value off the assessment props now ?\n // since we're disabling the saving of assessmentData on reload ( ? )\n\n const { maxAttempts, passMark } = getBlockById(assessmentId).props as any;\n\n let numCorrect = 0;\n\n //\n // get all the question interactions in the current assessment\n\n const questions = useMemo(() => {\n return getQuestionsInAssessment(assessmentId);\n }, [assessmentId]);\n\n //\n\n let results = questions.map((entry, index) => {\n let id;\n if (entry?.children) {\n id = (entry?.children[0] as Block)?.id;\n }\n\n return {\n id,\n questionName: entry?.props?.name,\n hasNotBeenAttempted: true,\n } as QuestionData;\n });\n\n if (assessmentData.results) {\n Object.keys(assessmentData.results).forEach((entry: any, index: number) => {\n const {\n id,\n questionName,\n answer,\n correctAnswer,\n isCorrect,\n attemptCount,\n } = assessmentData.results[entry];\n\n if (isCorrect) {\n numCorrect += 1;\n }\n\n const questionIndex = results.findIndex(q => {\n return id === q.id;\n });\n\n results[questionIndex] = {\n id,\n questionName,\n answer,\n correctAnswer,\n isCorrect,\n attemptCount,\n };\n });\n }\n\n let score = (numCorrect / results.length) * 100;\n\n if (window.dev && window.dev()) {\n score = showCorrect ? 100 : 0;\n }\n\n const attempt: number = getAttempt(maxAttempts, results);\n\n const allQuestionsMaxAttempted = attempt === maxAttempts;\n\n interactionContext.enableRetryAssessmentBtn = {\n enabled: addAssessmentRetry,\n visible:\n addAssessmentRetry &&\n !(score >= passMark || maxAttempts === 1 || allQuestionsMaxAttempted),\n };\n\n interactionContext.updatePassedFailed(score >= passMark);\n\n const resetQuestion = id => {\n const {\n questionName,\n answer,\n correctAnswer,\n isCorrect,\n attemptCount,\n } = assessmentData.results[id];\n\n dispatch(\n updateAssessmentAction({\n assessmentId,\n assessmentData: {\n ...assessmentData.data,\n retryAssessment: false,\n },\n questionData: {\n [id]: {\n id,\n questionName,\n answer: [],\n correctAnswer,\n isCorrect: undefined,\n attemptCount,\n submitButtonLabel: 'Submit',\n navigateToResults: true,\n isLocked: false,\n },\n },\n })\n );\n };\n\n // create a results object for dev. . .\n let resultsInDev;\n\n if (window.dev && window.dev()) {\n resultsInDev = questions.map((entry: Block, index: number) => {\n const { name, includeLearnMore, learnMoreLocation } = entry.props as any;\n\n return {\n id: entry.id,\n questionName: name || `Question ${index + 1}`,\n isCorrect: showCorrect,\n includeLearnMore,\n learnMoreLocation,\n };\n });\n }\n\n useEffect(() => {\n const passed = score >= passMark;\n if (passed) {\n dispatch(\n updateAssessmentAction({\n assessmentId,\n assessmentData: {\n name,\n scoring,\n score: numCorrect,\n passMark,\n passed,\n },\n questionData: assessmentData.questionData,\n })\n );\n }\n }, [score]);\n\n useEffect(() => {\n const pS = pubSub.subscribe(\n `RESULTS_SHOW_CORRECT_${interactionId}`,\n ({ showCorrect }) => {\n setShowCorrect(showCorrect);\n }\n );\n\n return () => {\n pS();\n };\n }, []);\n\n useEffect(() => {\n if (!interactionsLocked?.includes(interactionId)) {\n return;\n }\n\n if (score >= passMark || allQuestionsMaxAttempted) {\n unlockInteraction(interactionId);\n }\n });\n\n const getQuestions = () => {\n const assessmentBlock = getBlockById(assessmentId);\n const assessmentInteractions = getInteractionsInTopic(assessmentBlock);\n\n const questions = assessmentInteractions.filter((i: Block) => {\n return i.meta?.subType === 'AssessmentQuestion';\n });\n\n return questions;\n };\n\n return (\n <_>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n }}\n >\n {includeResultsGraph && (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n margin: '0 0 10px 0',\n color: resultsPercentTextColor,\n }}\n >\n <Box as=\"h2\" sx={{ margin: '0 0 10px 0', textAlign: 'center' }}>\n You got {Math.round(score)}%\n </Box>\n <ScoreBar color={graphColor} score={Math.round(score)} />\n </Box>\n )}\n\n {showAttemptCounter && !isNaN(attempt) && (\n <Box\n sx={{\n margin: '0 0 5px 0',\n color: attemptCounterTextColor,\n }}\n >\n Attempt {attempt} of {maxAttempts}\n </Box>\n )}\n\n {showFeedbackText && (\n <div\n css={css({\n width: '80%',\n margin: '15px 0',\n })}\n >\n {score >= passMark ? feedbackPassed : feedbackFailed}\n </div>\n )}\n\n <Box\n sx={{\n width: '80%',\n margin: '20px 0',\n padding: '20px 40px',\n\n borderRadius: backgroundPanelBorderRadius,\n background: backgroundPanelColor,\n boxShadow: backgroundPanelDropShadow\n ? '0px 0px 6px 0px rgba(0,0,0,0.15)'\n : '',\n fontSize: '14px',\n }}\n >\n <Box>\n {(window.dev && window.dev() ? resultsInDev : results).map(\n (entry: any, indexA: number) => {\n //\n\n const {\n id,\n // questionName,\n isCorrect,\n attemptCount,\n hasNotBeenAttempted,\n } = entry;\n\n const questionName = questions[indexA]?.props?.name;\n //entry.questionName || interactionContext.props.name\n\n // ' assuming ' we're in sync re_ sequence\n // need to be DAMN sure. so check it a\n const question = questions.filter(\n (question: Block, indexB: number) => {\n return indexA === indexB;\n }\n )[0];\n\n if (hasNotBeenAttempted) {\n return (\n <Box\n key={`${questionName}_${indexA}`}\n sx={{\n display: 'flex',\n alignItems: 'center',\n minHeight: '35px',\n }}\n >\n {questionName} has not been attempted\n </Box>\n );\n }\n\n let { includeLearnMore } = question.props as any;\n\n if (enableLearnMore) {\n includeLearnMore = true;\n }\n\n const LearnMore = findByKeyVal_V2(\n question.id,\n 'type',\n 'LearnMore'\n ) as Block;\n\n let learnMoreLocation = LearnMore?.props?.location;\n\n const hasUsedAllAttempts =\n maxAttempts === 1 || attemptCount >= maxAttempts;\n\n return (\n <Box\n key={`${questionName}_${indexA}`}\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n margin: '10px 0',\n\n '.learn-more-revisit-try-again-container': {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'center',\n '> *': {\n height: '35px',\n marginLeft: '20px',\n },\n },\n\n '@media (max-width: 768px)': {\n flexDirection: 'column',\n\n svg: {\n transform: 'scale(2)',\n marginBottom: '20px',\n },\n\n '> *': {\n marginLeft: '0px !important',\n marginRight: '0px !important',\n margin: '0 0 10px 0',\n },\n\n '.learn-more-revisit-try-again-container': {\n '> *': {\n marginLeft: '0px !important',\n marginRight: '0px !important',\n margin: '5px 10px !important',\n },\n },\n },\n }}\n >\n {isCorrect ? (\n <AssessmentCorrect color={correctColor} />\n ) : (\n <AssessmentIncorrect color={incorrectColor} />\n )}\n\n <span\n className=\"question-name\"\n style={{\n flex: 2,\n marginLeft: '20px',\n fontWeight: 500,\n color: questionTitleColor,\n }}\n >\n {questionName}\n </span>\n\n <span\n className=\"learn-more-revisit-try-again-container\"\n style={{}}\n >\n {includeLearnMore && !isCorrect && (\n <span style={{}}>\n <Button\n color={incorrectColor}\n textColor=\"#fff\"\n buttonBorderRadius={buttonBorderRadius}\n onClick={() => {\n if (window.dev && window.dev()) {\n return;\n }\n\n if (learnMoreLocation) {\n //\n //\n\n if (\n learnMoreResetsAssessment &&\n !hasUsedAllAttempts\n ) {\n unlockAssessment(\n assessmentData,\n dispatch,\n updateAssessmentAction,\n assessment\n );\n }\n //\n window.location.hash = learnMoreLocation;\n }\n }}\n >\n Learn more\n {window.dev && window.dev() && (\n <Box\n sx={{\n position: 'absolute',\n left: '-5px',\n top: '-3px',\n width: 'calc(100% + 10px)',\n height: 'calc(100% + 6px)',\n boxShadow: `0 0 0 1px ${lPink}`,\n background: 'transparent',\n\n cursor: 'pointer',\n transition: 'box-shadow 0.2s',\n\n '&:hover': {\n boxShadow: `0 0 0 1px lightGrey`,\n },\n\n ...(focusedNodeId === question.id && {\n boxShadow: `0 0 0 1px lightGrey`,\n pointerEvents: 'none',\n }),\n }}\n onClick={() => {\n if (window.dev && window.dev()) {\n setCurrentBlock(LearnMore);\n return;\n }\n }}\n >\n {focusedNodeId !== LearnMore.id && (\n <EditMarker />\n )}\n </Box>\n )}\n </Button>\n </span>\n )}\n\n {maxAttempts > 1 && !isCorrect && enableTryAgain && (\n <span\n style={{\n ...(window.dev &&\n !window.dev() &&\n !isCorrect &&\n hasUsedAllAttempts && {\n opacity: 0.2,\n pointerEvents: 'none',\n }),\n }}\n >\n <ReVisitTryAgain\n color={incorrectColor}\n buttonBorderRadius={buttonBorderRadius}\n resetQuestion={() => resetQuestion(id)}\n indexA={indexA}\n >\n Try-again\n </ReVisitTryAgain>\n </span>\n )}\n {isCorrect && enableReVisit && (\n <span style={{}}>\n <ReVisitTryAgain\n color={correctColor}\n buttonBorderRadius={buttonBorderRadius}\n indexA={indexA}\n >\n Re-visit\n </ReVisitTryAgain>\n </span>\n )}\n </span>\n\n <Box\n as=\"hr\"\n sx={{\n display: 'none',\n '@media (max-width: 768px)': {\n width: '100%',\n margin: '5px 0 10px 0',\n border: '1px solid #CADCF2',\n display: 'block',\n },\n }}\n />\n </Box>\n );\n }\n )}\n </Box>\n </Box>\n </Box>\n </_>\n );\n};\n\nexport default AssessmentResults;\n","import getBlockById from 'services/apiHelpers/getBlockById';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { Block } from '@chameleoncreator/creator-app';\n\nexport const getQuestionsInAssessment = (assessmentId: string) => {\n const assessmentBlock = getBlockById(assessmentId);\n const assessmentInteractions = getInteractionsInTopic(assessmentBlock);\n\n const questions = assessmentInteractions.filter((i: Block) => {\n return i.meta?.subType === 'AssessmentQuestion';\n });\n\n return questions;\n};\n","import { QuestionData } from 'store/store';\n\ntype AttemptCount = Pick<QuestionData, 'attemptCount'>;\n\nconst getAttempt = (maxAttempts, results): number => {\n if (window.dev && window.dev()) {\n return 1;\n }\n\n //\n\n const resultsKeys = Object.keys(results);\n\n let attemptCounts = resultsKeys.map(entry => {\n return results[entry].attemptCount;\n });\n\n const highestAttemptCount = Math.max(...attemptCounts);\n\n attemptCounts = resultsKeys.map(entry => {\n const { isCorrect, attemptCount } = results[entry];\n\n // we keep the attempt count for any question that isCorrect\n // in sync with the highestAttemptCount\n return isCorrect ? highestAttemptCount : attemptCount;\n });\n\n const lowestAttemptCount = Math.min(...attemptCounts);\n\n return lowestAttemptCount;\n};\n\nexport { getAttempt };\n","export const unlockAssessment = (\n assessmentData,\n dispatch,\n updateAssessmentAction,\n assessment\n) => {\n const results = Object.keys(assessmentData.results);\n\n results.forEach((key: any) => {\n // const { correctAnswer, attemptCount } = assessmentData.results[key] as any;\n\n requestAnimationFrame(() => {\n dispatch(\n updateAssessmentAction({\n assessmentId: assessment.id,\n assessmentData: {\n ...assessmentData.data,\n },\n questionData: {\n [key]: {\n ...assessmentData.results[key],\n // answer: [],\n // correctAnswer,\n // isCorrect: undefined,\n // attemptCount,\n submitButtonLabel: 'Submit',\n // navigateToResults: false,\n isLocked: false,\n },\n },\n })\n );\n\n //\n });\n });\n};\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport EditableBtn from '../EditableBtn';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { State } from 'store/store';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { updateAssessmentAction } from 'actions/updateAssessmentAction';\n\nconst RetryAssessment = ({ children, ...props }) => {\n const context = useContext(interactionContext) as any;\n const { enableRetryAssessmentBtn } = context;\n const { enabled, visible } = enableRetryAssessmentBtn;\n\n const assessment = getCurrentTopic() as Block;\n\n const assessmentData = useSelector((state: State) => {\n return state.assessments[assessment.id];\n //\n });\n\n const dispatch = useDispatch();\n\n const interaction = getInteractionsInTopic(assessment)[0];\n const location = `${assessment?.props?.sId}/${interaction?.props?.sId}`;\n\n if (window.dev && window.dev()) {\n return enabled ? <EditableBtn {...props} /> : null;\n }\n\n return visible ? (\n <span\n style={{\n margin: '5px 10px',\n }}\n onClick={() => {\n const results = Object.keys(assessmentData.results);\n\n results.forEach((key: any) => {\n const { correctAnswer, attemptCount } = assessmentData.results[\n key\n ] as any;\n\n requestAnimationFrame(() => {\n dispatch(\n updateAssessmentAction({\n assessmentId: assessment.id,\n assessmentData: {\n ...assessmentData.data,\n },\n questionData: {\n [key]: {\n answer: [],\n correctAnswer,\n isCorrect: undefined,\n attemptCount,\n submitButtonLabel: 'Submit',\n navigateToResults: false,\n isLocked: false,\n },\n },\n })\n );\n\n //\n });\n });\n\n // if locationIsNull\n // then somehow the SId has not been created on the assessment/interaction block props\n const locationIsNull = location.includes('null');\n //\n if (locationIsNull) {\n window.location.href = `#i${interaction.id}`;\n return;\n }\n window.location.hash = location;\n //\n }}\n >\n <EditableBtn {...props} />{' '}\n </span>\n ) : null;\n};\n\nexport default RetryAssessment;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport EditableBtn from '../EditableBtn';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { State } from 'store/store';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { updateAssessmentAction } from 'actions/updateAssessmentAction';\n\nconst FeedbackPassed = ({ children, ...props }) => {\n const context = useContext(interactionContext) as any;\n\n const [img, txt, btn] = children;\n\n return (\n <div\n css={css({\n width: '100%',\n })}\n >\n {txt}\n </div>\n );\n};\n\nexport default FeedbackPassed;\n","/** @jsx jsx */\n\nimport React, { Fragment as _, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { interactionContext } from './interactionContext';\nimport EditableBtn from '../EditableBtn';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { State } from 'store/store';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { updateAssessmentAction } from 'actions/updateAssessmentAction';\nimport { Box } from 'theme-ui';\n\nconst FeedbackFailed = ({ children, ...props }) => {\n const context = useContext(interactionContext) as any;\n\n const [img, txt, btn] = children;\n\n return (\n <div\n css={css({\n width: '100%',\n })}\n >\n {txt}\n </div>\n );\n};\n\nexport default FeedbackFailed;\n","import React, { Fragment as _, useContext } from 'react';\n\nimport { interactionContext } from './interactionContext';\nimport { Box } from 'theme-ui';\n\nimport EditableBtn from '../EditableBtn';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { State } from 'store/store';\nimport { Block } from '@chameleoncreator/creator-app';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { updateAssessmentAction } from 'actions/updateAssessmentAction';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\n\nconst ContinueButtonBranching = props => {\n const context = useContext(interactionContext) as any;\n // console.log('ContinueButtonBranching :', context);\n\n const { passed } = context;\n const { enableBranching, correctColor, incorrectColor } = context.props;\n\n const { children } = props;\n const [defaultBtn, passedBtn, failedBtn] = children;\n\n if (!enableBranching) {\n return defaultBtn;\n }\n\n const branchingBtn =\n passed === true || passed === undefined ? passedBtn : failedBtn;\n\n let Btn = branchingBtn;\n\n if (window.dev && window.dev()) {\n Btn = (\n <Box\n sx={{\n // boxShadow: `inset 0 0 0 5px ${\n // passed ? correctColor : incorrectColor\n // }`,\n\n // background: passed ? correctColor : incorrectColor,\n\n '*': {\n boxShadow: 'none !important',\n },\n\n boxShadow: `0 0 0 1px ${passed ? correctColor : incorrectColor}`,\n }}\n >\n {branchingBtn}\n </Box>\n );\n }\n\n return Btn;\n // passed === true || passed === undefined ? children[0] : children[1];\n};\n\nexport default ContinueButtonBranching;\n","/** @jsx jsx */\n\nimport React, {\n Fragment as _,\n memo,\n useMemo,\n useState,\n useContext,\n useEffect,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport { colors } from 'styles/variables';\nimport getTempTextImageData from 'services/getTempTextImageContinueBtnData';\nimport expandBlock from 'services/apiHelpers/expandBlock';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column, Button, Box } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { useSelector, connect } from 'react-redux';\nimport { interactionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport IELayout from 'components/Layouts/IELayout';\nimport AssessmentResults from './AssessmentResults';\nimport EditableBtn from '../EditableBtn';\nimport RetryAssessment from './RetryAssessment';\nimport FeedbackPassed from './FeedbackPassed';\nimport FeedbackFailed from './FeedbackFailed';\nimport ContinueButtonBranching from './ContinueButtonBranching';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport { State } from 'store/store';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nconst FooterButtonsWrapper = ({ children, ...props }) => {\n // using this jobby to create a homogenised container for the buttons\n // which are of the different types and subtley different display behaviour\n // generic > button\n // navigation > a\n\n return (\n <div\n css={css({\n position: 'relative',\n margin: 10,\n\n // this targets the editWrapper around the nav/continue btn\n // adjusts dimensions accordingly\n '[class*=\"NavigationButton\"]:nth-child(2)': {\n left: -5,\n top: -10,\n width: 'calc(100% + 10px)',\n height: 'calc(100% + 20px)',\n },\n })}\n >\n {children}\n </div>\n );\n};\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n AssessmentResults,\n LearnMore: props => {\n return null;\n },\n Image,\n TwoColumnLayout,\n SingleColumnLayout,\n FeedbackPassed,\n FeedbackFailed,\n ContinueButton: ({ children, ...props }) => {\n return <ContinueBtn {...props}>{children}</ContinueBtn>;\n },\n Video,\n SVG,\n Media,\n Audio: null,\n EditableButton: () => null,\n PDF: () => null,\n OpenPDF: () => null,\n\n Embed: null,\n Transcript: null,\n RetryAssessment: ({ children, ...props }) => {\n return window.dev() ? (\n <FooterButtonsWrapper>\n <RetryAssessment {...props}>{children}</RetryAssessment>\n </FooterButtonsWrapper>\n ) : (\n <RetryAssessment {...props}>{children}</RetryAssessment>\n );\n },\n ContinueButtonBranching: ({ children, ...props }) => {\n return window.dev() ? (\n <FooterButtonsWrapper>\n <ContinueButtonBranching {...props}>{children}</ContinueButtonBranching>\n </FooterButtonsWrapper>\n ) : (\n <ContinueButtonBranching {...props}>{children}</ContinueButtonBranching>\n );\n },\n ...IELayout(interactionContext),\n};\n\nconst AssessmentResultsDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n const [passed, updatePassedFailed] = useState<boolean | undefined>(undefined);\n\n // transform lockDown to 1 / 0 if was saved as boolean\n // don't much matter now that the unlock is checking for any truthy value\n // but good for consistency\n const { lockDown } = interactionBlock?.props as any;\n\n useEffect(() => {\n return;\n\n if (typeof lockDown === 'boolean') {\n setBlockProps(interactionBlock, {\n lockDown: lockDown ? 1 : 0,\n });\n }\n }, []);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <interactionContext.Provider\n value={\n {\n ...interactionBlock,\n enableRetryAssessmentBtn: true,\n passed,\n updatePassedFailed,\n } as any\n }\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </interactionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default AssessmentResultsDisplay;\n","import AssessmentResultsDisplay from './AssessmentResultsDisplay';\n\nexport default AssessmentResultsDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext<any>(null);\n","/** @jsx jsx */\n// import React from 'react';\n// import ReactDOM from 'react-dom';\nimport { css, jsx } from '@emotion/core';\nimport {\n useState,\n useRef,\n useEffect,\n createContext,\n useContext,\n useMemo,\n Fragment as _,\n cloneElement,\n} from 'react';\nimport Drag_Icon_Blue from 'assets/Drag Icon_Blue.svg';\nimport Resize_Icon from 'assets/Resize Icon.svg';\nimport move_cert_input from 'assets/move_cert_input.svg';\nimport resize_cert_input from 'assets/resize_cert_input.svg';\n\nconst handleSize = 16;\n\nconst DragHandle = props => {\n const {\n id,\n elementRef,\n cursor = 'move',\n inverseScaleFactor = 1,\n onDragEnd = () => {},\n isInput = false,\n } = props;\n\n if (!window.dev()) {\n return null;\n }\n\n return (\n <div\n id={`chameleon-text-drag-handle-${id}`}\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: handleSize,\n height: handleSize,\n ...(inverseScaleFactor > 1 && {\n transform: `scale(${inverseScaleFactor})`,\n transformOrigin: 'top left',\n }),\n background: `url('${\n !isInput ? Drag_Icon_Blue : move_cert_input\n }') no-repeat`,\n // '#ff0566',\n cursor,\n }}\n onPointerDown={e => {\n const computedStyle = window.getComputedStyle(elementRef.current);\n\n const offsetX = e.clientX * inverseScaleFactor;\n const offsetY = e.clientY * inverseScaleFactor;\n\n const x = parseInt(computedStyle.left, 10);\n const y = parseInt(computedStyle.top, 10);\n\n const init = {\n offsetX,\n offsetY,\n x,\n y,\n };\n\n window.addEventListener('pointermove', onPointerMove);\n window.addEventListener('pointerup', onPointerUp);\n\n function onPointerMove(e) {\n const inverseScaleFactorClientX = e.clientX * inverseScaleFactor;\n const inverseScaleFactorClientY = e.clientY * inverseScaleFactor;\n\n const x = inverseScaleFactorClientX - init.offsetX;\n const y = inverseScaleFactorClientY - init.offsetY;\n\n const dragValueX = init.x + x;\n const dragValueY = init.y + y;\n\n elementRef.current.style.left = `${dragValueX}px`;\n elementRef.current.style.top = `${dragValueY}px`;\n }\n\n function onPointerUp(e) {\n const { left, top } = elementRef.current.style;\n onDragEnd({ left, top });\n\n window.removeEventListener('pointermove', onPointerMove);\n window.removeEventListener('pointerup', onPointerUp);\n }\n }}\n />\n );\n};\n\nconst ResizeHandle = (props: any) => {\n const {\n id,\n elementRef,\n cursor = 'nwse-resize' || 'move',\n scaleFactor = 1,\n inverseScaleFactor = 1,\n onDrag = () => {},\n onDragEnd = () => {},\n isInput = false,\n } = props;\n\n if (!window.dev()) {\n return null;\n }\n\n return (\n <div\n id={`chameleon-text-resize-handle-${id}`}\n style={{\n position: 'absolute',\n right: 0,\n bottom: 0,\n width: handleSize,\n height: handleSize,\n ...(inverseScaleFactor > 1 && {\n transform: `scale(${inverseScaleFactor})`,\n transformOrigin: 'bottom right',\n }),\n background: `url('${\n !isInput ? Resize_Icon : resize_cert_input\n }') no-repeat`,\n // '#ff0566',\n cursor,\n }}\n onPointerDown={e => {\n const handle = e.currentTarget;\n\n const computedStyle = window.getComputedStyle(handle);\n\n const offsetX = e.clientX * inverseScaleFactor;\n const offsetY = e.clientY * inverseScaleFactor;\n\n const x = parseInt(computedStyle.left, 10);\n const y = parseInt(computedStyle.top, 10);\n\n const init = {\n offsetX,\n offsetY,\n x,\n y,\n };\n\n window.addEventListener('pointermove', onPointerMove);\n window.addEventListener('pointerup', onPointerUp);\n\n function onPointerMove(e) {\n const inverseScaleFactorClientX = e.clientX * inverseScaleFactor;\n const inverseScaleFactorClientY = e.clientY * inverseScaleFactor;\n\n const x = inverseScaleFactorClientX - init.offsetX;\n const y = inverseScaleFactorClientY - init.offsetY;\n\n const dragValueX = init.x + x;\n const dragValueY = init.y + y;\n\n if (dragValueX < handleSize * 2 || dragValueY < handleSize * 2) {\n return;\n }\n\n handle.style.left = `${dragValueX}px`;\n handle.style.top = `${dragValueY}px`;\n\n onDrag({\n left: `${dragValueX + handleSize}px`,\n top: `${dragValueY + handleSize}px`,\n });\n }\n\n function onPointerUp(e) {\n onDragEnd();\n\n window.removeEventListener('pointermove', onPointerMove);\n window.removeEventListener('pointerup', onPointerUp);\n }\n }}\n />\n );\n};\n\nexport { DragHandle, ResizeHandle };\n","import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';\nimport html2canvas from 'html2canvas';\nimport download from 'downloadjs';\nimport * as htmlToImage from 'html-to-image';\nimport { toPng, toJpeg, toBlob, toPixelData, toSvg } from 'html-to-image';\n\ntype TextFieldData = {\n text: string;\n x: number;\n y: number;\n width: number;\n height: number;\n fontFamily: string;\n fontSize: number;\n};\n\nconst getBase64StringFromDataURL = dataURL => {\n return dataURL.replace('data:', '').replace(/^.+,/, '');\n};\n\nasync function getImgSrcAsBase64String(imgSrc) {\n const response = await fetch(imgSrc);\n const blob = await response.blob();\n\n const p = new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n // Convert to Base64 string\n const base64 = getBase64StringFromDataURL(reader.result);\n if (base64) {\n resolve(base64);\n }\n\n reject('no has base64');\n };\n\n reader.readAsDataURL(blob);\n });\n\n return p;\n}\n\nfunction base64ToArrayBuffer(base64) {\n var binaryString = atob(base64);\n var bytes = new Uint8Array(binaryString.length);\n for (var i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n}\n\nfunction blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n // return\n resolve(reader.result);\n };\n\n reader.readAsDataURL(blob);\n });\n}\n\nasync function generatePDFFromCanvas({\n imgSize,\n scale,\n id,\n fileName,\n imgSrc,\n imgType,\n certificateType,\n onComplete,\n}) {\n const imgSrcAsBase64String = await getImgSrcAsBase64String(imgSrc);\n\n const bkgImgBytes = base64ToArrayBuffer(imgSrcAsBase64String);\n // console.log(bkgImgBytes);\n\n //\n html2canvas(document.querySelector(`#${id}`) as HTMLElement, {\n scale,\n allowTaint: true,\n useCORS: true,\n backgroundColor: null,\n }).then(canvas => {\n canvas.toBlob(async (blob: any) => {\n const newImg = document.createElement('img');\n\n const url = URL.createObjectURL(blob);\n\n newImg.onload = img => {\n URL.revokeObjectURL(url);\n };\n\n newImg.src = url;\n\n // document.body.appendChild(canvas);\n // return;\n\n let imgBytes = await blobToBase64(blob);\n\n imgBytes = base64ToArrayBuffer(\n (imgBytes as string).replace('data:image/png;base64,', '')\n );\n\n const pdfDoc = await PDFDocument.create();\n\n let embedImgType;\n //\n if (['png', 'PNG'].includes(imgType)) {\n embedImgType = 'embedPng';\n }\n\n if (['jpg', 'JPG', 'jpeg', 'JPEG'].includes(imgType)) {\n embedImgType = 'embedJpg';\n }\n\n if (imgType.toLowerCase() === 'svg') {\n embedImgType = 'embedSvg';\n }\n\n const bkgImg = await pdfDoc[embedImgType](bkgImgBytes);\n const img = await pdfDoc.embedPng(\n imgBytes as string | Uint8Array | ArrayBuffer\n );\n\n const page = pdfDoc.addPage([imgSize?.width || 0, imgSize?.height || 0]);\n\n certificateType === 'custom' &&\n page.drawImage(bkgImg, {\n x: 0,\n y: 0,\n width: imgSize?.width,\n height: imgSize?.height,\n });\n\n page.drawImage(img, {\n x: 0,\n y: 0,\n width: imgSize?.width,\n height: imgSize?.height,\n });\n\n const scale = 1024 / imgSize?.width;\n console.log('width: ', imgSize?.width, 'pdfScale res ? :', scale);\n\n page.scale(scale, scale);\n\n const pdfBytes = await pdfDoc.save();\n\n download(pdfBytes, `${fileName || 'Certificate'}.pdf`, 'application/pdf');\n\n onComplete();\n });\n\n //\n });\n}\n\nasync function generatePDF(\n certificateImg: string,\n textFields: TextFieldData[],\n interactionName: string\n) {\n const imgURL = certificateImg;\n // [\n // 'http://reviewsite.inspiregroup.co.nz/manual/TEMP/Certificate%20V2.svg',\n // 'https://cdnb.artstation.com/p/assets/images/images/039/374/867/large/darren-quach-stormland-assault-trooper-01-16x9-dq.jpg',\n // ][1];\n\n const imgBytes = await fetch(imgURL).then(res => res.arrayBuffer());\n\n const pdfDoc = await PDFDocument.create();\n\n const img = await pdfDoc.embedPng(imgBytes);\n const imgDimensions = img.scale(1);\n\n const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman);\n const fontSize = 30;\n\n const page = pdfDoc.addPage([imgDimensions.width, imgDimensions.height]);\n\n const width = page.getWidth();\n const height = page.getHeight();\n\n console.log('pdf width :', {\n width,\n height,\n });\n\n page.drawImage(img, {\n x: 0,\n // page.getWidth() / 2 - imgDimensions.width / 2,\n y: 0,\n // page.getHeight() / 2 - imgDimensions.height / 2 + 250,\n width: width || imgDimensions.width,\n height: height || imgDimensions.height,\n });\n\n textFields.forEach(async tF => {\n const { text, x, y, width, height, fontFamily, fontSize } = tF;\n\n const font = await pdfDoc.embedFont(StandardFonts.Helvetica);\n\n // page.drawRectangle({\n // x,\n // y,\n // width,\n // height,\n // borderColor: rgb(1, 0, 0),\n // borderWidth: 1.5,\n // });\n\n page.drawText(text, {\n x,\n y: y - height,\n size: fontSize,\n font,\n color: rgb(0, 0, 0),\n });\n });\n\n const pdfBytes = await pdfDoc.save();\n\n download(pdfBytes, `${interactionName}.pdf`, 'application/pdf');\n\n return pdfBytes;\n}\n\nexport { generatePDF, generatePDFFromCanvas };\n","/** @jsx jsx */\n\nimport { jsx } from '@emotion/core';\n\nexport const Certificate_1_SVG = props => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 2084 1471.6\"\n xmlSpace=\"preserve\"\n >\n <g id=\"Change_colour\">\n <g>\n <path\n style={{\n fill: '#00CBC3',\n }}\n d=\"M1236.1,836.2v-14.5v-19.4c0-5.8-4.7-10.5-10.5-10.5H859.2c-5.8,0-10.5,4.7-10.5,10.5v17.1v14.4 C535.6,854.3,245.2,928.2-3,1042.3l1,431.2h2088.3l1.5-415.8C1841.1,939,1550.5,860.6,1236.1,836.2z\"\n />\n </g>\n </g>\n <g id=\"Foreground\">\n <g>\n <path\n style={{\n opacity: 0.9,\n fill: '#FFFFFF',\n }}\n d=\"M1236.1,836.2v19c0,5.8-4.7,10.5-10.5,10.5H859.2c-5.8,0-10.5-4.7-10.5-10.5v-21.4 C535.6,854.3,245.2,928.2-3,1042.3l1,431.2h2088.3l1.5-415.8C1841.1,939,1550.5,860.6,1236.1,836.2z M1344,1191.3l-53.6,61.1 c-0.1,0.1-0.1,0.1-0.2,0.1c0.1,0,0.1,0,0.1,0c19.3,13,44.9,37.5,52.3,44.7c0.9,0.9,0.4,2.4-0.8,2.6c-37,5.8-74,7.7-99.1,8.1 l-0.1,0c0.3,13.5-0.1,20.9-0.2,23.3l-0.1,1.3c-0.4,1.9-4,3.9-12.3,6.2c-17.3,4.8-52.2,7.1-77.3,7.9l4.8,18.8 c0.6,2.4-1.1,4.8-3.6,4.9l-19.9,1.3c-2,0.1-3.6,1.7-3.7,3.7l-1.3,19.9c-0.2,2.5-2.5,4.2-4.9,3.6l-19.3-4.9 c-1.9-0.5-3.9,0.5-4.7,2.4l-7.4,18.6c-0.9,2.3-3.7,3.2-5.8,1.9l-16.9-10.7c-1.7-1.1-3.9-0.7-5.2,0.8l-12.7,15.4 c-1.6,1.9-4.5,1.9-6.1,0l-12.7-15.4c-1.3-1.5-3.5-1.9-5.2-0.8l-16.9,10.7c-2.1,1.3-4.9,0.4-5.8-1.9l-7.4-18.6 c-0.7-1.9-2.7-2.9-4.7-2.4l-19.3,4.9c-2.4,0.6-4.8-1.1-4.9-3.6l-1.3-19.9c-0.1-2-1.7-3.6-3.7-3.7l-19.9-1.3 c-2.5-0.2-4.2-2.5-3.6-4.9l4.9-19c-24.7-0.7-57.5-3-74.9-7.8c-8.3-2.3-11.9-4.3-12.3-6.2l-0.1-1.3c-0.1-2.4-0.5-9.8-0.2-23.3 l-0.1,0c-25.2-0.4-62.3-2.4-99.4-8.2c-1.1-0.2-1.5-1.5-0.7-2.2c7.1-6.9,32.9-31.7,52.4-44.9c0.1-0.1,0.2-0.1,0.4-0.1 c0,0,0.1,0,0.2,0c-0.1,0-0.2,0-0.2,0c-0.1,0-0.2-0.1-0.3-0.1l-53.7-61.3c-0.7-0.8,0-2,1-1.9c77.4,10.8,139.3,8.1,164.3,7.2 c11.6-0.4,15.5,0.8,15,2.6l0.1,0c-0.3,2-2.7,20.9-2.5,36.4c1.6,0.1,6.6,0.3,11.2,0.6c0-0.4,0-0.8-0.1-1.2l-4.9-19.3 c-0.6-2.4,1.1-4.8,3.6-4.9l19.9-1.3c2-0.1,3.6-1.7,3.7-3.7l1.3-19.9c0.2-2.5,2.5-4.2,4.9-3.6l19.3,4.9c1.9,0.5,3.9-0.5,4.7-2.4 l7.4-18.6c0.9-2.3,3.7-3.2,5.8-1.9l16.9,10.7c1.7,1.1,3.9,0.7,5.2-0.8l12.7-15.4c1.6-1.9,4.5-1.9,6.1,0l12.7,15.4 c1.3,1.5,3.5,1.9,5.2,0.8l16.9-10.7c2.1-1.3,4.9-0.4,5.8,1.9l7.4,18.6c0.7,1.9,2.7,2.9,4.7,2.4l19.3-4.9c2.4-0.6,4.8,1.1,4.9,3.6 l1.3,19.9c0.1,2,1.7,3.6,3.7,3.7l19.9,1.3c2.5,0.2,4.2,2.5,3.6,4.9l-4.9,19.3c-0.1,0.3-0.1,0.6-0.1,1c6.1-0.1,11.6-0.3,13.7-0.4 c0.2-15.5-2.2-34.4-2.5-36.4l0.1,0c-0.5-1.8,3.4-3,15-2.6c25,0.9,86.8,3.6,164.1-7.2C1344,1189.1,1344.7,1190.4,1344,1191.3z\"\n />\n </g>\n <g\n style={{\n opacity: 1 || 0.05,\n }}\n >\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1225.6,791.8H859.2c-5.8,0-10.5,4.7-10.5,10.5v17.1v14.4v21.4c0,5.8,4.7,10.5,10.5,10.5h366.4 c5.8,0,10.5-4.7,10.5-10.5v-19v-14.5v-19.4C1236.1,796.5,1231.4,791.8,1225.6,791.8z\"\n />\n </g>\n <g>\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M948.6,828.8c-1.2,1.1-3,1.7-5.4,1.7h-4v8.7h-2.7v-20.7h6.7c2.3,0,4.1,0.6,5.3,1.7 c1.2,1.1,1.8,2.6,1.8,4.4C950.4,826.3,949.8,827.7,948.6,828.8z M946.6,827.3c0.7-0.7,1.1-1.6,1.1-2.8c0-2.6-1.5-3.8-4.4-3.8h-4 v7.6h4C944.7,828.3,945.8,828,946.6,827.3z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M965.7,839.2l-4.9-8.5h-3.3v8.5h-2.7v-20.7h6.7c1.6,0,2.9,0.3,4,0.8c1.1,0.5,1.9,1.3,2.4,2.2 c0.5,0.9,0.8,2,0.8,3.1c0,1.4-0.4,2.7-1.2,3.8c-0.8,1.1-2.1,1.8-3.7,2.2l5.2,8.7H965.7z M957.5,828.6h4c1.5,0,2.6-0.4,3.3-1.1 c0.7-0.7,1.1-1.7,1.1-2.9c0-1.2-0.4-2.2-1.1-2.9c-0.7-0.7-1.8-1-3.3-1h-4V828.6z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M976.6,820.7v6.9h7.6v2.2h-7.6v7.1h8.4v2.2h-11.2v-20.8h11.2v2.2H976.6z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M993.1,838.7c-1.1-0.5-1.9-1.2-2.5-2c-0.6-0.9-0.9-1.9-1-3h2.9c0.1,1,0.5,1.8,1.2,2.5 c0.7,0.7,1.7,1,3.1,1c1.3,0,2.3-0.3,3-1c0.7-0.6,1.1-1.5,1.1-2.5c0-0.8-0.2-1.4-0.7-1.9c-0.4-0.5-1-0.9-1.6-1.1 c-0.7-0.3-1.5-0.5-2.6-0.8c-1.4-0.4-2.5-0.7-3.3-1.1c-0.8-0.4-1.5-0.9-2.1-1.7c-0.6-0.8-0.9-1.8-0.9-3.1c0-1.1,0.3-2.1,0.9-3 c0.6-0.9,1.4-1.5,2.4-2c1-0.5,2.2-0.7,3.6-0.7c1.9,0,3.5,0.5,4.8,1.5c1.2,1,1.9,2.3,2.1,3.9h-3c-0.1-0.8-0.5-1.5-1.2-2.1 c-0.7-0.6-1.7-0.9-2.9-0.9c-1.1,0-2.1,0.3-2.8,0.9c-0.7,0.6-1.1,1.4-1.1,2.5c0,0.8,0.2,1.4,0.6,1.8c0.4,0.5,1,0.8,1.6,1.1 c0.6,0.2,1.5,0.5,2.6,0.8c1.4,0.4,2.5,0.7,3.3,1.1s1.5,0.9,2.1,1.7c0.6,0.8,0.9,1.8,0.9,3.1c0,1-0.3,2-0.8,2.9 c-0.5,0.9-1.3,1.6-2.4,2.2c-1.1,0.6-2.3,0.8-3.7,0.8C995.4,839.4,994.2,839.2,993.1,838.7z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M1011.4,820.7v6.9h7.6v2.2h-7.6v7.1h8.4v2.2h-11.2v-20.8h11.2v2.2H1011.4z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M1041.3,839.2h-2.7l-10.9-16.5v16.5h-2.7v-20.8h2.7l10.9,16.5v-16.5h2.7V839.2z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M1059.7,818.5v2.2h-5.7v18.5h-2.7v-18.5h-5.7v-2.2H1059.7z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M1066.8,820.7v6.9h7.6v2.2h-7.6v7.1h8.4v2.2h-11.2v-20.8h11.2v2.2H1066.8z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M1092.7,819.7c1.7,0.8,2.9,2,3.8,3.6c0.9,1.6,1.3,3.4,1.3,5.5c0,2.1-0.4,4-1.3,5.5 c-0.9,1.6-2.2,2.7-3.8,3.6c-1.7,0.8-3.6,1.2-5.9,1.2h-6.5v-20.7h6.5C1089.1,818.5,1091.1,818.9,1092.7,819.7z M1093,834.8 c1.4-1.4,2.1-3.4,2.1-6c0-2.6-0.7-4.6-2.1-6c-1.4-1.4-3.5-2.2-6.1-2.2h-3.7V837h3.7C1089.5,837,1091.6,836.3,1093,834.8z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M1124.2,818.5v2.2h-5.7v18.5h-2.7v-18.5h-5.7v-2.2H1124.2z\"\n />\n <path\n style={{\n fill: '#FFFFFF',\n }}\n d=\"M1132.7,838.1c-1.6-0.9-2.8-2.2-3.8-3.8c-0.9-1.6-1.4-3.4-1.4-5.5c0-2,0.5-3.8,1.4-5.5 c0.9-1.6,2.2-2.9,3.8-3.8c1.6-0.9,3.3-1.4,5.3-1.4c1.9,0,3.7,0.5,5.3,1.4c1.6,0.9,2.8,2.2,3.7,3.8c0.9,1.6,1.4,3.4,1.4,5.5 s-0.5,3.9-1.4,5.5c-0.9,1.6-2.2,2.9-3.7,3.8c-1.6,0.9-3.4,1.4-5.3,1.4C1136.1,839.4,1134.3,839,1132.7,838.1z M1141.9,836.1 c1.2-0.7,2.1-1.6,2.7-2.9c0.7-1.2,1-2.7,1-4.3c0-1.7-0.3-3.1-1-4.4c-0.7-1.2-1.6-2.2-2.7-2.9c-1.2-0.7-2.5-1-3.9-1 c-1.5,0-2.8,0.3-3.9,1c-1.2,0.7-2.1,1.6-2.7,2.9c-0.7,1.2-1,2.7-1,4.4c0,1.6,0.3,3.1,1,4.3c0.7,1.2,1.6,2.2,2.7,2.9 c1.2,0.7,2.5,1,3.9,1C1139.4,837.1,1140.8,836.7,1141.9,836.1z\"\n />\n </g>\n <path\n style={{\n fill: 'none',\n }}\n d=\"M1242.8,1307.9c25.1-0.4,62.1-2.4,99.1-8.1c1.2-0.2,1.7-1.7,0.8-2.6c-7.5-7.3-33-31.7-52.3-44.7 c0,0-0.1,0-0.1,0c0.1,0,0.2-0.1,0.2-0.1l53.6-61.1c0.8-0.9,0-2.2-1.1-2c-77.3,10.7-139.1,8.1-164.1,7.2c-11.6-0.4-15.5,0.8-15,2.6 l-0.1,0c0.3,2,2.7,20.9,2.5,36.4c-2.1,0.1-7.6,0.3-13.7,0.4c0-0.3,0-0.6,0.1-1l4.9-19.3c0.6-2.4-1.1-4.8-3.6-4.9l-19.9-1.3 c-2-0.1-3.6-1.7-3.7-3.7l-1.3-19.9c-0.2-2.5-2.5-4.2-4.9-3.6l-19.3,4.9c-1.9,0.5-3.9-0.5-4.7-2.4l-7.4-18.6 c-0.9-2.3-3.7-3.2-5.8-1.9l-16.9,10.7c-1.7,1.1-3.9,0.7-5.2-0.8l-12.7-15.4c-1.6-1.9-4.5-1.9-6.1,0l-12.7,15.4 c-1.3,1.5-3.5,1.9-5.2,0.8l-16.9-10.7c-2.1-1.3-4.9-0.4-5.8,1.9l-7.4,18.6c-0.7,1.9-2.7,2.9-4.7,2.4l-19.3-4.9 c-2.4-0.6-4.8,1.1-4.9,3.6l-1.3,19.9c-0.1,2-1.7,3.6-3.7,3.7l-19.9,1.3c-2.5,0.2-4.2,2.5-3.6,4.9l4.9,19.3c0.1,0.4,0.1,0.8,0.1,1.2 c-4.7-0.2-9.6-0.5-11.2-0.6c-0.2-15.5,2.2-34.4,2.5-36.4l-0.1,0c0.5-1.8-3.4-3-15-2.6c-25,0.9-86.9,3.6-164.3-7.2 c-1.1-0.1-1.8,1.1-1,1.9l53.7,61.3c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.2,0c-0.1,0-0.2,0-0.2,0c-0.1,0-0.2,0-0.4,0.1 c-19.5,13.2-45.3,38-52.4,44.9c-0.8,0.8-0.3,2.1,0.7,2.2c37.1,5.8,74.2,7.8,99.4,8.2l0.1,0c-0.3,13.5,0.1,20.9,0.2,23.3l0.1,1.3 c0.4,1.9,4,3.9,12.3,6.2c17.3,4.8,50.2,7,74.9,7.8l-4.9,19c-0.6,2.4,1.1,4.8,3.6,4.9l19.9,1.3c2,0.1,3.6,1.7,3.7,3.7l1.3,19.9 c0.2,2.5,2.5,4.2,4.9,3.6l19.3-4.9c1.9-0.5,3.9,0.5,4.7,2.4l7.4,18.6c0.9,2.3,3.7,3.2,5.8,1.9l16.9-10.7c1.7-1.1,3.9-0.7,5.2,0.8 l12.7,15.4c1.6,1.9,4.5,1.9,6.1,0l12.7-15.4c1.3-1.5,3.5-1.9,5.2-0.8l16.9,10.7c2.1,1.3,4.9,0.4,5.8-1.9l7.4-18.6 c0.7-1.9,2.7-2.9,4.7-2.4l19.3,4.9c2.4,0.6,4.8-1.1,4.9-3.6l1.3-19.9c0.1-2,1.7-3.6,3.7-3.7l19.9-1.3c2.5-0.2,4.2-2.5,3.6-4.9 l-4.8-18.8c25.2-0.8,60-3.1,77.3-7.9c8.3-2.3,11.9-4.3,12.3-6.2l0.1-1.3C1242.6,1328.8,1243,1321.4,1242.8,1307.9L1242.8,1307.9z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M1242.8,1307.9c25.1-0.4,62.1-2.4,99.1-8.1c1.2-0.2,1.7-1.7,0.8-2.6c-7.5-7.3-33-31.7-52.3-44.7 c0,0-0.1,0-0.1,0c0.1,0,0.2-0.1,0.2-0.1l53.6-61.1c0.8-0.9,0-2.2-1.1-2c-77.3,10.7-139.1,8.1-164.1,7.2c-11.6-0.4-15.5,0.8-15,2.6 l-0.1,0c0.3,2,2.7,20.9,2.5,36.4c-2.1,0.1-7.6,0.3-13.7,0.4c0-0.3,0-0.6,0.1-1l4.9-19.3c0.6-2.4-1.1-4.8-3.6-4.9l-19.9-1.3 c-2-0.1-3.6-1.7-3.7-3.7l-1.3-19.9c-0.2-2.5-2.5-4.2-4.9-3.6l-19.3,4.9c-1.9,0.5-3.9-0.5-4.7-2.4l-7.4-18.6 c-0.9-2.3-3.7-3.2-5.8-1.9l-16.9,10.7c-1.7,1.1-3.9,0.7-5.2-0.8l-12.7-15.4c-1.6-1.9-4.5-1.9-6.1,0l-12.7,15.4 c-1.3,1.5-3.5,1.9-5.2,0.8l-16.9-10.7c-2.1-1.3-4.9-0.4-5.8,1.9l-7.4,18.6c-0.7,1.9-2.7,2.9-4.7,2.4l-19.3-4.9 c-2.4-0.6-4.8,1.1-4.9,3.6l-1.3,19.9c-0.1,2-1.7,3.6-3.7,3.7l-19.9,1.3c-2.5,0.2-4.2,2.5-3.6,4.9l4.9,19.3c0.1,0.4,0.1,0.8,0.1,1.2 c-4.7-0.2-9.6-0.5-11.2-0.6c-0.2-15.5,2.2-34.4,2.5-36.4l-0.1,0c0.5-1.8-3.4-3-15-2.6c-25,0.9-86.9,3.6-164.3-7.2 c-1.1-0.1-1.8,1.1-1,1.9l53.7,61.3c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.2,0c-0.1,0-0.2,0-0.2,0c-0.1,0-0.2,0-0.4,0.1 c-19.5,13.2-45.3,38-52.4,44.9c-0.8,0.8-0.3,2.1,0.7,2.2c37.1,5.8,74.2,7.8,99.4,8.2l0.1,0c-0.3,13.5,0.1,20.9,0.2,23.3l0.1,1.3 c0.4,1.9,4,3.9,12.3,6.2c17.3,4.8,50.2,7,74.9,7.8l-4.9,19c-0.6,2.4,1.1,4.8,3.6,4.9l19.9,1.3c2,0.1,3.6,1.7,3.7,3.7l1.3,19.9 c0.2,2.5,2.5,4.2,4.9,3.6l19.3-4.9c1.9-0.5,3.9,0.5,4.7,2.4l7.4,18.6c0.9,2.3,3.7,3.2,5.8,1.9l16.9-10.7c1.7-1.1,3.9-0.7,5.2,0.8 l12.7,15.4c1.6,1.9,4.5,1.9,6.1,0l12.7-15.4c1.3-1.5,3.5-1.9,5.2-0.8l16.9,10.7c2.1,1.3,4.9,0.4,5.8-1.9l7.4-18.6 c0.7-1.9,2.7-2.9,4.7-2.4l19.3,4.9c2.4,0.6,4.8-1.1,4.9-3.6l1.3-19.9c0.1-2,1.7-3.6,3.7-3.7l19.9-1.3c2.5-0.2,4.2-2.5,3.6-4.9 l-4.8-18.8c25.2-0.8,60-3.1,77.3-7.9c8.3-2.3,11.9-4.3,12.3-6.2l0.1-1.3C1242.6,1328.8,1243,1321.4,1242.8,1307.9L1242.8,1307.9z\"\n />\n <g>\n <path\n style={{\n fill: 'none',\n }}\n d=\"M860.9,1256.4c-0.1,0.8-0.1,1.6-0.2,2.5c0.1-1,0.2-2.1,0.3-3c-1.1,0-2.2,0-3.2,0c0.9,0,1.7,0,2.6,0 C860.7,1255.8,861,1256.1,860.9,1256.4z\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: '#241F20',\n }}\n d=\"M922,1196.4c-25,0.9-86.9,3.6-164.3-7.2c-1.1-0.1-1.8,1.1-1,1.9l53.7,61.3 c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.2,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0.2,0,0.4,0.1,0.6,0.1c0.1,0,0.3,0,0.4,0.1 c0.3,0,0.5,0.1,0.8,0.1c0.4,0,0.8,0.1,1.2,0.2c0.1,0,0.3,0,0.4,0.1c0.5,0.1,1.1,0.1,1.6,0.2c0.1,0,0.3,0,0.4,0 c0.6,0.1,1.3,0.1,2,0.2c0.1,0,0.2,0,0.4,0c0.4,0,0.9,0.1,1.4,0.1c1.2,0.1,2.5,0.2,3.9,0.4c0.2,0,0.3,0,0.5,0 c0.3,0,0.7,0.1,1.1,0.1c0.8,0.1,1.5,0.1,2.3,0.2c0.3,0,0.7,0.1,1,0.1c0.9,0.1,1.7,0.1,2.7,0.2c0.4,0,0.9,0.1,1.3,0.1 c0.9,0.1,1.7,0.1,2.7,0.2c0.5,0,1.1,0.1,1.7,0.1c0.9,0,1.7,0.1,2.6,0.1c0.7,0,1.4,0.1,2.1,0.1c0.8,0,1.6,0.1,2.5,0.1 c0.8,0,1.6,0.1,2.4,0.1c0.8,0,1.7,0.1,2.5,0.1c0.8,0,1.6,0,2.3,0.1c0.9,0,1.9,0.1,2.8,0.1c0.8,0,1.6,0,2.4,0c1.1,0,2.1,0,3.2,0 l0,0c1.6-16.8,3.4-26.7,4.3-31.2l0.6-2.5l0.1-0.5c0.5-2.9,8.5-5.3,19-7.4c9.9-2,24.8-5.4,34.3-7.6c8.8-1.9,17.1-5.3,17.8-7.6 C937.5,1197.2,933.6,1196,922,1196.4z\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: '#FFFFFF',\n }}\n d=\"M860.4,1255.8c-0.9,0-1.8,0-2.6,0c-0.8,0-1.7,0-2.4,0c-1,0-1.9,0-2.8-0.1 c-0.8,0-1.6,0-2.3-0.1c-0.9,0-1.7-0.1-2.5-0.1c-0.8,0-1.6-0.1-2.4-0.1c-0.9,0-1.7-0.1-2.5-0.1c-0.7,0-1.4-0.1-2.1-0.1 c-0.9,0-1.7-0.1-2.6-0.1c-0.6,0-1.1-0.1-1.7-0.1c-0.9-0.1-1.8-0.1-2.7-0.2c-0.4,0-0.9-0.1-1.3-0.1c-0.9-0.1-1.8-0.1-2.7-0.2 c-0.3,0-0.7-0.1-1-0.1c-0.8-0.1-1.6-0.1-2.3-0.2c-0.4,0-0.7-0.1-1.1-0.1c-0.2,0-0.3,0-0.5,0c-1.4-0.1-2.7-0.3-3.9-0.4 c-0.5,0-1-0.1-1.4-0.1c-0.1,0-0.2,0-0.4,0c-0.7-0.1-1.4-0.1-2-0.2c-0.2,0-0.3,0-0.4,0c-0.6-0.1-1.1-0.1-1.6-0.2 c-0.2,0-0.3,0-0.4-0.1c-0.4-0.1-0.9-0.1-1.2-0.2c-0.3,0-0.6-0.1-0.8-0.1c-0.1,0-0.3,0-0.4-0.1c-0.2,0-0.4-0.1-0.6-0.1 c-0.1,0-0.3,0-0.3,0c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0-0.2,0c-0.1,0-0.2,0-0.4,0.1c-19.5,13.2-45.3,38-52.4,44.9 c-0.8,0.8-0.3,2.1,0.7,2.2c37.1,5.8,74.2,7.8,99.4,8.2l0.1,0c0.2-7.7,0.5-17.5,1.2-29.3c0.1-0.8,0.1-1.7,0.2-2.6 c0.1-1.9,0.2-3.7,0.4-5.4c0-0.6,0.1-1.2,0.1-1.8c0.1-1.1,0.2-2.2,0.2-3.3c0-0.6,0.1-1.1,0.1-1.7c0.1-1,0.2-2.1,0.2-3.1 c0-0.6,0.1-1.1,0.1-1.7c0.1-0.8,0.1-1.7,0.2-2.5C861,1256.1,860.7,1255.8,860.4,1255.8z\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M832.4,1254.7c0.4,0,0.9,0.1,1.3,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M832.4,1254.7c0.4,0,0.9,0.1,1.3,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M832.4,1254.7c0.4,0,0.9,0.1,1.3,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M832.4,1254.7c0.4,0,0.9,0.1,1.3,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M825.4,1254.2c0.3,0,0.7,0.1,1.1,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M825.4,1254.2c0.3,0,0.7,0.1,1.1,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M825.4,1254.2c0.3,0,0.7,0.1,1.1,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M825.4,1254.2c0.3,0,0.7,0.1,1.1,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M850.1,1255.6c0.8,0,1.6,0,2.3,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M850.1,1255.6c0.8,0,1.6,0,2.3,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M850.1,1255.6c0.8,0,1.6,0,2.3,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M850.1,1255.6c0.8,0,1.6,0,2.3,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M828.8,1254.4c0.3,0,0.7,0.1,1,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M828.8,1254.4c0.3,0,0.7,0.1,1,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M828.8,1254.4c0.3,0,0.7,0.1,1,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M828.8,1254.4c0.3,0,0.7,0.1,1,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M821,1253.7 c1.2,0.1,2.5,0.2,3.9,0.4\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M821,1253.7 c1.2,0.1,2.5,0.2,3.9,0.4\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M821,1253.7 c1.2,0.1,2.5,0.2,3.9,0.4\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M821,1253.7 c1.2,0.1,2.5,0.2,3.9,0.4\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M819.2,1253.6c0.1,0,0.2,0,0.4,0\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M819.2,1253.6c0.1,0,0.2,0,0.4,0\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M819.2,1253.6c0.1,0,0.2,0,0.4,0\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M819.2,1253.6c0.1,0,0.2,0,0.4,0\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M840.7,1255.2c0.7,0,1.4,0.1,2.1,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M840.7,1255.2c0.7,0,1.4,0.1,2.1,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M840.7,1255.2c0.7,0,1.4,0.1,2.1,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M840.7,1255.2c0.7,0,1.4,0.1,2.1,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M855.3,1255.7c0.8,0,1.6,0,2.4,0\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M855.3,1255.7c0.8,0,1.6,0,2.4,0\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M855.3,1255.7c0.8,0,1.6,0,2.4,0\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M855.3,1255.7c0.8,0,1.6,0,2.4,0\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M845.3,1255.4c0.8,0,1.6,0.1,2.4,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M845.3,1255.4c0.8,0,1.6,0.1,2.4,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M845.3,1255.4c0.8,0,1.6,0.1,2.4,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M845.3,1255.4c0.8,0,1.6,0.1,2.4,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M836.4,1255 c0.5,0,1.1,0.1,1.7,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M836.4,1255 c0.5,0,1.1,0.1,1.7,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M836.4,1255 c0.5,0,1.1,0.1,1.7,0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M836.4,1255 c0.5,0,1.1,0.1,1.7,0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: '#241F20',\n }}\n d=\"M934.6,1235.4c-20.6-1-41.7-3-56.3-7c-8.3-2.3-11.9-4.3-12.3-6.2l-0.1,0l-0.6,2.5 c-0.9,4.5-2.7,14.4-4.3,31.2l0,0c-0.1,1-0.2,2-0.3,3c0,0.6-0.1,1.1-0.1,1.7c-0.1,1-0.2,2-0.2,3.1c0,0.6-0.1,1.1-0.1,1.7 c-0.1,1.1-0.2,2.2-0.2,3.3c0,0.6-0.1,1.2-0.1,1.8c-0.1,1.8-0.2,3.6-0.4,5.4c0,0.9-0.1,1.7-0.2,2.6l0.1,0 c14.5,5.9,35.6,9.2,56.8,11c0.2-0.8,0.5-1.6,1.2-2.2l15.4-12.7c1.5-1.3,1.9-3.5,0.8-5.2l-10.7-16.9c-1.3-2.1-0.4-4.9,1.9-5.8 l18.6-7.4c1.5-0.6,2.4-2,2.5-3.5C941.2,1235.7,936.2,1235.4,934.6,1235.4z\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M860,1268.7 c0,0.6-0.1,1.2-0.1,1.8\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860,1268.7c0,0.6-0.1,1.2-0.1,1.8\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M860,1268.7 c0,0.6-0.1,1.2-0.1,1.8\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860,1268.7c0,0.6-0.1,1.2-0.1,1.8\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860.3,1263.7c0,0.6-0.1,1.1-0.1,1.7\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860.3,1263.7c0,0.6-0.1,1.1-0.1,1.7\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860.3,1263.7c0,0.6-0.1,1.1-0.1,1.7\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860.3,1263.7c0,0.6-0.1,1.1-0.1,1.7\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860.7,1258.9c0,0.6-0.1,1.1-0.1,1.7\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860.7,1258.9c0,0.6-0.1,1.1-0.1,1.7\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860.7,1258.9c0,0.6-0.1,1.1-0.1,1.7\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M860.7,1258.9c0,0.6-0.1,1.1-0.1,1.7\"\n />\n <path\n style={{\n opacity: 0.45,\n fill: '#241F20',\n }}\n d=\"M937.1,1199L937.1,1199c-0.7,2.3-9.1,5.7-17.8,7.6c-9.5,2.1-24.4,5.6-34.3,7.6 c-10.4,2.1-18.5,4.5-19,7.4l-0.1,0.5l0.1,0c0.4,1.9,4,3.9,12.3,6.2c14.6,4,35.7,6,56.3,7C934.4,1219.9,936.8,1200.9,937.1,1199z\"\n />\n <path\n style={{\n opacity: 0.1,\n fill: '#FFFFFF',\n }}\n d=\"M943.4,1341.4l-18.6-7.4c-2.3-0.9-3.2-3.7-1.9-5.8l10.7-16.9c1.1-1.7,0.7-3.9-0.8-5.2 l-15.4-12.7c-1.2-1-1.6-2.5-1.2-3.9c-21.2-1.8-42.3-5.1-56.8-11l-0.1,0c-0.7,11.9-1,21.6-1.2,29.3c-0.3,13.5,0.1,20.9,0.2,23.3 l0.1,1.3c0.4,1.9,4,3.9,12.3,6.2c17.3,4.8,50.2,7,74.9,7.8l0.1-0.4C946.2,1344.1,945.2,1342.1,943.4,1341.4z\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: '#241F20',\n }}\n d=\"M1342.9,1189.2c-77.3,10.7-139.1,8.1-164.1,7.2c-11.6-0.4-15.5,0.8-15,2.6 c0.7,2.3,9,5.7,17.8,7.6c9.5,2.1,24.4,5.6,34.3,7.6c10.4,2.1,18.5,4.5,19,7.4l0.1,0.5l0.6,2.5c0.9,4.5,2.7,14.4,4.3,31.2l0,0 c1.9,0,3.8,0,5.6-0.1c0.6,0,1.2,0,1.8,0c1.2,0,2.4-0.1,3.6-0.1c0.7,0,1.4,0,2-0.1c1,0,2-0.1,3-0.1c0.7,0,1.4-0.1,2.1-0.1 c0.9,0,1.8-0.1,2.6-0.1c0.7,0,1.4-0.1,2.1-0.1c0.8,0,1.6-0.1,2.4-0.1c0.7,0,1.3-0.1,1.9-0.1c0.7,0,1.5-0.1,2.2-0.1 c0.6,0,1.2-0.1,1.8-0.1c0.7-0.1,1.3-0.1,2-0.2c0.6,0,1.1-0.1,1.6-0.1c0.6-0.1,1.2-0.1,1.8-0.2c0.5,0,1-0.1,1.5-0.1 c0.5-0.1,1.1-0.1,1.6-0.2c0.4,0,0.9-0.1,1.3-0.1c0.5-0.1,1-0.1,1.4-0.2c0.4,0,0.8-0.1,1.1-0.1c0.4,0,0.8-0.1,1.2-0.1 c0.3,0,0.7-0.1,1-0.1c0.3,0,0.7-0.1,1-0.1c0.3,0,0.5-0.1,0.8-0.1c0.3,0,0.6-0.1,0.9-0.1c0.2,0,0.4-0.1,0.5-0.1 c0.2,0,0.4-0.1,0.6-0.1c0.2,0,0.3,0,0.5-0.1c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3,0c0,0,0,0,0,0c0.1,0,0.2-0.1,0.2-0.1l53.6-61.1 C1344.7,1190.4,1344,1189.1,1342.9,1189.2z\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: '#FFFFFF',\n }}\n d=\"M1342.6,1297.2c-7.5-7.3-33-31.7-52.3-44.7c0,0-0.1,0-0.1,0c0,0,0,0,0,0 c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0-0.3,0c-0.1,0-0.3,0-0.5,0.1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.5,0.1 c-0.3,0-0.6,0.1-0.9,0.1c-0.2,0-0.5,0.1-0.8,0.1c-0.3,0-0.6,0.1-1,0.1c-0.3,0-0.6,0.1-1,0.1c-0.4,0-0.8,0.1-1.2,0.1 c-0.4,0-0.7,0.1-1.1,0.1c-0.5,0.1-0.9,0.1-1.4,0.2c-0.4,0-0.8,0.1-1.3,0.1c-0.5,0.1-1.1,0.1-1.6,0.2c-0.5,0-1,0.1-1.5,0.1 c-0.6,0.1-1.2,0.1-1.8,0.2c-0.5,0-1.1,0.1-1.6,0.1c-0.6,0.1-1.3,0.1-2,0.2c-0.6,0-1.2,0.1-1.8,0.1c-0.7,0.1-1.4,0.1-2.2,0.1 c-0.6,0-1.3,0.1-1.9,0.1c-0.8,0-1.6,0.1-2.4,0.1c-0.7,0-1.3,0.1-2.1,0.1c-0.8,0-1.7,0.1-2.6,0.1c-0.7,0-1.4,0.1-2.1,0.1 c-1,0-2,0.1-3,0.1c-0.7,0-1.3,0.1-2,0.1c-1.2,0-2.4,0.1-3.6,0.1c-0.6,0-1.2,0-1.8,0c-1.8,0-3.7,0.1-5.6,0.1 c0.5,5.9,1,12.5,1.5,20.1c0,0.9,0.1,1.7,0.2,2.6c0.7,11.9,1,21.6,1.2,29.3l0.1,0c25.1-0.4,62.1-2.4,99.1-8.1 C1343,1299.6,1343.5,1298.1,1342.6,1297.2z\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1239.9,1255.8c1.9,0,3.8,0,5.6-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1239.9,1255.8c1.9,0,3.8,0,5.6-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1239.9,1255.8c1.9,0,3.8,0,5.6-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1239.9,1255.8c1.9,0,3.8,0,5.6-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1247.2,1255.7c1.2,0,2.4-0.1,3.6-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1247.2,1255.7c1.2,0,2.4-0.1,3.6-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1247.2,1255.7c1.2,0,2.4-0.1,3.6-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1247.2,1255.7c1.2,0,2.4-0.1,3.6-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1262.6,1255.1c0.8,0,1.6-0.1,2.4-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1262.6,1255.1c0.8,0,1.6-0.1,2.4-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1262.6,1255.1c0.8,0,1.6-0.1,2.4-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1262.6,1255.1c0.8,0,1.6-0.1,2.4-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1266.9,1254.8c0.7,0,1.5-0.1,2.2-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1266.9,1254.8c0.7,0,1.5-0.1,2.2-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1266.9,1254.8c0.7,0,1.5-0.1,2.2-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1266.9,1254.8c0.7,0,1.5-0.1,2.2-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1280.6,1253.7c0.5-0.1,1-0.1,1.4-0.2\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1280.6,1253.7c0.5-0.1,1-0.1,1.4-0.2\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1280.6,1253.7c0.5-0.1,1-0.1,1.4-0.2\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1280.6,1253.7c0.5-0.1,1-0.1,1.4-0.2\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1270.9,1254.5c0.7-0.1,1.3-0.1,2-0.2\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1270.9,1254.5c0.7-0.1,1.3-0.1,2-0.2\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1270.9,1254.5c0.7-0.1,1.3-0.1,2-0.2\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1270.9,1254.5c0.7-0.1,1.3-0.1,2-0.2\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M1277.7,1254 c0.6-0.1,1.1-0.1,1.6-0.2\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M1277.7,1254 c0.6-0.1,1.1-0.1,1.6-0.2\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M1277.7,1254 c0.6-0.1,1.1-0.1,1.6-0.2\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\"M1277.7,1254 c0.6-0.1,1.1-0.1,1.6-0.2\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1274.5,1254.3c0.6-0.1,1.2-0.1,1.8-0.2\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1274.5,1254.3c0.6-0.1,1.2-0.1,1.8-0.2\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1274.5,1254.3c0.6-0.1,1.2-0.1,1.8-0.2\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1274.5,1254.3c0.6-0.1,1.2-0.1,1.8-0.2\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1283.2,1253.4c0.4,0,0.8-0.1,1.2-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1283.2,1253.4c0.4,0,0.8-0.1,1.2-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1283.2,1253.4c0.4,0,0.8-0.1,1.2-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1283.2,1253.4c0.4,0,0.8-0.1,1.2-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1252.8,1255.5c1,0,2-0.1,3-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1252.8,1255.5c1,0,2-0.1,3-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1252.8,1255.5c1,0,2-0.1,3-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1252.8,1255.5c1,0,2-0.1,3-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1257.9,1255.3c0.9,0,1.8-0.1,2.6-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1257.9,1255.3c0.9,0,1.8-0.1,2.6-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: 'none',\n stroke: '#241F20',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1257.9,1255.3c0.9,0,1.8-0.1,2.6-0.1\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: 'none',\n stroke: '#FFFFFF',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n d=\" M1257.9,1255.3c0.9,0,1.8-0.1,2.6-0.1\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: '#241F20',\n }}\n d=\"M1241.4,1276c-0.5-7.6-1-14.3-1.5-20.1l0,0c-1.6-16.8-3.4-26.7-4.3-31.2l-0.6-2.5 l-0.1,0c-0.4,1.9-4,3.9-12.3,6.2c-14.6,4-35.7,6-56.3,7c-2.1,0.1-7.6,0.3-13.7,0.4c0,1.6,0.9,3.1,2.4,3.7l18.6,7.4 c2.3,0.9,3.2,3.7,1.9,5.8l-10.7,16.9c-1.1,1.7-0.7,3.9,0.8,5.2l15.4,12.7c0.8,0.6,1.1,1.5,1.3,2.4c22-1.7,44.2-5.1,59.2-11.2 l0.1,0C1241.5,1277.7,1241.4,1276.8,1241.4,1276z\"\n />\n <path\n style={{\n opacity: 0.45,\n fill: '#241F20',\n }}\n d=\"M1234.8,1221.6c-0.5-2.9-8.5-5.3-19-7.4c-9.9-2-24.8-5.4-34.3-7.6 c-8.8-1.9-17.1-5.3-17.8-7.6l-0.1,0c0.3,2,2.7,20.9,2.5,36.4c20.6-1,41.7-3,56.3-7c8.3-2.3,11.9-4.3,12.3-6.2l0.1,0L1234.8,1221.6 z\"\n />\n <path\n style={{\n opacity: 0.1,\n fill: '#FFFFFF',\n }}\n d=\"M1242.7,1307.9c-0.2-7.7-0.5-17.5-1.2-29.3l-0.1,0c-15.1,6.2-37.2,9.5-59.2,11.2 c0.2,1.3-0.1,2.8-1.3,3.7l-15.4,12.7c-1.5,1.3-1.9,3.5-0.8,5.2l10.7,16.9c1.3,2.1,0.4,4.9-1.9,5.8l-18.6,7.4 c-1.8,0.7-2.9,2.7-2.4,4.7l0.1,0.5c25.2-0.8,60-3.1,77.3-7.9c8.3-2.3,11.9-4.3,12.3-6.2l0.1-1.3 C1242.6,1328.8,1243,1321.4,1242.7,1307.9z\"\n />\n <g>\n <circle\n style={{\n fill: 'none',\n }}\n cx={1049.8}\n cy={1289.4}\n r={103.3}\n />\n </g>\n <g>\n <circle\n style={{\n fill: 'none',\n }}\n cx={1049.8}\n cy={1289.4}\n r={82.8}\n />\n </g>\n <g>\n <polygon\n style={{\n fill: 'none',\n }}\n points=\"1084.2,1279.9 1101.1,1259.5 1075,1264 1079.5,1237.8 1059,1254.8 1049.8,1229.8 1040.6,1254.8 1020.2,1237.8 1024.7,1264 998.6,1259.5 1015.5,1279.9 990.6,1289.1 1015.5,1298.3 998.6,1318.7 1024.7,1314.2 1020.2,1340.4 1040.6,1323.4 1049.8,1348.3 1059,1323.4 1079.5,1340.4 1075,1314.2 1101.1,1318.7 1084.2,1298.3 1109.1,1289.1 \"\n />\n </g>\n </g>\n <path\n style={{\n fill: 'none',\n }}\n d=\"M1342.9,1189.2c-77.3,10.7-139.1,8.1-164.1,7.2c-11.6-0.4-15.5,0.8-15,2.6l-0.1,0 c0.3,2,2.7,20.9,2.5,36.4c-2.1,0.1-7.6,0.3-13.7,0.4c0-0.3,0-0.6,0.1-1l4.9-19.3c0.6-2.4-1.1-4.8-3.6-4.9l-19.9-1.3 c-2-0.1-3.6-1.7-3.7-3.7l-1.3-19.9c-0.2-2.5-2.5-4.2-4.9-3.6l-19.3,4.9c-1.9,0.5-3.9-0.5-4.7-2.4l-7.4-18.6 c-0.9-2.3-3.7-3.2-5.8-1.9l-16.9,10.7c-1.7,1.1-3.9,0.7-5.2-0.8l-12.7-15.4c-1.6-1.9-4.5-1.9-6.1,0l-12.7,15.4 c-1.3,1.5-3.5,1.9-5.2,0.8l-16.9-10.7c-2.1-1.3-4.9-0.4-5.8,1.9l-7.4,18.6c-0.7,1.9-2.7,2.9-4.7,2.4l-19.3-4.9 c-2.4-0.6-4.8,1.1-4.9,3.6l-1.3,19.9c-0.1,2-1.7,3.6-3.7,3.7l-19.9,1.3c-2.5,0.2-4.2,2.5-3.6,4.9l4.9,19.3c0.1,0.4,0.1,0.8,0.1,1.2 c-4.7-0.2-9.6-0.5-11.2-0.6c-0.2-15.5,2.2-34.4,2.5-36.4l-0.1,0c0.5-1.8-3.4-3-15-2.6c-25,0.9-86.9,3.6-164.3-7.2 c-1.1-0.1-1.8,1.1-1,1.9l53.7,61.3c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.2,0c-0.1,0-0.2,0-0.2,0c-0.1,0-0.2,0-0.4,0.1 c-19.5,13.2-45.3,38-52.4,44.9c-0.8,0.8-0.3,2.1,0.7,2.2c37.1,5.8,74.2,7.8,99.4,8.2l0.1,0c-0.3,13.5,0.1,20.9,0.2,23.3l0.1,1.3 c0.4,1.9,4,3.9,12.3,6.2c17.3,4.8,50.2,7,74.9,7.8l-4.9,19c-0.6,2.4,1.1,4.8,3.6,4.9l19.9,1.3c2,0.1,3.6,1.7,3.7,3.7l1.3,19.9 c0.2,2.5,2.5,4.2,4.9,3.6l19.3-4.9c1.9-0.5,3.9,0.5,4.7,2.4l7.4,18.6c0.9,2.3,3.7,3.2,5.8,1.9l16.9-10.7c1.7-1.1,3.9-0.7,5.2,0.8 l12.7,15.4c1.6,1.9,4.5,1.9,6.1,0l12.7-15.4c1.3-1.5,3.5-1.9,5.2-0.8l16.9,10.7c2.1,1.3,4.9,0.4,5.8-1.9l7.4-18.6 c0.7-1.9,2.7-2.9,4.7-2.4l19.3,4.9c2.4,0.6,4.8-1.1,4.9-3.6l1.3-19.9c0.1-2,1.7-3.6,3.7-3.7l19.9-1.3c2.5-0.2,4.2-2.5,3.6-4.9 l-4.8-18.8c25.2-0.8,60-3.1,77.3-7.9c8.3-2.3,11.9-4.3,12.3-6.2l0.1-1.3c0.1-2.4,0.5-9.8,0.2-23.3l0.1,0 c25.1-0.4,62.1-2.4,99.1-8.1c1.2-0.2,1.7-1.7,0.8-2.6c-7.5-7.3-33-31.7-52.3-44.7c0,0-0.1,0-0.1,0c0.1,0,0.2-0.1,0.2-0.1l53.6-61.1 C1344.7,1190.4,1344,1189.1,1342.9,1189.2z\"\n />\n <polygon\n style={{\n fill: '#241F20',\n }}\n points=\"1957.8,1335.7 1269.1,1335.7 1269.1,1333.6 1955.7,1333.6 1955.7,138 128.3,138 128.3,1333.6 830.5,1333.6 830.5,1335.7 126.2,1335.7 126.2,135.9 1957.8,135.9 \"\n />\n <g>\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M479.6,498c5.4-9.8,12.9-17.4,22.6-22.8c9.6-5.4,20.6-8.2,32.8-8.2c15,0,27.8,4,38.5,11.9 c10.7,7.9,17.8,18.7,21.4,32.3H561c-2.5-5.3-6.1-9.3-10.7-12c-4.6-2.8-9.9-4.1-15.7-4.1c-9.5,0-17.1,3.3-23,9.9 c-5.9,6.6-8.8,15.4-8.8,26.4c0,11,2.9,19.8,8.8,26.4c5.9,6.6,13.5,9.9,23,9.9c5.9,0,11.1-1.4,15.7-4.1c4.6-2.8,8.2-6.8,10.7-12 h33.8c-3.6,13.7-10.7,24.4-21.4,32.3c-10.7,7.8-23.5,11.8-38.5,11.8c-12.2,0-23.2-2.7-32.8-8.2c-9.6-5.4-17.2-13-22.6-22.7 c-5.4-9.7-8.1-20.8-8.1-33.2C471.5,518.9,474.2,507.8,479.6,498z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M649.5,493.1v25.5h41.1l0,23.7h-41.1V570h46.5v24.6h-77.3l0-126.1h77.3v24.6H649.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M785.6,594.6L759.3,547H752v47.6h-30.7l0-126.1h51.6c9.9,0,18.4,1.7,25.4,5.2 c7,3.5,12.2,8.2,15.7,14.3c3.5,6.1,5.2,12.8,5.2,20.2c0,8.4-2.4,15.9-7.1,22.5c-4.7,6.6-11.7,11.3-20.9,14l29.1,50H785.6z M752,525.2h19c5.6,0,9.9-1.4,12.7-4.1c2.8-2.8,4.2-6.7,4.2-11.7c0-4.8-1.4-8.6-4.2-11.3c-2.8-2.8-7-4.1-12.7-4.1h-19V525.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M927.2,468.5v24.6h-33.4l0,101.5H863l0-101.5h-33.4v-24.6H927.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M982.2,468.5l0,126.1h-30.7l0-126.1H982.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1091.8,468.5v24.6h-51.4v26.6h38.5l0,23.9h-38.5v51h-30.7l0-126.1H1091.8z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1140.3,468.5l0,126.1h-30.7l0-126.1H1140.3z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1167.1,498c5.4-9.8,12.9-17.4,22.6-22.8c9.6-5.4,20.6-8.2,32.8-8.2c15,0,27.8,4,38.5,11.9 c10.7,7.9,17.8,18.7,21.4,32.3h-33.8c-2.5-5.3-6.1-9.3-10.7-12c-4.6-2.8-9.9-4.1-15.7-4.1c-9.5,0-17.1,3.3-23,9.9 c-5.9,6.6-8.8,15.4-8.8,26.4c0,11,2.9,19.8,8.8,26.4c5.9,6.6,13.5,9.9,23,9.9c5.9,0,11.1-1.4,15.7-4.1c4.6-2.8,8.2-6.8,10.7-12 h33.8c-3.6,13.7-10.7,24.4-21.4,32.3c-10.7,7.8-23.5,11.8-38.5,11.8c-12.2,0-23.2-2.7-32.8-8.2c-9.6-5.4-17.2-13-22.6-22.7 c-5.4-9.7-8.1-20.8-8.1-33.2C1159,518.9,1161.7,507.8,1167.1,498z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1377.7,572.3h-47.1l-7.5,22.3h-32.2l45.6-126.1h35.6l45.6,126.1h-32.5L1377.7,572.3z M1369.8,548.6l-15.6-46.2l-15.5,46.2H1369.8z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1509.6,468.5v24.6h-33.4l0,101.5h-30.7l0-101.5H1412v-24.6H1509.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1561,493.1v25.5h41.1l0,23.7H1561V570h46.5v24.6h-77.3l0-126.1h77.3v24.6H1561z\"\n />\n </g>\n <g>\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M748.9,711.2c-2.9-1.6-5.2-3.9-6.9-6.9c-1.7-3-2.5-6.3-2.5-10c0-3.7,0.8-7,2.5-10 c1.7-3,4-5.3,6.9-6.9c2.9-1.6,6.1-2.5,9.6-2.5c3.5,0,6.8,0.8,9.7,2.5c2.9,1.6,5.2,3.9,6.8,6.9c1.7,2.9,2.5,6.3,2.5,10 c0,3.7-0.8,7.1-2.5,10c-1.7,2.9-3.9,5.2-6.8,6.9c-2.9,1.6-6.1,2.5-9.7,2.5C755,713.6,751.8,712.8,748.9,711.2z M765.7,707.5 c2.1-1.2,3.8-3,5-5.3c1.2-2.3,1.8-4.9,1.8-7.9c0-3-0.6-5.7-1.8-8c-1.2-2.3-2.9-4-5-5.2c-2.1-1.2-4.5-1.8-7.2-1.8 c-2.7,0-5.1,0.6-7.2,1.8c-2.1,1.2-3.8,3-5,5.2c-1.2,2.3-1.8,4.9-1.8,8c0,3,0.6,5.7,1.8,7.9c1.2,2.3,2.9,4,5,5.3s4.5,1.8,7.1,1.8 C761.2,709.3,763.6,708.7,765.7,707.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M807.6,675.4v4h-16.5v12.8h13.4v4h-13.4v17.1h-4.9v-37.9H807.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M854.9,704.8h-16.5l-3,8.4h-5.2l13.7-37.6h5.7l13.6,37.6h-5.2L854.9,704.8z M853.4,700.8l-6.8-19.1 l-6.8,19.1H853.4z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M871.9,684.3c1.7-3,3.9-5.3,6.8-6.9c2.9-1.7,6.1-2.5,9.6-2.5c4.1,0,7.7,1,10.8,3 c3.1,2,5.3,4.8,6.7,8.5h-5.9c-1.1-2.3-2.6-4-4.5-5.3c-2-1.2-4.3-1.8-7.1-1.8c-2.6,0-5,0.6-7.1,1.8c-2.1,1.2-3.7,3-4.9,5.2 c-1.2,2.3-1.8,4.9-1.8,8c0,3,0.6,5.6,1.8,7.9c1.2,2.3,2.8,4,4.9,5.2c2.1,1.2,4.5,1.8,7.1,1.8c2.8,0,5.1-0.6,7.1-1.8 c2-1.2,3.5-3,4.5-5.2h5.9c-1.4,3.6-3.7,6.4-6.7,8.4c-3.1,2-6.7,3-10.8,3c-3.5,0-6.7-0.8-9.6-2.5c-2.9-1.6-5.2-3.9-6.8-6.9 c-1.7-2.9-2.5-6.2-2.5-9.9C869.4,690.6,870.2,687.3,871.9,684.3z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M916,684.3c1.7-3,3.9-5.3,6.8-6.9c2.9-1.7,6.1-2.5,9.6-2.5c4.1,0,7.7,1,10.8,3 c3.1,2,5.3,4.8,6.7,8.5h-5.9c-1.1-2.3-2.6-4-4.5-5.3c-2-1.2-4.3-1.8-7.1-1.8c-2.6,0-5,0.6-7.1,1.8c-2.1,1.2-3.7,3-4.9,5.2 c-1.2,2.3-1.8,4.9-1.8,8c0,3,0.6,5.6,1.8,7.9c1.2,2.3,2.8,4,4.9,5.2c2.1,1.2,4.5,1.8,7.1,1.8c2.8,0,5.1-0.6,7.1-1.8 c2-1.2,3.5-3,4.5-5.2h5.9c-1.4,3.6-3.7,6.4-6.7,8.4c-3.1,2-6.7,3-10.8,3c-3.5,0-6.7-0.8-9.6-2.5c-2.9-1.6-5.2-3.9-6.8-6.9 c-1.7-2.9-2.5-6.2-2.5-9.9C913.5,690.6,914.4,687.3,916,684.3z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M967,711.2c-2.9-1.6-5.2-3.9-6.9-6.9c-1.7-3-2.5-6.3-2.5-10c0-3.7,0.8-7,2.5-10 c1.7-3,4-5.3,6.9-6.9c2.9-1.6,6.1-2.5,9.6-2.5c3.5,0,6.8,0.8,9.7,2.5c2.9,1.6,5.2,3.9,6.8,6.9c1.7,2.9,2.5,6.3,2.5,10 c0,3.7-0.8,7.1-2.5,10c-1.7,2.9-3.9,5.2-6.8,6.9c-2.9,1.6-6.1,2.5-9.7,2.5C973.1,713.6,969.9,712.8,967,711.2z M983.8,707.5 c2.1-1.2,3.8-3,5-5.3c1.2-2.3,1.8-4.9,1.8-7.9c0-3-0.6-5.7-1.8-8c-1.2-2.3-2.9-4-5-5.2c-2.1-1.2-4.5-1.8-7.2-1.8 c-2.7,0-5.1,0.6-7.2,1.8c-2.1,1.2-3.8,3-5,5.2c-1.2,2.3-1.8,4.9-1.8,8c0,3,0.6,5.7,1.8,7.9c1.2,2.3,2.9,4,5,5.3s4.5,1.8,7.1,1.8 C979.3,709.3,981.7,708.7,983.8,707.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1042.8,675.7v37.6h-4.9v-28l-12.5,28h-3.5l-12.5-28.1v28.1h-4.9v-37.6h5.3l13.9,31.1l13.9-31.1 H1042.8z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1075.4,694.3c-2.2,2.1-5.4,3.1-9.9,3.1h-7.3v15.8h-4.9v-37.9h12.2c4.3,0,7.5,1,9.8,3.1 c2.2,2.1,3.3,4.7,3.3,8C1078.6,689.6,1077.5,692.2,1075.4,694.3z M1071.6,691.6c1.3-1.2,2-2.9,2-5.1c0-4.7-2.7-7-8-7h-7.3v13.9 h7.3C1068.3,693.4,1070.3,692.8,1071.6,691.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1091.9,709.2h13.3v4h-18.2v-37.9h4.9V709.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1117.5,675.4v37.9h-4.9v-37.9H1117.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1133.4,712.3c-2-0.9-3.5-2.1-4.6-3.7c-1.1-1.6-1.7-3.4-1.7-5.5h5.3c0.2,1.8,0.9,3.3,2.2,4.5 c1.3,1.2,3.2,1.8,5.6,1.8c2.4,0,4.2-0.6,5.6-1.8c1.4-1.2,2-2.7,2-4.5c0-1.4-0.4-2.6-1.2-3.5c-0.8-0.9-1.8-1.6-3-2.1 c-1.2-0.5-2.8-1-4.8-1.5c-2.5-0.7-4.5-1.3-6-2c-1.5-0.7-2.8-1.7-3.9-3.1c-1.1-1.4-1.6-3.3-1.6-5.6c0-2.1,0.5-3.9,1.6-5.5 c1.1-1.6,2.5-2.8,4.4-3.7c1.9-0.9,4.1-1.3,6.5-1.3c3.5,0,6.5,0.9,8.7,2.7c2.3,1.8,3.5,4.1,3.8,7.1h-5.4c-0.2-1.4-0.9-2.7-2.3-3.8 c-1.3-1.1-3.1-1.7-5.3-1.7c-2.1,0-3.8,0.5-5.1,1.6c-1.3,1.1-2,2.6-2,4.5c0,1.4,0.4,2.5,1.2,3.4c0.8,0.9,1.7,1.5,2.9,2 c1.1,0.5,2.7,1,4.8,1.5c2.5,0.7,4.5,1.4,6,2c1.5,0.7,2.8,1.7,3.9,3.1c1.1,1.4,1.6,3.3,1.6,5.7c0,1.8-0.5,3.6-1.5,5.2 c-1,1.6-2.4,3-4.3,4c-1.9,1-4.2,1.5-6.8,1.5C1137.6,713.6,1135.4,713.2,1133.4,712.3z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1191.4,675.4v37.9h-4.9v-17.2h-19.3v17.2h-4.9v-37.9h4.9V692h19.3v-16.6H1191.4z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1240.4,675.7v37.6h-4.9v-28l-12.5,28h-3.5l-12.5-28.1v28.1h-4.9v-37.6h5.3l13.9,31.1l13.9-31.1 H1240.4z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1255.8,679.4v12.7h13.8v4.1h-13.8v13h15.4v4.1h-20.4v-37.9h20.4v4.1H1255.8z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1310.7,713.2h-4.9l-19.9-30.2v30.2h-4.9v-37.9h4.9l19.9,30.1v-30.1h4.9V713.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1344.6,675.4v4h-10.3v33.8h-4.9v-33.8H1319v-4H1344.6z\"\n />\n </g>\n <path\n style={{\n fill: 'none',\n }}\n d=\"M1342.9,1189.2c-77.3,10.7-139.1,8.1-164.1,7.2c-11.6-0.4-15.5,0.8-15,2.6l-0.1,0 c0.3,2,2.7,20.9,2.5,36.4c-2.1,0.1-7.6,0.3-13.7,0.4c0-0.3,0-0.6,0.1-1l4.9-19.3c0.6-2.4-1.1-4.8-3.6-4.9l-19.9-1.3 c-2-0.1-3.6-1.7-3.7-3.7l-1.3-19.9c-0.2-2.5-2.5-4.2-4.9-3.6l-19.3,4.9c-1.9,0.5-3.9-0.5-4.7-2.4l-7.4-18.6 c-0.9-2.3-3.7-3.2-5.8-1.9l-16.9,10.7c-1.7,1.1-3.9,0.7-5.2-0.8l-12.7-15.4c-1.6-1.9-4.5-1.9-6.1,0l-12.7,15.4 c-1.3,1.5-3.5,1.9-5.2,0.8l-16.9-10.7c-2.1-1.3-4.9-0.4-5.8,1.9l-7.4,18.6c-0.7,1.9-2.7,2.9-4.7,2.4l-19.3-4.9 c-2.4-0.6-4.8,1.1-4.9,3.6l-1.3,19.9c-0.1,2-1.7,3.6-3.7,3.7l-19.9,1.3c-2.5,0.2-4.2,2.5-3.6,4.9l4.9,19.3c0.1,0.4,0.1,0.8,0.1,1.2 c-4.7-0.2-9.6-0.5-11.2-0.6c-0.2-15.5,2.2-34.4,2.5-36.4l-0.1,0c0.5-1.8-3.4-3-15-2.6c-25,0.9-86.9,3.6-164.3-7.2 c-1.1-0.1-1.8,1.1-1,1.9l53.7,61.3c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.2,0c-0.1,0-0.2,0-0.2,0c-0.1,0-0.2,0-0.4,0.1 c-19.5,13.2-45.3,38-52.4,44.9c-0.8,0.8-0.3,2.1,0.7,2.2c37.1,5.8,74.2,7.8,99.4,8.2l0.1,0c-0.3,13.5,0.1,20.9,0.2,23.3l0.1,1.3 c0.4,1.9,4,3.9,12.3,6.2c17.3,4.8,50.2,7,74.9,7.8l-4.9,19c-0.6,2.4,1.1,4.8,3.6,4.9l19.9,1.3c2,0.1,3.6,1.7,3.7,3.7l1.3,19.9 c0.2,2.5,2.5,4.2,4.9,3.6l19.3-4.9c1.9-0.5,3.9,0.5,4.7,2.4l7.4,18.6c0.9,2.3,3.7,3.2,5.8,1.9l16.9-10.7c1.7-1.1,3.9-0.7,5.2,0.8 l12.7,15.4c1.6,1.9,4.5,1.9,6.1,0l12.7-15.4c1.3-1.5,3.5-1.9,5.2-0.8l16.9,10.7c2.1,1.3,4.9,0.4,5.8-1.9l7.4-18.6 c0.7-1.9,2.7-2.9,4.7-2.4l19.3,4.9c2.4,0.6,4.8-1.1,4.9-3.6l1.3-19.9c0.1-2,1.7-3.6,3.7-3.7l19.9-1.3c2.5-0.2,4.2-2.5,3.6-4.9 l-4.8-18.8c25.2-0.8,60-3.1,77.3-7.9c8.3-2.3,11.9-4.3,12.3-6.2l0.1-1.3c0.1-2.4,0.5-9.8,0.2-23.3l0.1,0 c25.1-0.4,62.1-2.4,99.1-8.1c1.2-0.2,1.7-1.7,0.8-2.6c-7.5-7.3-33-31.7-52.3-44.7c0,0-0.1,0-0.1,0c0.1,0,0.2-0.1,0.2-0.1l53.6-61.1 C1344.7,1190.4,1344,1189.1,1342.9,1189.2z\"\n />\n <polygon\n style={{\n opacity: 0.65,\n fill: '#FFFFFF',\n }}\n points=\"1084.2,1298.3 1109.1,1289.1 1084.2,1279.9 1101.1,1259.5 1075,1264 1079.5,1237.8 1059,1254.8 1049.8,1229.8 1040.6,1254.8 1020.2,1237.8 1024.7,1264 998.6,1259.5 1015.5,1279.9 990.6,1289.1 1015.5,1298.3 998.6,1318.7 1024.7,1314.2 1020.2,1340.4 1040.6,1323.4 1049.8,1348.3 1059,1323.4 1079.5,1340.4 1075,1314.2 1101.1,1318.7 \"\n />\n <path\n style={{\n opacity: 0.35,\n fill: '#FFFFFF',\n }}\n d=\"M1049.8,1206.5c-45.7,0-82.8,37.1-82.8,82.8c0,45.7,37.1,82.8,82.8,82.8 c45.7,0,82.8-37.1,82.8-82.8C1132.6,1243.6,1095.6,1206.5,1049.8,1206.5z M1101.1,1318.7l-26.2-4.5l4.5,26.2l-20.4-17l-9.2,24.9 l-9.2-24.9l-20.4,17l4.5-26.2l-26.2,4.5l17-20.4l-24.9-9.2l24.9-9.2l-17-20.4l26.2,4.5l-4.5-26.2l20.4,17l9.2-24.9l9.2,24.9 l20.4-17l-4.5,26.2l26.2-4.5l-17,20.4l24.9,9.2l-24.9,9.2L1101.1,1318.7z\"\n />\n <path\n style={{\n opacity: 0.1,\n fill: '#241F20',\n }}\n d=\"M1049.8,1186.1c-57,0-103.3,46.2-103.3,103.3c0,57,46.2,103.3,103.3,103.3 c57,0,103.3-46.2,103.3-103.3C1153.1,1232.3,1106.9,1186.1,1049.8,1186.1z M1049.8,1372.2c-45.7,0-82.8-37.1-82.8-82.8 c0-45.7,37.1-82.8,82.8-82.8c45.7,0,82.8,37.1,82.8,82.8C1132.6,1335.1,1095.6,1372.2,1049.8,1372.2z\"\n />\n <path\n style={{\n opacity: 0.4,\n fill: '#241F20',\n }}\n d=\"M1180.9,1293.5c1.1-0.9,1.5-2.4,1.3-3.7c-0.2-0.9-0.5-1.8-1.3-2.4l-15.4-12.7 c-1.5-1.3-1.9-3.5-0.8-5.2l10.7-16.9c1.3-2.1,0.4-4.9-1.9-5.8l-18.6-7.4c-1.5-0.6-2.4-2.1-2.4-3.7c0-0.3,0-0.6,0.1-1l4.9-19.3 c0.6-2.4-1.1-4.8-3.6-4.9l-19.9-1.3c-2-0.1-3.6-1.7-3.7-3.7l-1.3-19.9c-0.2-2.5-2.5-4.2-4.9-3.6l-19.3,4.9 c-1.9,0.5-3.9-0.5-4.7-2.4l-7.4-18.6c-0.9-2.3-3.7-3.2-5.8-1.9l-16.9,10.7c-1.7,1.1-3.9,0.7-5.2-0.8l-12.7-15.4 c-1.6-1.9-4.5-1.9-6.1,0l-12.7,15.4c-1.3,1.5-3.5,1.9-5.2,0.8l-16.9-10.7c-2.1-1.3-4.9-0.4-5.8,1.9l-7.4,18.6 c-0.7,1.9-2.7,2.9-4.7,2.4l-19.3-4.9c-2.4-0.6-4.8,1.1-4.9,3.6l-1.3,19.9c-0.1,2-1.7,3.6-3.7,3.7l-19.9,1.3 c-2.5,0.2-4.2,2.5-3.6,4.9l4.9,19.3c0.1,0.4,0.1,0.8,0.1,1.2c-0.1,1.5-1,2.9-2.5,3.5l-18.6,7.4c-2.3,0.9-3.2,3.7-1.9,5.8l10.7,16.9 c1.1,1.7,0.7,3.9-0.8,5.2l-15.4,12.7c-0.7,0.6-1.1,1.4-1.2,2.2c-0.3,1.4,0,2.9,1.2,3.9l15.4,12.7c1.5,1.3,1.9,3.5,0.8,5.2 l-10.7,16.9c-1.3,2.1-0.4,4.9,1.9,5.8l18.6,7.4c1.8,0.7,2.9,2.7,2.4,4.7l-0.1,0.4l-4.9,19c-0.6,2.4,1.1,4.8,3.6,4.9l19.9,1.3 c2,0.1,3.6,1.7,3.7,3.7l1.3,19.9c0.2,2.5,2.5,4.2,4.9,3.6l19.3-4.9c1.9-0.5,3.9,0.5,4.7,2.4l7.4,18.6c0.9,2.3,3.7,3.2,5.8,1.9 l16.9-10.7c1.7-1.1,3.9-0.7,5.2,0.8l12.7,15.4c1.6,1.9,4.5,1.9,6.1,0l12.7-15.4c1.3-1.5,3.5-1.9,5.2-0.8l16.9,10.7 c2.1,1.3,4.9,0.4,5.8-1.9l7.4-18.6c0.7-1.9,2.7-2.9,4.7-2.4l19.3,4.9c2.4,0.6,4.8-1.1,4.9-3.6l1.3-19.9c0.1-2,1.7-3.6,3.7-3.7 l19.9-1.3c2.5-0.2,4.2-2.5,3.6-4.9l-4.8-18.8l-0.1-0.5c-0.5-1.9,0.5-3.9,2.4-4.7l18.6-7.4c2.3-0.9,3.2-3.7,1.9-5.8l-10.7-16.9 c-1.1-1.7-0.7-3.9,0.8-5.2L1180.9,1293.5z M1049.8,1392.6c-57,0-103.3-46.2-103.3-103.3c0-57,46.2-103.3,103.3-103.3 c57,0,103.3,46.2,103.3,103.3C1153.1,1346.4,1106.9,1392.6,1049.8,1392.6z\"\n />\n </g>\n <g id=\"Course_Name\">\n <g>\n <rect\n x={471}\n y={1108.1}\n style={{\n fill: '#231F20',\n }}\n width={1137.6}\n height={2.1}\n />\n </g>\n </g>\n <g id=\"Learner_Name\">\n <g>\n <rect\n x={471}\n y={991.4}\n style={{\n fill: '#231F20',\n }}\n width={715.3}\n height={2.1}\n />\n </g>\n </g>\n <g id=\"Date\">\n <rect\n x={1231.8}\n y={991.4}\n style={{\n fill: '#231F20',\n }}\n width={376.8}\n height={2.1}\n />\n </g>\n </svg>\n );\n};\n","/** @jsx jsx */\n\nimport { jsx } from '@emotion/core';\n\nexport const Certificate_2_SVG = props => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 2084 1471.6\"\n xmlSpace=\"preserve\"\n >\n <g id=\"Change_colour\">\n <path\n style={{\n opacity: 0.97,\n fill: '#00CBC3',\n }}\n d=\"M78.4,76.6v1316.8h1927V76.6H78.4z\"\n />\n </g>\n <g id=\"Foreground\">\n <g>\n <path\n style={{\n opacity: 0.97,\n fill: '#FFFFFF',\n }}\n d=\"M407.9-0.9v549.4v159.9V1472h1676.6l0.9-1472.9H407.9z M1879.1,1261.7l-31.7,45.4 l-38.3-77.4c-3.1,0.2-6.2,0.4-9.3,0.4c-3.1,0-6.2-0.2-9.3-0.4l-38.3,77.4l-31.7-45.4l-55.4,2.4l3.4-6.8l35.9-72.5 c-17.3-21.2-27.7-48.3-27.7-77.9c0-68,55.2-123.2,123.2-123.2c68,0,123.2,55.2,123.2,123.2c0,29.5-10.4,56.6-27.7,77.9l35.9,72.5 l3.4,6.8L1879.1,1261.7z\"\n />\n </g>\n <g>\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M482.1,566.3c6-10.6,14.3-18.8,24.7-24.7c10.5-5.9,22.2-8.9,35.2-8.9c15.2,0,28.5,3.9,39.9,11.7 c11.4,7.8,19.4,18.6,24,32.3h-31.4c-3.1-6.5-7.5-11.4-13.2-14.6c-5.7-3.2-12.2-4.9-19.6-4.9c-7.9,0-15,1.9-21.1,5.6 c-6.2,3.7-11,8.9-14.4,15.7c-3.4,6.8-5.2,14.7-5.2,23.8c0,9,1.7,16.9,5.2,23.7c3.4,6.8,8.2,12.1,14.4,15.8 c6.2,3.7,13.2,5.6,21.1,5.6c7.4,0,13.9-1.7,19.6-5c5.7-3.3,10-8.2,13.2-14.7h31.4c-4.5,13.9-12.5,24.7-23.9,32.4 c-11.4,7.7-24.7,11.6-40,11.6c-13,0-24.7-3-35.2-8.9c-10.5-5.9-18.7-14.1-24.7-24.7c-6-10.5-9.1-22.5-9.1-35.9 C473,588.9,476,576.9,482.1,566.3z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M728.8,624.7h-78.9c0.6,7.8,3.4,13.9,8.2,18.3c4.8,4.4,10.7,6.6,17.7,6.6 c10.1,0,17.3-4.4,21.6-13.1h29.4c-3.1,10.4-9.1,18.9-17.9,25.6c-8.8,6.7-19.7,10-32.5,10c-10.4,0-19.7-2.3-28-6.9 c-8.3-4.6-14.7-11.1-19.3-19.6c-4.6-8.4-6.9-18.2-6.9-29.2c0-11.2,2.3-21,6.8-29.4c4.5-8.4,10.9-14.9,19.1-19.5 c8.2-4.5,17.6-6.8,28.3-6.8c10.3,0,19.5,2.2,27.6,6.6c8.1,4.4,14.4,10.7,18.9,18.8c4.5,8.1,6.7,17.4,6.7,28 C729.6,618,729.4,621.5,728.8,624.7z M701.4,606.3c-0.1-7-2.7-12.6-7.6-16.9c-4.9-4.2-11-6.3-18.1-6.3c-6.8,0-12.4,2-17.1,6.1 c-4.6,4.1-7.4,9.8-8.5,17.1H701.4z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M790.5,565.8c5.7-3.2,12.1-4.9,19.4-4.9v28.6h-7.2c-8.6,0-15,2-19.4,6c-4.4,4-6.5,11-6.5,21v53.8 h-27.3v-108h27.3v16.8C780.3,573.5,784.9,569.1,790.5,565.8z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M860,584.9v52.2c0,3.6,0.9,6.3,2.6,7.9c1.8,1.6,4.7,2.4,8.9,2.4h12.7v23H867 c-23,0-34.5-11.2-34.5-33.5v-52h-12.9v-22.4h12.9v-26.7H860v26.7h24.2v22.4H860z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M905.7,545c-3.2-3.1-4.8-6.9-4.8-11.4c0-4.5,1.6-8.3,4.8-11.4c3.2-3.1,7.2-4.6,12-4.6 c4.8,0,8.8,1.5,12,4.6c3.2,3.1,4.8,6.9,4.8,11.4c0,4.5-1.6,8.3-4.8,11.4c-3.2,3.1-7.2,4.6-12,4.6 C912.9,549.6,908.9,548.1,905.7,545z M931.1,562.5v108h-27.3v-108H931.1z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1007.5,584.9h-18.9v85.5h-27.7v-85.5h-12.3v-22.4h12.3V557c0-13.3,3.8-23,11.3-29.2 c7.5-6.2,18.9-9.2,34.1-8.8v23c-6.6-0.1-11.2,1-13.8,3.3c-2.6,2.3-3.9,6.6-3.9,12.7v4.5h18.9V584.9z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1027.1,545c-3.2-3.1-4.8-6.9-4.8-11.4c0-4.5,1.6-8.3,4.8-11.4c3.2-3.1,7.2-4.6,12-4.6 c4.8,0,8.8,1.5,12,4.6c3.2,3.1,4.8,6.9,4.8,11.4c0,4.5-1.6,8.3-4.8,11.4c-3.2,3.1-7.2,4.6-12,4.6 C1034.3,549.6,1030.3,548.1,1027.1,545z M1052.5,562.5v108h-27.3v-108H1052.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1079.2,587.1c4.5-8.4,10.8-14.9,18.9-19.5c8.1-4.6,17.3-6.9,27.7-6.9c13.4,0,24.5,3.3,33.2,10 c8.8,6.7,14.6,16.1,17.6,28.2h-29.4c-1.6-4.7-4.2-8.3-7.9-11c-3.7-2.7-8.3-4-13.7-4c-7.8,0-14,2.8-18.5,8.5 c-4.5,5.7-6.8,13.7-6.8,24.1c0,10.3,2.3,18.2,6.8,23.9c4.5,5.7,10.7,8.5,18.5,8.5c11,0,18.3-4.9,21.6-14.8h29.4 c-3,11.7-8.9,21-17.7,27.9c-8.8,6.9-19.9,10.3-33.1,10.3c-10.4,0-19.6-2.3-27.7-6.9c-8.1-4.6-14.4-11.1-18.9-19.5 c-4.5-8.4-6.8-18.2-6.8-29.3C1072.4,605.3,1074.7,595.5,1079.2,587.1z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1196.2,587c4.3-8.4,10.3-14.9,17.7-19.5c7.5-4.5,15.8-6.8,25-6.8c8.1,0,15.1,1.6,21.1,4.9 c6,3.2,10.9,7.3,14.5,12.3v-15.4h27.5v108h-27.5v-15.8c-3.5,5.1-8.3,9.3-14.5,12.6c-6.2,3.3-13.3,5-21.3,5c-9.1,0-17.4-2.3-24.8-7 c-7.5-4.7-13.4-11.3-17.7-19.8c-4.4-8.5-6.5-18.3-6.5-29.3C1189.7,605.2,1191.9,595.5,1196.2,587z M1270.8,599.4 c-2.6-4.7-6.1-8.4-10.5-10.9c-4.4-2.5-9.2-3.8-14.2-3.8c-5.1,0-9.7,1.2-14,3.7c-4.3,2.5-7.8,6.1-10.4,10.8c-2.7,4.7-4,10.4-4,16.9 c0,6.5,1.3,12.2,4,17.1c2.7,4.9,6.2,8.6,10.5,11.2c4.3,2.6,9,3.9,13.9,3.9c5.1,0,9.8-1.3,14.2-3.8c4.4-2.5,7.9-6.2,10.5-10.9 c2.6-4.7,3.9-10.4,3.9-17.1C1274.7,609.8,1273.4,604.2,1270.8,599.4z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1360.6,584.9v52.2c0,3.6,0.9,6.3,2.6,7.9c1.8,1.6,4.7,2.4,8.9,2.4h12.7v23h-17.1 c-23,0-34.5-11.2-34.5-33.5v-52h-12.9v-22.4h12.9v-26.7h27.5v26.7h24.2v22.4H1360.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1504,624.7h-78.9c0.6,7.8,3.4,13.9,8.2,18.3c4.8,4.4,10.7,6.6,17.7,6.6c10.1,0,17.3-4.4,21.6-13.1 h29.4c-3.1,10.4-9.1,18.9-17.9,25.6c-8.8,6.7-19.7,10-32.5,10c-10.4,0-19.7-2.3-28-6.9c-8.3-4.6-14.7-11.1-19.3-19.6 c-4.6-8.4-6.9-18.2-6.9-29.2c0-11.2,2.3-21,6.8-29.4c4.5-8.4,10.9-14.9,19.1-19.5c8.2-4.5,17.6-6.8,28.3-6.8 c10.3,0,19.5,2.2,27.6,6.6c8.1,4.4,14.4,10.7,18.9,18.8c4.5,8.1,6.7,17.4,6.7,28C1504.8,618,1504.5,621.5,1504,624.7z M1476.5,606.3c-0.1-7-2.7-12.6-7.6-16.9c-4.9-4.2-11-6.3-18.1-6.3c-6.8,0-12.4,2-17.1,6.1c-4.6,4.1-7.4,9.8-8.5,17.1H1476.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M507.7,874.7c-10.7-6-19.1-14.3-25.3-24.8c-6.2-10.6-9.4-22.6-9.4-36c0-13.3,3.1-25.2,9.4-35.8 c6.2-10.6,14.7-18.9,25.3-24.8c10.7-6,22.3-9,35.1-9c12.9,0,24.6,3,35.2,9c10.6,6,19,14.3,25.1,24.8c6.2,10.6,9.3,22.5,9.3,35.8 c0,13.4-3.1,25.4-9.3,36c-6.2,10.6-14.6,18.9-25.2,24.8c-10.7,6-22.3,9-35.1,9S518.3,880.6,507.7,874.7z M564.4,853.7 c6.2-3.7,11.1-9,14.6-15.9c3.5-6.9,5.3-14.9,5.3-24c0-9.1-1.8-17.1-5.3-23.9c-3.5-6.8-8.4-12-14.6-15.7 c-6.2-3.6-13.4-5.5-21.6-5.5c-8.2,0-15.4,1.8-21.7,5.5c-6.3,3.6-11.2,8.9-14.7,15.7c-3.5,6.8-5.3,14.8-5.3,23.9 c0,9.1,1.8,17.1,5.3,24c3.5,6.9,8.4,12.2,14.7,15.9c6.3,3.7,13.5,5.6,21.7,5.6C550.9,859.3,558.2,857.4,564.4,853.7z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M682.1,796.7h-18.9v85.5h-27.7v-85.5h-12.3v-22.4h12.3v-5.5c0-13.3,3.8-23,11.3-29.2 c7.5-6.2,18.9-9.2,34.1-8.8v23c-6.6-0.1-11.2,1-13.8,3.3c-2.6,2.3-3.9,6.6-3.9,12.7v4.5h18.9V796.7z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M748.6,778.1c6-10.6,14.3-18.8,24.7-24.7c10.5-5.9,22.2-8.9,35.2-8.9c15.2,0,28.5,3.9,39.9,11.7 c11.4,7.8,19.4,18.6,24,32.3h-31.4c-3.1-6.5-7.5-11.4-13.2-14.6c-5.7-3.2-12.2-4.9-19.6-4.9c-7.9,0-15,1.9-21.1,5.6 c-6.2,3.7-11,8.9-14.4,15.7c-3.4,6.8-5.2,14.7-5.2,23.8c0,9,1.7,16.9,5.2,23.7c3.4,6.8,8.2,12.1,14.4,15.8 c6.2,3.7,13.2,5.6,21.1,5.6c7.4,0,13.9-1.7,19.6-5c5.7-3.3,10-8.2,13.2-14.7h31.4c-4.5,13.9-12.5,24.7-23.9,32.4 c-11.4,7.7-24.7,11.6-40,11.6c-13,0-24.7-3-35.2-8.9c-10.5-5.9-18.7-14.1-24.7-24.7c-6-10.5-9.1-22.5-9.1-35.9 C739.6,800.7,742.6,788.7,748.6,778.1z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M915.7,877.1c-8.3-4.6-14.8-11.1-19.6-19.6c-4.7-8.4-7.1-18.2-7.1-29.2c0-11,2.4-20.8,7.3-29.2 c4.9-8.4,11.5-15,20-19.6c8.4-4.6,17.9-6.9,28.3-6.9c10.4,0,19.8,2.3,28.3,6.9c8.4,4.6,15.1,11.1,20,19.6 c4.9,8.4,7.3,18.2,7.3,29.2c0,11-2.5,20.8-7.5,29.2c-5,8.4-11.8,15-20.3,19.6c-8.5,4.6-18,6.9-28.5,6.9 C933.4,884,924,881.7,915.7,877.1z M957.7,856.6c4.4-2.4,7.8-6,10.4-10.8c2.6-4.8,3.9-10.7,3.9-17.5c0-10.3-2.7-18.2-8.1-23.7 c-5.4-5.5-12-8.3-19.8-8.3c-7.8,0-14.3,2.8-19.6,8.3c-5.3,5.5-7.9,13.4-7.9,23.7c0,10.3,2.6,18.2,7.7,23.7 c5.1,5.5,11.6,8.3,19.4,8.3C948.7,860.2,953.4,859,957.7,856.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1186.3,784.9c8.1,8.1,12.2,19.5,12.2,34v63.3h-27.3v-59.6c0-8.4-2.1-14.9-6.4-19.4 c-4.3-4.5-10.1-6.7-17.5-6.7s-13.3,2.2-17.6,6.7c-4.4,4.5-6.5,10.9-6.5,19.4v59.6h-27.3v-59.6c0-8.4-2.1-14.9-6.4-19.4 c-4.3-4.5-10.1-6.7-17.5-6.7c-7.5,0-13.5,2.2-17.8,6.7c-4.4,4.5-6.5,10.9-6.5,19.4v59.6h-27.3v-108h27.3v13.1 c3.5-4.5,8-8.1,13.5-10.7c5.5-2.6,11.6-3.9,18.2-3.9c8.4,0,16,1.8,22.6,5.4c6.6,3.6,11.8,8.7,15.4,15.3c3.5-6.2,8.6-11.2,15.3-15 c6.7-3.8,13.9-5.7,21.7-5.7C1167.5,772.7,1178.2,776.8,1186.3,784.9z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1266.2,777.5c6.2-3.3,13.2-5,21.1-5c9.2,0,17.6,2.3,25,6.8c7.5,4.5,13.4,11,17.7,19.4 c4.3,8.4,6.5,18.1,6.5,29.1c0,11-2.2,20.8-6.5,29.3c-4.4,8.5-10.3,15.1-17.7,19.8c-7.5,4.7-15.8,7-25,7c-7.9,0-14.9-1.6-20.9-4.9 c-6-3.2-10.9-7.3-14.7-12.3v66.8h-27.3V774.3h27.3v15.6C1255.2,785,1260,780.8,1266.2,777.5z M1304.8,811 c-2.7-4.7-6.2-8.3-10.5-10.8c-4.4-2.5-9.1-3.7-14.1-3.7c-4.9,0-9.6,1.3-13.9,3.8c-4.4,2.5-7.9,6.2-10.5,11c-2.7,4.8-4,10.5-4,17 c0,6.5,1.3,12.2,4,17c2.7,4.8,6.2,8.5,10.5,11c4.3,2.5,9,3.8,13.9,3.8c5.1,0,9.8-1.3,14.1-3.9c4.3-2.6,7.9-6.3,10.5-11.1 c2.7-4.8,4-10.5,4-17.1C1308.8,821.4,1307.4,815.8,1304.8,811z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1383.8,738.1v144.2h-27.3V738.1H1383.8z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1510.2,836.5h-78.9c0.6,7.8,3.4,13.9,8.2,18.3c4.8,4.4,10.7,6.6,17.7,6.6 c10.1,0,17.3-4.4,21.6-13.1h29.4c-3.1,10.4-9.1,18.9-17.9,25.6c-8.8,6.7-19.7,10-32.5,10c-10.4,0-19.7-2.3-28-6.9 c-8.3-4.6-14.7-11.1-19.3-19.6c-4.6-8.4-6.9-18.2-6.9-29.2c0-11.2,2.3-21,6.8-29.4c4.5-8.4,10.9-14.9,19.1-19.5 c8.2-4.5,17.6-6.8,28.3-6.8c10.3,0,19.5,2.2,27.6,6.6c8.1,4.4,14.4,10.7,18.9,18.8c4.5,8.1,6.7,17.4,6.7,28 C1511,829.8,1510.8,833.3,1510.2,836.5z M1482.8,818.1c-0.1-7-2.7-12.6-7.6-16.9c-4.9-4.2-11-6.3-18.1-6.3c-6.8,0-12.4,2-17.1,6.1 c-4.6,4.1-7.4,9.8-8.5,17.1H1482.8z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1562.7,796.7v52.2c0,3.6,0.9,6.3,2.6,7.9c1.8,1.6,4.7,2.4,8.9,2.4h12.7v23h-17.1 c-23,0-34.5-11.2-34.5-33.5v-52h-12.9v-22.4h12.9v-26.7h27.5v26.7h24.2v22.4H1562.7z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1608.4,756.9c-3.2-3.1-4.8-6.9-4.8-11.4c0-4.5,1.6-8.3,4.8-11.4c3.2-3.1,7.2-4.6,12-4.6 c4.8,0,8.8,1.5,12,4.6c3.2,3.1,4.8,6.9,4.8,11.4c0,4.5-1.6,8.3-4.8,11.4c-3.2,3.1-7.2,4.6-12,4.6 C1615.5,761.4,1611.5,759.9,1608.4,756.9z M1633.8,774.3v108h-27.3v-108H1633.8z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1680.6,877.1c-8.3-4.6-14.8-11.1-19.6-19.6c-4.7-8.4-7.1-18.2-7.1-29.2c0-11,2.4-20.8,7.3-29.2 c4.9-8.4,11.5-15,20-19.6c8.4-4.6,17.9-6.9,28.3-6.9c10.4,0,19.8,2.3,28.3,6.9c8.4,4.6,15.1,11.1,20,19.6 c4.9,8.4,7.3,18.2,7.3,29.2c0,11-2.5,20.8-7.5,29.2c-5,8.4-11.8,15-20.3,19.6c-8.5,4.6-18,6.9-28.5,6.9 C1698.2,884,1688.9,881.7,1680.6,877.1z M1722.5,856.6c4.3-2.4,7.8-6,10.4-10.8c2.6-4.8,3.9-10.7,3.9-17.5 c0-10.3-2.7-18.2-8.1-23.7c-5.4-5.5-12-8.3-19.8-8.3c-7.8,0-14.3,2.8-19.6,8.3c-5.3,5.5-7.9,13.4-7.9,23.7 c0,10.3,2.6,18.2,7.7,23.7c5.1,5.5,11.6,8.3,19.4,8.3C1713.5,860.2,1718.2,859,1722.5,856.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1876,784.9c7.9,8.1,11.9,19.5,11.9,34v63.3h-27.3v-59.6c0-8.6-2.1-15.2-6.4-19.8 c-4.3-4.6-10.1-6.9-17.5-6.9c-7.5,0-13.5,2.3-17.8,6.9c-4.4,4.6-6.5,11.2-6.5,19.8v59.6H1785v-108h27.3v13.4 c3.6-4.7,8.3-8.3,13.9-11c5.7-2.7,11.9-4,18.6-4C1857.7,772.7,1868.1,776.8,1876,784.9z\"\n />\n </g>\n <g>\n <rect\n x={494.2}\n y={384.3}\n style={{\n fill: '#241F20',\n }}\n width={1427.8}\n height={2.1}\n />\n </g>\n <polygon\n style={{\n opacity: 0.35,\n fill: '#FFFFFF',\n }}\n points=\"1875.7,1254.9 1844,1300.3 1809.1,1229.7 1847.4,1307.2 1879.1,1261.7 1934.5,1264.1 1931.1,1257.3 \"\n />\n <path\n style={{\n opacity: 0.4,\n fill: '#241F20',\n }}\n d=\"M1875.7,1254.9l55.4,2.4l-35.9-72.5c-20.7,25.4-51.4,42.3-86.1,44.9l34.9,70.6 L1875.7,1254.9z\"\n />\n <polygon\n style={{\n opacity: 0.35,\n fill: '#FFFFFF',\n }}\n points=\"1723.8,1254.9 1668.5,1257.3 1665.1,1264.1 1720.4,1261.7 1752.2,1307.2 1790.4,1229.7 1755.5,1300.3 \"\n />\n <path\n style={{\n opacity: 0.4,\n fill: '#241F20',\n }}\n d=\"M1704.3,1184.8l-35.9,72.5l55.4-2.4l31.7,45.4l34.9-70.6 C1755.8,1227.1,1725.1,1210.2,1704.3,1184.8z\"\n />\n <path\n style={{\n opacity: 0.2,\n fill: '#FFFFFF',\n }}\n d=\"M1895.2,1184.8c17.3-21.2,27.7-48.3,27.7-77.9c0-68-55.2-123.2-123.2-123.2 c-68,0-123.2,55.2-123.2,123.2c0,29.5,10.4,56.6,27.7,77.9c20.7,25.4,51.4,42.3,86.1,44.9c3.1,0.2,6.2,0.4,9.3,0.4 c3.1,0,6.2-0.2,9.3-0.4C1843.8,1227.1,1874.5,1210.2,1895.2,1184.8z M1799.8,1197.2c-49.8,0-90.3-40.5-90.3-90.3 c0-49.8,40.5-90.3,90.3-90.3c49.8,0,90.3,40.5,90.3,90.3C1890.1,1156.7,1849.6,1197.2,1799.8,1197.2z\"\n />\n <path\n style={{\n opacity: 0.3,\n fill: '#241F20',\n }}\n d=\"M1799.8,1025.2c-45,0-81.7,36.6-81.7,81.7c0,45,36.6,81.7,81.7,81.7 c45,0,81.7-36.6,81.7-81.7C1881.5,1061.9,1844.8,1025.2,1799.8,1025.2z M1785.2,1152c-0.2-0.5-0.4-0.9-0.6-1.3 c-1.1-2.3-2.2-4.6-3.4-6.8c-1.3-2.3-2.7-4.6-4.1-6.8c-1.2-1.9-2.4-3.7-3.7-5.4c-0.9-1.3-1.9-2.5-2.9-3.7c-0.9-1.2-1.9-2.3-2.9-3.4 c-1.9-2.1-3.8-4.1-5.8-6.1c-1.9-1.8-3.9-3.4-5.8-5.1c-1.8-1.5-3.7-2.9-5.6-4.1c-0.7-0.4-1.3-0.9-1.9-1.3c-0.3-0.2-0.2-0.3,0-0.4 c1-0.5,2-0.9,3.1-1.1c0.2,0,0.5-0.1,0.7-0.1c0.7-0.1,1.5-0.2,2.2-0.3c0.5,0,0.9-0.1,1.4-0.1c0.7,0,1.4,0,2,0c0.4,0,0.8,0.1,1.1,0.1 c0.1,0,0.1,0,0.2,0c0.3,0.1,0.6,0.1,0.9,0.2c1,0,1.9,0.4,2.9,0.7c0.7,0.3,1.5,0.4,2.1,0.8c1.4,0.7,2.8,1.3,4.2,2.1 c2,1.3,3.9,2.6,5.8,4.1c1.2,0.9,2.3,2,3.4,3c0.9,0.8,1.7,1.5,2.6,2.4c1.2,1.1,2.3,2.3,3.4,3.5c0.2,0.3,0.4,0.3,0.6,0 c1.1-1.8,2.2-3.5,3.4-5.3c1.4-2.1,2.8-4.2,4.3-6.4c1-1.5,2.1-3,3.1-4.5c1.3-1.8,2.6-3.6,3.9-5.4c1.2-1.6,2.4-3.2,3.6-4.8 c0.9-1.2,1.9-2.3,2.8-3.5c1.2-1.4,2.3-2.8,3.5-4.2c1-1.1,2-2.3,3-3.4c1.9-2,3.8-4,5.7-5.9c1.6-1.6,3.3-3,5-4.5 c1.6-1.3,3.2-2.6,4.9-3.9c1.6-1.1,3.2-2.2,4.8-3.2c0.9-0.6,2-1,3-1.5c1.1-0.5,2.2-0.8,3.2-1.2c1.9-0.8,3.9-0.7,6-0.7 c0.5,0,0.9,0.2,1.4,0.3C1821.8,1090.7,1800.9,1119.5,1785.2,1152z\"\n />\n <path\n style={{\n opacity: 0.5,\n fill: '#FFFFFF',\n }}\n d=\"M1839.4,1065.2c-1.1,0.4-2.2,0.8-3.2,1.2c-1,0.4-2,0.9-3,1.5c-1.7,1-3.3,2.1-4.8,3.2 c-1.7,1.2-3.3,2.5-4.9,3.9c-1.7,1.5-3.4,2.9-5,4.5c-2,1.9-3.8,3.9-5.7,5.9c-1,1.1-2.1,2.2-3,3.4c-1.2,1.4-2.3,2.8-3.5,4.2 c-1,1.2-1.9,2.3-2.8,3.5c-1.2,1.6-2.4,3.2-3.6,4.8c-1.3,1.8-2.6,3.6-3.9,5.4c-1.1,1.5-2.1,3-3.1,4.5c-1.4,2.1-2.9,4.2-4.3,6.4 c-1.1,1.8-2.3,3.5-3.4,5.3c-0.2,0.4-0.3,0.3-0.6,0c-1.1-1.2-2.3-2.4-3.4-3.5c-0.8-0.8-1.7-1.6-2.6-2.4c-1.1-1-2.2-2.1-3.4-3 c-1.9-1.4-3.8-2.8-5.8-4.1c-1.3-0.8-2.7-1.5-4.2-2.1c-0.7-0.3-1.4-0.5-2.1-0.8c-0.9-0.3-1.9-0.7-2.9-0.7c-0.3-0.1-0.6-0.1-0.9-0.2 c-0.1,0-0.1,0-0.2,0c-0.4,0-0.8-0.1-1.1-0.1c-0.7,0-1.4,0-2,0c-0.5,0-0.9,0.1-1.4,0.1c-0.7,0.1-1.5,0.2-2.2,0.3 c-0.2,0-0.5,0.1-0.7,0.1c-1.1,0.2-2.1,0.5-3.1,1.1c-0.3,0.1-0.4,0.2,0,0.4c0.7,0.4,1.3,0.9,1.9,1.3c2,1.3,3.9,2.6,5.6,4.1 c2,1.7,4,3.3,5.8,5.1c2,1.9,3.9,4,5.8,6.1c1,1.1,1.9,2.3,2.9,3.4c1,1.2,2,2.4,2.9,3.7c1.3,1.8,2.6,3.6,3.7,5.4 c1.4,2.2,2.8,4.5,4.1,6.8c1.2,2.2,2.3,4.5,3.4,6.8c0.2,0.4,0.4,0.8,0.6,1.3c15.8-32.5,36.6-61.3,61.6-87.2 c-0.4-0.1-0.9-0.2-1.4-0.3C1843.4,1064.5,1841.4,1064.4,1839.4,1065.2z\"\n />\n <path\n style={{\n opacity: 0.4,\n fill: '#FFFFFF',\n }}\n d=\"M1799.8,1016.6c-49.8,0-90.3,40.5-90.3,90.3c0,49.8,40.5,90.3,90.3,90.3 c49.8,0,90.3-40.5,90.3-90.3C1890.1,1057.1,1849.6,1016.6,1799.8,1016.6z M1799.8,1188.6c-45,0-81.7-36.6-81.7-81.7 c0-45,36.6-81.7,81.7-81.7c45,0,81.7,36.6,81.7,81.7C1881.5,1152,1844.8,1188.6,1799.8,1188.6z\"\n />\n <path\n style={{\n opacity: 0.2,\n fill: '#FFFFFF',\n }}\n d=\"M78.4,76.6v349.4c3.3-0.5,6.5-0.9,9.9-1.2c13-1.2,26.5-1.3,40.3,0.2 c4.8,0.5,9.5,1.3,14.1,2.2c4.6,0.9,9.1,1.9,13.4,3.1c2.2,0.6,4.4,1.2,6.5,1.9c4.3,1.3,8.5,2.8,12.6,4.4c7.7,3,15.2,6.4,22.4,10.1 c2.4,1.2,4.8,2.5,7.2,3.8c3.8,2.1,7.5,4.2,11.2,6.5c5.5,3.3,10.9,6.8,16.3,10.4c3.6,2.4,7.1,4.8,10.6,7.2c1.7,1.2,3.5,2.4,5.2,3.7 c5.2,3.7,10.4,7.4,15.6,11.1c3.4,2.5,6.9,4.9,10.3,7.4c6.9,4.9,13.8,9.7,20.8,14.2c3.5,2.3,7,4.5,10.6,6.7c1.8,1.1,3.6,2.1,5.4,3.2 c25.6,14.8,58.3,28.8,97.3,27.7V76.6H78.4z\"\n />\n <path\n style={{\n opacity: 0.02,\n fill: '#241F20',\n }}\n d=\"M310.6,520.8c-1.8-1-3.6-2.1-5.4-3.2c-3.6-2.2-7.1-4.4-10.6-6.7 c-7-4.6-13.9-9.4-20.8-14.2c-3.4-2.4-6.9-4.9-10.3-7.4c-5.2-3.7-10.3-7.4-15.6-11.1c-1.7-1.2-3.5-2.5-5.2-3.7 c-3.5-2.4-7-4.9-10.6-7.2c-5.3-3.6-10.7-7-16.3-10.4c-3.7-2.2-7.4-4.4-11.2-6.5c-2.4-1.3-4.7-2.6-7.2-3.8 c-7.2-3.7-14.7-7.1-22.4-10.1c-4.1-1.6-8.3-3-12.6-4.4c-2.1-0.7-4.3-1.3-6.5-1.9c-4.4-1.2-8.9-2.2-13.4-3.1 c-4.6-0.9-9.3-1.6-14.1-2.2c-13.8-1.6-27.3-1.5-40.3-0.2c-3.3,0.3-6.6,0.7-9.9,1.2v135c5.7,1,11.7,2.3,17.9,3.9 c4.9,1.3,9.9,2.7,15,4.4c7.7,2.5,15.7,5.5,23.9,9.1c5.5,2.4,11.1,5,16.8,7.9c8.6,4.3,17.4,9.3,26.5,14.9c9,5.6,18.3,11.9,27.8,19 c2,1.5,4.1,3.1,6.2,4.7c2.1,1.6,4.1,3.2,6.2,4.9c7.9,6.4,15.6,12.3,23.1,17.7c2.5,1.8,5,3.6,7.4,5.3c7.4,5.2,14.5,9.9,21.5,14.3 c4.7,2.9,9.2,5.6,13.7,8.2c9,5.1,17.7,9.6,26.1,13.4c7.4,3.4,14.5,6.2,21.4,8.7c6.9,2.4,13.7,4.5,20.2,6.1c1.9,0.5,3.7,0.9,5.6,1.3 c5.5,1.2,10.9,2.1,16.2,2.8c1.8,0.2,3.5,0.4,5.2,0.6c5.2,0.5,10.3,0.8,15.2,0.8c4.6,0,9.2-0.1,13.6-0.5V548.5 C368.9,549.6,336.2,535.6,310.6,520.8z\"\n />\n <path\n style={{\n opacity: 0.2,\n fill: '#241F20',\n }}\n d=\"M394.3,708.9c-5,0-10-0.3-15.2-0.8c-1.7-0.2-3.5-0.4-5.2-0.6 c-5.3-0.7-10.7-1.6-16.2-2.8c-1.8-0.4-3.7-0.8-5.6-1.3c-6.5-1.6-13.3-3.6-20.2-6.1c-6.9-2.4-14.1-5.3-21.4-8.7 c-8.4-3.8-17.1-8.3-26.1-13.4c-4.5-2.6-9.1-5.3-13.7-8.2c-7-4.4-14.2-9.1-21.5-14.3c-2.5-1.7-4.9-3.5-7.4-5.3 c-7.5-5.5-15.2-11.4-23.1-17.7c-2.1-1.7-4.2-3.3-6.2-4.9c-2.1-1.6-4.1-3.2-6.2-4.7c-9.4-7.1-18.7-13.4-27.8-19 c-9-5.6-17.9-10.6-26.5-14.9c-5.7-2.9-11.3-5.5-16.8-7.9c-8.3-3.6-16.2-6.5-23.9-9.1c-5.1-1.7-10.1-3.1-15-4.4 c-6.2-1.6-12.2-2.9-17.9-3.9v832.4h329.5V708.4C403.4,708.8,398.9,708.9,394.3,708.9z\"\n />\n </g>\n <g id=\"Course_Name\">\n <g>\n <rect\n x={472.9}\n y={1198.7}\n style={{\n fill: '#231F20',\n }}\n width={1134.5}\n height={2.1}\n />\n </g>\n </g>\n <g id=\"Learner_Name\">\n <g>\n <rect\n x={472.9}\n y={1082.3}\n style={{\n fill: '#231F20',\n }}\n width={713.4}\n height={2.1}\n />\n </g>\n </g>\n <g id=\"Date\">\n <rect\n x={1231.6}\n y={1082.3}\n style={{\n fill: '#231F20',\n }}\n width={375.8}\n height={2.1}\n />\n </g>\n </svg>\n );\n};\n","/** @jsx jsx */\n\nimport { jsx } from '@emotion/core';\n\nexport const Certificate_3_SVG = props => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 2084 1471.6\"\n xmlSpace=\"preserve\"\n >\n <g id=\"Change_colour\">\n <polygon\n style={{\n fill: '#00CBC3',\n }}\n points=\"77.1,60.3 60.5,60.3 60.5,76.9 60.5,338.9 60.5,638.9 60.5,912.8 60.5,1092 60.5,1130.7 60.5,1394.2 60.5,1410.9 77.1,1410.9 890.9,1410.9 926.7,1410.9 947.7,1410.9 1137,1410.9 1158.1,1410.9 1193.8,1410.9 2006.5,1410.9 2023.2,1410.9 2023.2,1394.2 2023.2,1130.7 2023.2,1094.6 2023.2,915.5 2023.2,643 2023.2,344.6 2023.2,60.3 \"\n />\n </g>\n <g id=\"Foreground\">\n <path\n style={{\n opacity: 0.9,\n fill: '#FFFFFF',\n }}\n d=\"M77.1,338.9C77.1,338.9,77.1,338.9,77.1,338.9c10.3,53.9,90.8,436.4,338.3,729.7 c7.7-0.4,15.5-0.8,23.3-1.2c6.6-0.3,13.2-0.6,19.9-1c0.5,0,1,0,1.4-0.1c7.7-0.4,15.4-0.7,23.1-1.1c30.7-1.4,61.9-2.6,93.3-3.8 c6.5-0.2,13.1-0.5,19.7-0.7c98-3.4,199.3-5.7,303.3-6.7c1.1,0,9.1-0.1,17.1-0.1c0.2-1.7,0.1-3.4-0.3-5.1c-0.1-0.3-0.1-0.5-0.2-0.8 l-1.2-4.3c-2.4-8.7,2.8-17.7,11.5-19.9l4.3-1.1c6.7-1.7,11.5-7.5,12-14.4l0.3-4.4c0.7-9,8.6-15.7,17.6-14.8l4.4,0.4 c6.8,0.7,13.4-3.1,16.2-9.4l1.8-4.1c3.7-8.2,13.4-11.8,21.6-7.9l4,1.9c6.2,3,13.7,1.7,18.5-3.2l3.1-3.2c6.3-6.5,16.7-6.5,23,0 l3.1,3.2c4.8,4.9,12.2,6.2,18.5,3.2l4-1.9c8.2-3.9,17.9-0.4,21.6,7.9l1.8,4.1c2.9,6.3,9.4,10.1,16.2,9.4l4.4-0.4 c9-0.9,16.9,5.8,17.6,14.8l0.4,4.4c0.5,6.9,5.4,12.7,12,14.4l4.3,1.1c8.8,2.2,13.9,11.2,11.5,19.9l-1.2,4.3 c-0.2,0.6-0.2,1.2-0.3,1.7c-0.2,1.5-0.3,3-0.1,4.4c4,0,8.6,0.1,13.2,0.2c171,2.6,334.8,7.4,487.6,15.7c0,0,0,0,0,0 c241.2-284.7,324.3-654.4,338.5-725.4V76.9H77.1V338.9z\"\n />\n <g>\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M515.5,415.2c6.2-10.9,14.7-19.3,25.4-25.4c10.7-6.1,22.8-9.1,36.1-9.1c15.6,0,29.3,4,41,12 c11.7,8,19.9,19.1,24.6,33.2h-32.2c-3.2-6.7-7.7-11.7-13.5-15c-5.8-3.3-12.5-5-20.1-5c-8.1,0-15.4,1.9-21.7,5.7 c-6.3,3.8-11.3,9.2-14.8,16.1c-3.5,6.9-5.3,15.1-5.3,24.4c0,9.2,1.8,17.3,5.3,24.3c3.5,7,8.5,12.4,14.8,16.2 c6.3,3.8,13.6,5.7,21.7,5.7c7.6,0,14.3-1.7,20.1-5.1c5.8-3.4,10.3-8.4,13.5-15.1h32.2c-4.7,14.3-12.8,25.4-24.5,33.3 c-11.7,7.9-25.4,11.9-41.1,11.9c-13.3,0-25.4-3-36.1-9.1c-10.7-6.1-19.2-14.5-25.4-25.3c-6.2-10.8-9.3-23.1-9.3-36.8 C506.2,438.4,509.3,426.1,515.5,415.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M770.2,475.2h-81.1c0.7,8,3.5,14.3,8.4,18.8c4.9,4.5,11,6.8,18.2,6.8c10.4,0,17.8-4.5,22.2-13.4 h30.2c-3.2,10.7-9.3,19.4-18.4,26.3c-9.1,6.9-20.2,10.3-33.4,10.3c-10.7,0-20.2-2.4-28.7-7.1c-8.5-4.7-15.1-11.4-19.8-20.1 c-4.7-8.7-7.1-18.7-7.1-30c0-11.5,2.3-21.5,7-30.2c4.7-8.7,11.2-15.3,19.6-20c8.4-4.7,18.1-7,29-7c10.5,0,20,2.3,28.3,6.8 c8.3,4.5,14.8,11,19.4,19.3c4.6,8.3,6.9,17.9,6.9,28.7C771,468.4,770.7,472,770.2,475.2z M741.9,456.3c-0.1-7.2-2.7-13-7.8-17.3 c-5.1-4.3-11.3-6.5-18.6-6.5c-6.9,0-12.8,2.1-17.5,6.3c-4.7,4.2-7.6,10-8.7,17.5H741.9z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M834.7,414.7c5.8-3.3,12.4-5,19.9-5v29.4h-7.4c-8.8,0-15.4,2.1-19.9,6.2 c-4.5,4.1-6.7,11.3-6.7,21.6v55.2h-28V411.3h28v17.2C824.2,422.7,828.9,418.1,834.7,414.7z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M907.2,434.3V488c0,3.7,0.9,6.4,2.7,8.1c1.8,1.7,4.8,2.5,9.1,2.5h13v23.6h-17.6 c-23.6,0-35.4-11.5-35.4-34.4v-53.4h-13.2v-23H879v-27.4h28.2v27.4h24.8v23H907.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M955.4,393.4c-3.3-3.1-4.9-7-4.9-11.7s1.6-8.6,4.9-11.7c3.3-3.1,7.4-4.7,12.3-4.7 c4.9,0,9,1.6,12.3,4.7c3.3,3.1,4.9,7,4.9,11.7s-1.6,8.6-4.9,11.7c-3.3,3.1-7.4,4.7-12.3,4.7C962.7,398.1,958.6,396.5,955.4,393.4z M981.5,411.3v110.9h-28V411.3H981.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1061.1,434.3h-19.4v87.9h-28.4v-87.9h-12.6v-23h12.6v-5.6c0-13.6,3.9-23.6,11.6-30 c7.7-6.4,19.4-9.4,35-9v23.6c-6.8-0.1-11.5,1-14.2,3.4c-2.7,2.4-4,6.7-4,13v4.6h19.4V434.3z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1082.5,393.4c-3.3-3.1-4.9-7-4.9-11.7s1.6-8.6,4.9-11.7c3.3-3.1,7.4-4.7,12.3-4.7 c4.9,0,9,1.6,12.3,4.7c3.3,3.1,4.9,7,4.9,11.7s-1.6,8.6-4.9,11.7c-3.3,3.1-7.4,4.7-12.3,4.7 C1089.8,398.1,1085.7,396.5,1082.5,393.4z M1108.6,411.3v110.9h-28V411.3H1108.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1137.2,436.6c4.7-8.6,11.1-15.3,19.4-20c8.3-4.7,17.7-7.1,28.4-7.1c13.7,0,25.1,3.4,34.1,10.3 c9,6.9,15,16.5,18.1,28.9H1207c-1.6-4.8-4.3-8.6-8.1-11.3c-3.8-2.7-8.5-4.1-14.1-4.1c-8,0-14.3,2.9-19,8.7c-4.7,5.8-7,14-7,24.7 c0,10.5,2.3,18.7,7,24.5c4.7,5.8,11,8.7,19,8.7c11.3,0,18.7-5.1,22.2-15.2h30.2c-3.1,12-9.1,21.5-18.2,28.6 c-9.1,7.1-20.4,10.6-34,10.6c-10.7,0-20.1-2.4-28.4-7.1c-8.3-4.7-14.7-11.4-19.4-20c-4.7-8.6-7-18.6-7-30.1 C1130.2,455.3,1132.5,445.2,1137.2,436.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1258.6,436.5c4.5-8.7,10.5-15.3,18.2-20c7.7-4.7,16.2-7,25.7-7c8.3,0,15.5,1.7,21.7,5 c6.2,3.3,11.2,7.5,14.9,12.6v-15.8h28.2v110.9h-28.2V506c-3.6,5.2-8.6,9.5-14.9,12.9c-6.3,3.4-13.6,5.1-21.9,5.1 c-9.3,0-17.8-2.4-25.5-7.2c-7.7-4.8-13.7-11.6-18.2-20.3c-4.5-8.7-6.7-18.8-6.7-30.1C1251.9,455.1,1254.1,445.2,1258.6,436.5z M1335.1,449.2c-2.7-4.9-6.3-8.6-10.8-11.2c-4.5-2.6-9.4-3.9-14.6-3.9c-5.2,0-10,1.3-14.4,3.8c-4.4,2.5-8,6.2-10.7,11.1 c-2.7,4.9-4.1,10.6-4.1,17.3c0,6.7,1.4,12.5,4.1,17.5c2.7,5,6.3,8.8,10.8,11.5c4.5,2.7,9.2,4,14.3,4c5.2,0,10.1-1.3,14.6-3.9 c4.5-2.6,8.1-6.3,10.8-11.2c2.7-4.9,4-10.7,4-17.5C1339.1,459.9,1337.8,454.1,1335.1,449.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1428.6,434.3V488c0,3.7,0.9,6.4,2.7,8.1c1.8,1.7,4.8,2.5,9.1,2.5h13v23.6h-17.6 c-23.6,0-35.4-11.5-35.4-34.4v-53.4h-13.2v-23h13.2v-27.4h28.2v27.4h24.8v23H1428.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1577.1,475.2H1496c0.7,8,3.5,14.3,8.4,18.8c4.9,4.5,11,6.8,18.2,6.8c10.4,0,17.8-4.5,22.2-13.4 h30.2c-3.2,10.7-9.3,19.4-18.4,26.3c-9.1,6.9-20.2,10.3-33.4,10.3c-10.7,0-20.2-2.4-28.7-7.1c-8.5-4.7-15.1-11.4-19.8-20.1 c-4.7-8.7-7.1-18.7-7.1-30c0-11.5,2.3-21.5,7-30.2c4.7-8.7,11.2-15.3,19.6-20c8.4-4.7,18.1-7,29-7c10.5,0,20,2.3,28.3,6.8 c8.3,4.5,14.8,11,19.4,19.3c4.6,8.3,6.9,17.9,6.9,28.7C1577.9,468.4,1577.6,472,1577.1,475.2z M1548.8,456.3 c-0.1-7.2-2.7-13-7.8-17.3c-5.1-4.3-11.3-6.5-18.6-6.5c-6.9,0-12.8,2.1-17.5,6.3c-4.7,4.2-7.6,10-8.7,17.5H1548.8z\"\n />\n </g>\n <g>\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M796.9,643.3c-3.3-1.9-6-4.5-7.9-7.9c-1.9-3.4-2.9-7.2-2.9-11.5c0-4.3,1-8.1,2.9-11.5 c1.9-3.4,4.6-6,7.9-7.9c3.3-1.9,7-2.8,11.1-2.8c4.1,0,7.8,0.9,11.1,2.8c3.3,1.9,6,4.5,7.9,7.9c1.9,3.4,2.9,7.2,2.9,11.5 c0,4.3-1,8.1-2.9,11.5c-1.9,3.4-4.5,6-7.9,7.9c-3.3,1.9-7,2.8-11.1,2.8C803.9,646.2,800.3,645.2,796.9,643.3z M816.2,639.1 c2.4-1.4,4.4-3.4,5.8-6.1c1.4-2.6,2.1-5.7,2.1-9.1c0-3.5-0.7-6.6-2.1-9.2c-1.4-2.6-3.3-4.6-5.7-6c-2.4-1.4-5.2-2.1-8.3-2.1 c-3.1,0-5.8,0.7-8.3,2.1c-2.4,1.4-4.3,3.4-5.7,6c-1.4,2.6-2.1,5.7-2.1,9.2c0,3.5,0.7,6.5,2.1,9.1c1.4,2.6,3.3,4.6,5.8,6.1 s5.2,2.1,8.2,2.1S813.8,640.5,816.2,639.1z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M852.6,616.2h-7.2v29.6h-5.7v-29.6h-4.4v-4.7h4.4V609c0-3.8,1-6.6,3-8.4c2-1.8,5.2-2.7,9.5-2.7v4.8 c-2.5,0-4.3,0.5-5.3,1.5c-1,1-1.5,2.6-1.5,4.8v2.4h7.2V616.2z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M904.2,636h-19l-3.5,9.7h-6l15.8-43.3h6.6l15.7,43.3h-6L904.2,636z M902.5,631.4l-7.9-22l-7.9,22 H902.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M921.8,619.3c1.4-2.6,3.4-4.7,5.9-6.2c2.5-1.5,5.4-2.2,8.7-2.2c4.2,0,7.7,1,10.4,3.1 c2.7,2,4.5,4.9,5.4,8.5h-6.1c-0.6-2.1-1.7-3.7-3.4-4.9c-1.7-1.2-3.8-1.8-6.3-1.8c-3.3,0-5.9,1.1-7.9,3.3c-2,2.2-3,5.4-3,9.5 c0,4.1,1,7.3,3,9.6c2,2.3,4.6,3.4,7.9,3.4c2.5,0,4.6-0.6,6.3-1.8c1.7-1.2,2.8-2.8,3.4-5h6.1c-0.9,3.5-2.8,6.3-5.5,8.4 c-2.8,2.1-6.2,3.2-10.3,3.2c-3.3,0-6.1-0.7-8.7-2.2c-2.5-1.5-4.5-3.5-5.9-6.2c-1.4-2.7-2.1-5.8-2.1-9.4 C919.7,625,920.4,621.9,921.8,619.3z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M985,612.5c2.1,1.1,3.7,2.8,4.9,5c1.2,2.2,1.8,4.9,1.8,8.1v20.2h-5.6v-19.4c0-3.4-0.9-6-2.6-7.9 c-1.7-1.8-4-2.7-7-2.7c-3,0-5.4,0.9-7.2,2.8c-1.8,1.9-2.7,4.6-2.7,8.2v18.9H961v-46.3h5.7v16.9c1.1-1.8,2.7-3.1,4.7-4.1 c2-1,4.2-1.4,6.7-1.4C980.6,610.8,983,611.4,985,612.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1002.5,604.8c-0.8-0.7-1.1-1.7-1.1-2.8c0-1.1,0.4-2,1.1-2.8c0.7-0.8,1.7-1.1,2.8-1.1 c1,0,1.9,0.4,2.7,1.1c0.7,0.8,1.1,1.7,1.1,2.8c0,1.1-0.4,2-1.1,2.8c-0.7,0.8-1.6,1.1-2.7,1.1 C1004.2,605.9,1003.2,605.5,1002.5,604.8z M1008,611.5v34.3h-5.7v-34.3H1008z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1050,630.7h-27.4c0.2,3.4,1.4,6,3.5,7.9c2.1,1.9,4.7,2.8,7.7,2.8c2.5,0,4.5-0.6,6.2-1.7 c1.6-1.1,2.8-2.7,3.5-4.6h6.1c-0.9,3.3-2.8,6-5.5,8s-6.2,3.1-10.3,3.1c-3.3,0-6.2-0.7-8.7-2.2c-2.6-1.5-4.6-3.5-6-6.2 c-1.5-2.7-2.2-5.8-2.2-9.4c0-3.5,0.7-6.6,2.1-9.3c1.4-2.7,3.4-4.7,6-6.2c2.6-1.4,5.5-2.2,8.8-2.2c3.3,0,6.1,0.7,8.6,2.1 c2.5,1.4,4.4,3.4,5.8,5.8c1.4,2.5,2,5.3,2,8.4C1050.2,628.4,1050.1,629.5,1050,630.7z M1042.9,620.5c-1-1.6-2.3-2.8-3.9-3.6 c-1.6-0.8-3.5-1.2-5.5-1.2c-2.9,0-5.3,0.9-7.3,2.8c-2,1.8-3.2,4.4-3.5,7.6h21.6C1044.3,623.9,1043.9,622.1,1042.9,620.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1071.7,640.5l10.6-29h6.1l-13.4,34.3h-6.6l-13.4-34.3h6.1L1071.7,640.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1126.4,630.7H1099c0.2,3.4,1.4,6,3.5,7.9c2.1,1.9,4.7,2.8,7.7,2.8c2.5,0,4.5-0.6,6.2-1.7 c1.6-1.1,2.8-2.7,3.5-4.6h6.1c-0.9,3.3-2.8,6-5.5,8s-6.2,3.1-10.3,3.1c-3.3,0-6.2-0.7-8.7-2.2c-2.6-1.5-4.6-3.5-6-6.2 c-1.5-2.7-2.2-5.8-2.2-9.4c0-3.5,0.7-6.6,2.1-9.3c1.4-2.7,3.4-4.7,6-6.2c2.6-1.4,5.5-2.2,8.8-2.2c3.3,0,6.1,0.7,8.6,2.1 c2.5,1.4,4.4,3.4,5.8,5.8c1.4,2.5,2,5.3,2,8.4C1126.6,628.4,1126.5,629.5,1126.4,630.7z M1119.3,620.5c-1-1.6-2.3-2.8-3.9-3.6 c-1.6-0.8-3.5-1.2-5.5-1.2c-2.9,0-5.3,0.9-7.3,2.8c-2,1.8-3.2,4.4-3.5,7.6h21.6C1120.7,623.9,1120.2,622.1,1119.3,620.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1183.7,612.5c2.1,1.1,3.7,2.8,4.9,5c1.2,2.2,1.8,4.9,1.8,8.1v20.2h-5.6v-19.4c0-3.4-0.8-6-2.5-7.9 c-1.7-1.8-4-2.7-6.8-2.7c-3,0-5.3,0.9-7.1,2.8c-1.8,1.9-2.6,4.6-2.6,8.2v18.9h-5.6v-19.4c0-3.4-0.8-6-2.5-7.9 c-1.7-1.8-4-2.7-6.8-2.7c-3,0-5.3,0.9-7.1,2.8c-1.8,1.9-2.6,4.6-2.6,8.2v18.9h-5.7v-34.3h5.7v4.9c1.1-1.8,2.6-3.2,4.5-4.1 c1.9-1,4-1.4,6.3-1.4c2.9,0,5.4,0.6,7.6,1.9c2.2,1.3,3.9,3.2,4.9,5.7c1-2.4,2.5-4.3,4.8-5.6c2.2-1.3,4.7-2,7.4-2 C1179.2,610.8,1181.6,611.4,1183.7,612.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1232.1,630.7h-27.4c0.2,3.4,1.4,6,3.5,7.9c2.1,1.9,4.7,2.8,7.7,2.8c2.5,0,4.5-0.6,6.2-1.7 c1.6-1.1,2.8-2.7,3.5-4.6h6.1c-0.9,3.3-2.8,6-5.5,8s-6.2,3.1-10.3,3.1c-3.3,0-6.2-0.7-8.7-2.2c-2.6-1.5-4.6-3.5-6-6.2 s-2.2-5.8-2.2-9.4c0-3.5,0.7-6.6,2.1-9.3c1.4-2.7,3.4-4.7,6-6.2c2.6-1.4,5.5-2.2,8.8-2.2c3.3,0,6.1,0.7,8.6,2.1 c2.5,1.4,4.4,3.4,5.8,5.8c1.4,2.5,2,5.3,2,8.4C1232.3,628.4,1232.2,629.5,1232.1,630.7z M1224.9,620.5c-1-1.6-2.3-2.8-3.9-3.6 c-1.6-0.8-3.5-1.2-5.5-1.2c-2.9,0-5.3,0.9-7.3,2.8c-2,1.8-3.2,4.4-3.5,7.6h21.6C1226.4,623.9,1225.9,622.1,1224.9,620.5z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1267.8,614.6c2.6,2.5,3.9,6.2,3.9,10.9v20.2h-5.6v-19.4c0-3.4-0.9-6-2.6-7.9c-1.7-1.8-4-2.7-7-2.7 c-3,0-5.4,0.9-7.2,2.8c-1.8,1.9-2.7,4.6-2.7,8.2v18.9h-5.7v-34.3h5.7v4.9c1.1-1.8,2.7-3.1,4.6-4.1c1.9-1,4.1-1.4,6.4-1.4 C1261.9,610.8,1265.3,612.1,1267.8,614.6z\"\n />\n <path\n style={{\n fill: '#241F20',\n }}\n d=\"M1289.2,616.2v20.2c0,1.7,0.4,2.8,1.1,3.5c0.7,0.7,1.9,1,3.7,1h4.2v4.8h-5.1 c-3.2,0-5.5-0.7-7.1-2.2c-1.6-1.5-2.4-3.9-2.4-7.2v-20.2h-4.4v-4.7h4.4v-8.6h5.7v8.6h8.9v4.7H1289.2z\"\n />\n </g>\n <path\n style={{\n fill: 'none',\n }}\n d=\"M453.1,1111c12.7,13.6,25.8,26.9,39.2,40C478.9,1138,465.8,1124.6,453.1,1111z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M1497,1232.6c-14.8,11.1-29.9,21.8-45.5,32.1C1467.1,1254.4,1482.3,1243.7,1497,1232.6z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M572.9,1221.2c3.5,2.8,7.1,5.5,10.7,8.2C580,1226.6,576.4,1223.9,572.9,1221.2z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M590.9,1235c6.1,4.5,12.2,9,18.5,13.4C603.2,1244,597,1239.5,590.9,1235z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M1542.2,1196.6c-10,8.4-20.1,16.7-30.5,24.8C1522.1,1213.3,1532.2,1205,1542.2,1196.6z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M561.3,1212c-1.3-1-2.6-2.1-3.9-3.1C558.7,1210,560.1,1211,561.3,1212z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M1572.4,1169.9c12.1-11.1,23.8-22.4,35.2-34c-6,6.1-12.1,12.1-18.3,18.1 C1583.7,1159.4,1578.1,1164.7,1572.4,1169.9z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M1629.1,1113.7c-5.9,6.3-11.9,12.5-18,18.7C1617.2,1126.2,1623.2,1120,1629.1,1113.7z\"\n />\n <path\n style={{\n fill: 'none',\n }}\n d=\"M483.2,1065.3c30.2-1.3,61.4-2.6,93.3-3.8C545.1,1062.7,513.9,1063.9,483.2,1065.3z\"\n />\n <path\n style={{\n opacity: 0.45,\n fill: '#FFFFFF',\n }}\n d=\"M1888,1084.5c76.9-80.5,110-149.4,118.5-169V643c-12.2,43.9-75.3,246.5-246.1,432.5 C1804,1078.2,1846.6,1081.2,1888,1084.5z\"\n />\n <path\n style={{\n opacity: 0.55,\n fill: '#FFFFFF',\n }}\n d=\"M2006.5,1094.6V915.5c-8.5,19.6-41.6,88.5-118.5,169 C1928.6,1087.6,1968.1,1091,2006.5,1094.6z\"\n />\n <path\n style={{\n opacity: 0.35,\n fill: '#FFFFFF',\n }}\n d=\"M415.5,1068.6C167.9,775.3,87.5,392.8,77.1,338.9v300v0c8.9,33.4,70,242.7,245.6,434.9 C353.2,1071.9,384.1,1070.2,415.5,1068.6z\"\n />\n <path\n style={{\n opacity: 0.45,\n fill: '#FFFFFF',\n }}\n d=\"M322.8,1073.7C147.2,881.6,86.1,672.3,77.1,638.9v274v0 c6.3,15.1,38.3,85.9,117.6,169.5C236.4,1079.3,279.1,1076.4,322.8,1073.7z\"\n />\n <path\n style={{\n opacity: 0.55,\n fill: '#FFFFFF',\n }}\n d=\"M77.1,912.8V1092c38.1-3.4,77.4-6.6,117.6-9.6C115.4,998.7,83.4,927.9,77.1,912.8z\"\n />\n <path\n style={{\n opacity: 0.35,\n fill: '#FFFFFF',\n }}\n d=\"M1760.4,1075.5c170.7-186,233.9-388.6,246.1-432.5V344.6 c-14.2,71-97.3,440.7-338.5,725.4C1699.3,1071.7,1730.1,1073.5,1760.4,1075.5z\"\n />\n <path\n style={{\n opacity: 0.3,\n fill: '#FFFFFF',\n }}\n d=\"M1888,1084.5c-41.5-3.2-84-6.2-127.6-9c-130,141.7-322.5,273.7-602.3,318.7h35.7 C1563.3,1348.5,1773.9,1203.9,1888,1084.5z\"\n />\n <path\n style={{\n opacity: 0.4,\n fill: '#FFFFFF',\n }}\n d=\"M1193.8,1394.2h812.7v-263.5v-36.1c-38.4-3.6-77.9-7-118.5-10.1 C1773.9,1203.9,1563.3,1348.5,1193.8,1394.2z\"\n />\n <path\n style={{\n opacity: 0.2,\n fill: '#FFFFFF',\n }}\n d=\"M918.4,1387.8c-7.9-1.8-15.7-3.8-23.5-5.8c-1.5-0.4-2.9-0.8-4.4-1.2 c-8-2.1-15.9-4.4-23.8-6.7c-0.2-0.1-0.4-0.1-0.6-0.2c-7.8-2.3-15.5-4.8-23.1-7.3c-1.2-0.4-2.5-0.8-3.8-1.2 c-7.5-2.5-14.9-5.1-22.3-7.8c-1.3-0.5-2.6-1-3.9-1.4c-7.6-2.8-15.1-5.7-22.5-8.7c-0.2-0.1-0.4-0.2-0.6-0.3c-7.4-3-14.8-6.1-22-9.3 c-0.9-0.4-1.9-0.8-2.8-1.2c-7.2-3.2-14.3-6.4-21.4-9.8c-1.1-0.5-2.1-1-3.2-1.5c-7.2-3.4-14.4-7-21.4-10.6c-0.1-0.1-0.2-0.1-0.4-0.2 c-7.2-3.7-14.3-7.5-21.3-11.3c-0.6-0.3-1.2-0.6-1.8-1c-6.9-3.8-13.7-7.7-20.5-11.7c-0.8-0.5-1.6-0.9-2.4-1.4 c-6.9-4.1-13.7-8.2-20.5-12.4c0,0,0,0,0,0c-7-4.4-13.9-8.8-20.7-13.4c-0.3-0.2-0.5-0.3-0.8-0.5c-6.6-4.4-13.2-8.9-19.6-13.5 c-0.6-0.4-1.2-0.8-1.8-1.2c-6.2-4.4-12.4-8.9-18.5-13.4c-2.5-1.8-4.9-3.7-7.4-5.6c-3.6-2.7-7.2-5.4-10.7-8.2 c-0.8-0.7-1.7-1.3-2.6-2c-3-2.4-6-4.8-8.9-7.2c-1.3-1-2.6-2.1-3.9-3.1c-5.2-4.2-10.3-8.5-15.4-12.8c-1-0.8-2-1.7-3-2.5 c-3.5-3-7-6-10.4-9c-1.1-1-2.3-2-3.4-3c-4.3-3.8-8.6-7.7-12.9-11.6c-6.8-6.2-13.4-12.5-20-18.9c0,0,0,0,0,0c0,0,0,0,0,0 c-13.5-13-26.6-26.4-39.2-40c-0.2-0.2-0.4-0.5-0.7-0.7c-5.9-6.4-11.8-12.8-17.5-19.3c-1-1.1-1.9-2.2-2.9-3.2 c-5.6-6.4-11.2-12.8-16.6-19.2c0,0,0,0-0.1-0.1c-31.4,1.6-62.3,3.3-92.7,5.2c130,142.3,322.9,275.3,603.9,320.4h21.1 c-8.4-1.7-16.7-3.5-24.9-5.4C921.3,1388.5,919.9,1388.2,918.4,1387.8z\"\n />\n <path\n style={{\n opacity: 0.3,\n fill: '#FFFFFF',\n }}\n d=\"M322.8,1073.7c-43.7,2.6-86.4,5.5-128,8.6c113.7,119.8,324.6,265.9,696.2,311.8h35.7 C645.7,1349,452.8,1216.1,322.8,1073.7z\"\n />\n <path\n style={{\n opacity: 0.4,\n fill: '#FFFFFF',\n }}\n d=\"M194.8,1082.4c-40.2,3-79.5,6.2-117.6,9.6v38.7v263.5h813.8 C519.3,1348.3,308.4,1202.2,194.8,1082.4z\"\n />\n <path\n style={{\n opacity: 0.2,\n fill: '#FFFFFF',\n }}\n d=\"M1760.4,1075.5c-30.3-1.9-61.1-3.7-92.4-5.4c-5.6,6.6-11.4,13.2-17.1,19.8 c-0.9,1-1.7,2-2.6,3c-5.8,6.5-11.7,13-17.7,19.4c-0.5,0.5-1,1-1.5,1.6c-5.9,6.3-11.9,12.5-18,18.7c-1.2,1.2-2.3,2.3-3.5,3.5 c-11.4,11.5-23.2,22.9-35.2,34c-4.4,4.1-8.9,8.1-13.5,12.1c-1,0.9-2,1.8-3.1,2.7c-4,3.5-8.1,7.1-12.2,10.5c-0.5,0.4-1,0.9-1.5,1.3 c-9.9,8.4-20.1,16.7-30.5,24.8c0,0,0,0,0,0s0,0,0,0c-4.8,3.8-9.7,7.5-14.6,11.2c-14.8,11.1-29.9,21.8-45.5,32.1 c-0.2,0.1-0.4,0.3-0.7,0.4c-13.6,9-27.6,17.7-41.8,26c-0.3,0.2-0.5,0.3-0.8,0.5c-7,4.1-14,8-21.1,11.9c-0.6,0.3-1.1,0.6-1.7,0.9 c-14.2,7.7-28.7,15.1-43.5,22.1c-0.7,0.3-1.4,0.7-2.1,1c-7.1,3.4-14.4,6.6-21.7,9.8c-0.9,0.4-1.9,0.8-2.8,1.2 c-14.7,6.4-29.8,12.4-45.1,18.1c-1.1,0.4-2.2,0.8-3.3,1.2c-7.4,2.7-14.8,5.3-22.3,7.8c-1.3,0.4-2.6,0.8-3.9,1.3 c-7.7,2.5-15.5,5-23.4,7.4c0,0,0,0,0,0c-7.8,2.3-15.7,4.5-23.7,6.6c-1.4,0.4-2.8,0.8-4.3,1.1c-7.7,2-15.5,3.9-23.3,5.8 c-1.5,0.4-3,0.7-4.5,1c-8.1,1.9-16.3,3.6-24.6,5.3c0,0,0,0,0,0h21.1C1438,1349.2,1630.4,1217.1,1760.4,1075.5z\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: '#241F20',\n }}\n d=\"M1174,1065.6l3.7,2.5c7.4,5.1,9.2,15.3,4,22.6l-2.6,3.6c-4,5.6-4,13.1,0,18.7 l2.6,3.6c1.6,2.3,2.5,4.8,2.8,7.4c151.2,5,297.1,16.8,404.8,29.8c6.2-6,12.3-12,18.3-18.1c1.2-1.2,2.3-2.3,3.5-3.5 c6.1-6.2,12.1-12.4,18-18.7c0.5-0.5,1-1,1.5-1.6c6-6.4,11.9-12.9,17.7-19.4c0.9-1,1.7-2,2.6-3c5.8-6.5,11.5-13.1,17.1-19.8 c0,0,0,0,0,0c-152.9-8.3-316.7-13.1-487.6-15.7c-4.7-0.1-9.3-0.1-13.2-0.2C1167.7,1058.7,1170.1,1063,1174,1065.6z\"\n />\n <path\n style={{\n opacity: 0.05,\n fill: '#241F20',\n }}\n d=\"M432.1,1087.8c1,1.1,1.9,2.2,2.9,3.2c5.8,6.5,11.6,12.9,17.5,19.3 c0.2,0.2,0.4,0.5,0.7,0.7c12.7,13.6,25.8,26.9,39.2,40c0,0,0,0,0,0c109.2-12.9,238.2-23.9,406.9-27.9c0.4-2.2,1.3-4.4,2.7-6.4 l2.6-3.6c4-5.6,4-13.2,0-18.7l-2.6-3.6c-5.3-7.3-3.5-17.5,4-22.6l3.7-2.5c4-2.7,6.4-7.1,6.9-11.7c-7.9,0-15.9,0.1-17.1,0.1 c-103.9,1-205.3,3.3-303.3,6.7c-6.6,0.2-13.1,0.5-19.7,0.7c-31.9,1.2-63.2,2.5-93.3,3.8c-7.7,0.3-15.5,0.7-23.1,1.1 c-0.5,0-1,0-1.4,0.1c-6.7,0.3-13.3,0.6-19.9,1c-7.8,0.4-15.6,0.8-23.3,1.2c0,0,0,0,0.1,0.1C421,1075.1,426.5,1081.5,432.1,1087.8z\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: '#241F20',\n }}\n d=\"M1184.5,1124.2c0.7,5.8-1.7,11.7-6.8,15.2l-3.7,2.5c-5.7,3.9-8.3,10.9-6.4,17.6 l1.2,4.3c2.4,8.7-2.8,17.7-11.5,19.9l-4.3,1.1c-6.6,1.7-11.4,7.4-12,14.3c132.2,3.1,263,11.7,370.7,22.3c0,0,0,0,0,0 c10.3-8.1,20.5-16.4,30.5-24.8c0.5-0.4,1-0.9,1.5-1.3c4.1-3.5,8.2-7,12.2-10.5c1-0.9,2.1-1.8,3.1-2.7c4.5-4,9-8,13.5-12.1 c5.7-5.2,11.3-10.6,16.9-15.9C1481.6,1141,1335.8,1129.2,1184.5,1124.2z\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: '#241F20',\n }}\n d=\"M930.7,1184.8l-4.3-1.1c-8.7-2.2-13.9-11.2-11.5-19.9l1.2-4.3 c1.9-6.7-0.7-13.7-6.4-17.6l-3.7-2.5c-5.4-3.7-7.8-10.2-6.7-16.2c-168.7,3.9-297.7,14.9-406.9,27.9c0,0,0,0,0,0 c6.6,6.4,13.2,12.7,20,18.9c4.2,3.9,8.5,7.8,12.9,11.6c1.1,1,2.3,2,3.4,3c3.4,3,6.9,6.1,10.4,9c1,0.8,2,1.7,3,2.5 c5.1,4.3,10.2,8.6,15.4,12.8c1.3,1,2.6,2.1,3.9,3.1c3,2.4,5.9,4.8,8.9,7.2c102-10.2,222-18.1,372.3-20.5 C941.9,1192,937.2,1186.5,930.7,1184.8z\"\n />\n <path\n style={{\n opacity: 0.25,\n fill: '#241F20',\n }}\n d=\"M1161.7,1388.9c1.5-0.3,3-0.7,4.5-1c7.8-1.8,15.6-3.8,23.3-5.8 c1.4-0.4,2.9-0.8,4.3-1.1c8-2.1,15.9-4.3,23.7-6.6c0,0,0,0,0,0c7.9-2.3,15.7-4.8,23.4-7.4c1.3-0.4,2.6-0.8,3.9-1.3 c7.5-2.5,14.9-5.1,22.3-7.8c1.1-0.4,2.2-0.8,3.3-1.2c15.3-5.7,30.4-11.7,45.1-18.1c0.9-0.4,1.9-0.8,2.8-1.2 c7.3-3.2,14.5-6.5,21.7-9.8c0.7-0.3,1.4-0.7,2.1-1c14.8-7,29.3-14.4,43.5-22.1c0.6-0.3,1.1-0.6,1.7-0.9c7.1-3.9,14.1-7.9,21.1-11.9 c0.3-0.2,0.5-0.3,0.8-0.5c14.3-8.3,28.2-17,41.8-26c0.2-0.1,0.4-0.3,0.7-0.4c15.6-10.3,30.7-21,45.5-32.1 c4.9-3.7,9.8-7.4,14.6-11.2c0,0,0,0,0,0c-107.7-10.5-238.5-19.2-370.7-22.3c0,0,0,0.1,0,0.1l-0.4,4.4c-0.7,9-8.6,15.7-17.6,14.8 l-4.4-0.4c-1.7-0.2-3.3-0.1-4.9,0.2c1,4.3,2,8.6,3,12.9c3.8,16.9,7.7,33.7,11.6,50.6c1,4.3,1.9,8.7,3,13.5 c-11.1-4.4-21.4-8.5-31.7-12.7c-3.1-1.3-5.5-1.2-7.8,1.3c-3.6,4-7.6,7.6-11.4,11.4c-3.7,3.7-7.5,7.3-11.9,11.5 c-4.9-21.3-9.7-42.4-14.6-63.5l-0.5,0.5c-6.3,6.5-16.7,6.5-23,0l-1.2-1.3c-4.9,21.3-9.8,42.6-14.8,64.2c-4.4-4.3-8.2-7.9-11.9-11.5 c-3.8-3.8-7.8-7.4-11.4-11.4c-2.3-2.5-4.7-2.6-7.8-1.3c-10.3,4.2-20.6,8.3-31.7,12.7c1.1-4.8,2-9.1,3-13.5 c3.9-16.9,7.8-33.7,11.6-50.6c1-4.3,2-8.6,3-13c-1.3-0.2-2.6-0.3-4-0.1l-4.4,0.4c-9,0.9-16.9-5.8-17.6-14.8l-0.3-4.4 c0-0.2-0.1-0.4-0.1-0.5c-150.4,2.4-270.3,10.3-372.3,20.5c0.8,0.7,1.7,1.3,2.6,2c3.5,2.8,7.1,5.5,10.7,8.2c2.5,1.9,4.9,3.8,7.4,5.6 c6.1,4.5,12.2,9,18.5,13.4c0.6,0.4,1.2,0.8,1.8,1.2c6.5,4.6,13,9,19.6,13.5c0.3,0.2,0.5,0.3,0.8,0.5c6.8,4.5,13.7,9,20.7,13.4 c0,0,0,0,0,0c6.7,4.2,13.6,8.3,20.5,12.4c0.8,0.5,1.6,1,2.4,1.4c6.8,4,13.6,7.9,20.5,11.7c0.6,0.3,1.2,0.6,1.8,1 c7,3.9,14.1,7.6,21.3,11.3c0.1,0.1,0.2,0.1,0.4,0.2c7.1,3.6,14.2,7.1,21.4,10.6c1.1,0.5,2.1,1,3.2,1.5c7.1,3.3,14.2,6.6,21.4,9.8 c0.9,0.4,1.9,0.8,2.8,1.2c7.3,3.2,14.6,6.3,22,9.3c0.2,0.1,0.4,0.2,0.6,0.3c7.4,3,14.9,5.9,22.5,8.7c1.3,0.5,2.6,1,3.9,1.4 c7.4,2.7,14.8,5.3,22.3,7.8c1.2,0.4,2.5,0.8,3.8,1.2c7.6,2.5,15.3,5,23.1,7.3c0.2,0.1,0.4,0.1,0.6,0.2c7.8,2.3,15.8,4.6,23.8,6.7 c1.5,0.4,2.9,0.8,4.4,1.2c7.8,2,15.6,4,23.5,5.8c1.5,0.3,2.9,0.7,4.4,1c8.2,1.9,16.5,3.7,24.9,5.4H1137c0,0,0,0,0,0 C1145.3,1392.5,1153.5,1390.7,1161.7,1388.9z\"\n />\n <path\n style={{\n opacity: 0.97,\n fill: '#FFFFFF',\n }}\n d=\"M-0.4,0.4l-0.9,1471.5h2085.7l0.5-1472.5L-0.4,0.4z M2006.5,344.6V643v272.5v179.1 v36.1v263.5h-812.7h-35.7H1137H947.7h-21.1h-35.7H77.1v-263.5V1092V912.8v0v-274v0v-300c0,0,0,0,0,0v-262h1929.4V344.6z\"\n />\n <path\n style={{\n opacity: 0.75,\n fill: '#241F20',\n }}\n d=\"M1049,1222.4c1.6,7,3.2,13.9,4.8,20.9l0,0c4.8,21.1,9.7,42.2,14.6,63.5 c4.4-4.3,8.2-7.9,11.9-11.5c3.8-3.8,7.8-7.4,11.4-11.4c2.3-2.5,4.7-2.6,7.8-1.3c10.3,4.2,20.6,8.3,31.7,12.7c-1.1-4.8-2-9.1-3-13.5 c-3.9-16.9-7.8-33.7-11.6-50.6c-1-4.3-2-8.5-3-12.9c-1.3-5.7-2.6-11.4-3.9-17.1C1092.4,1213.4,1071.6,1221,1049,1222.4z\"\n />\n <path\n style={{\n opacity: 0.55,\n fill: '#241F20',\n }}\n d=\"M1049,1222.4c-2.4,0.1-4.8,0.2-7.2,0.2c-2.7,0-5.4-0.1-8.1-0.3 c-1.6,6.7-3.1,13.5-4.7,20.2v0l1.2,1.3c6.3,6.5,16.7,6.5,23,0l0.5-0.5l0,0C1052.2,1236.3,1050.6,1229.3,1049,1222.4z\"\n />\n <path\n style={{\n opacity: 0.45,\n fill: '#FFFFFF',\n }}\n d=\"M1074.3,1180.7c5-2.1,9.7-4.7,14.2-7.7c22.2-15,36.8-40.4,36.8-69.3 c0-28.8-14.6-54.2-36.8-69.2c-4.4-3-9.2-5.6-14.2-7.7c-10-4.2-21-6.6-32.5-6.6c-14.4,0-28,3.7-39.8,10.1 c-7.1,3.9-13.6,8.7-19.2,14.4c-15.1,15.1-24.5,36-24.5,59c0,23.1,9.3,44,24.5,59.1c5.7,5.7,12.1,10.5,19.2,14.4 c11.8,6.4,25.4,10.1,39.8,10.1C1053.4,1187.3,1064.3,1185,1074.3,1180.7z M1008.9,1148.2c-0.5-0.4-0.7-1-0.6-1.7l6-34.7l-26-25.3 c-0.4-0.4-0.5-0.9-0.3-1.3c0.1-0.4,0.5-0.8,1-0.8l35.9-5.2l15.9-32.3c0.3-0.5,0.8-0.8,1.3-0.7c0.4,0,0.9,0.3,1.1,0.7l15.9,32.3 l35.2,5.1c0.6,0.1,1.1,0.6,1.3,1.1c0.2,0.6,0.1,1.2-0.4,1.7l-25.5,24.8l6.1,35.5c0.1,0.6-0.1,1.1-0.5,1.3c-0.4,0.4-1,0.4-1.5,0.1 L1042,1132l-31.2,16.4C1010.2,1148.8,1009.4,1148.7,1008.9,1148.2z\"\n />\n <path\n style={{\n opacity: 0.75,\n fill: '#FFFFFF',\n }}\n d=\"M1073.9,1148.7c0.6,0.3,1.1,0.2,1.5-0.1c0.4-0.3,0.6-0.8,0.5-1.3l-6.1-35.5l25.5-24.8 c0.5-0.5,0.6-1.1,0.4-1.7c-0.2-0.5-0.6-1-1.3-1.1l-35.2-5.1l-15.9-32.3c-0.2-0.5-0.7-0.7-1.1-0.7c-0.5,0-1.1,0.2-1.3,0.7 l-15.9,32.3l-35.9,5.2c-0.5,0.1-0.9,0.4-1,0.8c-0.1,0.4-0.1,0.9,0.3,1.3l26,25.3l-6,34.7c-0.1,0.7,0.1,1.3,0.6,1.7 c0.5,0.4,1.3,0.6,1.9,0.2l31.2-16.4L1073.9,1148.7z\"\n />\n <path\n style={{\n opacity: 0.75,\n fill: '#241F20',\n }}\n d=\"M1033.7,1222.3c-22.5-1.5-43.3-9.3-60.7-21.6c-0.1,0.6-0.3,1.2-0.4,1.8 c-1.2,5.2-2.4,10.4-3.6,15.7c-1,4.3-2,8.6-3,13c-3.8,16.9-7.7,33.7-11.6,50.6c-1,4.3-1.9,8.7-3,13.5c11.1-4.4,21.4-8.5,31.7-12.7 c3.1-1.3,5.5-1.2,7.8,1.3c3.6,4,7.6,7.6,11.4,11.4c3.7,3.7,7.5,7.3,11.9,11.5c4.9-21.6,9.9-42.9,14.8-64.2v0 C1030.6,1235.8,1032.2,1229,1033.7,1222.3z\"\n />\n <path\n style={{\n opacity: 0.2,\n fill: '#FFFFFF',\n }}\n d=\"M1041.8,1194.9c0.3,0,0.6,0,0.9,0c18.2-0.2,35.2-5.7,49.4-15.1 c24.6-16.3,40.9-44.3,40.9-76c0-50.3-40.8-91.2-91.2-91.2s-91.2,40.8-91.2,91.2c0,31.9,16.5,60,41.3,76.3 c13.8,9.1,30.3,14.5,48.1,14.8C1040.6,1194.9,1041.2,1194.9,1041.8,1194.9z M982.8,1162.8c-15.1-15.1-24.5-36-24.5-59.1 c0-23.1,9.3-43.9,24.5-59c5.7-5.7,12.1-10.5,19.2-14.4c11.8-6.4,25.4-10.1,39.8-10.1c11.5,0,22.5,2.3,32.5,6.6 c5,2.1,9.7,4.7,14.2,7.7c22.2,15,36.8,40.4,36.8,69.2c0,28.8-14.6,54.3-36.8,69.3c-4.4,3-9.2,5.6-14.2,7.7c-10,4.2-21,6.6-32.5,6.6 c-14.4,0-28-3.7-39.8-10.1C994.9,1173.4,988.4,1168.5,982.8,1162.8z\"\n />\n <path\n style={{\n opacity: 0.55,\n fill: '#241F20',\n }}\n d=\"M909.6,1065.6l-3.7,2.5c-7.4,5.1-9.2,15.3-4,22.6l2.6,3.6c4,5.6,4,13.1,0,18.7 l-2.6,3.6c-1.4,2-2.3,4.2-2.7,6.4c-1.1,6.1,1.2,12.5,6.7,16.2l3.7,2.5c5.7,3.9,8.3,10.9,6.4,17.6l-1.2,4.3 c-2.4,8.7,2.8,17.7,11.5,19.9l4.3,1.1c6.5,1.6,11.2,7.2,12,13.8c0,0.2,0.1,0.4,0.1,0.5l0.3,4.4c0.7,9,8.6,15.7,17.6,14.8l4.4-0.4 c1.3-0.1,2.6-0.1,4,0.1c1.2-5.2,2.4-10.4,3.6-15.7c0.1-0.6,0.3-1.2,0.4-1.8c-2.8-2-5.5-4.1-8.1-6.4c-0.9-0.8-1.9-1.5-2.7-2.3 c-5.2-4.7-9.9-9.8-14.2-15.2c-2.9-3.7-5.5-7.5-7.9-11.5c-2.4-4-4.6-8.1-6.5-12.4c-6.8-14.9-10.6-31.6-10.6-49.1 c0-65.6,53.2-118.8,118.8-118.8c65.6,0,118.8,53.2,118.8,118.8c0,2.5-0.1,5-0.2,7.5c-0.3,5-0.9,9.8-1.8,14.6 c-0.9,4.8-2.1,9.5-3.5,14c-2.9,9.1-6.9,17.8-11.8,25.8c-4.9,8-10.7,15.4-17.3,22c-2.5,2.5-5.2,4.9-8,7.2c-0.8,0.7-1.6,1.4-2.5,2.1 c-1.8,1.4-3.7,2.8-5.6,4.2c1.3,5.7,2.6,11.4,3.9,17.1c1.6-0.3,3.2-0.4,4.9-0.2l4.4,0.4c9,0.9,16.9-5.8,17.6-14.8l0.4-4.4 c0,0,0-0.1,0-0.1c0.6-6.8,5.4-12.6,12-14.3l4.3-1.1c8.8-2.2,13.9-11.2,11.5-19.9l-1.2-4.3c-1.9-6.7,0.7-13.7,6.4-17.6l3.7-2.5 c5.1-3.5,7.5-9.5,6.8-15.2c-0.3-2.6-1.2-5.1-2.8-7.4l-2.6-3.6c-4-5.6-4-13.2,0-18.7l2.6-3.6c5.3-7.3,3.5-17.5-4-22.6l-3.7-2.5 c-4-2.7-6.4-6.9-6.9-11.4c-0.2-1.5-0.1-2.9,0.1-4.4c0.1-0.6,0.2-1.2,0.3-1.7l1.2-4.3c2.4-8.7-2.8-17.7-11.5-19.9l-4.3-1.1 c-6.7-1.7-11.5-7.5-12-14.4l-0.4-4.4c-0.7-9-8.6-15.7-17.6-14.8l-4.4,0.4c-6.8,0.7-13.4-3.1-16.2-9.4l-1.8-4.1 c-3.7-8.2-13.4-11.8-21.6-7.9l-4,1.9c-6.2,3-13.7,1.7-18.5-3.2l-3.1-3.2c-6.3-6.5-16.7-6.5-23,0l-3.1,3.2 c-4.8,4.9-12.3,6.2-18.5,3.2l-4-1.9c-8.2-3.9-17.9-0.4-21.6,7.9l-1.8,4.1c-2.9,6.3-9.4,10.1-16.2,9.4l-4.4-0.4 c-9-0.9-16.9,5.8-17.6,14.8l-0.3,4.4c-0.5,6.9-5.4,12.7-12,14.4l-4.3,1.1c-8.7,2.2-13.9,11.2-11.5,19.9l1.2,4.3 c0.1,0.3,0.1,0.5,0.2,0.8c0.4,1.7,0.5,3.4,0.3,5.1C916.1,1058.6,913.6,1062.9,909.6,1065.6z\"\n />\n <path\n style={{\n opacity: 0.15,\n fill: '#241F20',\n }}\n d=\"M1041.8,1222.6c2.4,0,4.8-0.1,7.2-0.2c22.6-1.3,43.4-9,60.8-21.2 c1.9-1.3,3.8-2.7,5.6-4.2c0.8-0.7,1.6-1.4,2.5-2.1c2.8-2.3,5.5-4.7,8-7.2c6.6-6.6,12.4-14,17.3-22c4.9-8,8.9-16.6,11.8-25.8 c1.5-4.6,2.6-9.2,3.5-14c0.9-4.8,1.5-9.7,1.8-14.6c0.2-2.5,0.2-5,0.2-7.5c0-65.6-53.2-118.8-118.8-118.8 c-65.6,0-118.8,53.2-118.8,118.8c0,17.5,3.8,34.1,10.6,49.1c1.9,4.3,4.1,8.4,6.5,12.4c2.4,4,5.1,7.8,7.9,11.5 c4.3,5.5,9,10.6,14.2,15.2c0.9,0.8,1.8,1.6,2.7,2.3c2.6,2.2,5.3,4.4,8.1,6.4c17.4,12.3,38.2,20.1,60.7,21.6 C1036.4,1222.5,1039.1,1222.6,1041.8,1222.6z M950.7,1103.8c0-50.3,40.8-91.2,91.2-91.2s91.2,40.8,91.2,91.2 c0,31.8-16.3,59.7-40.9,76c-14.2,9.4-31.1,14.9-49.4,15.1c-0.3,0-0.6,0-0.9,0c-0.6,0-1.2,0-1.8-0.1c-17.8-0.3-34.2-5.7-48.1-14.8 C967.1,1163.8,950.7,1135.7,950.7,1103.8z\"\n />\n </g>\n <g id=\"Course_Name\">\n <g>\n <rect\n x={471.8}\n y={901.3}\n style={{\n fill: '#231F20',\n }}\n width={1134.9}\n height={2.1}\n />\n </g>\n </g>\n <g id=\"Learner_Name\">\n <g>\n <rect\n x={471.8}\n y={784.9}\n style={{\n fill: '#231F20',\n }}\n width={713.7}\n height={2.1}\n />\n </g>\n </g>\n <g id=\"Date\">\n <rect\n x={1230.8}\n y={784.9}\n style={{\n fill: '#231F20',\n }}\n width={376}\n height={2.1}\n />\n </g>\n </svg>\n );\n};\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport {\n useState,\n useRef,\n useEffect,\n createContext,\n useContext,\n useMemo,\n Fragment as _,\n cloneElement,\n useCallback,\n RefObject,\n} from 'react';\n\nexport const InputText = ({\n width,\n placeholder = '',\n focusColor = '#000',\n callback = (value: String) => {},\n}) => {\n // const {\n // width,\n // focusColor = '#000',\n // callback = (value: String) => {},\n // } = props;\n\n const [value, setValue] = useState('');\n const [hasFocus, setHasFocus] = useState(false);\n\n useEffect(() => {\n callback(value);\n }, [value]);\n\n return (\n <div\n css={css({\n position: 'relative',\n width,\n })}\n >\n {!hasFocus && (\n <div\n className=\"data-input-blur-value-display\"\n css={css({\n position: 'absolute',\n width,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n })}\n >\n {value}\n </div>\n )}\n\n <input\n type=\"text\"\n css={css({\n all: 'unset',\n position: 'relative',\n width,\n opacity: !value || hasFocus ? 1 : 0,\n ':focus': {\n all: 'unset',\n width,\n outline: `1px solid ${focusColor}`,\n // boxShadow: `0 0 0 1px ${focusColor}`,\n border: 'transparent !important',\n overflow: 'visible',\n },\n })}\n placeholder={placeholder}\n onFocus={() => {\n setHasFocus(true);\n }}\n onBlur={() => {\n setHasFocus(false);\n }}\n onChange={e => {\n setValue(e.currentTarget.value);\n }}\n />\n </div>\n );\n};\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { useState, useContext, Fragment as _, useCallback } from 'react';\nimport { interactionContext as InteractionContext } from './interactionContext';\n\nimport { CertificateContext } from './Certificate';\nimport { Certificate_1_SVG } from './Certificate_1_SVG';\nimport { Certificate_2_SVG } from './Certificate_2_SVG';\nimport { Certificate_3_SVG } from './Certificate_3_SVG';\nimport chameleonLogoForCertificate from 'assets/chameleonLogoForCertificate.svg';\nimport { InputText } from './InputText';\n\n// https://react-svgr.com/playground/\n\nconst learnerNameGrey = '#A1ADAD';\n\nconst CertificateTemplateFields = props => {\n const {\n id,\n scaleFactor,\n inverseScaleFactor,\n color,\n date,\n courseName,\n fontSize,\n coordinates,\n } = props;\n\n const certificatePadding = 0;\n const offset = 12;\n\n if (!coordinates) {\n return null;\n }\n\n return (\n <_>\n <div\n style={{\n position: 'absolute',\n left:\n (coordinates?.courseName?.[0] - certificatePadding) * scaleFactor,\n top:\n (coordinates?.courseName?.[1] -\n certificatePadding * 2 -\n (fontSize + offset)) *\n scaleFactor,\n height: 0,\n transform: `scale(${scaleFactor})`,\n transformOrigin: 'bottom left',\n }}\n >\n {courseName}\n </div>\n <div\n style={{\n position: 'absolute',\n left:\n (coordinates?.learnerName?.[0] - certificatePadding) * scaleFactor,\n top:\n (coordinates?.learnerName?.[1] -\n certificatePadding * 2 -\n (fontSize + offset)) *\n scaleFactor,\n height: 0,\n transform: `scale(${scaleFactor})`,\n transformOrigin: 'bottom left',\n }}\n >\n <LearnerName\n width={\n coordinates?.learnerName?.[2] * scaleFactor * inverseScaleFactor\n }\n />\n </div>\n\n <div\n style={{\n position: 'absolute',\n left: (coordinates?.date?.[0] - certificatePadding) * scaleFactor,\n top:\n (coordinates?.date?.[1] -\n certificatePadding * 2 -\n (fontSize + offset)) *\n scaleFactor,\n height: 0,\n transform: `scale(${scaleFactor})`,\n transformOrigin: 'bottom left',\n }}\n >\n {date}\n </div>\n </_>\n );\n};\n\nconst LearnerName = props => {\n const { width } = props;\n\n return window.dev() ? (\n <span\n style={{\n color: learnerNameGrey,\n }}\n >\n Learner inputs name here\n </span>\n ) : (\n <InputText\n {...{\n width,\n placeholder: 'Enter your name here',\n focusColor: learnerNameGrey,\n }}\n />\n );\n};\n\nexport const CertificateTemplate = props => {\n const interactionContext = useContext(InteractionContext);\n const certificateContext = useContext(CertificateContext);\n\n const { id } = interactionContext;\n\n const {\n certificateTemplateIndex = 0,\n certificateTemplateColor: color,\n certificateTemplateTitle: courseName = window.dev()\n ? `*Add a Course name in the Certificate settings`\n : '',\n generatingPDF,\n } = interactionContext.props;\n\n const { src: logo = chameleonLogoForCertificate } = props;\n\n const { scaleFactor, inverseScaleFactor } = certificateContext;\n\n const dateArray = new Date().toString().split(/ /g);\n const date = dateArray.slice(0, 4).join(' ');\n\n const [SVG, setSVG] = useState<string | undefined>('true'); //\n const [coordinates, setCoordinates] = useState<{} | undefined>();\n\n const logoCoords = {\n 0: {\n left: '50%',\n top: 115,\n transform: 'translateX(-50%)',\n },\n\n 1: {\n left: 255,\n top: 80,\n },\n\n 2: {\n right: 80,\n top: 75,\n },\n }[certificateTemplateIndex];\n\n const fontSize = 32;\n\n const svgContainer = useCallback(\n svg => {\n if (!svg) {\n return;\n }\n\n const learnerNameElement = svg.querySelector('#Learner_Name rect');\n const courseNameElement = svg.querySelector('#Course_Name rect');\n const dateElement = svg.querySelector('#Date rect');\n\n const changeColorElement = svg.querySelector('#Change_colour');\n\n if (learnerNameElement && courseNameElement && dateElement) {\n if (window.dev()) {\n learnerNameElement.style.fill = learnerNameGrey;\n }\n\n setCoordinates({\n learnerName: [\n learnerNameElement.getAttribute('x'),\n learnerNameElement.getAttribute('y'),\n learnerNameElement.getAttribute('width'),\n ],\n courseName: [\n courseNameElement.getAttribute('x'),\n courseNameElement.getAttribute('y'),\n ],\n date: [dateElement.getAttribute('x'), dateElement.getAttribute('y')],\n });\n }\n\n if (!changeColorElement) {\n return;\n }\n\n const changeColorElements = Array.from(\n changeColorElement.querySelectorAll('[style*=\"fill\"]')\n ) as (HTMLElement & SVGElement)[];\n\n changeColorElements?.forEach(element => {\n element.style.fill = color;\n });\n },\n [SVG, certificateTemplateIndex, color]\n );\n\n if (!SVG) {\n return null;\n }\n\n return (\n <div\n key={`${certificateTemplateIndex}-${color}`}\n css={css({\n position: 'relative',\n svg: {\n boxShadow: generatingPDF ? 'none' : '0 0 10px rgba(0,0,0,0.1)',\n },\n })}\n >\n <div\n ref={svgContainer}\n key={`${certificateTemplateIndex}-${color}`}\n id={`svg-container-${id}`}\n >\n {\n [<Certificate_1_SVG />, <Certificate_2_SVG />, <Certificate_3_SVG />][\n certificateTemplateIndex\n ]\n }\n </div>\n\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n fontSize,\n fontWeight: 500,\n }}\n >\n <CertificateTemplateFields\n key={`certificate-template-fields-${certificateTemplateIndex}`}\n {...{\n scaleFactor,\n inverseScaleFactor,\n color,\n fontSize,\n courseName,\n date,\n coordinates,\n }}\n />\n </div>\n <div\n ref={node => {\n if (!node) {\n return;\n }\n\n const logoScale = node.offsetWidth / 1100;\n\n const img = node.firstChild as HTMLImageElement;\n if (img) {\n img.style.width = `${80 * logoScale}px`;\n img.style.top = `${logoCoords.top * logoScale}px`;\n\n const leftRight = logoCoords.left ? 'left' : 'right';\n img.style[leftRight] = `${logoCoords[leftRight] * logoScale}px`;\n }\n }}\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n transformOrigin: '0px 0px',\n pointerEvents: 'none',\n }}\n >\n <img\n src={logo}\n style={{\n position: 'absolute',\n ...logoCoords,\n width: 80,\n }}\n />\n </div>\n </div>\n );\n};\n\nconst CertificateTemplates = props => {\n const interactionContext = useContext(InteractionContext);\n\n const { certificateTemplateIndex = 0 } = interactionContext.props;\n\n const requiredVariables = [['learnerName'], [], []][certificateTemplateIndex];\n\n const moduleVariables = [''];\n\n if (requiredVariables.every(entry => moduleVariables.includes(entry))) {\n console.log('certificate template has the required variables !!!');\n } else {\n console.log('certificate template DOES NOT has the required variables !!!');\n }\n\n return <CertificateTemplate {...props} />;\n};\n\nexport default CertificateTemplates;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport {\n useState,\n useRef,\n useEffect,\n createContext,\n useContext,\n useMemo,\n Fragment as _,\n cloneElement,\n RefObject,\n} from 'react';\nimport CertificateDefaultPNG from 'assets/Certificate-V2.png';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport unlockInteraction from 'services/unlockInteraction';\nimport { DragHandle, ResizeHandle } from './Handles';\nimport { generatePDFFromCanvas } from './generatePDF';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport { CertificateTemplate } from './CertificateTemplates';\nimport LoadingSpinner from 'components/UI/LoadingSpinner';\nimport { InputText } from './InputText';\n\ninterface ICertificateContext {\n certificateRef: RefObject<HTMLDivElement> | null;\n certificateImgSize: { width: number; height: number } | undefined;\n scaleFactor: number;\n inverseScaleFactor: number;\n generatingPDF: boolean;\n}\n\nconst certificateDefaultSize = {\n width: 2084,\n height: 1437,\n};\n\nexport const certificatePadding = 20;\n\nconst certificateContextValue = {\n certificateRef: null,\n certificateImgSize: {\n ...certificateDefaultSize,\n },\n scaleFactor: 1,\n inverseScaleFactor: 1,\n generatingPDF: false,\n};\n\nexport const CertificateContext = createContext<ICertificateContext>(\n certificateContextValue\n);\n\nconst resetResponsiveStyles = {\n p: {\n fontSize: '1rem !important',\n },\n h1: {\n fontSize: '3.5rem !important',\n },\n\n h2: {\n fontSize: '2.5rem !important',\n },\n\n h3: {\n fontSize: '2rem !important',\n },\n\n h4: {\n fontSize: '1.7rem !important',\n },\n\n h5: {\n fontSize: '1.2rem !important',\n },\n\n h6: {\n fontSize: '1rem !important',\n },\n};\n\nconst Certificate = props => {\n const interactionContext = useContext(InteractionContext);\n\n const {\n lockDown,\n name,\n certificateType = 'custom',\n } = interactionContext.props;\n\n const {\n id,\n src: imgSrc = CertificateDefaultPNG,\n imgWidth = certificateDefaultSize.width,\n imgHeight = certificateDefaultSize.height,\n imageId: imgId = undefined,\n children,\n } = props;\n\n const [textFields, downloadBtn] = children;\n\n const [generatingPDF, setGeneratingPDF] = useState(false);\n\n const imgSize = {\n width:\n certificateType === 'custom' ? (imgWidth > 1100 ? imgWidth : 1100) : 2084,\n height: certificateType === 'custom' ? imgHeight : 1471.6,\n };\n\n const isOpen = useSelector((state: State) => {\n return state.interactionsOpen.includes(interactionContext.id);\n });\n\n const [scaleFactor, setScaleFactor] = useState(1);\n const inverseScaleFactor = 1 / scaleFactor;\n\n const certificateId = `certificate-${id}`;\n const certificate = useRef<HTMLDivElement>(null);\n\n const imgSrcToArray = imgSrc.split(/\\./g);\n const imgType = imgSrcToArray[imgSrcToArray.length - 1];\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n onResize();\n\n function onResize() {\n const certificateWidth = certificate.current?.getBoundingClientRect()\n .width;\n\n if (!(certificateWidth && imgSize?.width)) {\n return;\n }\n\n let calculatedScaleFactor = certificateWidth / imgSize?.width;\n\n if (['svg', 'SVG'].includes(imgType)) {\n // we're gonna have to do some dancin' queen to support svg\n }\n\n setScaleFactor(calculatedScaleFactor);\n }\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [imgSrc, imgId, imgWidth, imgHeight, certificateType, isOpen]);\n\n return (\n <CertificateContext.Provider\n value={\n {\n ...CertificateContext,\n certificateRef: certificate,\n certificateImgSize: imgSize,\n scaleFactor,\n inverseScaleFactor,\n generatingPDF,\n } as ICertificateContext\n }\n >\n <div style={{ padding: certificatePadding }}>\n {certificateType === 'custom' ? (\n <_>\n <div\n style={{\n position: 'relative',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <img\n src={imgSrc}\n style={{\n ...(imgType === 'svg' &&\n {\n //\n }),\n\n maxWidth: '100%',\n overflow: 'hidden',\n }}\n // data-html2canvas-ignore\n />\n\n <div\n ref={certificate}\n id={`${certificateId}-${certificateType}`}\n style={{\n position: 'absolute',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n userSelect: 'none',\n pointerEvents: 'none',\n\n ...(!window.dev() && {\n opacity: imgSize ? 1 : 0,\n transition: 'opacity 0.2s',\n }),\n }}\n >\n <div\n style={{\n display: 'flex',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n transform: `scale(${scaleFactor})`,\n transformOrigin: '0px 0px',\n pointerEvents: 'auto',\n }}\n >\n {textFields}\n </div>\n </div>\n </div>\n </div>\n </_>\n ) : (\n <div ref={certificate} id={`${certificateId}-${certificateType}`}>\n <CertificateTemplate {...props} />\n </div>\n )}\n </div>\n\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n margin: '50px 0 0 0',\n pointerEvents: 'auto',\n }}\n data-html2canvas-ignore\n >\n {cloneElement(downloadBtn, {\n onClick() {\n setGeneratingPDF(true);\n\n generatePDFFromCanvas({\n imgSize,\n scale: certificateType === 'custom' ? inverseScaleFactor : 2,\n id: `${certificateId}-${certificateType}`,\n fileName: name,\n imgSrc,\n imgType,\n certificateType,\n onComplete() {\n setGeneratingPDF(false);\n },\n });\n\n if (lockDown === 0) {\n return;\n }\n\n unlockInteraction(interactionContext.id);\n },\n })}\n </div>\n\n {generatingPDF && (\n <div\n style={{\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n left: 0,\n top: 0,\n background: 'rgba(255,255, 255, 0.1)',\n pointerEvents: 'none',\n }}\n >\n <LoadingSpinner />\n </div>\n )}\n </CertificateContext.Provider>\n );\n};\n\nconst CertificateTextFields = props => {\n const { children } = props;\n\n return (\n <div\n css={css({\n fontSize: 16 * 10,\n })}\n >\n {children}\n </div>\n );\n};\n\nconst CertificateTextField = props => {\n const certificateContext = useContext(CertificateContext);\n\n const {\n certificateRef,\n certificateImgSize,\n scaleFactor = 1,\n inverseScaleFactor = 1,\n } = certificateContext as ICertificateContext;\n\n const { id, coords, isInputField, children } = props;\n\n let [txt] = children;\n\n let txtProps;\n let content;\n const txtDoc = useSelector((state: State) => {\n txtProps = state.blocks[txt.props.id]?.props || {};\n content = txtProps?.content;\n\n return new DOMParser().parseFromString(content, 'text/html');\n });\n\n const spans = Array.from(txtDoc.querySelectorAll('span'));\n const strong = Array.from(txtDoc.querySelectorAll('strong'));\n const em = Array.from(txtDoc.querySelectorAll('em'));\n const u = Array.from(txtDoc.querySelectorAll('u'));\n\n const fontSpan = spans.filter(span => {\n return span.getAttribute('data-type') === 'fontSize';\n })[0];\n\n const fontData = spans.reduce(\n (acc, curr) => {\n const fontSize = curr.style['font-size'];\n const fontFamily = curr.style['font-family'];\n const color = curr.style['color'];\n\n return {\n ...acc,\n ...(fontSize && {\n fontSize,\n }),\n ...(fontFamily && {\n fontFamily: fontFamily.replace(/\"/g, ''),\n }),\n ...(color && {\n color,\n }),\n };\n },\n {\n bold: !!strong?.length,\n italic: !!em?.length,\n underline: !!u?.length,\n }\n );\n\n let {\n fontSize,\n fontFamily,\n color,\n bold,\n italic,\n underline,\n } = fontData as any;\n\n if (fontSize) {\n fontSize = Number(fontSize.replace(/rem|px/g, '')) || 1;\n } else {\n fontSize = 1;\n }\n\n let initializeFontSizeScaleFactor =\n certificateImgSize?.width && certificateImgSize.width < 1100\n ? 1\n : ((certificateImgSize && certificateImgSize?.width) ||\n certificateDefaultSize?.width) / 1100;\n\n const [localCoords, setLocalCoords] = useState(coords || {});\n\n let { x, y, width, height } = localCoords;\n\n if (!window.dev() && isInputField) {\n y = `${parseInt(y, 10) + 5}px`;\n }\n\n const block = useMemo(() => {\n return getBlockById(id);\n }, []);\n\n const delaySetBlockProps = useRef<ReturnType<typeof setTimeout>>();\n const certificateTextField = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!Object.keys(localCoords).length) {\n return;\n }\n\n delaySetBlockProps.current && clearTimeout(delaySetBlockProps.current);\n\n delaySetBlockProps.current = setTimeout(() => {\n setBlockProps(block, {\n coords: localCoords,\n });\n }, 300);\n }, [x, y, width, height]);\n\n const defaultWidth = 400;\n\n const defaultHeight =\n certificateImgSize?.width && certificateImgSize.width < 1100 ? 35 : 75;\n const defaultLeft =\n (certificateImgSize?.width || 1100) / 2 - defaultWidth / 2;\n const defaultTop = (certificateImgSize?.height || 0) / 2 - defaultHeight / 2;\n\n let paragraphMaxWidth = defaultWidth;\n\n if (width && typeof width === 'string') {\n paragraphMaxWidth = Number(width.replace('px', ''));\n }\n\n return (\n <div\n ref={certificateTextField}\n id={`chameleon-certificate-text-${id}`}\n className=\"chameleon-certificate-text fader_-2s\"\n css={css({\n position: 'absolute',\n left: x || defaultLeft,\n top: y || defaultTop,\n width: width || defaultWidth,\n height: height || defaultHeight,\n outline: window.dev() ? '1px solid lightGrey' : 'none',\n\n overflow: 'hidden',\n\n ...resetResponsiveStyles,\n '@media(min-width: 480px)': {\n ...resetResponsiveStyles,\n },\n '@media(min-width: 767px)': {\n ...resetResponsiveStyles,\n },\n\n '[class*=\"EditableText\"]': {\n height: '100%',\n padding: '15px 10px',\n },\n\n '[class*=\"ReadOnlyText\"]': {\n height: '100%',\n padding: '15px 10px',\n\n 'h1, h2, h3, h4, h5, h6': {\n lineHeight: 'unset',\n },\n },\n\n '.chameleon-edit-marker': {\n display: 'none',\n ...(inverseScaleFactor > 1 && {\n transform: `scale(${inverseScaleFactor})`,\n transformOrigin: 'top right',\n }),\n },\n\n '.chameleon-text div p': {\n fontSize: `${fontSize * initializeFontSizeScaleFactor}rem !important`,\n },\n })}\n >\n {window.dev() ? (\n cloneElement(txt, { certificate: true })\n ) : !isInputField ? (\n cloneElement(txt, { certificate: true })\n ) : (\n <div\n css={css({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n\n '*': {\n padding: '0 0 0 10px',\n fontSize: `${fontSize *\n initializeFontSizeScaleFactor}rem !important`,\n fontFamily,\n fontStyle: italic ? 'italic' : 'normal',\n fontWeight: bold ? 700 : 'normal',\n textDecoration: underline ? 'underline' : 'none',\n color,\n '.data-input-blur-value-display': {\n padding: '0 0 0 0px',\n },\n },\n\n input: {\n padding: '0 0 0 0px',\n\n ':focus': {\n padding: '0 0 0 10px',\n },\n },\n })}\n >\n <InputText\n {...{\n width: '100%',\n placeholder: txtDoc.body.innerText,\n }}\n />\n </div>\n )}\n\n {window.dev() && (\n <_>\n <DragHandle\n key={`DRAG_HANDLE_${scaleFactor + inverseScaleFactor}`}\n id={id}\n elementRef={certificateTextField}\n scaleFactor={scaleFactor}\n inverseScaleFactor={inverseScaleFactor}\n onDragEnd={() => {\n if (!certificateTextField?.current) {\n return;\n }\n\n const { left, top } = getComputedStyle(\n certificateTextField?.current\n );\n\n const parsedLeft = parseInt(left, 10);\n const parsedTop = parseInt(top, 10);\n\n setLocalCoords(localCoords => ({\n ...localCoords,\n x: `${parsedLeft}px`,\n y: `${parsedTop}px`,\n }));\n }}\n isInput={isInputField}\n />\n\n <ResizeHandle\n key={`RESIZE_HANDLE_${scaleFactor + inverseScaleFactor}`}\n id={id}\n scaleFactor={scaleFactor}\n inverseScaleFactor={inverseScaleFactor}\n onDrag={data => {\n //\n setLocalCoords(localCoords => ({\n ...localCoords,\n width: data.left,\n height: data.top,\n }));\n }}\n isInput={isInputField}\n />\n </_>\n )}\n </div>\n );\n};\n\nexport default Certificate;\nexport { Certificate, CertificateTextFields, CertificateTextField };\n","/** @jsx jsx */\n\nimport { Fragment as _, memo, useContext } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport EditableText from 'components/lib/EditableText';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport { Row, Column } from '@chameleoncreator/creator-ui';\nimport Image from 'components/lib/Image';\nimport Video from 'components/lib/Video';\nimport SVG from 'components/lib/SVG';\nimport ContinueBtn from 'components/lib/ContinueBtn/continueBtn_v2';\nimport EditableButton from 'components/lib/EditableBtn';\nimport Container from 'components/Layouts/ContainerLogical';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport Media from 'components/lib/Media';\nimport { Block } from '@chameleoncreator/creator-app';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport shouldUpdate from 'services/shouldUpdate';\nimport Certificate, {\n CertificateTextFields,\n CertificateTextField,\n} from './Certificate';\nimport CertificateTemplates from './CertificateTemplates';\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n Text: EditableText,\n CertificateMedia({ children, ...props }) {\n return <div style={{ padding: '20px 0 20px 0' }}>{children}</div>;\n },\n Certificates: ({ children, ...props }) => children,\n Certificate,\n CertificateTextFields,\n CertificateTextField,\n CertificateTemplate: ({ children, ...props }) => children,\n CertificateTemplates,\n Image,\n TwoColumnLayout,\n SingleColumnLayout,\n ContinueButton: ContinueBtn,\n EditableButton,\n Video,\n SVG,\n Media,\n};\n\nconst CertificateDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n <Container\n id={interactionBlock.id}\n key={interactionBlock.id}\n {...interactionBlock.props}\n {...props}\n >\n <InteractionContext.Provider\n value={{ ...interactionBlock, updateItemsSeen: null }}\n >\n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n </InteractionContext.Provider>\n </Container>\n );\n}, shouldUpdate as any);\n\nexport default CertificateDisplay;\n","import React, { useState, useEffect, useMemo, useCallback, memo } from 'react';\nimport EmptySection from 'components/lib/EmptySection';\nimport Accordion from 'components/lib/Accordion';\nimport Carousel from 'components/lib/Carousel';\nimport FlipCard from 'components/lib/FlipCard';\nimport FullPageText from 'components/lib/FullPageText';\nimport Multichoice from 'components/lib/Multichoice';\nimport MultichoiceImage from 'components/lib/MultichoiceImage';\nimport Sortation from 'components/lib/Sortation';\nimport Slider from 'components/lib/Slider';\nimport Matching from 'components/lib/Matching';\nimport TextAndImage from 'components/lib/TextAndImage';\nimport HotSpot from 'components/lib/HotSpot';\nimport FiveStarRating from 'components/lib/FiveStarRating';\nimport ResultsPage from 'components/lib/ResultsPage';\nimport ClickAndReveal from 'components/lib/ClickAndReveal';\nimport ContentCards from 'components/lib/ContentCard';\nimport SelectOptions from 'components/lib/SelectOptions';\nimport TopicPortal from 'components/lib/TopicPortal';\nimport TextEntry from 'components/lib/TextEntry';\nimport TextEntryVariable from 'components/lib/TextEntryVariable';\nimport TextEntryQuiz from 'components/lib/TextEntryQuiz';\nimport Assessment from '../lib/Assessment';\nimport AssessmentIntroduction from '../lib/AssessmentIntroduction';\nimport AssessmentQuestion from '../lib/AssessmentQuestion';\nimport AssessmentResults from '../lib/AssessmentResults';\nimport Certificate from 'components/lib/Certificate';\nimport { Block } from '@chameleoncreator/creator-app';\n\nconst InteractionComponents = {\n Accordion,\n Carousel,\n FlipCard,\n FullPageText,\n Multichoice,\n MultichoiceImage,\n Sortation,\n Matching,\n TextAndImage,\n TextEntry,\n TextEntryVariable,\n HotSpot,\n FiveStarRating,\n Slider,\n ResultsPage,\n ClickAndReveal,\n SelectOptions,\n TopicPortal,\n Assessment,\n AssessmentIntroduction,\n AssessmentQuestion,\n AssessmentResults,\n ContentCards,\n TextEntryQuiz,\n Certificate,\n};\n\ninterface IInteractions_EditorProps {\n currentTopicId?: string | number;\n currentInteractionId: string | number | undefined;\n interactions: Block[];\n}\n\nconst Interactions_Editor = ({\n currentTopicId,\n currentInteractionId,\n interactions,\n}: IInteractions_EditorProps) => {\n if (!interactions.length) {\n return <EmptySection />;\n }\n\n const interaction = interactions.find(\n (i: any) => i.id === (currentInteractionId || interactions[0].id)\n ) as any;\n\n if (!interaction) {\n return null;\n }\n\n const Interaction = InteractionComponents[interaction?.meta?.subType];\n\n return (\n <Interaction\n key={interaction.id}\n blockId={interaction.id}\n isOpen={true}\n aria-label={`Interaction: ${interaction?.props?.name}`}\n data={{\n ...interaction,\n }}\n />\n );\n};\n\nexport default Interactions_Editor;\n","import React from 'react';\nimport EmptySection from 'components/lib/EmptySection';\nimport Accordion from '../lib/Accordion';\nimport Carousel from '../lib/Carousel';\nimport FlipCard from '../lib/FlipCard';\nimport FullPageText from '../lib/FullPageText';\nimport Multichoice from '../lib/Multichoice';\nimport MultichoiceImage from 'components/lib/MultichoiceImage';\nimport Sortation from '../lib/Sortation';\nimport Matching from '../lib/Matching';\nimport TextAndImage from '../lib/TextAndImage';\nimport HotSpot from '../lib/HotSpot';\nimport FiveStarRating from '../lib/FiveStarRating';\nimport ResultsPage from '../lib/ResultsPage';\nimport Slider from 'components/lib/Slider';\nimport ClickAndReveal from '../lib/ClickAndReveal';\nimport SelectOptions from 'components/lib/SelectOptions';\nimport TopicPortal from '../lib/TopicPortal';\nimport TextEntry from 'components/lib/TextEntry';\nimport TextEntryVariable from 'components/lib/TextEntryVariable';\nimport TextEntryQuiz from 'components/lib/TextEntryQuiz';\nimport ContentCards from 'components/lib/ContentCard';\nimport Assessment from '../lib/Assessment';\nimport AssessmentIntroduction from '../lib/AssessmentIntroduction';\nimport AssessmentQuestion from '../lib/AssessmentQuestion';\nimport AssessmentResults from '../lib/AssessmentResults';\nimport Certificate from 'components/lib/Certificate';\nimport { useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport { State } from 'store/store';\nimport { css } from 'emotion';\n\nconst InteractionComponents = {\n Accordion,\n Carousel,\n FlipCard,\n FullPageText,\n Multichoice,\n MultichoiceImage,\n Sortation,\n Slider,\n Matching,\n TextAndImage,\n HotSpot,\n FiveStarRating,\n TextEntry,\n TextEntryVariable,\n ResultsPage,\n ClickAndReveal,\n SelectOptions,\n TopicPortal,\n ContentCards,\n Assessment,\n AssessmentIntroduction,\n AssessmentQuestion,\n AssessmentResults,\n TextEntryQuiz,\n Certificate,\n};\n\nconst getInteractionsSeen = createSelector(\n (state: any) => state.interactionsSeen,\n interactionsSeen => interactionsSeen\n);\n\nconst Interactions = ({ interactions }) => {\n const { buttonBackgroundColor, buttonTextColor } = useSelector(\n (state: any) => {\n return state.theme;\n }\n );\n\n const { exitComplete } = useSelector((state: State) => {\n return {\n exitComplete: state.exitComplete,\n };\n });\n\n if (!interactions.length) {\n return <EmptySection />;\n }\n\n const interactionsSeen = useSelector(getInteractionsSeen);\n\n const addNextInteractionToInteractionsSeen = interactions.filter(\n (i: any, index) => {\n // return true;\n return index === 0 || interactionsSeen.includes(i.id);\n }\n );\n\n if (addNextInteractionToInteractionsSeen.length !== interactions.length) {\n addNextInteractionToInteractionsSeen.push(\n interactions[addNextInteractionToInteractionsSeen.length]\n );\n }\n\n if (exitComplete) {\n console.log('You may now closse your browser window');\n\n return (\n <div\n style={{\n width: '100%',\n height: 'calc(100vh - 70px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <div style={{ textAlign: 'center' }}>\n <h3 style={{ margin: '16px 16px 36px' }}>\n You may now close your browser window\n </h3>\n <button\n css={css`\n position: relative;\n justify-content: center;\n align-items: center;\n width: 230px;\n min-height: 48px !important;\n word-break: break-word;\n line-height: 1.2;\n cursor: pointer;\n outline: none;\n background: ${buttonBackgroundColor} !important ;\n border: 1px solid ${buttonBackgroundColor} !important ;\n color: ${buttonTextColor} !important ;\n font-family: inherit !important;\n font-size: 14px;\n font-weight: 400 !important;\n font-style: normal;\n box-shadow: 0 0 12px 3px rgba(0, 0, 0, 0.09);\n transition: background, border, color, opacity 0.2s;\n margin: 5px 10px;\n border-radius: 999px;\n &:hover {\n opacity: 0.45;\n }\n `}\n onClick={() => {\n setTimeout(() => {\n if (window.self === window.top) {\n window.close();\n } else {\n window?.top?.close();\n }\n }, 100);\n }}\n >\n Close\n </button>\n </div>\n </div>\n );\n }\n\n return addNextInteractionToInteractionsSeen.map((interaction, i) => {\n const { id } = interaction;\n const Interaction = InteractionComponents[interaction.meta.subType];\n\n // console.log(Interaction);\n\n return (\n <Interaction\n key={id}\n blockId={id}\n isOpen={i === 0}\n aria-label={`Interaction: ${interaction.props.name}`}\n sectionLabel={`Section ${i + 1}`}\n data={{\n ...interaction,\n }}\n />\n );\n });\n};\n\nexport default Interactions;\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useState,\n useEffect,\n useRef,\n useLayoutEffect,\n cloneElement,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector, useDispatch } from 'react-redux';\nimport Audio_Illustration from 'assets/Character A.png';\n//Audio_Illustration.svg';\nimport { audioAcknowledgedAction } from 'actions/audioAcknowledgedAction';\nimport { State } from 'store/store';\nimport Modal from 'components/UI/Modal';\nimport EditableText from 'components/lib/EditableText';\nimport EditableBtn from 'components/lib/EditableBtn';\nimport Image from 'components/lib/Image';\nimport renderBlock from 'services/apiHelpers/renderBlock';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\n\nexport const ModuleHasAudioMessage = ({ onClose }) => {\n const audioAcknowledged = useSelector((state: State) => {\n return state.audioAcknowledged;\n });\n\n const [, setAudioAcknowledged] = useState<boolean>(audioAcknowledged);\n\n const moduleHasAudioMessageBlock = useSelector((state: State) => {\n return Object.values(state.blocks).find(block => {\n return block?.type === 'ModuleHasAudioMessage';\n });\n });\n\n let renderedModuleHasAudioMessageBlock;\n if (moduleHasAudioMessageBlock) {\n renderedModuleHasAudioMessageBlock = renderBlock(\n moduleHasAudioMessageBlock,\n {\n Image,\n\n Text: EditableText,\n EditableButton: EditableBtn,\n }\n );\n }\n\n const [img, txt, okBtn] =\n renderedModuleHasAudioMessageBlock?.props?.children || [];\n\n const hasTextContent = txt?.props?.content ? 'true' : 'false';\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (hasTextContent === 'false') {\n requestAnimationFrame(() => {\n setBlockProps(getBlockById(txt.props.id), {\n content:\n '<div class=\"chameleon-text-align-center\" data-type=\"textAlignCenter\"><h2 data-type=\"heading-two\"><p data-type=\"paragraph\"><span style=\"font-size:1.75rem\" data-type=\"fontSize\"><strong data-type=\"bold\">This module has audio</strong></span></p></h2></div><div class=\"chameleon-text-align-center\" data-type=\"textAlignCenter\"><h3 data-type=\"heading-three\"><p data-type=\"paragraph\"><span style=\"font-size:1.125rem\" data-type=\"fontSize\">Click Ok to continue</span></p></h3></div>',\n });\n });\n }\n }, []);\n\n // window.dev() ||\n if (audioAcknowledged) {\n return null;\n }\n\n return (\n <Modal\n key={hasTextContent}\n onClose={() => {\n // dispatch(audioAcknowledgedAction(true));\n onClose();\n }}\n >\n <div\n css={css({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '100px 0',\n })}\n >\n <div>\n {img ? (\n <div\n css={css({\n width: '100%',\n minWidth: 290,\n maxWidth: 540,\n margin: '0 0 30px 0',\n })}\n >\n {cloneElement(img, {\n placeholder: Audio_Illustration,\n })}\n </div>\n ) : (\n <img\n src={Audio_Illustration}\n css={css({\n width: '100%',\n minWidth: 290,\n maxWidth: 540,\n margin: '0 0 30px 0',\n })}\n />\n )}\n </div>\n\n {txt ? (\n txt\n ) : (\n <span className=\"chameleon-text\">\n <h2\n css={css({\n margin: '0 0 10px 0',\n padding: '0 10px',\n fontWeight: 700,\n fontSize: 28,\n textAlign: 'center',\n })}\n >\n This module has audio\n </h2>\n <h3\n css={css({\n // margin: '0 0 10px 0',\n fontWeight: 400,\n fontSize: 18,\n textAlign: 'center',\n })}\n >\n Click OK to continue\n </h3>\n </span>\n )}\n\n {okBtn ? (\n <div\n css={css({\n margin: '20px 0 0 0',\n })}\n >\n {cloneElement(okBtn, {\n onClick() {\n onClose();\n },\n })}\n </div>\n ) : (\n <button\n className=\"module-has-audio-message-button\"\n css={css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n border: 'none',\n outline: 'none',\n width: 197,\n height: 46,\n margin: '20px 0 0 0',\n padding: 20,\n borderRadius: '9999px',\n background: '#060709',\n fontSize: 14,\n color: '#fff',\n cursor: 'pointer',\n\n transition: 'opacity 0.2s',\n\n ':hover': {\n opacity: 0.8,\n },\n\n boxShadow:\n '-16px -16px 27px rgba(255, 255, 255, 0.5), 16px 16px 27px rgba(37, 59, 176, 0.14393)',\n\n ':focus': {\n boxShadow: '0 0 0 2px #fff, 0 0 0 3px #060709 !important',\n },\n })}\n onClick={() => {\n onClose();\n }}\n >\n Ok\n </button>\n )}\n </div>\n </Modal>\n );\n};\n","/** @jsx jsx */\n\nimport {\n Fragment as _,\n useState,\n useRef,\n useEffect,\n useMemo,\n useCallback,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { css, jsx } from '@emotion/core';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport { Box } from '@chameleoncreator/creator-ui';\nimport { useCachedResource } from 'services/useCachedResource';\nimport { CHAMELEON_CACHE_v1 } from 'services/imageCache';\nimport { Orbs, getAnimatedOrbsDefaultValues } from './Orbs';\n\nconst Background = ({\n id,\n background,\n backgroundImageOpacity,\n backgroundBlur = 0,\n}) => {\n let cachedBackgroundImage = useCachedResource(CHAMELEON_CACHE_v1, background);\n\n return (\n <div\n id={`topic-background-${id}`}\n style={{\n position: 'fixed',\n left: 0,\n top: 0,\n width: '100vw',\n height: '100vh',\n ...(background && {\n background: `url('${cachedBackgroundImage ||\n background}') center / cover no-repeat`,\n }),\n\n opacity: backgroundImageOpacity / 100,\n filter: `blur(${backgroundBlur}px)`,\n // scale the thing up to not have blurry edges\n ...(backgroundBlur > 0 && {\n transformOrigin: 'center',\n transform: 'scale(1.1)',\n }),\n pointerEvents: 'none',\n }}\n />\n );\n};\n\nconst BackgroundWithParallax = props => {\n const {\n // state,\n interactions,\n background,\n backgroundImageOpacity,\n backgroundBlur = 0,\n parallaxValue = 10,\n width,\n height,\n } = props;\n\n const cachedBackgroundImage = useCachedResource(\n CHAMELEON_CACHE_v1,\n background\n );\n\n const [\n refreshParallaxScrollOnTopicChange,\n setRefreshParallaxScrollOnTopicChange,\n ] = useState<boolean>(false);\n\n const img = useRef<HTMLImageElement | null>(null);\n const setImageRef = useCallback(node => {\n img.current = node;\n }, []);\n\n const minHeight = `${100 + parallaxValue}vh`;\n\n useEffect(() => {\n if (!img.current) {\n return;\n }\n\n const parallaxThrottler = () => {\n // we can implement whatever more specific throttling approach...\n requestAnimationFrame(parallax);\n };\n\n const parallax = () => {\n if (!img.current) {\n return;\n }\n\n const { innerHeight, scrollY } = window;\n const imgTravel = img.current.offsetHeight - innerHeight;\n const scrollTravel = innerHeight * (interactions.length - 1);\n const scrollUnit = imgTravel / scrollTravel;\n const scrollValue = scrollY * scrollUnit;\n\n if (scrollValue > imgTravel) {\n return;\n }\n\n //\n img.current.style.transform = `translateY(-${scrollValue}px)`;\n };\n //\n\n window.addEventListener('scroll', parallaxThrottler);\n window.addEventListener('resize', parallaxThrottler);\n parallax();\n\n return () => {\n window.removeEventListener('scroll', parallaxThrottler);\n window.removeEventListener('resize', parallaxThrottler);\n };\n }, [setImageRef, refreshParallaxScrollOnTopicChange]);\n\n useEffect(() => {\n if (!img.current) {\n return;\n }\n\n let tick;\n\n if (document.body.scrollHeight > window.innerHeight) {\n const imgHeightOnLoad = img.current.offsetHeight;\n\n let checkLimit = 0;\n\n tick = setInterval(() => {\n if (!img.current) {\n return;\n }\n\n if (img.current.offsetHeight !== imgHeightOnLoad) {\n clearInterval(tick);\n setRefreshParallaxScrollOnTopicChange(true);\n }\n\n //\n if (checkLimit >= 300) {\n clearInterval(tick);\n }\n checkLimit += 1;\n //\n }, 1);\n }\n\n return () => {\n clearInterval(tick);\n };\n }, [setImageRef, setRefreshParallaxScrollOnTopicChange]);\n\n return (\n <_>\n <div\n style={{\n position: 'fixed',\n left: 0,\n top: 0,\n width: '100vw',\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n pointerEvents: 'none',\n }}\n >\n <img\n ref={setImageRef}\n src={cachedBackgroundImage || background}\n style={{\n all: 'initial',\n position: 'absolute',\n objectFit: 'cover',\n minWidth: '100vw',\n minHeight,\n opacity: backgroundImageOpacity / 100,\n filter: `blur(${backgroundBlur}px)`,\n }}\n />\n </div>\n </_>\n );\n};\n\nconst GradientBackground = ({ backgroundGradientData }) => {\n const {\n backgroundPrimaryColor,\n backgroundSecondaryColor,\n backgroundGradientAngle = 0,\n } = backgroundGradientData || {};\n\n return (\n <div\n css={css({\n position: 'fixed',\n width: '100vw',\n height: '100vh',\n background: `linear-gradient(${backgroundGradientAngle}deg, ${backgroundSecondaryColor}, ${backgroundPrimaryColor})`,\n })}\n />\n );\n};\n\nconst TopicContainer = props => {\n const { state, theme, topic, children } = props as any;\n\n const block: any = getBlockById(topic.id);\n\n let {\n src,\n imageId,\n width,\n height,\n backgroundImage,\n backgroundImageOpacity = 100,\n backgroundBlur = 0,\n parallax = false,\n parallaxValue = 10,\n backgroundGradient,\n backgroundSecondaryColor,\n backgroundGradientAngle = 0,\n backgroundGradientFullHeight = false,\n backgroundStyle,\n }: // primaryOrbColor,\n // secondaryOrbColor,\n // tertiaryOrbColor,\n // orbOpacity = 100,\n // orbBlurStrength = 30,\n // orbSpeed = 2,\n any = block.props;\n\n const {\n primaryOrbColor,\n secondaryOrbColor,\n tertiaryOrbColor,\n orbOpacity,\n orbBlurStrength,\n orbSpeed,\n } = getAnimatedOrbsDefaultValues(block.props);\n\n const main = useRef<HTMLDivElement>(null);\n\n // dirty gotta try and cover for legacy backgroundImage\n if (src) {\n backgroundImage = src;\n }\n\n let backgroundColor =\n block.props.backgroundColor || theme.backgroundColor || '';\n\n if (backgroundGradient && backgroundGradientFullHeight) {\n backgroundColor = `linear-gradient(${backgroundGradientAngle}deg, ${backgroundSecondaryColor}, ${block.props.backgroundColor})`;\n }\n\n // this conditional bit evaluates if there was an image in the legacy format. but backgroundStyle is undefined\n const _backgroundImage_ =\n backgroundStyle === undefined && backgroundImage\n ? backgroundImage\n : backgroundStyle === 'backgroundImage'\n ? backgroundImage\n : undefined;\n\n // legacy was\n // backgroundStyle === 'backgroundImage' ? backgroundImage : undefined\n\n return (\n // @ts-ignore\n <Box\n ref={main}\n className=\"fader_-5s\"\n id=\"main\"\n tabindex=\"-1\"\n css={css`\n position: relative;\n background: ${backgroundColor};\n ${backgroundGradient &&\n backgroundGradientFullHeight &&\n `\n background-size: 100vw\n ${`calc(100vh * ${children?.props?.interactions.length})`};\n `}\n `}\n >\n {backgroundGradient && !backgroundGradientFullHeight && (\n <GradientBackground\n backgroundGradientData={{\n backgroundGradientAngle,\n backgroundPrimaryColor: backgroundColor,\n backgroundSecondaryColor,\n }}\n />\n )}\n\n {window.dev() || !parallax ? (\n <Background\n id={topic.id}\n background={_backgroundImage_}\n backgroundImageOpacity={backgroundImageOpacity}\n backgroundBlur={backgroundBlur}\n />\n ) : (\n <BackgroundWithParallax\n // state={state}\n interactions={children.props.interactions}\n background={_backgroundImage_}\n backgroundImageOpacity={backgroundImageOpacity}\n backgroundBlur={backgroundBlur}\n parallaxValue={parallaxValue}\n width={width}\n height={height}\n />\n )}\n\n {backgroundStyle === 'animatedOrbs' && (\n <Orbs\n {...{\n orbsFor: 'topic',\n primaryOrbColor,\n secondaryOrbColor,\n tertiaryOrbColor,\n orbOpacity,\n orbBlurStrength,\n orbSpeed,\n }}\n />\n )}\n\n {children}\n </Box>\n );\n};\n\nexport default TopicContainer;\n","let REVIEW_MODE_WINDOW;\n\ntry {\n REVIEW_MODE_WINDOW = window.parent;\n} catch (err) {\n console.warn('some error getting the parent window. . .', err);\n}\n\ninterface IPostMessageData {\n type: string;\n data: string;\n}\n\nexport function reviewToolPostMessage(postMessageData: IPostMessageData) {\n if (REVIEW_MODE_WINDOW) {\n // try {\n // REVIEW_MODE_WINDOW?.postMessage(\n // postMessageData,\n // '*.chameleoncreator.com'\n // );\n // } catch (err) {\n // if (window.dev()) {\n // REVIEW_MODE_WINDOW?.postMessage(postMessageData, '*');\n // }\n // }\n REVIEW_MODE_WINDOW?.postMessage(postMessageData, '*');\n }\n}\n\nexport function reviewToolPostMessageOnMessage(\n fN: (e: { [key: string]: any }) => void\n): () => void {\n window.addEventListener('message', fN);\n\n return () => {\n window.removeEventListener('message', fN);\n };\n}\n","import isAndroidSamsung from 'services/isAndroidSamsung';\nimport isAppleComputerInc from 'services/isAppleComputerInc';\nimport getStore from 'services/getStore';\nimport { State } from 'store/store';\n\nconst store = getStore();\nconst isDevice = isAppleComputerInc() || isAndroidSamsung();\n\nexport const getModuleIsFreeScrollingDesktop = () => {\n const state = store.getState();\n\n const moduleIsFreeScrollingDesktop =\n state.theme?.moduleIsFreeScrolling?.desktop || false;\n\n return !isDevice && moduleIsFreeScrollingDesktop;\n};\n\nexport const getModuleIsFreeScrollingDevice = () => {\n const state = store.getState();\n\n const moduleIsFreeScrollingDevice =\n state.theme?.moduleIsFreeScrolling?.device || false;\n\n return isDevice && moduleIsFreeScrollingDevice;\n};\n","import getStore from 'services/getStore';\nimport pubSub from 'services/pubSub';\nimport isAndroidSamsung from 'services/isAndroidSamsung';\nimport isAppleComputerInc from 'services/isAppleComputerInc';\nimport {\n getModuleIsFreeScrollingDesktop,\n getModuleIsFreeScrollingDevice,\n} from 'services/getModuleIsFreeScrolling';\nimport { reviewToolPostMessage } from 'services/reviewToolPostMessage';\nimport { speechSynthesisCancel } from 'services/speechSynthesisCancel';\nimport { getSCORMInitialized } from 'components/lib/Scorm/SCORM';\n\nconst store = getStore();\n\nconst isDevice = isAppleComputerInc() || isAndroidSamsung();\n\n// console.log({\n// isAppleComputerInc: isAppleComputerInc(),\n// isAndroidSamsung: isAndroidSamsung(),\n// isDevice,\n// });\n\nlet interactionsSeen = [] as any[];\n\npubSub.subscribe('RESET_MODULE', () => {\n interactionsSeen = [];\n});\n\nlet debounceScrolling;\n\nlet oldTopic;\nlet newTopic;\nlet topicUpdated;\n\nlet oldPosition = 0;\nlet newPosition = 0;\n\nconst clearHistory = () => {\n requestAnimationFrame(\n () =>\n (window.location.hash = Math.random()\n .toString(16)\n .substr(2, 8))\n );\n (window as any).locationHistory = null;\n};\n\n// when the pattern settles. all this will just publish an object with\n// all this\n\nconst windowScrollInfo = (e, currentTopic) => {\n if (currentTopic) {\n newTopic = currentTopic;\n }\n\n clearTimeout(debounceScrolling);\n\n debounceScrolling = setTimeout(() => {\n let scrollDirection;\n\n if (oldTopic !== newTopic) {\n topicUpdated = true;\n oldTopic = newTopic;\n } else {\n topicUpdated = false;\n }\n\n if (!topicUpdated) {\n newPosition = window.scrollY;\n\n if (oldPosition !== newPosition) {\n scrollDirection = oldPosition < newPosition ? 'down' : 'up';\n\n // either direction. might change. us direction for other things. . .\n if (\n window.locationHistory &&\n ['up', 'down'].includes(scrollDirection)\n ) {\n // console.log({ 'window.persistHistory': window.persistHistory });\n // if persistHistory is true we do not want to clear it automatically here on scroll\n if (!window.persistHistory) {\n clearHistory();\n }\n }\n\n oldPosition = newPosition;\n }\n }\n\n const sections = Array.from(document.querySelectorAll('section'));\n\n const sectionsInView: any = sections.reduce(\n ((acc, curr, index) => {\n const { top, height } = curr.getBoundingClientRect();\n\n return [\n ...acc,\n {\n section: curr,\n id: curr.id.replace(/i/, ''),\n inView: height\n ? top >= 0 - height / 2 && top <= window.innerHeight / 2\n : false,\n index,\n },\n ];\n }) as any,\n []\n );\n\n const sectionInView = sectionsInView.find(s => s.inView);\n\n if (sectionInView && window['sectionInView']?.id !== sectionInView?.id) {\n // console.log(\n // 'only update sectionInView if defined and it changes !!!',\n // sectionInView.id\n // );\n\n window['sectionInView'] = sectionInView;\n\n // window.speechSynthesis.cancel();\n speechSynthesisCancel();\n\n // moving the focus biz back to the continue / back button. . .\n sections.forEach(section => {\n //\n //\n if (!isDevice) {\n // if we on desktop && we not freeScrolling\n if (!getModuleIsFreeScrollingDesktop()) {\n section.setAttribute('aria-hidden', 'true');\n section.removeAttribute('role');\n }\n }\n });\n\n if (sectionInView) {\n if (!isDevice) {\n // if we on desktop && we not freeScrolling\n if (!getModuleIsFreeScrollingDesktop()) {\n sectionInView.section.setAttribute('aria-hidden', 'false');\n sectionInView.section.setAttribute('role', 'main');\n }\n } else {\n // we are on a device. check if we freeScrolling\n if (!getModuleIsFreeScrollingDevice()) {\n const { activeElement } = document;\n const activeElementIsInput =\n activeElement &&\n ['input', 'textarea'].indexOf(\n activeElement.tagName.toLowerCase()\n ) !== -1;\n\n // only give focus back to section if..\n if (!activeElementIsInput) {\n sectionInView.section.focus({\n preventScroll: true,\n });\n }\n }\n }\n\n pubSub.publish('SECTION_IN_VIEW', {\n sectionInView,\n });\n\n // console.log('SCORM INITIALIZED ?', getSCORMInitialized());\n // only fire if we're not connected to scorm\n // window.reviewModeEnabled &&\n if (!getSCORMInitialized()) {\n reviewToolPostMessage({\n type: 'currentInteractionId',\n data: sectionInView.id,\n });\n }\n }\n }\n\n if (!window['sectionInView']) {\n return;\n }\n\n if (!interactionsSeen.includes(window['sectionInView'].id)) {\n interactionsSeen.push(window['sectionInView'].id);\n\n // console.log();\n\n store.dispatch({\n type: 'UPDATE_INTERACTIONS_SEEN',\n data: {\n id: window['sectionInView'].id,\n },\n });\n }\n }, 100);\n};\n\nwindow.addEventListener('scroll', e => windowScrollInfo(e, null));\n\nexport default windowScrollInfo;\n","import { useEffect, useContext } from 'react';\n\nimport { HostingContext, SessionState, Session } from 'hosting/context';\nimport { useDispatch } from 'react-redux';\nimport {\n transformListFromSIdToId,\n transformListFromIdToSId,\n} from 'services/transformListBetweenIdSId';\nimport {\n transformAssessmentsToSuspendData,\n transformAssessmentsFromSuspendData,\n} from 'services/transformAssessmentsToAndFromSuspendData';\nimport getStore from 'services/getStore';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport {\n // transformScoreDataFromIdToSId,\n transformScoreDataFromSIdToId,\n} from 'services/transformScoreData';\n\ninterface ExtendedSession extends Session {\n learning_module_session?: { [key: string]: any };\n}\n\nexport const ReadsHostingContext = () => {\n const hostingContext = useContext(HostingContext);\n const dispatch = useDispatch();\n\n useEffect(() => {\n // console.log('reads hosting context', hostingContext);\n if (!hostingContext) {\n return;\n }\n\n hostingContext.current().then(($: ExtendedSession) => {\n //\n //\n console.log($);\n\n const { session_data } = $.learning_module_session || {};\n const { location } = session_data;\n const {\n scoreData = {},\n interactionsSeen = [],\n interactionsLocked = [],\n landingPagesSeenState = {},\n assessments = {},\n moduleVariables = {},\n } = session_data?.data || {};\n\n const state = getStore().getState();\n const { idToSIdMap, sIdToIdMap } = state;\n\n const transformedInteractionsSeen = transformListFromSIdToId(\n sIdToIdMap,\n interactionsSeen\n );\n\n const transformedInteractionsLocked = transformListFromSIdToId(\n sIdToIdMap,\n interactionsLocked\n );\n\n let transformedAssessments = assessments;\n if (Object.keys(assessments).length) {\n transformedAssessments = transformAssessmentsFromSuspendData(\n assessments,\n state\n );\n }\n\n //\n\n let transformedScoreData = { ...scoreData };\n if (scoreData) {\n transformedScoreData = transformScoreDataFromSIdToId(scoreData, state);\n }\n\n dispatch({\n type: 'LOAD_SUSPEND_DATA',\n data: {\n scoreData: transformedScoreData,\n interactionsSeen: transformedInteractionsSeen,\n interactionsLocked: transformedInteractionsLocked,\n landingPagesSeenState,\n assessments: transformedAssessments,\n moduleVariables,\n },\n });\n\n if (location) {\n console.log('LOAD_BOOKMARK_DATA', location);\n\n dispatch({\n type: 'LOAD_BOOKMARK_DATA',\n data: location,\n });\n }\n\n if (interactionsSeen.length) {\n console.log('UPDATE_INTERACTIONS_SEEN', transformedInteractionsSeen);\n\n dispatch({\n type: 'UPDATE_INTERACTIONS_SEEN',\n data: transformedInteractionsSeen,\n });\n }\n\n let hasReloadedScoreData;\n if (scoreData && !hasReloadedScoreData) {\n Object.keys(scoreData).forEach((entry: any, index) => {\n dispatch(updateScoreAction(entry, scoreData[entry]));\n });\n\n hasReloadedScoreData = true;\n }\n });\n }, []);\n\n return null;\n};\n","/** @jsx jsx */\n\nimport { Block } from '@chameleoncreator/creator-app';\nimport { jsx } from '@emotion/core';\nimport { setExitAction } from 'actions/setExitAction';\nimport { ErrorModal } from 'components/errorModal';\nimport Header_v2 from 'components/Header_v2/Header_v2';\nimport { AudioPlayer } from 'components/Layouts/AudioPlayer';\nimport { ThemeProvider } from 'emotion-theming';\nimport { createScorm } from 'factories/scorm';\nimport { SCORM } from 'pipwerks-scorm-api-wrapper';\nimport {\n createContext,\n useEffect,\n useLayoutEffect,\n useState,\n useMemo,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n getBlock,\n getInteractionsFromTopicAndState,\n getTopicGroupFromState,\n getTopicsFromGroup,\n} from 'selectors/block';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport getTopics from 'services/apiHelpers/getTopics';\nimport setCurrentTopic from 'services/apiHelpers/setCurrentTopic';\nimport setCurrentInteraction from 'services/apiHelpers/setCurrentInteraction';\nimport getCurrentLocation from 'services/getCurrentLocation';\nimport getAllInteractions from 'services/apiHelpers/getAllInteractions';\nimport { State } from 'store/store';\nimport { theme } from 'theme';\nimport { SCORMRenderer } from '../lib/Scorm/SCORM';\nimport AssessmentContainer from './AssessmentContainer';\nimport Bookmark from './Bookmark';\nimport { FontManager } from './Fonts';\nimport Interactions_Editor from './Interactions_Editor';\nimport Interactions_Module from './Interactions_Module';\nimport { ModuleHasAudioMessage } from './ModuleHasAudioMessage';\nimport pubSub from 'services/pubSub';\nimport TopicContainer from './TopicContainer';\nimport windowScrollInfo from './windowScrollInfo';\nimport {\n reviewToolPostMessage,\n reviewToolPostMessageOnMessage,\n} from 'services/reviewToolPostMessage';\nimport { getSCORMInitialized } from 'components/lib/Scorm/SCORM';\nimport { ReadsHostingContext } from './ReadsHostingContext';\nimport { getNavLoadingIndicator } from './navLoadingIndicator';\nimport { removeUndefinedEntriesFromObject } from 'services/removeUndefinedEntriesFromObject';\nimport { removeFalseyEntriesFromObject } from 'services/removeFalseyEntriesFromObject';\nimport getBlockById from 'services/apiHelpers/getBlockById';\n\n// window.location.hash = '';\nif (window.location.hash !== '') {\n // something\n}\n\nlet moduleHasAudio;\nlet audioAcknowledged;\n\nexport const getSCORMVersion = () => {\n return SCORM.version;\n};\n\nconst setCompletionStatus = scormVersion => {\n if (scormVersion === '1.2') {\n SCORM.set('cmi.core.lesson_status', 'completed');\n } else {\n SCORM.set('cmi.completion_status', 'completed');\n }\n};\n\nexport const ModuleContext = createContext({\n passMark: 80,\n exit: () => {},\n setComplete: () => {},\n setCompleteAndExit: () => {},\n resetModule: () => {},\n});\n\nexport const chameleonOrigins = [\n 'https://review.staging.chameleoncreator.com',\n 'https://staging.v2.chameleoncreator.com',\n 'https://v2.chameleoncreator.com',\n 'https://review.chameleoncreator.com',\n 'http://localhost:8000',\n 'http://localhost:3002',\n 'http://localhost:3011',\n];\n\nconst Module = props => {\n //\n // bookmarkStates\n // 0 no bookmarking\n // 1 pending\n // 2 resolved\n const [bookmarkState, updateBookmarkState] = useState<0 | 1 | 2>(0);\n\n const [editModuleHasAudioMessage, setEditModuleHasAudioMessage] = useState<\n boolean\n >(false);\n\n const [, setAudioAcknowledged] = useState<boolean>(window.dev() || false); // double negative ?\n\n let bookmarkingEnabled = useSelector(\n (state: State) => state.theme.enableBookmarking\n );\n\n if (bookmarkingEnabled === undefined) {\n // if the theme hasn't been manually updated 'bookmarkingEnabled' will be undefined in the theme.js output\n // in that case we interpret undefined as default/true\n bookmarkingEnabled = true;\n }\n\n const topicId = useSelector((state: State) => {\n return state.currentTopic;\n });\n\n const interactionId = useSelector((state: State) => {\n return state.currentInteraction;\n });\n\n const blocks = useSelector((state: State) => {\n return state.blocks;\n });\n\n const rootBlockId = useSelector((state: State) => {\n return state.rootBlockId;\n });\n\n const loadingSpinnerColor = useSelector((state: State) => {\n return state.theme.loadingSpinnerColor;\n });\n\n const group = useMemo(() => {\n return getTopicGroupFromState({ blocks } as State);\n }, [topicId]);\n\n const topicList = useMemo(() => {\n return getTopicsFromGroup({ blocks } as State, group);\n }, [topicId]);\n\n const dispatch = useDispatch();\n\n const currentTopicIndex = topicId\n ? topicList.findIndex(t => t.id === topicId)\n : 0;\n\n const topic: any = topicList[currentTopicIndex > -1 ? currentTopicIndex : 0];\n\n // update has with topic name\n // do we want to keep the spaces ' ' > %20\n // assume screen readers etc know how to manage them ( and not read that as literal )\n // const parsedTopicName = topic.props.name.replace(/#/g, '');\n // window.location.hash = parsedTopicName;\n\n let interactions = topic\n ? getInteractionsFromTopicAndState(\n { blocks } as State,\n getBlock(blocks, topic.id)\n )\n : [];\n\n const interactionNameUpdates = interactions.reduce((acc, curr) => {\n return `${acc}${curr?.props?.name}`;\n }, '');\n\n if (!window.dev()) {\n // only run this once. in output and when moduleHasAudio is undefined\n //\n if (moduleHasAudio === undefined) {\n moduleHasAudio = getAllInteractions().some(i => {\n const { includeAudio, audioSrc } = getBlockById(i)?.props || {};\n\n return includeAudio && audioSrc;\n });\n\n console.log('checking for module has audio', { moduleHasAudio });\n }\n }\n\n let scormBlock = Object.values(blocks).find(\n ((b: Block) => b.type === 'SCORM') as any\n ) as Block;\n\n if (!scormBlock) {\n scormBlock = createScorm();\n }\n\n const runExit = () => {\n if (scormBlock.props!.scormControlledExit) {\n dispatch(setExitAction());\n } else {\n dispatch(setExitAction());\n setTimeout(() => {\n window?.top?.close();\n }, 200);\n }\n };\n\n const moduleBlock = Object.values(blocks).find(\n ((b: Block) => b.type === 'Module') as any\n ) as Block;\n let passMark = moduleBlock.props!.passMark || 80;\n\n const TopicAssessmentContainer = !topic.props.asAssessment\n ? TopicContainer\n : AssessmentContainer;\n\n const interactionsInTopics = topicList.reduce((acc, topic) => {\n return {\n ...acc,\n [topic.id]: getInteractionsInTopic(topic),\n };\n }, {});\n\n let showModuleHasAudioMessage =\n moduleHasAudio && !audioAcknowledged && bookmarkState !== 1;\n\n if (window.dev()) {\n showModuleHasAudioMessage = editModuleHasAudioMessage;\n }\n\n useLayoutEffect(() => {\n windowScrollInfo(null, topicId);\n }, [topicId]);\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n const pS = pubSub.subscribe(\n 'SHOW_MODULE_HAS_AUDIO_MESSAGE',\n ({ showModuleHasAudioMessage }) => {\n setEditModuleHasAudioMessage(showModuleHasAudioMessage);\n }\n );\n\n return () => {\n pS();\n };\n }, []);\n\n useEffect(() => {\n // put this somewhere else\n const compareIds = (topicInteraction, id) => {\n return [topicInteraction.props.sId, topicInteraction.id]\n .map(sId => String(sId))\n .includes(id);\n };\n\n const navToHash = e => {\n e.preventDefault();\n\n let hash: any = String(window.location.hash)\n .replace(/#/, '')\n .split('/');\n\n if (hash.length !== 2) {\n return;\n }\n\n // for legacy we'll use the id. format will be the same as\n const [topicSid, interactionSId] = hash;\n\n const targetTopic = getTopics().find((t: any) => compareIds(t, topicSid));\n\n // this'll only be for when we're testing\n if (!targetTopic) {\n return;\n }\n\n const interactionsInTopic = interactionsInTopics[targetTopic.id];\n\n const targetInteraction = interactionsInTopic.find((i: any) =>\n compareIds(i, interactionSId)\n );\n\n // be safe. bail if not\n if (!targetInteraction) {\n return;\n }\n\n // if we're here. we're gonna nav\n // set history\n (window.locationHistory as any) = getCurrentLocation();\n //\n\n pubSub.publish('MODULE_NAVIGATION', {\n navToHash: 'starts',\n });\n\n const targetInteractionIndex = interactionsInTopic.findIndex((i: any) =>\n compareIds(i, interactionSId)\n );\n\n const updatedInteractionsSeen: string[] = [];\n const updatedInteractionsOpen: string[] = [];\n\n interactionsInTopic.forEach((i: any, index: number) => {\n if (index <= targetInteractionIndex) {\n updatedInteractionsSeen.push(i.id);\n updatedInteractionsOpen.push(i.id);\n }\n });\n\n dispatch({\n type: 'UPDATE_INTERACTIONS_SEEN',\n data: updatedInteractionsSeen,\n });\n\n dispatch({\n type: 'UPDATE_INTERACTIONS_OPEN',\n data: updatedInteractionsOpen,\n });\n\n targetTopic?.id && setCurrentTopic(targetTopic.id);\n\n const targetTopicContainerElement = document.querySelector(\n '#main'\n ) as HTMLElement;\n\n // const {\n // backgroundColor,\n // backgroundSecondaryColor,\n // backgroundGradient,\n // backgroundGradientAngle = 0,\n // src,\n // } = targetTopic?.props || {};\n\n // we were previously 'hiding' the topic so we could fade it back in later\n // let's leave it alone and use the preloader as the transitioning effect\n if (targetTopicContainerElement) {\n // targetTopicContainerElement.classList.remove('fader_-5s');\n // targetTopicContainerElement.style.opacity = '0';\n }\n\n const targetSectionId = `#i${targetInteraction.id}`;\n const targetSectionElement = document.querySelector(targetSectionId);\n\n const backgroundColor =\n targetTopic?.props?.backgroundColor ||\n targetInteraction?.props?.background ||\n targetInteraction?.props?.backgroundColor;\n\n const {\n // backgroundColor,\n backgroundSecondaryColor,\n backgroundGradient,\n backgroundGradientAngle = 0,\n backgroundBlur,\n backgroundImageOpacity = 100,\n src,\n } = {\n ...targetTopic?.props,\n // ...removeFalseyEntriesFromObject(\n ...removeUndefinedEntriesFromObject(targetInteraction?.props),\n // ),\n } as any;\n //\n\n window.persistHistory = true;\n\n // remove the navLoadingIndicator if it exists. no dubUps !!!\n let navLoadingIndicator = document.querySelector(\n '#chameleon-nav-loading-indicator'\n ) as HTMLDivElement;\n\n if (navLoadingIndicator && document.body.contains(navLoadingIndicator)) {\n document.body.removeChild(navLoadingIndicator);\n }\n\n navLoadingIndicator = getNavLoadingIndicator(\n src || backgroundColor ? 'transparent' : loadingSpinnerColor\n ); // only showing the animated bubbles if. . .\n\n // const topicBackground = document.querySelector(\n // `#topic-background-${targetTopic.id}`\n // );\n //\n // let topicBackgroundStyles;\n //\n // if (topicBackground) {\n // topicBackgroundStyles = window.getComputedStyle(topicBackground);\n // }\n\n // UPDATE\n // in this version we account for background color etc on both topic > then interaction\n // so our 'flash' is always the background color\n\n // default the preloader to hidden\n // let navLoadingIndicatorVisibility = 'hidden';\n // navLoadingIndicator.style.visibility = 'hidden';\n\n // but if there's these values we can use. be visible to use them\n //\n const backgroundColorOrGradient = backgroundGradient\n ? `linear-gradient(${backgroundGradientAngle}deg, ${backgroundSecondaryColor}, ${backgroundColor})`\n : backgroundColor || '#ffffff';\n\n if (src || backgroundColorOrGradient) {\n navLoadingIndicator.style.background = src\n ? `url('${src}') center / cover no-repeat, ${backgroundColorOrGradient}`\n : backgroundColorOrGradient;\n\n // navLoadingIndicatorVisibility = 'visible';\n navLoadingIndicator.style.opacity = String(\n backgroundImageOpacity / 100\n );\n\n if (!!backgroundBlur) {\n navLoadingIndicator.style.filter = `blur(${backgroundBlur}px)`;\n navLoadingIndicator.style.transformOrigin = 'center';\n navLoadingIndicator.style.transform = 'scale(1.1)';\n }\n }\n\n // navLoadingIndicator.style.visibility = navLoadingIndicatorVisibility;\n\n document.body.appendChild(navLoadingIndicator);\n\n let locationTimeOut = 0;\n\n const tick = setInterval(() => {\n if (\n locationTimeOut > 2 &&\n document.body.contains(navLoadingIndicator)\n ) {\n console.log(\n locationTimeOut,\n document.body.contains(navLoadingIndicator),\n 'we should see the navLoadingIndicator now !!!'\n );\n\n navLoadingIndicator.style.visibility = 'visible';\n }\n\n if (\n (targetSectionElement &&\n targetSectionElement.getBoundingClientRect().top < 1) ||\n locationTimeOut >= 10\n ) {\n console.log(\n `module has navigated to ${targetSectionId} in ${locationTimeOut *\n 100} milliseconds ( or timed out at max 1 second ))`\n );\n\n if (document.body.contains(navLoadingIndicator)) {\n const t = 300; // ms\n navLoadingIndicator.style.opacity = '0';\n navLoadingIndicator.style.transition = `opacity ${t / 1000}s`;\n\n // we could do better to use an onTransitionEnd perhaps. . .\n setTimeout(() => {\n document.body.removeChild(navLoadingIndicator);\n }, t);\n }\n\n // not needed if we're not hiding the targetTopicContainerElement first. . .\n // targetTopicContainerElement.style.opacity = '1';\n // targetTopicContainerElement.style.transition = 'opacity 0.25s';\n\n setTimeout(() => {\n window.persistHistory = false;\n }, 750);\n\n clearInterval(tick);\n }\n //\n window.location.href = targetSectionId;\n locationTimeOut += 1;\n }, 100);\n\n pubSub.publish('MODULE_NAVIGATION', {\n navToHash: 'ends',\n });\n };\n\n // only add this listener when NOT in dev\n // means no weirdo nav while editing\n if (!window.dev()) {\n window.addEventListener('hashchange', navToHash);\n }\n\n // maybe we can toggle all this on / off when scrolling\n\n return () => {\n window.removeEventListener('hashchange', navToHash);\n };\n }, []);\n\n useEffect(() => {\n // TODO implement this check correctly\n\n let reviewModeEnabled;\n\n try {\n const href = window.top?.location?.href;\n\n reviewModeEnabled = href && /\\/review\\//g.test(href);\n } catch (err) {\n console.warn(err);\n }\n\n console.log({\n 'window.reviewModeEnabled': window.reviewModeEnabled,\n reviewModeEnabled,\n });\n\n if (!(window.reviewModeEnabled || reviewModeEnabled)) {\n return;\n }\n\n // do not do any of this if we're connected to scorm\n const SCORMInitialized = getSCORMInitialized();\n if (SCORMInitialized) {\n return;\n }\n //\n\n const moduleTopicsAndInteractionsData = topicList.reduce((acc, curr) => {\n const { id } = curr;\n\n type CurrProps = {\n sId: string;\n name: string;\n };\n\n const { sId, name } = curr.props as CurrProps;\n\n // console.time('interactionsInTopic');\n // const interactionsInTopic = getInteractionsFromTopicAndState(\n // { blocks } as State,\n // getBlock(blocks, curr.id)\n // );\n\n const interactionsInTopic = interactionsInTopics[curr.id];\n\n // console.timeEnd('interactionsInTopic');\n\n return {\n ...acc,\n [id]: {\n id,\n sId,\n name,\n\n interactions: interactionsInTopic.map(interaction => {\n const { id } = interaction;\n const { sId, name } = interaction.props as CurrProps;\n return {\n id,\n sId,\n name,\n };\n }),\n },\n };\n }, {});\n\n reviewToolPostMessage({\n type: 'moduleTopicsAndInteractionsData',\n data: JSON.stringify(moduleTopicsAndInteractionsData),\n });\n\n const navToInteractionMessage = reviewToolPostMessageOnMessage(e => {\n const { origin } = e;\n\n if (!chameleonOrigins.includes(origin)) {\n return;\n }\n\n const { type, data: location } = e.data;\n\n if (type === 'navToInteraction') {\n console.log(type, location);\n\n try {\n if (window.dev()) {\n const [topicSId, interactionSId] = location.split('/');\n\n let topic;\n let interaction;\n\n const blockList = Object.values(blocks) as Block[];\n\n for (let i = 0; i < blockList.length; i += 1) {\n const b = blockList[i];\n const sId = b?.props?.sId;\n\n if (b.type === 'Topic' && sId == topicSId) {\n topic = b;\n }\n\n if (b.type === 'Interaction' && sId == interactionSId) {\n interaction = b;\n }\n\n if (topic && interaction) {\n break;\n }\n }\n\n if (topic && topicId !== topic.id) {\n setCurrentTopic(topic.id);\n }\n\n if (interaction) {\n setTimeout(() => {\n setCurrentInteraction(interaction.id);\n }, 100);\n }\n\n return;\n } else {\n if (location) {\n window.location.hash = location;\n }\n }\n } catch (err) {\n //\n }\n }\n });\n\n return () => {\n navToInteractionMessage();\n };\n }, [\n topicList.length,\n topic.props.name,\n interactions.length,\n interactionNameUpdates,\n ]);\n\n useLayoutEffect(() => {\n if (!rootBlockId) {\n return;\n }\n window.scrollTo(0, 0);\n }, [currentTopicIndex]);\n\n if (!rootBlockId) {\n return null;\n }\n\n return (\n <ModuleContext.Provider\n value={{\n passMark,\n exit: runExit,\n setComplete() {\n console.log('setComplete()');\n setCompletionStatus(getSCORMVersion());\n },\n setCompleteAndExit() {\n console.log('setCompleteAndExit()');\n setCompletionStatus(getSCORMVersion());\n\n requestAnimationFrame(() => {\n runExit();\n });\n },\n resetModule() {\n const firstInteractionId = (getAllInteractions()[0] as any) as string;\n\n const location = `${topicList[0]?.props?.sId}/${blocks[firstInteractionId]?.props?.sId}`;\n\n pubSub.publish('RESET_MODULE', {});\n\n dispatch({\n type: 'RESET_MODULE',\n data: {},\n });\n\n window.location.hash = location;\n },\n }}\n >\n <ReadsHostingContext />\n\n <FontManager />\n <ErrorModal>\n {error => (\n <div>\n <h1>Oh no :(</h1>\n <p>Something has gone wrong. The error message provided is:</p>\n <p>\n <strong>\"{error.message}\".</strong>\n </p>\n <p>\n We have been alerted to this error, however if it is consistently\n occuring please fell free to notify us by clicking on the support\n button in the bottom right hand corner.\n </p>\n </div>\n )}\n </ErrorModal>\n <SCORMRenderer key=\"scorm\" {...scormBlock} />\n <ThemeProvider theme={theme}>\n <Header_v2 currentTopicIndex={currentTopicIndex} topics={topicList} />\n\n <TopicAssessmentContainer\n key={`topic${currentTopicIndex}`}\n // state={state}\n theme={theme}\n topic={topic}\n >\n {window.dev() ? (\n <Interactions_Editor\n currentTopicId={topic.id}\n currentInteractionId={interactionId}\n interactions={interactions}\n />\n ) : (\n <Interactions_Module\n key={interactions[0]?.id}\n interactions={interactions}\n />\n )}\n </TopicAssessmentContainer>\n\n <div\n id=\"menu-portal\"\n style={{\n position: 'fixed',\n zIndex: 2147483647,\n }}\n />\n </ThemeProvider>\n\n {showModuleHasAudioMessage && (\n <ModuleHasAudioMessage\n onClose={() => {\n setAudioAcknowledged((audioAcknowledged = true));\n }}\n />\n )}\n\n {moduleHasAudio && (audioAcknowledged || window.dev()) && (\n <AudioPlayer key={window.dev() ? interactionId : ''} />\n )}\n\n {bookmarkingEnabled && (\n <Bookmark updateBookmarkState={updateBookmarkState} />\n )}\n </ModuleContext.Provider>\n );\n};\n\nexport default Module;\n","import Module from './Module_v2';\n\nexport default Module;\n","\nexport const setExitAction = () => {\n return {\n type: 'SET_EXIT',\n data: true,\n };\n};\n","export function getNavLoadingIndicator(\n loadingSpinnerColor = '#000'\n): HTMLDivElement {\n const navLoadingIndicator = document.createElement('div');\n navLoadingIndicator.id = 'chameleon-nav-loading-indicator';\n navLoadingIndicator.style.position = 'fixed';\n navLoadingIndicator.style.left = '0px';\n\n navLoadingIndicator.style.top = '0px';\n navLoadingIndicator.style.width = '100vw';\n navLoadingIndicator.style.height = '100vh';\n\n navLoadingIndicator.style.display = 'flex';\n navLoadingIndicator.style.justifyContent = 'center';\n navLoadingIndicator.style.alignItems = 'center';\n\n [0, 1, 2].forEach(_ => {\n const loadingSpinnerChild = document.createElement('div');\n (loadingSpinnerChild.style.backgroundColor = loadingSpinnerColor),\n navLoadingIndicator.appendChild(loadingSpinnerChild);\n });\n\n navLoadingIndicator.classList.add('la-ball-pulse', 'la-dark');\n\n return navLoadingIndicator;\n}\n","import getStore from 'services/getStore';\nimport { setCurrentInteractionAction } from \"actions/setCurrentInteractionAction\";\n\nexport default (id, updateFocusedNodeId = false) => {\n getStore().dispatch(setCurrentInteractionAction(id, updateFocusedNodeId));\n};\n","import { allGoogleFonts } from './allGoogleFonts';\n\nlet fonts = [\n 'Abel',\n 'Abril Fatface',\n 'Acme',\n 'Amatic SC',\n 'Anton',\n 'Archivo Narrow',\n 'Arimo',\n 'Arvo',\n 'Asap',\n 'Assistant',\n 'Barlow',\n 'Bitter',\n 'Bree Serif',\n 'Cabin',\n 'Cairo',\n 'Catamaran',\n 'Cinzel',\n 'Comfortaa',\n 'Crete Round',\n 'Crimson Text',\n 'Dancing Script',\n 'Domine',\n 'Dosis',\n 'EB Garamond',\n 'Exo',\n 'Exo 2',\n 'Fira Sans',\n 'Fira Sans Condensed',\n 'Fjalla One',\n 'Francois One',\n 'Gloria Hallelujah',\n 'Heebo',\n 'Hind',\n 'Hind Madurai',\n 'Hind Siliguri',\n 'Inconsolata',\n 'Indie Flower',\n 'Inter',\n 'Josefin Sans',\n 'Kanit',\n 'Karla',\n 'Lato',\n 'Libre Baskerville',\n 'Libre Franklin',\n 'Lobster',\n 'Lora',\n 'Maven Pro',\n 'Merriweather',\n 'Merriweather Sans',\n 'Montserrat',\n 'Mukta',\n 'Muli',\n 'Nanum Gothic',\n 'News Cycle',\n 'Noticia Text',\n 'Noto Sans',\n 'Noto Sans JP',\n 'Noto Sans KR',\n 'Noto Sans TC',\n 'Noto Serif',\n 'Nunito',\n 'Nunito Sans',\n 'Open Sans',\n 'Open Sans Condensed',\n 'Oswald',\n 'Overpass',\n 'Oxygen',\n 'PT Sans',\n 'PT Sans Narrow',\n 'PT Serif',\n 'Pacifico',\n 'Permanent Marker',\n 'Play',\n 'Playfair Display',\n 'Poppins',\n 'Questrial',\n 'Quicksand',\n 'Rajdhani',\n 'Raleway',\n 'Righteous',\n 'Roboto',\n 'Roboto Condensed',\n 'Roboto Mono',\n 'Roboto Slab',\n 'Rokkitt',\n 'Ropa Sans',\n 'Rubik',\n 'Shadows Into Light',\n 'Signika',\n 'Slabo 27px',\n 'Source Code Pro',\n 'Source Sans Pro',\n 'Source Serif Pro',\n 'Teko',\n 'Titillium Web',\n 'Ubuntu',\n 'Ubuntu Condensed',\n 'Varela Round',\n 'Vollkorn',\n 'Work Sans',\n 'Yanone Kaffeesatz',\n];\n\nfonts = Array.from(new Set([...fonts, ...allGoogleFonts])).sort();\n\nconst getFonts = async () => {\n const url =\n 'https://www.googleapis.com/webfonts/v1/webfonts' +\n '?sort=popularity&key=AIzaSyAn2p_z3opKV9ejkE9kwMtS6epmEAGNF-8';\n const result = await fetch(url);\n const resultJson = await result.json();\n\n if (!result.ok) {\n throw new Error(resultJson.errors);\n }\n\n return (fonts = resultJson.items\n // .slice(0, 100)\n .map(f => f.family)\n .sort());\n};\n\nexport default fonts;\nexport { getFonts };\n","export const allGoogleFonts = [\n 'ABeeZee',\n 'Abel',\n 'Abhaya Libre',\n 'Abril Fatface',\n 'Aclonica',\n 'Acme',\n 'Actor',\n 'Adamina',\n 'Advent Pro',\n 'Aguafina Script',\n 'Akaya Kanadaka',\n 'Akaya Telivigala',\n 'Akronim',\n 'Akshar',\n 'Aladin',\n 'Alata',\n 'Alatsi',\n 'Albert Sans',\n 'Aldrich',\n 'Alef',\n 'Alegreya',\n 'Alegreya SC',\n 'Alegreya Sans',\n 'Alegreya Sans SC',\n 'Aleo',\n 'Alex Brush',\n 'Alfa Slab One',\n 'Alice',\n 'Alike',\n 'Alike Angular',\n 'Allan',\n 'Allerta',\n 'Allerta Stencil',\n 'Allison',\n 'Allura',\n 'Almarai',\n 'Almendra',\n 'Almendra Display',\n 'Almendra SC',\n 'Alumni Sans',\n 'Alumni Sans Inline One',\n 'Amarante',\n 'Amaranth',\n 'Amatic SC',\n 'Amethysta',\n 'Amiko',\n 'Amiri',\n 'Amita',\n 'Anaheim',\n 'Andada Pro',\n 'Andika',\n 'Andika New Basic',\n 'Anek Bangla',\n 'Anek Devanagari',\n 'Anek Gujarati',\n 'Anek Gurmukhi',\n 'Anek Kannada',\n 'Anek Latin',\n 'Anek Malayalam',\n 'Anek Odia',\n 'Anek Tamil',\n 'Anek Telugu',\n 'Angkor',\n 'Annie Use Your Telescope',\n 'Anonymous Pro',\n 'Antic',\n 'Antic Didone',\n 'Antic Slab',\n 'Anton',\n 'Antonio',\n 'Anybody',\n 'Arapey',\n 'Arbutus',\n 'Arbutus Slab',\n 'Architects Daughter',\n 'Archivo',\n 'Archivo Black',\n 'Archivo Narrow',\n 'Are You Serious',\n 'Aref Ruqaa',\n 'Arima',\n 'Arima Madurai',\n 'Arimo',\n 'Arizonia',\n 'Armata',\n 'Arsenal',\n 'Artifika',\n 'Arvo',\n 'Arya',\n 'Asap',\n 'Asap Condensed',\n 'Asar',\n 'Asset',\n 'Assistant',\n 'Astloch',\n 'Asul',\n 'Athiti',\n 'Atkinson Hyperlegible',\n 'Atma',\n 'Atomic Age',\n 'Aubrey',\n 'Audiowide',\n 'Autour One',\n 'Average',\n 'Average Sans',\n 'Averia Gruesa Libre',\n 'Averia Libre',\n 'Averia Sans Libre',\n 'Averia Serif Libre',\n 'Azeret Mono',\n 'B612',\n 'B612 Mono',\n 'BIZ UDGothic',\n 'BIZ UDMincho',\n 'BIZ UDPGothic',\n 'BIZ UDPMincho',\n 'Babylonica',\n 'Bad Script',\n 'Bahiana',\n 'Bahianita',\n 'Bai Jamjuree',\n 'Bakbak One',\n 'Ballet',\n 'Baloo 2',\n 'Baloo Bhai 2',\n 'Baloo Bhaijaan 2',\n 'Baloo Bhaina 2',\n 'Baloo Chettan 2',\n 'Baloo Da 2',\n 'Baloo Paaji 2',\n 'Baloo Tamma 2',\n 'Baloo Tammudu 2',\n 'Baloo Thambi 2',\n 'Balsamiq Sans',\n 'Balthazar',\n 'Bangers',\n 'Barlow',\n 'Barlow Condensed',\n 'Barlow Semi Condensed',\n 'Barriecito',\n 'Barrio',\n 'Basic',\n 'Baskervville',\n 'Battambang',\n 'Baumans',\n 'Bayon',\n 'Be Vietnam Pro',\n 'Beau Rivage',\n 'Bebas Neue',\n 'Belgrano',\n 'Bellefair',\n 'Belleza',\n 'Bellota',\n 'Bellota Text',\n 'BenchNine',\n 'Benne',\n 'Bentham',\n 'Berkshire Swash',\n 'Besley',\n 'Beth Ellen',\n 'Bevan',\n 'BhuTuka Expanded One',\n 'Big Shoulders Display',\n 'Big Shoulders Inline Display',\n 'Big Shoulders Inline Text',\n 'Big Shoulders Stencil Display',\n 'Big Shoulders Stencil Text',\n 'Big Shoulders Text',\n 'Bigelow Rules',\n 'Bigshot One',\n 'Bilbo',\n 'Bilbo Swash Caps',\n 'BioRhyme',\n 'BioRhyme Expanded',\n 'Birthstone',\n 'Birthstone Bounce',\n 'Biryani',\n 'Bitter',\n 'Black And White Picture',\n 'Black Han Sans',\n 'Black Ops One',\n 'Blaka',\n 'Blaka Hollow',\n 'Blinker',\n 'Bodoni Moda',\n 'Bokor',\n 'Bona Nova',\n 'Bonbon',\n 'Bonheur Royale',\n 'Boogaloo',\n 'Bowlby One',\n 'Bowlby One SC',\n 'Brawler',\n 'Bree Serif',\n 'Brygada 1918',\n 'Bubblegum Sans',\n 'Bubbler One',\n 'Buda',\n 'Buenard',\n 'Bungee',\n 'Bungee Hairline',\n 'Bungee Inline',\n 'Bungee Outline',\n 'Bungee Shade',\n 'Butcherman',\n 'Butterfly Kids',\n 'Cabin',\n 'Cabin Condensed',\n 'Cabin Sketch',\n 'Caesar Dressing',\n 'Cagliostro',\n 'Cairo',\n 'Caladea',\n 'Calistoga',\n 'Calligraffitti',\n 'Cambay',\n 'Cambo',\n 'Candal',\n 'Cantarell',\n 'Cantata One',\n 'Cantora One',\n 'Capriola',\n 'Caramel',\n 'Carattere',\n 'Cardo',\n 'Carme',\n 'Carrois Gothic',\n 'Carrois Gothic SC',\n 'Carter One',\n 'Castoro',\n 'Catamaran',\n 'Caudex',\n 'Caveat',\n 'Caveat Brush',\n 'Cedarville Cursive',\n 'Ceviche One',\n 'Chakra Petch',\n 'Changa',\n 'Changa One',\n 'Chango',\n 'Charis SIL',\n 'Charm',\n 'Charmonman',\n 'Chathura',\n 'Chau Philomene One',\n 'Chela One',\n 'Chelsea Market',\n 'Chenla',\n 'Cherish',\n 'Cherry Cream Soda',\n 'Cherry Swash',\n 'Chewy',\n 'Chicle',\n 'Chilanka',\n 'Chivo',\n 'Chonburi',\n 'Cinzel',\n 'Cinzel Decorative',\n 'Clicker Script',\n 'Coda',\n 'Coda Caption',\n 'Codystar',\n 'Coiny',\n 'Combo',\n 'Comfortaa',\n 'Comforter',\n 'Comforter Brush',\n 'Comic Neue',\n 'Coming Soon',\n 'Commissioner',\n 'Concert One',\n 'Condiment',\n 'Content',\n 'Contrail One',\n 'Convergence',\n 'Cookie',\n 'Copse',\n 'Corben',\n 'Corinthia',\n 'Cormorant',\n 'Cormorant Garamond',\n 'Cormorant Infant',\n 'Cormorant SC',\n 'Cormorant Unicase',\n 'Cormorant Upright',\n 'Courgette',\n 'Courier Prime',\n 'Cousine',\n 'Coustard',\n 'Covered By Your Grace',\n 'Crafty Girls',\n 'Creepster',\n 'Crete Round',\n 'Crimson Pro',\n 'Crimson Text',\n 'Croissant One',\n 'Crushed',\n 'Cuprum',\n 'Cute Font',\n 'Cutive',\n 'Cutive Mono',\n 'DM Mono',\n 'DM Sans',\n 'DM Serif Display',\n 'DM Serif Text',\n 'Damion',\n 'Dancing Script',\n 'Dangrek',\n 'Darker Grotesque',\n 'David Libre',\n 'Dawning of a New Day',\n 'Days One',\n 'Dekko',\n 'Dela Gothic One',\n 'Delius',\n 'Delius Swash Caps',\n 'Delius Unicase',\n 'Della Respira',\n 'Denk One',\n 'Devonshire',\n 'Dhurjati',\n 'Didact Gothic',\n 'Diplomata',\n 'Diplomata SC',\n 'Do Hyeon',\n 'Dokdo',\n 'Domine',\n 'Donegal One',\n 'Dongle',\n 'Doppio One',\n 'Dorsa',\n 'Dosis',\n 'DotGothic16',\n 'Dr Sugiyama',\n 'Duru Sans',\n 'Dynalight',\n 'EB Garamond',\n 'Eagle Lake',\n 'East Sea Dokdo',\n 'Eater',\n 'Economica',\n 'Eczar',\n 'Edu NSW ACT Foundation',\n 'Edu QLD Beginner',\n 'Edu SA Beginner',\n 'Edu TAS Beginner',\n 'Edu VIC WA NT Beginner',\n 'El Messiri',\n 'Electrolize',\n 'Elsie',\n 'Elsie Swash Caps',\n 'Emblema One',\n 'Emilys Candy',\n 'Encode Sans',\n 'Encode Sans Condensed',\n 'Encode Sans Expanded',\n 'Encode Sans SC',\n 'Encode Sans Semi Condensed',\n 'Encode Sans Semi Expanded',\n 'Engagement',\n 'Englebert',\n 'Enriqueta',\n 'Ephesis',\n 'Epilogue',\n 'Erica One',\n 'Esteban',\n 'Estonia',\n 'Euphoria Script',\n 'Ewert',\n 'Exo',\n 'Exo 2',\n 'Expletus Sans',\n 'Explora',\n 'Fahkwang',\n 'Familjen Grotesk',\n 'Fanwood Text',\n 'Farro',\n 'Farsan',\n 'Fascinate',\n 'Fascinate Inline',\n 'Faster One',\n 'Fasthand',\n 'Fauna One',\n 'Faustina',\n 'Federant',\n 'Federo',\n 'Felipa',\n 'Fenix',\n 'Festive',\n 'Finger Paint',\n 'Finlandica',\n 'Fira Code',\n 'Fira Mono',\n 'Fira Sans',\n 'Fira Sans Condensed',\n 'Fira Sans Extra Condensed',\n 'Fjalla One',\n 'Fjord One',\n 'Flamenco',\n 'Flavors',\n 'Fleur De Leah',\n 'Flow Block',\n 'Flow Circular',\n 'Flow Rounded',\n 'Fondamento',\n 'Fontdiner Swanky',\n 'Forum',\n 'Francois One',\n 'Frank Ruhl Libre',\n 'Fraunces',\n 'Freckle Face',\n 'Fredericka the Great',\n 'Fredoka',\n 'Fredoka One',\n 'Freehand',\n 'Fresca',\n 'Frijole',\n 'Fruktur',\n 'Fugaz One',\n 'Fuggles',\n 'Fuzzy Bubbles',\n 'GFS Didot',\n 'GFS Neohellenic',\n 'Gabriela',\n 'Gaegu',\n 'Gafata',\n 'Galada',\n 'Galdeano',\n 'Galindo',\n 'Gamja Flower',\n 'Gantari',\n 'Gayathri',\n 'Gelasio',\n 'Gemunu Libre',\n 'Genos',\n 'Gentium Basic',\n 'Gentium Book Basic',\n 'Gentium Book Plus',\n 'Gentium Plus',\n 'Geo',\n 'Georama',\n 'Geostar',\n 'Geostar Fill',\n 'Germania One',\n 'Gideon Roman',\n 'Gidugu',\n 'Gilda Display',\n 'Girassol',\n 'Give You Glory',\n 'Glass Antiqua',\n 'Glegoo',\n 'Gloria Hallelujah',\n 'Glory',\n 'Gluten',\n 'Goblin One',\n 'Gochi Hand',\n 'Goldman',\n 'Gorditas',\n 'Gothic A1',\n 'Gotu',\n 'Goudy Bookletter 1911',\n 'Gowun Batang',\n 'Gowun Dodum',\n 'Graduate',\n 'Grand Hotel',\n 'Grandstander',\n 'Grape Nuts',\n 'Gravitas One',\n 'Great Vibes',\n 'Grechen Fuemen',\n 'Grenze',\n 'Grenze Gotisch',\n 'Grey Qo',\n 'Griffy',\n 'Gruppo',\n 'Gudea',\n 'Gugi',\n 'Gulzar',\n 'Gupter',\n 'Gurajada',\n 'Gwendolyn',\n 'Habibi',\n 'Hachi Maru Pop',\n 'Hahmlet',\n 'Halant',\n 'Hammersmith One',\n 'Hanalei',\n 'Hanalei Fill',\n 'Handlee',\n 'Hanuman',\n 'Happy Monkey',\n 'Harmattan',\n 'Headland One',\n 'Heebo',\n 'Henny Penny',\n 'Hepta Slab',\n 'Herr Von Muellerhoff',\n 'Hi Melody',\n 'Hina Mincho',\n 'Hind',\n 'Hind Guntur',\n 'Hind Madurai',\n 'Hind Siliguri',\n 'Hind Vadodara',\n 'Holtwood One SC',\n 'Homemade Apple',\n 'Homenaje',\n 'Hubballi',\n 'Hurricane',\n 'IBM Plex Mono',\n 'IBM Plex Sans',\n 'IBM Plex Sans Arabic',\n 'IBM Plex Sans Condensed',\n 'IBM Plex Sans Devanagari',\n 'IBM Plex Sans Hebrew',\n 'IBM Plex Sans KR',\n 'IBM Plex Sans Thai',\n 'IBM Plex Sans Thai Looped',\n 'IBM Plex Serif',\n 'IM Fell DW Pica',\n 'IM Fell DW Pica SC',\n 'IM Fell Double Pica',\n 'IM Fell Double Pica SC',\n 'IM Fell English',\n 'IM Fell English SC',\n 'IM Fell French Canon',\n 'IM Fell French Canon SC',\n 'IM Fell Great Primer',\n 'IM Fell Great Primer SC',\n 'Ibarra Real Nova',\n 'Iceberg',\n 'Iceland',\n 'Imbue',\n 'Imperial Script',\n 'Imprima',\n 'Inconsolata',\n 'Inder',\n 'Indie Flower',\n 'Ingrid Darling',\n 'Inika',\n 'Inknut Antiqua',\n 'Inria Sans',\n 'Inria Serif',\n 'Inspiration',\n 'Inter',\n 'Irish Grover',\n 'Island Moments',\n 'Istok Web',\n 'Italiana',\n 'Italianno',\n 'Itim',\n 'Jacques Francois',\n 'Jacques Francois Shadow',\n 'Jaldi',\n 'JetBrains Mono',\n 'Jim Nightshade',\n 'Joan',\n 'Jockey One',\n 'Jolly Lodger',\n 'Jomhuria',\n 'Jomolhari',\n 'Josefin Sans',\n 'Josefin Slab',\n 'Jost',\n 'Joti One',\n 'Jua',\n 'Judson',\n 'Julee',\n 'Julius Sans One',\n 'Junge',\n 'Jura',\n 'Just Another Hand',\n 'Just Me Again Down Here',\n 'K2D',\n 'Kadwa',\n 'Kaisei Decol',\n 'Kaisei HarunoUmi',\n 'Kaisei Opti',\n 'Kaisei Tokumin',\n 'Kalam',\n 'Kameron',\n 'Kanit',\n 'Kantumruy',\n 'Kantumruy Pro',\n 'Karantina',\n 'Karla',\n 'Karma',\n 'Katibeh',\n 'Kaushan Script',\n 'Kavivanar',\n 'Kavoon',\n 'Kdam Thmor',\n 'Kdam Thmor Pro',\n 'Keania One',\n 'Kelly Slab',\n 'Kenia',\n 'Khand',\n 'Khmer',\n 'Khula',\n 'Kings',\n 'Kirang Haerang',\n 'Kite One',\n 'Kiwi Maru',\n 'Klee One',\n 'Knewave',\n 'KoHo',\n 'Kodchasan',\n 'Koh Santepheap',\n 'Kolker Brush',\n 'Kosugi',\n 'Kosugi Maru',\n 'Kotta One',\n 'Koulen',\n 'Kranky',\n 'Kreon',\n 'Kristi',\n 'Krona One',\n 'Krub',\n 'Kufam',\n 'Kulim Park',\n 'Kumar One',\n 'Kumar One Outline',\n 'Kumbh Sans',\n 'Kurale',\n 'La Belle Aurore',\n 'Lacquer',\n 'Laila',\n 'Lakki Reddy',\n 'Lalezar',\n 'Lancelot',\n 'Langar',\n 'Lateef',\n 'Lato',\n 'Lavishly Yours',\n 'League Gothic',\n 'League Script',\n 'League Spartan',\n 'Leckerli One',\n 'Ledger',\n 'Lekton',\n 'Lemon',\n 'Lemonada',\n 'Lexend',\n 'Lexend Deca',\n 'Lexend Exa',\n 'Lexend Giga',\n 'Lexend Mega',\n 'Lexend Peta',\n 'Lexend Tera',\n 'Lexend Zetta',\n 'Libre Barcode 128',\n 'Libre Barcode 128 Text',\n 'Libre Barcode 39',\n 'Libre Barcode 39 Extended',\n 'Libre Barcode 39 Extended Text',\n 'Libre Barcode 39 Text',\n 'Libre Barcode EAN13 Text',\n 'Libre Baskerville',\n 'Libre Bodoni',\n 'Libre Caslon Display',\n 'Libre Caslon Text',\n 'Libre Franklin',\n 'Licorice',\n 'Life Savers',\n 'Lilita One',\n 'Lily Script One',\n 'Limelight',\n 'Linden Hill',\n 'Literata',\n 'Liu Jian Mao Cao',\n 'Livvic',\n 'Lobster',\n 'Lobster Two',\n 'Londrina Outline',\n 'Londrina Shadow',\n 'Londrina Sketch',\n 'Londrina Solid',\n 'Long Cang',\n 'Lora',\n 'Love Light',\n 'Love Ya Like A Sister',\n 'Loved by the King',\n 'Lovers Quarrel',\n 'Luckiest Guy',\n 'Lusitana',\n 'Lustria',\n 'Luxurious Roman',\n 'Luxurious Script',\n 'M PLUS 1',\n 'M PLUS 1 Code',\n 'M PLUS 1p',\n 'M PLUS 2',\n 'M PLUS Code Latin',\n 'M PLUS Rounded 1c',\n 'Ma Shan Zheng',\n 'Macondo',\n 'Macondo Swash Caps',\n 'Mada',\n 'Magra',\n 'Maiden Orange',\n 'Maitree',\n 'Major Mono Display',\n 'Mako',\n 'Mali',\n 'Mallanna',\n 'Mandali',\n 'Manjari',\n 'Manrope',\n 'Mansalva',\n 'Manuale',\n 'Marcellus',\n 'Marcellus SC',\n 'Marck Script',\n 'Margarine',\n 'Markazi Text',\n 'Marko One',\n 'Marmelad',\n 'Martel',\n 'Martel Sans',\n 'Marvel',\n 'Mate',\n 'Mate SC',\n 'Maven Pro',\n 'McLaren',\n 'Mea Culpa',\n 'Meddon',\n 'MedievalSharp',\n 'Medula One',\n 'Meera Inimai',\n 'Megrim',\n 'Meie Script',\n 'Meow Script',\n 'Merienda',\n 'Merienda One',\n 'Merriweather',\n 'Merriweather Sans',\n 'Metal',\n 'Metal Mania',\n 'Metamorphous',\n 'Metrophobic',\n 'Michroma',\n 'Milonga',\n 'Miltonian',\n 'Miltonian Tattoo',\n 'Mina',\n 'Mingzat',\n 'Miniver',\n 'Miriam Libre',\n 'Mirza',\n 'Miss Fajardose',\n 'Mitr',\n 'Mochiy Pop One',\n 'Mochiy Pop P One',\n 'Modak',\n 'Modern Antiqua',\n 'Mogra',\n 'Mohave',\n 'Molengo',\n 'Molle',\n 'Monda',\n 'Monofett',\n 'Monoton',\n 'Monsieur La Doulaise',\n 'Montaga',\n 'Montagu Slab',\n 'MonteCarlo',\n 'Montez',\n 'Montserrat',\n 'Montserrat Alternates',\n 'Montserrat Subrayada',\n 'Moo Lah Lah',\n 'Moon Dance',\n 'Moul',\n 'Moulpali',\n 'Mountains of Christmas',\n 'Mouse Memoirs',\n 'Mr Bedfort',\n 'Mr Dafoe',\n 'Mr De Haviland',\n 'Mrs Saint Delafield',\n 'Mrs Sheppards',\n 'Ms Madi',\n 'Mukta',\n 'Mukta Mahee',\n 'Mukta Malar',\n 'Mukta Vaani',\n 'Mulish',\n 'Murecho',\n 'MuseoModerno',\n 'My Soul',\n 'Mystery Quest',\n 'NTR',\n 'Nanum Brush Script',\n 'Nanum Gothic',\n 'Nanum Gothic Coding',\n 'Nanum Myeongjo',\n 'Nanum Pen Script',\n 'Neonderthaw',\n 'Nerko One',\n 'Neucha',\n 'Neuton',\n 'New Rocker',\n 'New Tegomin',\n 'News Cycle',\n 'Newsreader',\n 'Niconne',\n 'Niramit',\n 'Nixie One',\n 'Nobile',\n 'Nokora',\n 'Norican',\n 'Nosifer',\n 'Notable',\n 'Nothing You Could Do',\n 'Noticia Text',\n 'Noto Emoji',\n 'Noto Kufi Arabic',\n 'Noto Music',\n 'Noto Naskh Arabic',\n 'Noto Nastaliq Urdu',\n 'Noto Rashi Hebrew',\n 'Noto Sans',\n 'Noto Sans Adlam',\n 'Noto Sans Adlam Unjoined',\n 'Noto Sans Anatolian Hieroglyphs',\n 'Noto Sans Arabic',\n 'Noto Sans Armenian',\n 'Noto Sans Avestan',\n 'Noto Sans Balinese',\n 'Noto Sans Bamum',\n 'Noto Sans Bassa Vah',\n 'Noto Sans Batak',\n 'Noto Sans Bengali',\n 'Noto Sans Bhaiksuki',\n 'Noto Sans Brahmi',\n 'Noto Sans Buginese',\n 'Noto Sans Buhid',\n 'Noto Sans Canadian Aboriginal',\n 'Noto Sans Carian',\n 'Noto Sans Caucasian Albanian',\n 'Noto Sans Chakma',\n 'Noto Sans Cham',\n 'Noto Sans Cherokee',\n 'Noto Sans Coptic',\n 'Noto Sans Cuneiform',\n 'Noto Sans Cypriot',\n 'Noto Sans Deseret',\n 'Noto Sans Devanagari',\n 'Noto Sans Display',\n 'Noto Sans Duployan',\n 'Noto Sans Egyptian Hieroglyphs',\n 'Noto Sans Elbasan',\n 'Noto Sans Elymaic',\n 'Noto Sans Georgian',\n 'Noto Sans Glagolitic',\n 'Noto Sans Gothic',\n 'Noto Sans Grantha',\n 'Noto Sans Gujarati',\n 'Noto Sans Gunjala Gondi',\n 'Noto Sans Gurmukhi',\n 'Noto Sans HK',\n 'Noto Sans Hanifi Rohingya',\n 'Noto Sans Hanunoo',\n 'Noto Sans Hatran',\n 'Noto Sans Hebrew',\n 'Noto Sans Imperial Aramaic',\n 'Noto Sans Indic Siyaq Numbers',\n 'Noto Sans Inscriptional Pahlavi',\n 'Noto Sans Inscriptional Parthian',\n 'Noto Sans JP',\n 'Noto Sans Javanese',\n 'Noto Sans KR',\n 'Noto Sans Kaithi',\n 'Noto Sans Kannada',\n 'Noto Sans Kayah Li',\n 'Noto Sans Kharoshthi',\n 'Noto Sans Khmer',\n 'Noto Sans Khojki',\n 'Noto Sans Khudawadi',\n 'Noto Sans Lao',\n 'Noto Sans Lepcha',\n 'Noto Sans Limbu',\n 'Noto Sans Linear A',\n 'Noto Sans Linear B',\n 'Noto Sans Lisu',\n 'Noto Sans Lycian',\n 'Noto Sans Lydian',\n 'Noto Sans Mahajani',\n 'Noto Sans Malayalam',\n 'Noto Sans Mandaic',\n 'Noto Sans Manichaean',\n 'Noto Sans Marchen',\n 'Noto Sans Masaram Gondi',\n 'Noto Sans Math',\n 'Noto Sans Mayan Numerals',\n 'Noto Sans Medefaidrin',\n 'Noto Sans Meetei Mayek',\n 'Noto Sans Meroitic',\n 'Noto Sans Miao',\n 'Noto Sans Modi',\n 'Noto Sans Mongolian',\n 'Noto Sans Mono',\n 'Noto Sans Mro',\n 'Noto Sans Multani',\n 'Noto Sans Myanmar',\n 'Noto Sans N Ko',\n 'Noto Sans Nabataean',\n 'Noto Sans New Tai Lue',\n 'Noto Sans Newa',\n 'Noto Sans Nushu',\n 'Noto Sans Ogham',\n 'Noto Sans Ol Chiki',\n 'Noto Sans Old Hungarian',\n 'Noto Sans Old Italic',\n 'Noto Sans Old North Arabian',\n 'Noto Sans Old Permic',\n 'Noto Sans Old Persian',\n 'Noto Sans Old Sogdian',\n 'Noto Sans Old South Arabian',\n 'Noto Sans Old Turkic',\n 'Noto Sans Oriya',\n 'Noto Sans Osage',\n 'Noto Sans Osmanya',\n 'Noto Sans Pahawh Hmong',\n 'Noto Sans Palmyrene',\n 'Noto Sans Pau Cin Hau',\n 'Noto Sans Phags Pa',\n 'Noto Sans Phoenician',\n 'Noto Sans Psalter Pahlavi',\n 'Noto Sans Rejang',\n 'Noto Sans Runic',\n 'Noto Sans SC',\n 'Noto Sans Samaritan',\n 'Noto Sans Saurashtra',\n 'Noto Sans Sharada',\n 'Noto Sans Shavian',\n 'Noto Sans Siddham',\n 'Noto Sans Sinhala',\n 'Noto Sans Sogdian',\n 'Noto Sans Sora Sompeng',\n 'Noto Sans Soyombo',\n 'Noto Sans Sundanese',\n 'Noto Sans Syloti Nagri',\n 'Noto Sans Symbols',\n 'Noto Sans Symbols 2',\n 'Noto Sans Syriac',\n 'Noto Sans TC',\n 'Noto Sans Tagalog',\n 'Noto Sans Tagbanwa',\n 'Noto Sans Tai Le',\n 'Noto Sans Tai Tham',\n 'Noto Sans Tai Viet',\n 'Noto Sans Takri',\n 'Noto Sans Tamil',\n 'Noto Sans Tamil Supplement',\n 'Noto Sans Telugu',\n 'Noto Sans Thaana',\n 'Noto Sans Thai',\n 'Noto Sans Thai Looped',\n 'Noto Sans Tifinagh',\n 'Noto Sans Tirhuta',\n 'Noto Sans Ugaritic',\n 'Noto Sans Vai',\n 'Noto Sans Wancho',\n 'Noto Sans Warang Citi',\n 'Noto Sans Yi',\n 'Noto Sans Zanabazar Square',\n 'Noto Serif',\n 'Noto Serif Ahom',\n 'Noto Serif Armenian',\n 'Noto Serif Balinese',\n 'Noto Serif Bengali',\n 'Noto Serif Devanagari',\n 'Noto Serif Display',\n 'Noto Serif Dogra',\n 'Noto Serif Ethiopic',\n 'Noto Serif Georgian',\n 'Noto Serif Grantha',\n 'Noto Serif Gujarati',\n 'Noto Serif Gurmukhi',\n 'Noto Serif Hebrew',\n 'Noto Serif JP',\n 'Noto Serif KR',\n 'Noto Serif Kannada',\n 'Noto Serif Khmer',\n 'Noto Serif Lao',\n 'Noto Serif Malayalam',\n 'Noto Serif Myanmar',\n 'Noto Serif Nyiakeng Puachue Hmong',\n 'Noto Serif SC',\n 'Noto Serif Sinhala',\n 'Noto Serif TC',\n 'Noto Serif Tamil',\n 'Noto Serif Tangut',\n 'Noto Serif Telugu',\n 'Noto Serif Thai',\n 'Noto Serif Tibetan',\n 'Noto Serif Yezidi',\n 'Noto Traditional Nushu',\n 'Nova Cut',\n 'Nova Flat',\n 'Nova Mono',\n 'Nova Oval',\n 'Nova Round',\n 'Nova Script',\n 'Nova Slim',\n 'Nova Square',\n 'Numans',\n 'Nunito',\n 'Nunito Sans',\n 'Nuosu SIL',\n 'Odibee Sans',\n 'Odor Mean Chey',\n 'Offside',\n 'Oi',\n 'Old Standard TT',\n 'Oldenburg',\n 'Ole',\n 'Oleo Script',\n 'Oleo Script Swash Caps',\n 'Oooh Baby',\n 'Open Sans',\n 'Oranienbaum',\n 'Orbitron',\n 'Oregano',\n 'Orelega One',\n 'Orienta',\n 'Original Surfer',\n 'Oswald',\n 'Outfit',\n 'Over the Rainbow',\n 'Overlock',\n 'Overlock SC',\n 'Overpass',\n 'Overpass Mono',\n 'Ovo',\n 'Oxanium',\n 'Oxygen',\n 'Oxygen Mono',\n 'PT Mono',\n 'PT Sans',\n 'PT Sans Caption',\n 'PT Sans Narrow',\n 'PT Serif',\n 'PT Serif Caption',\n 'Pacifico',\n 'Padauk',\n 'Palanquin',\n 'Palanquin Dark',\n 'Pangolin',\n 'Paprika',\n 'Parisienne',\n 'Passero One',\n 'Passion One',\n 'Passions Conflict',\n 'Pathway Gothic One',\n 'Patrick Hand',\n 'Patrick Hand SC',\n 'Pattaya',\n 'Patua One',\n 'Pavanam',\n 'Paytone One',\n 'Peddana',\n 'Peralta',\n 'Permanent Marker',\n 'Petemoss',\n 'Petit Formal Script',\n 'Petrona',\n 'Philosopher',\n 'Piazzolla',\n 'Piedra',\n 'Pinyon Script',\n 'Pirata One',\n 'Plaster',\n 'Play',\n 'Playball',\n 'Playfair Display',\n 'Playfair Display SC',\n 'Plus Jakarta Sans',\n 'Podkova',\n 'Poiret One',\n 'Poller One',\n 'Poly',\n 'Pompiere',\n 'Pontano Sans',\n 'Poor Story',\n 'Poppins',\n 'Port Lligat Sans',\n 'Port Lligat Slab',\n 'Potta One',\n 'Pragati Narrow',\n 'Praise',\n 'Prata',\n 'Preahvihear',\n 'Press Start 2P',\n 'Pridi',\n 'Princess Sofia',\n 'Prociono',\n 'Prompt',\n 'Prosto One',\n 'Proza Libre',\n 'Public Sans',\n 'Puppies Play',\n 'Puritan',\n 'Purple Purse',\n 'Qahiri',\n 'Quando',\n 'Quantico',\n 'Quattrocento',\n 'Quattrocento Sans',\n 'Questrial',\n 'Quicksand',\n 'Quintessential',\n 'Qwigley',\n 'Qwitcher Grypen',\n 'Racing Sans One',\n 'Radio Canada',\n 'Radley',\n 'Rajdhani',\n 'Rakkas',\n 'Raleway',\n 'Raleway Dots',\n 'Ramabhadra',\n 'Ramaraja',\n 'Rambla',\n 'Rammetto One',\n 'Rampart One',\n 'Ranchers',\n 'Rancho',\n 'Ranga',\n 'Rasa',\n 'Rationale',\n 'Ravi Prakash',\n 'Readex Pro',\n 'Recursive',\n 'Red Hat Display',\n 'Red Hat Mono',\n 'Red Hat Text',\n 'Red Rose',\n 'Redacted',\n 'Redacted Script',\n 'Redressed',\n 'Reem Kufi',\n 'Reenie Beanie',\n 'Reggae One',\n 'Revalia',\n 'Rhodium Libre',\n 'Ribeye',\n 'Ribeye Marrow',\n 'Righteous',\n 'Risque',\n 'Road Rage',\n 'Roboto',\n 'Roboto Condensed',\n 'Roboto Flex',\n 'Roboto Mono',\n 'Roboto Serif',\n 'Roboto Slab',\n 'Rochester',\n 'Rock Salt',\n 'RocknRoll One',\n 'Rokkitt',\n 'Romanesco',\n 'Ropa Sans',\n 'Rosario',\n 'Rosarivo',\n 'Rouge Script',\n 'Rowdies',\n 'Rozha One',\n 'Rubik',\n 'Rubik Beastly',\n 'Rubik Bubbles',\n 'Rubik Glitch',\n 'Rubik Microbe',\n 'Rubik Mono One',\n 'Rubik Moonrocks',\n 'Rubik Puddles',\n 'Rubik Wet Paint',\n 'Ruda',\n 'Rufina',\n 'Ruge Boogie',\n 'Ruluko',\n 'Rum Raisin',\n 'Ruslan Display',\n 'Russo One',\n 'Ruthie',\n 'Rye',\n 'STIX Two Text',\n 'Sacramento',\n 'Sahitya',\n 'Sail',\n 'Saira',\n 'Saira Condensed',\n 'Saira Extra Condensed',\n 'Saira Semi Condensed',\n 'Saira Stencil One',\n 'Salsa',\n 'Sanchez',\n 'Sancreek',\n 'Sansita',\n 'Sansita Swashed',\n 'Sarabun',\n 'Sarala',\n 'Sarina',\n 'Sarpanch',\n 'Sassy Frass',\n 'Satisfy',\n 'Sawarabi Gothic',\n 'Sawarabi Mincho',\n 'Scada',\n 'Scheherazade New',\n 'Schoolbell',\n 'Scope One',\n 'Seaweed Script',\n 'Secular One',\n 'Sedgwick Ave',\n 'Sedgwick Ave Display',\n 'Sen',\n 'Send Flowers',\n 'Sevillana',\n 'Seymour One',\n 'Shadows Into Light',\n 'Shadows Into Light Two',\n 'Shalimar',\n 'Shanti',\n 'Share',\n 'Share Tech',\n 'Share Tech Mono',\n 'Shippori Antique',\n 'Shippori Antique B1',\n 'Shippori Mincho',\n 'Shippori Mincho B1',\n 'Shojumaru',\n 'Short Stack',\n 'Shrikhand',\n 'Siemreap',\n 'Sigmar One',\n 'Signika',\n 'Signika Negative',\n 'Simonetta',\n 'Single Day',\n 'Sintony',\n 'Sirin Stencil',\n 'Six Caps',\n 'Skranji',\n 'Slabo 13px',\n 'Slabo 27px',\n 'Slackey',\n 'Smokum',\n 'Smooch',\n 'Smooch Sans',\n 'Smythe',\n 'Sniglet',\n 'Snippet',\n 'Snowburst One',\n 'Sofadi One',\n 'Sofia',\n 'Solway',\n 'Song Myung',\n 'Sonsie One',\n 'Sora',\n 'Sorts Mill Goudy',\n 'Source Code Pro',\n 'Source Sans 3',\n 'Source Sans Pro',\n 'Source Serif 4',\n 'Source Serif Pro',\n 'Space Grotesk',\n 'Space Mono',\n 'Special Elite',\n 'Spectral',\n 'Spectral SC',\n 'Spicy Rice',\n 'Spinnaker',\n 'Spirax',\n 'Splash',\n 'Spline Sans',\n 'Spline Sans Mono',\n 'Squada One',\n 'Square Peg',\n 'Sree Krushnadevaraya',\n 'Sriracha',\n 'Srisakdi',\n 'Staatliches',\n 'Stalemate',\n 'Stalinist One',\n 'Stardos Stencil',\n 'Stick',\n 'Stick No Bills',\n 'Stint Ultra Condensed',\n 'Stint Ultra Expanded',\n 'Stoke',\n 'Strait',\n 'Style Script',\n 'Stylish',\n 'Sue Ellen Francisco',\n 'Suez One',\n 'Sulphur Point',\n 'Sumana',\n 'Sunflower',\n 'Sunshiney',\n 'Supermercado One',\n 'Sura',\n 'Suranna',\n 'Suravaram',\n 'Suwannaphum',\n 'Swanky and Moo Moo',\n 'Syncopate',\n 'Syne',\n 'Syne Mono',\n 'Syne Tactile',\n 'Tai Heritage Pro',\n 'Tajawal',\n 'Tangerine',\n 'Tapestry',\n 'Taprom',\n 'Tauri',\n 'Taviraj',\n 'Teko',\n 'Telex',\n 'Tenali Ramakrishna',\n 'Tenor Sans',\n 'Text Me One',\n 'Texturina',\n 'Thasadith',\n 'The Girl Next Door',\n 'The Nautigal',\n 'Tienne',\n 'Tillana',\n 'Timmana',\n 'Tinos',\n 'Tiro Bangla',\n 'Tiro Devanagari Hindi',\n 'Tiro Devanagari Marathi',\n 'Tiro Devanagari Sanskrit',\n 'Tiro Gurmukhi',\n 'Tiro Kannada',\n 'Tiro Tamil',\n 'Tiro Telugu',\n 'Titan One',\n 'Titillium Web',\n 'Tomorrow',\n 'Tourney',\n 'Trade Winds',\n 'Train One',\n 'Trirong',\n 'Trispace',\n 'Trocchi',\n 'Trochut',\n 'Truculenta',\n 'Trykker',\n 'Tulpen One',\n 'Turret Road',\n 'Twinkle Star',\n 'Ubuntu',\n 'Ubuntu Condensed',\n 'Ubuntu Mono',\n 'Uchen',\n 'Ultra',\n 'Uncial Antiqua',\n 'Underdog',\n 'Unica One',\n 'UnifrakturCook',\n 'UnifrakturMaguntia',\n 'Unkempt',\n 'Unlock',\n 'Unna',\n 'Updock',\n 'Urbanist',\n 'VT323',\n 'Vampiro One',\n 'Varela',\n 'Varela Round',\n 'Varta',\n 'Vast Shadow',\n 'Vazirmatn',\n 'Vesper Libre',\n 'Viaoda Libre',\n 'Vibes',\n 'Vibur',\n 'Vidaloka',\n 'Viga',\n 'Voces',\n 'Volkhov',\n 'Vollkorn',\n 'Vollkorn SC',\n 'Voltaire',\n 'Vujahday Script',\n 'Waiting for the Sunrise',\n 'Wallpoet',\n 'Walter Turncoat',\n 'Warnes',\n 'Water Brush',\n 'Waterfall',\n 'Wellfleet',\n 'Wendy One',\n 'Whisper',\n 'WindSong',\n 'Wire One',\n 'Work Sans',\n 'Xanh Mono',\n 'Yaldevi',\n 'Yanone Kaffeesatz',\n 'Yantramanav',\n 'Yatra One',\n 'Yellowtail',\n 'Yeon Sung',\n 'Yeseva One',\n 'Yesteryear',\n 'Yomogi',\n 'Yrsa',\n 'Yuji Boku',\n 'Yuji Mai',\n 'Yuji Syuku',\n 'Yusei Magic',\n 'ZCOOL KuaiLe',\n 'ZCOOL QingKe HuangYou',\n 'ZCOOL XiaoWei',\n 'Zen Antique',\n 'Zen Antique Soft',\n 'Zen Dots',\n 'Zen Kaku Gothic Antique',\n 'Zen Kaku Gothic New',\n 'Zen Kurenaido',\n 'Zen Loop',\n 'Zen Maru Gothic',\n 'Zen Old Mincho',\n 'Zen Tokyo Zoo',\n 'Zeyada',\n 'Zhi Mang Xing',\n 'Zilla Slab',\n 'Zilla Slab Highlight',\n //\n 'Playpen Sans',\n 'Shantell Sans',\n] as const;\n\nexport type AllGoogleFonts = typeof allGoogleFonts[number];\n","const parseFontUrl = url => {\n const chunks = url.toString().split(/\\//g);\n const [fontName, fontExtension] = chunks[chunks.length - 1].split(/\\./);\n\n const fontFormat = {\n ttf: 'truetype',\n otf: 'opentype',\n }[fontExtension];\n\n return {\n fontName,\n fontExtension,\n fontFormat,\n };\n};\n\nexport default parseFontUrl;\n","/** @jsx jsx */\n\nimport { Fragment as _, useState, useRef, useEffect } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport lizard from 'assets/lizard.svg';\n\nconst loadAssets = {} as any;\n\nconst BootScreen = ({ theme }) => {\n const [imagesLoaded, setImagesLoaded] = useState(false);\n const [fontsLoaded, setFontsLoaded] = useState(false);\n const [minDisplayTime, setMinDisplayTime] = useState(false);\n const [boot, setBoot] = useState(false);\n\n const bootScreen = useRef<HTMLDivElement>(null);\n\n const backgroundColor = theme.headerBackgroundColor || '#fff'; // lPink;\n\n useEffect(() => {\n if (!imagesLoaded) {\n loadAssets.loadImages = () => {\n setImagesLoaded(true);\n delete loadAssets.loadImages;\n };\n }\n\n if (!fontsLoaded) {\n loadAssets.loadFonts = () => {\n setFontsLoaded(true);\n delete loadAssets.loadFonts;\n };\n }\n });\n\n useEffect(() => {\n setTimeout(() => {\n !minDisplayTime && setMinDisplayTime(true);\n }, 1000);\n }, []);\n\n useEffect(() => {\n if (!bootScreen.current) { return }\n\n const fader = () => {\n setBoot(true);\n };\n\n bootScreen.current.addEventListener('transitionend', fader);\n\n return () => {\n if (!bootScreen.current) { return }\n bootScreen.current.removeEventListener('transitionend', fader);\n }\n }, [bootScreen.current]);\n\n console.log({\n imagesLoaded,\n fontsLoaded,\n minDisplayTime,\n });\n\n return !boot ? (\n <div\n ref={bootScreen}\n css={css`\n position: fixed;\n display: flex;\n justify-content: center;\n align-items: center;\n left: 0;\n top: 0;\n width: 100vw;\n height: 100vh;\n background: ${backgroundColor};\n opacity: ${imagesLoaded && fontsLoaded && minDisplayTime ? 0 : 1};\n transition: opacity 0.35s;\n z-index: 2147483638;\n `}\n >\n <img\n src={lizard}\n css={css`\n width: 30vw;\n `}\n />\n </div>\n ) : null;\n};\n\nexport default BootScreen;\nexport { loadAssets };\n","import WebFont from 'webfontloader';\nimport getStore from 'services/getStore';\nimport fonts from './fonts';\nimport parseFontUrl from './parseFontUrl';\nimport { loadAssets } from 'components/lib/BootScreen';\nimport pubSub from 'services/pubSub';\nimport { TButton } from 'store/store';\n\nconst store = getStore();\nconst { getState } = store;\nconst { fontFamily = '', fontFamilies = [], buttons = {} } = getState().theme;\n\nconst fontsFromThemeButtons = (Object.values(buttons) as TButton[]).map(\n button => {\n return button?.fontFamily;\n }\n);\n\nconst getCustomFonts = (): {}[] => {\n return getState().customFonts;\n};\n\ntype F = {\n name: string;\n};\n\nconst getCustomFontNames = (customFonts: {}[] = []): string[] => {\n return customFonts.map(f => (f as F)?.name);\n};\n\nexport const LOAD_FONT_ON_DEMAND = 'loadFontOnDemand';\n\n// fontFamilyMarks are any spans moving through slate\n// we can refactor this to something faster later maybe\nlet fontFamilyMarks: string[] = [];\n\n// any other reference to font or fontFamily that exists on a block's props\n// indicates it is/was editable. capture it\nlet anyFontOrFontFamilyPropOnABlock: string[] = [];\n\nObject.values(store.getState().blocks).forEach((b: any) => {\n const font = b?.props?.font || b?.props?.fontFamily;\n if (font) {\n anyFontOrFontFamilyPropOnABlock.push(font);\n }\n\n if (b.type === 'Text' && b?.props?.content) {\n const fontFamilyMark = b.props.content\n .split(/\\<|\\>/g)\n .filter((entry: any) => entry.includes('style=\"font-family:'))\n .map((entry: any) =>\n entry\n .replace(/\\\"|span|style|\\=|font-family:|data-type|fontFamily/g, '')\n .trimStart()\n .trimEnd()\n )\n .filter((entry: any) => entry !== '');\n\n fontFamilyMarks = [...fontFamilyMarks, ...fontFamilyMark];\n }\n});\n\n// fontFamily is the font added to body\nconst userSelectedFonts = Array.from(\n new Set([\n fontFamily,\n ...fontFamilyMarks,\n ...anyFontOrFontFamilyPropOnABlock,\n ...fontsFromThemeButtons,\n // ...customFonts.map(cF => cF.name),\n ]) as any\n).filter(f => {\n // filter out anything that might've returned an empty string ''\n return f;\n}) as string[];\n\n// TODO\n// turn this into a promise and move it out into own file ? . . .\nconst addFont = (url, targetWindow = window) => {\n if (!url) {\n return;\n }\n\n const { fontName, fontExtension, fontFormat } = parseFontUrl(url);\n\n // if it's default ( empty ) or is on the google fonts list ( fonts ). bail\n if (!fontName || fonts.includes(fontName)) {\n return fontName;\n }\n\n const head = targetWindow.document.querySelector('head')!;\n if (head.querySelector(`#${fontName}`)) {\n return;\n }\n\n const styleTag = document.createElement('style');\n\n styleTag.id = fontName;\n styleTag.innerHTML = `\n @font-face {\n font-family: \"${fontName}\";\n src: url(\"${url}\") format(\"${fontFormat}\");\n }\n `;\n\n head.appendChild(styleTag);\n\n return fontName;\n};\n\nexport type ILoadFontOnDemand = {\n font: string;\n onFontLoaded: (font: string) => void;\n};\n\npubSub.subscribe(LOAD_FONT_ON_DEMAND, ($: ILoadFontOnDemand) => {\n const { font = '', onFontLoaded = () => {} } = $;\n\n let editor;\n let module;\n\n if (window.IS_CHAMELEON_EDITOR) {\n editor = window;\n module = editor.frames[0];\n } else {\n editor = window.parent;\n module = window;\n }\n\n if (!font) {\n onFontLoaded(font);\n return;\n }\n\n const customFontNames = getCustomFontNames(getCustomFonts());\n const fontIsCustomFont = customFontNames.includes(font);\n\n //\n // no need to use the WebFont.loader if we don't want\n // was only in play to have a consistent api but since the custom fonts\n // are all loaded ahead of time. . .\n if (fontIsCustomFont) {\n console.log(`loading custom font : ${font}`);\n onFontLoaded(font);\n return;\n }\n\n console.log(`loading google font : ${font}`);\n\n [editor, module].forEach(w => {\n WebFont.load({\n ...(!fontIsCustomFont && {\n google: {\n families: [`${font}:400,700`],\n },\n }),\n loading: () => {},\n active: () => {\n // console.log('font is loading ?', font);\n onFontLoaded(font);\n },\n inactive: () => {\n alert(\n 'A network error occurred and your font could not be loaded. Please try again.'\n );\n },\n fontloading: f => {\n // console.log('font is loading ? :', f);\n },\n context: w,\n });\n });\n});\n\nconst WebFontConfig = {\n google: {\n families: userSelectedFonts\n .filter(f => {\n //\n // console.log(f);\n return !getCustomFontNames(getCustomFonts()).includes(f);\n })\n .map(f => `${f}:400,700`),\n },\n loading: () => {},\n active: () => {\n loadAssets.loadFonts && loadAssets.loadFonts();\n },\n inactive: () => {\n console.log('NO UserSelectedFonts TO LOAD');\n loadAssets.loadFonts && loadAssets.loadFonts();\n },\n fontloading: (familyName, fvd) => {\n // console.log(familyName, fvd);\n },\n fontactive: (familyName, fvd) => {\n // console.log(familyName, fvd);\n },\n fontinactive: (familyName, fvd) => {\n // console.log(familyName, fvd);\n },\n};\n\n// boot these up. if any\nif (!!fontFamilies.length) {\n fontFamilies.forEach(f => {\n addFont(f);\n });\n}\n\nconsole.log({\n window: window.location.href,\n userSelectedFonts,\n 'WebFontConfig.google.families': WebFontConfig.google.families,\n});\n\nif (WebFontConfig.google.families.length) {\n WebFont.load(WebFontConfig);\n}\n\nexport { addFont };\n","import getStore from 'services/getStore';\n\nconst getModuleImages = () => {\n const images = [] as string[];\n\n // will fix this up later\n let blocks = getStore().getState().blocks as any; // blocks;\n\n Object.values(blocks).forEach((b: any, index: number) => {\n const { props } = b || {};\n\n // work in progress\n // wants to some recursive function\n const values = Object.values({\n ...props,\n ...(props?.style || {}),\n ...(props?.topicIcon || {}),\n });\n\n values.forEach((entry: any) => {\n if (entry && typeof entry === 'string') {\n let extension: string[] | string = entry?.split(/\\./g);\n extension =\n extension.length > 1\n ? extension[extension.length - 1].toLowerCase()\n : '';\n\n if (\n ['png', 'jpg', 'jpeg', 'gif', 'svg'].includes(extension) &&\n !entry.match(/@editor|\\/creator\\//g)\n ) {\n images.push(entry);\n }\n }\n });\n });\n\n const imagesWithoutDuplicates: any[] = Array.from(new Set(images));\n\n // console.log('module images : \\n _');\n // imagesWithoutDuplicates.forEach(i => console.log(i));\n // console.log('_');\n\n return imagesWithoutDuplicates;\n};\n\nexport default getModuleImages;\n","import { injectGlobal, keyframes } from 'emotion';\r\nimport { flipCard } from './flipCard.styles';\r\nimport { matching } from './matching.styles';\r\nimport { clickAndReveal } from './clickAndReveal.styles';\r\nimport { focusBorder } from './variables';\r\nimport { laBallPulse } from './la-ball-pulse';\r\n\r\nconst fader = keyframes`\r\nfrom {\r\n\topacity: 0;\r\n}\r\nto {\r\n\topacity: 1;\r\n}\r\n`;\r\n\r\ninjectGlobal`\r\n\r\n\t* {\r\n\t\tmargin: 0;\r\n\t\tpadding: 0;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\t&::-webkit-scrollbar {\r\n\t\t\twidth: 5px;\r\n\t\t}\r\n\t\t\r\n\t\t&::-webkit-scrollbar-track {\r\n\t\t\tbackground-color: lightgrey;\r\n\t\t}\r\n\t\t\r\n\t\t&::-webkit-scrollbar-thumb {\r\n\r\n\t\t\tbackground-color: darkgrey;\r\n\t\t}\r\n\r\n\t\t-webkit-tap-highlight-color: transparent;\r\n\t}\r\n\t\r\n\thtml, body {\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\r\n\t}\r\n\r\n\tbody {\r\n\t\tfont-family: 'Poppins', sans-serif;\r\n\t\tfont-weight: 300;\r\n\t\toverflow-anchor: none;\r\n\r\n\t\t\r\n\t}\r\n\r\n\th1, h2, h3, h4 {\r\n\t\tfont-weight: 200;\r\n\t\tline-height: 1.2em;\r\n\t}\r\n\r\n\th1 {\r\n\t\t\tfont-size: 2rem;\r\n\t}\r\n\r\n\th2 {\r\n\t\t\tfont-size: 1.5rem;\r\n\t}\r\n\r\n\th3 {\r\n\t\t\tfont-size: 1.3rem;\r\n\t}\r\n\r\n\th4 {\r\n\t\t\tfont-size: 1rem;\r\n\t}\r\n\r\n\th5 {\r\n\t\tfont-size: 0.8rem;\r\n\t}\r\n\r\n\th6 {\r\n\t\tfont-size: 0.6rem;\r\n\t}\r\n\r\n\r\n\t@media(min-width: 480px) {\r\n\t\t\th1 {\r\n\t\t\t\t\tfont-size: 2.5rem;\r\n\t\t\t}\r\n\r\n\t\t\th2 {\r\n\t\t\t\t\tfont-size: 2rem;\r\n\t\t\t}\r\n\r\n\t\t\th3 {\r\n\t\t\t\t\tfont-size: 1.8rem;\r\n\t\t\t}\r\n\r\n\t\t\th4 {\r\n\t\t\t\t\tfont-size: 1.5rem;\r\n\t\t\t}\r\n\r\n\t\t\th5 {\r\n\t\t\t\tfont-size: 1rem;\r\n\t\t\t}\r\n\t\t\r\n\t\t\th6 {\r\n\t\t\t\tfont-size: 0.8rem;\r\n\t\t\t}\r\n\t}\r\n\r\n\t@media(min-width: 767px) {\r\n\t\t\th1 {\r\n\t\t\t\t\tfont-size: 3.5rem;\r\n\t\t\t}\r\n\r\n\t\t\th2 {\r\n\t\t\t\t\tfont-size: 2.5rem;\r\n\t\t\t}\r\n\r\n\t\t\th3 {\r\n\t\t\t\t\tfont-size: 2rem;\r\n\t\t\t}\r\n\r\n\t\t\th4 {\r\n\t\t\t\t\tfont-size: 1.7rem;\r\n\t\t\t}\r\n\r\n\t\t\th5 {\r\n\t\t\t\tfont-size: 1.2rem;\r\n\t\t\t}\r\n\t\t\r\n\t\t\th6 {\r\n\t\t\t\tfont-size: 1rem;\r\n\t\t\t}\r\n\t}\r\n\r\n\r\n\tp strong {\r\n\t\tfont-weight: 700 !important;\r\n\t}\r\n\r\n\tstrong {\r\n\t\tfont-weight: 700 !important;\r\n\t}\r\n\r\n\tinput[type=text] {\r\n\t\tfont-weight: 300;\r\n\t}\r\n\r\n\timg {\r\n\t\talign-self: center;\r\n\t\tvertical-align: bottom;\r\n\t\tmax-width: 100%;\r\n\t\tflex-shrink: 0;\r\n\t}\r\n\r\n\r\n\tform {\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t#root {\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\t}\r\n\r\n\t.chameleon-text {\r\n\t\twidth: 100%;\r\n\r\n\t\toverflow-wrap: break-word;\r\n\t\tword-wrap: break-word;\r\n\t\tword-break: break-word;\r\n\r\n\t\tp, li {\r\n\t\t\t\r\n\t\t// line-height: 1.5em;\r\n\r\n\t\t}\r\n\r\n\t\tp span {\r\n\t\t\t// line-height: 1.5em;\r\n\t\t}\r\n\t}\r\n\r\n\th1, h2, h3, h4 {\r\n\r\n\t\tli {\r\n\t\t\tmargin-left: .5em;\r\n\t\t}\r\n\r\n\t\tol {\r\n\t\t\tposition: relative;\r\n\t\t\tleft: .5em;\r\n\t\t}\r\n\r\n\t\tol li:before {\r\n\t\r\n\t\t\tpadding-left: 10px !important;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tp,\r\n\th1,\r\n\th2,\r\n\th3,\r\n\th4,\r\n\th5,\r\n\th6,\r\n\tstrong, \r\n\tem, \r\n\tu {\r\n\t\tmax-width: 100%;\r\n\t}\r\n\r\n\r\n\t.fader_-2s {\r\n\t\tanimation: ${fader} 0.2s forwards;\r\n\t}\r\n\r\n\t.fader_-5s {\r\n\t\tanimation: ${fader} 0.5s forwards;\r\n\t}\r\n\r\n\t.fader_1s {\r\n\t\tanimation: ${fader} 1s forwards;\r\n\t}\r\n\r\n\tbutton {\r\n\t\tfont-family: inherit !important;\r\n\t}\r\n\r\n\tinput {\r\n\t\t:focus {\r\n\t\t\tborder: ${focusBorder};\r\n\t\t}\r\n\t}\r\n\r\n\ttextarea {\r\n\t\t:focus {\r\n\t\t\tborder: ${focusBorder};\r\n\t\t}\r\n\t}\r\n\r\n\t.wtf {\r\n\t\tborder: 10px solid green;\r\n\t\t\t}\r\n\r\n\r\n\r\n\tpre {\r\n\t\tdisplay: flex;\r\n\t\tpadding: 0 !important;\r\n\t\tborder: none !important;\r\n\t}\r\n\r\n\tcode {\r\n\t\tdisplay: inline;\r\n\t\tpadding: 10px 20px 20px 10px !important;\r\n\t\tborder-radius: 3px;\r\n\t\tbackground: #eaeffb;\r\n\t}\r\n\r\n\t*:focus {\r\n\t\toutline: none;\r\n\t}\r\n\r\n\ta:link {\r\n\t\tcolor: #0000EE;\r\n\t}\r\n\r\n\ta:visited {\r\n\t\t// color: #0073E6 !important;\r\n\t}\r\n\r\n\ta:hover {\r\n\t\ttext-decoration: none;\r\n\t}\r\n\r\n\ta:active {\r\n\t\tcolor: red;\r\n\t}\r\n\r\n\r\n\ta:focus {\r\n\t\t// text-decoration: none;\r\n\t\t// opacity: 0.45;\r\n\t}\r\n\r\n\t.center-text {\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.chameleon-text-align-left, [data-type=\"textAlignLeft\"] {\r\n\t\ttext-align: left;\r\n\r\n\t\tul, ol {\r\n\t\t\tlist-style-position: outside !important;\t\t\r\n\t\t}\r\n\t}\r\n\r\n\t.chameleon-text-align-center, [data-type=\"textAlignCenter\"] {\r\n\t\ttext-align: center;\r\n\r\n\t\tul, ol {\r\n\t\t\tlist-style-position: inside;\t\t\r\n\t\t}\r\n\r\n\t\t> ul, > ol {\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tmargin-left: 0px !important;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t.chameleon-text-align-right, [data-type=\"textAlignRight\"] {\r\n\t\ttext-align: right;\r\n\r\n\t\tul, ol {\r\n\t\t\tlist-style-position: inside;\t\t\r\n\t\t}\r\n\t\r\n\t\t> ul, > ol {\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tmargin-left: 0px;\r\n\t\t}\r\n\t \r\n\t}\r\n\r\n\t// https://gist.github.com/ffoodd/000b59f431e3e64e4ce1a24d5bb36034\r\n\t.sr-only {\r\n\t\tborder: 0 !important;\r\n\t\tclip: rect(1px, 1px, 1px, 1px) !important; \r\n\t\t-webkit-clip-path: inset(50%) !important;\r\n\t\t\tclip-path: inset(50%) !important; \r\n\t\theight: 1px !important;\r\n\t\tmargin: -1px !important;\r\n\t\toverflow: hidden !important;\r\n\t\tpadding: 0 !important;\r\n\t\tposition: absolute !important;\r\n\t\twidth: 1px !important;\r\n\t\twhite-space: nowrap !important; \r\n\t}\r\n\r\n\t.lang-bracket::before {\r\n\t\tcontent: '[';\r\n\t\t color: rgb(64, 64, 64);\r\n\t}\r\n\r\n\t.lang-bracket::after {\r\n\t\tcontent: ']';\r\n\t\t color: rgb(64, 64, 64);\r\n\t}\r\n\r\n\t${flipCard}\r\n\t${matching}\r\n\t${clickAndReveal}\r\n\r\n\t}\r\n\r\n\r\n\t${laBallPulse}\r\n`;\r\n","export const flipCard = `\n.flipcard-text {\n text-align: center;\n \n > div {\n \n ul, ol {\n\t\t\tlist-style-position: inside;\t\t\n\t\t}\n\n > ul, > ol { \n display: inline-block;\n margin-left: 0px;\n }\n }\n\n}\n\n.flipCardFace {\n p, li {\n line-height: 1.2em !important;\n }\n}\n`;\n","\nexport const matching = `\n.matching-text {\n text-align: center;\n \n > div {\n \n > ul, > ol {\n display: inline-block;\n margin-left: 0px;\n } \n }\n}\n\n.matchingPanel {\n p, li {\n line-height: 1.2em;\n }\n}\n`;\n","\nexport const clickAndReveal = `\n.click-and-reveal-text {\n text-align: center;\n\n > div {\n\n > ul, > ol {\n display: inline-block;\n margin-left: 0px;\n }\n }\n}\n`;\n","/*!\n * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)\n * Copyright 2015 Daniel Cardoso <@DanielCardoso>\n * Licensed under MIT\n */\n\nexport const laBallPulse = `\n.la-ball-pulse,\n.la-ball-pulse > div {\n position: relative;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.la-ball-pulse {\n display: block;\n font-size: 0;\n color: #fff;\n}\n.la-ball-pulse.la-dark {\n color: #333;\n}\n.la-ball-pulse > div {\n display: inline-block;\n float: none;\n background-color: currentColor;\n border: 0 solid currentColor;\n}\n.la-ball-pulse {\n width: 54px;\n height: 18px;\n}\n.la-ball-pulse > div:nth-child(1) {\n -webkit-animation-delay: -200ms;\n -moz-animation-delay: -200ms;\n -o-animation-delay: -200ms;\n animation-delay: -200ms;\n}\n.la-ball-pulse > div:nth-child(2) {\n -webkit-animation-delay: -100ms;\n -moz-animation-delay: -100ms;\n -o-animation-delay: -100ms;\n animation-delay: -100ms;\n}\n.la-ball-pulse > div:nth-child(3) {\n -webkit-animation-delay: 0ms;\n -moz-animation-delay: 0ms;\n -o-animation-delay: 0ms;\n animation-delay: 0ms;\n}\n.la-ball-pulse > div {\n width: 10px;\n height: 10px;\n margin: 4px;\n border-radius: 100%;\n -webkit-animation: ball-pulse 1s ease infinite;\n -moz-animation: ball-pulse 1s ease infinite;\n -o-animation: ball-pulse 1s ease infinite;\n animation: ball-pulse 1s ease infinite;\n}\n.la-ball-pulse.la-sm {\n width: 26px;\n height: 8px;\n}\n.la-ball-pulse.la-sm > div {\n width: 4px;\n height: 4px;\n margin: 2px;\n}\n.la-ball-pulse.la-2x {\n width: 108px;\n height: 36px;\n}\n.la-ball-pulse.la-2x > div {\n width: 20px;\n height: 20px;\n margin: 8px;\n}\n.la-ball-pulse.la-3x {\n width: 162px;\n height: 54px;\n}\n.la-ball-pulse.la-3x > div {\n width: 30px;\n height: 30px;\n margin: 12px;\n}\n/*\n * Animation\n */\n@-webkit-keyframes ball-pulse {\n 0%,\n 60%,\n 100% {\n opacity: 1;\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 30% {\n opacity: .1;\n -webkit-transform: scale(.01);\n transform: scale(.01);\n }\n}\n@-moz-keyframes ball-pulse {\n 0%,\n 60%,\n 100% {\n opacity: 1;\n -moz-transform: scale(1);\n transform: scale(1);\n }\n 30% {\n opacity: .1;\n -moz-transform: scale(.01);\n transform: scale(.01);\n }\n}\n@-o-keyframes ball-pulse {\n 0%,\n 60%,\n 100% {\n opacity: 1;\n -o-transform: scale(1);\n transform: scale(1);\n }\n 30% {\n opacity: .1;\n -o-transform: scale(.01);\n transform: scale(.01);\n }\n}\n@keyframes ball-pulse {\n 0%,\n 60%,\n 100% {\n opacity: 1;\n -webkit-transform: scale(1);\n -moz-transform: scale(1);\n -o-transform: scale(1);\n transform: scale(1);\n }\n 30% {\n opacity: .1;\n -webkit-transform: scale(.01);\n -moz-transform: scale(.01);\n -o-transform: scale(.01);\n transform: scale(.01);\n }\n}\n`;\n","declare global {\n interface Window {\n dev: () => boolean;\n hasRemote: () => boolean;\n hasMode: (mode) => boolean;\n mode: string;\n reviewModeEnabled: boolean;\n savedStore: any;\n locationHistory: string | null;\n persistHistory: boolean;\n IS_CHAMELEON_MODULE: boolean;\n chameleon: any;\n fonts: any;\n FontFace: any;\n }\n interface Document {\n fonts: any;\n }\n}\n\nimport './setup';\n\nimport 'assets/whoopsBrowserIncompatible.png';\nimport { ErrorBoundary } from 'components/errorHandler';\nimport ModuleImagesPreloader from 'components/lib/PreLoaders/ModuleImagesPreloader';\nimport Module from 'components/Module';\nimport { HostingProvider } from 'hosting/context';\n//\nimport React, { FC, Fragment as _ } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport 'regenerator-runtime/runtime.js';\nimport { addFont } from 'services/fontService';\nimport getModuleImages from 'services/getModuleImages';\nimport getStore from 'services/getStore';\nimport 'services/scorm/scormService';\nimport smoothscroll from 'smoothscroll-polyfill';\nimport 'styles/global';\nimport 'whatwg-fetch';\n\nif (!('IntersectionObserver' in window)) {\n require('intersection-observer');\n}\n\nsmoothscroll.polyfill();\n\nwindow.hasRemote = () => getParams().hasRemote;\n\nwindow.dev = () => {\n try {\n return window.parent.IS_CHAMELEON_EDITOR;\n } catch (err) {\n //\n }\n\n return ['DEVELOPMENT', 'EDIT'].includes(window?.mode);\n};\n\n// disable all react-beautiful-dnd development warnings\nwindow['__react-beautiful-dnd-disable-dev-warnings'] = true;\n\nconst store = getStore();\n\ntry {\n window.hasMode = mode => {\n const windowMode = window.mode || 'DEVELOPMENT';\n return mode === windowMode;\n };\n\n window.client = parent.client;\n} catch (err) {\n // console.warn(err);\n}\n\nconst loadTheme = store.subscribe(() => {\n const {\n backgroundColor = '',\n fontFamily = '',\n fontSizes,\n fontFamilies = [],\n } = store.getState().theme;\n\n document.body.style.background = backgroundColor;\n\n if (!!fontFamilies.length) {\n fontFamilies.forEach(f => {\n addFont(f);\n });\n }\n\n // just wanting to smash this until it displays for sure\n if (fontFamily) {\n const checkFontFamilyDisplays = setInterval(() => {\n if (document.body.style.fontFamily.includes(fontFamily)) {\n clearInterval(checkFontFamilyDisplays);\n }\n\n document.body.style.fontFamily = fontFamily;\n }, 0);\n }\n\n loadTheme.unsubscribe && loadTheme.unsubscribe();\n});\n\nconst isHosted = (window as any).getParams().hosted;\nconst ccURL = (window as any).chameleon.CHAMELEON_URL;\n\nconst HostingWrapper: FC = ({ children }) => {\n if (isHosted) {\n const projectId = (window as any).getParams().projectId;\n\n return (\n <HostingProvider url={ccURL} projectId={projectId}>\n {children}\n </HostingProvider>\n );\n }\n\n return <>{children}</>;\n};\n\nconst moduleImages = getModuleImages();\n\n// console.log(window.location.hash);\nconst location = window.location.hash;\nif (location) {\n window.location.hash = '#';\n window.location.hash = location;\n // something\n}\n\nReactDOM.render(\n <_>\n <ErrorBoundary>\n <HostingWrapper>\n <Provider store={store}>\n <Module />\n\n {(window.dev() || store.getState()?.theme?.useImagePreloader) && (\n <ModuleImagesPreloader images={moduleImages} />\n )}\n </Provider>\n </HostingWrapper>\n </ErrorBoundary>\n </_>,\n document.querySelector('#root')\n);\n","module.exports = __webpack_public_path__ + \"images/Correct_loop.gif\";","module.exports = __webpack_public_path__ + \"images/Incorrect_loop.gif\";","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar children_1 = require(\"../utils/children\");\nvar defaultModuleState = {\n currentTopic: \"\",\n currentInteraction: \"\",\n topics: [],\n interactions: [],\n history: []\n};\nexports.ModuleContext = react_1.createContext([\n defaultModuleState,\n function () { }\n]);\nexports.ModuleReducer = function (state, action) {\n if (state === void 0) { state = defaultModuleState; }\n switch (action.type) {\n case \"GOTO\":\n var history_1 = state.history.splice(0);\n history_1.push(action.data);\n return __assign(__assign({}, state), { currentTopic: action.data });\n case \"GO_FORWARD\":\n var histf = state.history.splice(0);\n histf.push(action.data);\n var _a = action.data.split(\":\"), to_1 = _a[0], ti = _a[1];\n var topic = state.topics.find(function (t) { return t.name === to_1; });\n if (!topic) {\n return state;\n }\n var int = topic.interactions.indexOf(ti);\n if (int === -1) {\n return state;\n }\n if (int === topic.interactions.length - 1) {\n var topicID = state.topics.findIndex(function (t) { return t.name === to_1; });\n if (topicID === -1) {\n return state;\n }\n if (topicID === state.topics.length - 1) {\n return state;\n }\n var currentInteraction = state.topics[topicID + 1].interactions[0];\n return __assign(__assign({}, state), { currentTopic: state.topics[topicID + 1].name, currentInteraction: currentInteraction, history: histf });\n }\n else {\n var currentInteraction = topic.interactions[int + 1];\n return __assign(__assign({}, state), { currentTopic: to_1, currentInteraction: currentInteraction, history: histf });\n }\n case \"GO_BACK\":\n var histb = state.history.splice(0);\n var prev = histb.pop();\n console.log(prev);\n if (!prev)\n return state;\n var _b = prev.split(\":\"), top_1 = _b[0], inter = _b[1];\n console.log(inter);\n return __assign(__assign({}, state), { currentTopic: top_1, currentInteraction: inter, history: histb });\n }\n return state;\n};\nexports.goToPath = function (p) {\n return {\n type: \"GO_TO\",\n data: p\n };\n};\nexports.goBack = function () {\n return {\n type: \"GO_BACK\"\n };\n};\nexports.goForward = function (current) {\n return {\n type: \"GO_FORWARD\",\n data: current\n };\n};\nexports.Module = function (_a) {\n var children = _a.children;\n react_1.useMemo(function () {\n var topics = children_1.Select(children, \"Topic\");\n defaultModuleState.currentTopic = topics[0].props.name;\n topics.forEach(function (child, i) {\n var topic = {\n name: child.props.name,\n interactions: []\n };\n defaultModuleState.topics.push(topic);\n var interactions = children_1.Select(child.props.children, \"Interaction\");\n interactions.forEach(function (int, j) {\n defaultModuleState.interactions.push(int.props.name);\n topic.interactions.push(int.props.name);\n });\n });\n defaultModuleState.currentInteraction =\n defaultModuleState.topics[0].interactions[0];\n }, [children]);\n var _b = react_1.useReducer(exports.ModuleReducer, defaultModuleState), state = _b[0], dispatch = _b[1];\n return (react_1.default.createElement(exports.ModuleContext.Provider, { value: [state, dispatch] },\n react_1.default.createElement(react_1.default.Fragment, null,\n children[0],\n react_1.cloneElement(children[1], { active: state.currentTopic }))));\n};\nexports.Module.displayName = \"Module\";\n","module.exports = __webpack_public_path__ + \"images/Image.svg\";","module.exports = __webpack_public_path__ + \"images/CloseFullscreenEmbed.svg\";","module.exports = __webpack_public_path__ + \"images/CC_Sortation_Placeholder.png\";","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./box\"));\n__export(require(\"./button\"));\n__export(require(\"./card\"));\n__export(require(\"./core\"));\n__export(require(\"./flexbox\"));\n__export(require(\"./grid\"));\n__export(require(\"./heading\"));\n__export(require(\"./image\"));\n__export(require(\"./link\"));\n__export(require(\"./text\"));\n__export(require(\"./icon\"));\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar core_1 = __importDefault(require(\"./core\"));\nvar styled_system_1 = require(\"styled-system\");\nexports.Box = styled_1.default(core_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"])), styled_system_1.maxWidth, styled_system_1.minWidth, styled_system_1.height, styled_system_1.minHeight, styled_system_1.maxHeight, styled_system_1.textAlign, styled_system_1.transform, styled_system_1.alignSelf, styled_system_1.flex, styled_system_1.order, styled_system_1.overflow, styled_system_1.gridArea, styled_system_1.opacity, styled_system_1.position, styled_system_1.zIndex, styled_system_1.top, styled_system_1.right, styled_system_1.bottom, styled_system_1.left, styled_system_1.width, styled_system_1.background, styled_system_1.backgroundImage, styled_system_1.backgroundSize, styled_system_1.backgroundPosition, styled_system_1.backgroundRepeat, styled_system_1.border, styled_system_1.borderBottom, styled_system_1.borderTop, styled_system_1.borderRight, styled_system_1.borderLeft, styled_system_1.borderColor, styled_system_1.boxShadow, styled_system_1.borderRadius);\nexports.Box.displayName = \"Box\";\nexports.Box.defaultProps = {\n flex: 1\n};\nvar templateObject_1;\n","module.exports = __webpack_public_path__ + \"images/Logo_updated.svg\";","module.exports = __webpack_public_path__ + \"images/Character A.png\";","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./editor\"));\n__export(require(\"./player\"));\n__export(require(\"./components\"));\n__export(require(\"./app\"));\n__export(require(\"./utils\"));\n__export(require(\"./chrome\"));\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar box_1 = require(\"./box\");\nvar styled_system_1 = require(\"styled-system\");\nexports.Flexbox = styled_1.default(box_1.Box)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n \\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n display: flex;\\n \\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"])), styled_system_1.alignItems, styled_system_1.justifyContent, styled_system_1.flexWrap, styled_system_1.flexDirection, styled_system_1.alignContent, styled_system_1.flexBasis);\nexports.Flexbox.displayName = \"flexbox\";\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar box_1 = require(\"./box\");\nvar styled_system_1 = require(\"styled-system\");\nvar texts = styled_system_1.variant({ key: \"textStyles\" });\nexports.Text = styled_1.default(box_1.Box)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"])), styled_system_1.fontFamily, styled_system_1.fontWeight, styled_system_1.textAlign, styled_system_1.lineHeight, styled_system_1.letterSpacing, texts, function (p) { return p.theme[\"Text\"]; }, styled_system_1.color);\nexports.Text.defaultProps = {\n as: \"p\",\n m: 0,\n p: 0,\n fontSize: 2\n};\nvar templateObject_1;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nexports.defaultState = {\n sidebarlist: []\n};\nexports.EditContext = react_1.createContext(undefined);\nexports.useSidebar = function () {\n var _a = react_1.useState(exports.defaultState), state = _a[0], setState = _a[1];\n var ctx = __assign(__assign(__assign({}, state), {\n pushSidebarItem: function (item, exclusive) {\n if (exclusive === void 0) { exclusive = true; }\n var sl = exclusive ? [] : state.sidebarlist.splice(0);\n sl.push(item);\n setState({ sidebarlist: sl });\n },\n popSidebarItem: function () {\n var sl = state.sidebarlist.splice(0);\n sl.pop();\n setState({ sidebarlist: sl });\n },\n clearSidebarList: function () {\n setState({ sidebarlist: [] });\n }\n }), { apply: function (block) { } });\n return ctx;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar defaultContext = {\n boxed: false,\n nav: [],\n search: { q: \"\", url: \"\" },\n networkRequestActive: false,\n networkAvailable: false,\n isOpen: function (id) { return false; },\n toggleMenu: function (id) { }\n};\nexports.NavContext = react_1.createContext(defaultContext);\n","module.exports = __webpack_public_path__ + \"images/Plus.svg\";","module.exports = __webpack_public_path__ + \"images/addImg@3x.svg\";","module.exports = __webpack_public_path__ + \"images/Video.svg\";","module.exports = __webpack_public_path__ + \"images/Embed.svg\";","module.exports = __webpack_public_path__ + \"images/FullScreenIcon.svg\";","module.exports = __webpack_public_path__ + \"images/PDF_smallIcon.svg\";","module.exports = __webpack_public_path__ + \"images/tick_mint.svg\";","module.exports = __webpack_public_path__ + \"images/Audio.png\";","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Components = __importStar(require(\"../components\"));\nvar react_1 = require(\"react\");\nexports.Renderer = function (root, blocks, plugins) {\n var rootBlock = blocks[root];\n if (!root || (!rootBlock.type && rootBlock.type !== \"Module\")) {\n throw new Error(\"Root block must be of type module\");\n }\n var parsedPlugins;\n if (!plugins) {\n parsedPlugins = [];\n }\n else if (Array.isArray(plugins)) {\n parsedPlugins = plugins;\n }\n else {\n throw new Error(\"plugins must be undefined or an array of plugin objects\");\n }\n var renderRoot = function () {\n return render(rootBlock);\n };\n var render = function (block) {\n if (!block) {\n throw new Error(\"block must be not null\");\n }\n if (block.type === \"Ref\") {\n block = blocks[block.id];\n }\n var children = block.children;\n if (!children) {\n children = null;\n }\n else if (children && Array.isArray(children)) {\n children = children.map(render);\n }\n var animator = {};\n if (block.animator) {\n animator.animator = Components[block.animator.type];\n animator.config = block.animator.config;\n }\n var element = react_1.createElement(Components[block.type], __assign(__assign({ key: Math.random(), children: children }, block.props), animator));\n var _a = parsedPlugins.reduce(function (_a, fn) {\n var block = _a[0], element = _a[1];\n return fn.onRenderedBlock(block, element);\n }, [block, element]), _ = _a[0], renderedElement = _a[1];\n return renderedElement;\n };\n return {\n render: render,\n renderRoot: renderRoot\n };\n};\nexports.editorPlugin = {\n onRenderedBlock: function (block, element) {\n if (element.type.editableFields) {\n return [\n block,\n react_1.createElement(Components.Editable, {\n block: block,\n key: \"edit-\" + block.id,\n children: react_1.cloneElement(element)\n })\n ];\n }\n return [block, element];\n }\n};\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar useCarousel_1 = require(\"../hooks/useCarousel\");\nvar carouselAnimator_1 = require(\"./carouselAnimator\");\nvar carouselNavigation_1 = require(\"./carouselNavigation\");\nvar interaction_1 = require(\"./interaction\");\nexports.CarouselContext = react_1.createContext({});\n/**\n * React Component for displaying a list of slides.\n * Responsible for navigation, and state management, it will report back to\n * the container interaction that it has been completed\n */\nexports.Carousel = function (_a) {\n var children = _a.children;\n var ctx = useCarousel_1.useCarousel(children.length, 0);\n var _b = ctx.state, current = _b.current, count = _b.count;\n var interaction = react_1.useContext(interaction_1.InteractionContext);\n react_1.useEffect(function () {\n if (current === count - 1) {\n interaction.complete();\n }\n }, [current, count]);\n return (react_1.default.createElement(exports.CarouselContext.Provider, { value: ctx },\n react_1.default.createElement(creator_ui_1.Box, { py: \"20px\", position: \"relative\", style: { boxSizing: \"content-box\" } },\n react_1.default.createElement(carouselAnimator_1.CarouselAnimator, null, children)),\n react_1.default.createElement(carouselNavigation_1.CarouselNavigation, null),\n react_1.default.createElement(\"div\", { style: { display: \"none\" }, \"aria-live\": \"polite\", \"aria-atomic\": \"true\" },\n \"Slide \",\n current,\n \" of \",\n count)));\n};\nexports.Carousel.displayName = \"Carousel\";\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar topic_1 = require(\"./topic\");\nexports.InteractionContext = react_1.createContext({\n topic: \"\",\n name: \"\",\n isComplete: false,\n complete: function () { }\n});\nexports.Interaction = function (_a) {\n var children = _a.children, name = _a.name, _b = _a.autoComplete, autoComplete = _b === void 0 ? true : _b;\n var topic = react_1.useContext(topic_1.TopicContext);\n var _c = react_1.useState({ isComplete: autoComplete }), state = _c[0], setState = _c[1];\n return (react_1.default.createElement(exports.InteractionContext.Provider, { value: {\n topic: topic.name,\n name: name,\n isComplete: state.isComplete,\n complete: function () { return setState({ isComplete: true }); }\n } },\n react_1.default.createElement(creator_ui_1.Box, { as: \"section\", id: name, minHeight: \"calc(100vh - 180px)\", height: \"calc(100vh - 180px)\", width: \"100%\", p: \"20px\" }, children)));\n};\nexports.Interaction.displayName = \"Interaction\";\nexports.Interaction.editableFields = [];\nexports.Interaction.editableContainer = react_1.forwardRef(function (props, ref) {\n var p = __assign({}, props);\n delete p.onClick;\n delete p.onKeyPress;\n delete p.tabIndex;\n return react_1.default.createElement(creator_ui_1.Box, __assign({}, p, { ref: ref, p: \"0px\", m: \"30px\", width: \"calc(100% - 60px)\" }));\n});\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar navbarLink_1 = require(\"./navbarLink\");\nvar dropDown_1 = require(\"./dropDown\");\nvar navArrow_1 = require(\"./navArrow\");\nvar navbarContext_1 = require(\"./navbarContext\");\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar ListItem = styled_1.default.li(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n flex: 1;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: 14px;\\n\"], [\"\\n position: relative;\\n flex: 1;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: 14px;\\n\"])));\nvar DropDownList = styled_1.default.ul(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n\"], [\"\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n\"])));\nvar DropDownListItem = styled_1.default.li(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n align-items: center;\\n width: 100%;\\n height: 64px;\\n font-size: 16px;\\n cursor: pointer;\\n transition: color 0.2s;\\n border-bottom: 1px solid rgb(221, 229, 254);\\n\\n &:last-of-type {\\n border-bottom: none;\\n margin-bottom: -16px;\\n }\\n\\n &:first-of-type {\\n margin-top: -16px;\\n }\\n\\n &:hover {\\n color: \\\"#ff0063\\\";\\n }\\n\"], [\"\\n position: relative;\\n display: flex;\\n align-items: center;\\n width: 100%;\\n height: 64px;\\n font-size: 16px;\\n cursor: pointer;\\n transition: color 0.2s;\\n border-bottom: 1px solid rgb(221, 229, 254);\\n\\n &:last-of-type {\\n border-bottom: none;\\n margin-bottom: -16px;\\n }\\n\\n &:first-of-type {\\n margin-top: -16px;\\n }\\n\\n &:hover {\\n color: \\\"#ff0063\\\";\\n }\\n\"])));\nvar LogoIcon = styled_1.default.img(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n display: block;\\n width: 44px;\\n height: 32px;\\n padding-right: 4px;\\n padding-left: 8px;\\n\"], [\"\\n display: block;\\n width: 44px;\\n height: 32px;\\n padding-right: 4px;\\n padding-left: 8px;\\n\"])));\nexports.NavItem = function (_a) {\n var item = _a.item, id = _a.id;\n var url = item.url, label = item.label, children = item.children, logo = item.logo;\n var toggleMenu = react_1.useContext(navbarContext_1.NavContext).toggleMenu;\n if (url) {\n return (react_1.default.createElement(ListItem, null,\n react_1.default.createElement(navbarLink_1.Link, { target: \"_parent\", href: url }, label)));\n }\n return (react_1.default.createElement(ListItem, null,\n react_1.default.createElement(navbarLink_1.Link, { onClick: function (e) {\n e.stopPropagation();\n toggleMenu(id);\n }, style: { paddingRight: 16 } },\n react_1.default.createElement(\"div\", null, label),\n logo ? react_1.default.createElement(LogoIcon, { src: logo }) : null,\n react_1.default.createElement(navArrow_1.NavArrow, null)),\n react_1.default.createElement(dropDown_1.DropDown, __assign({}, { id: id }),\n react_1.default.createElement(DropDownList, null, children.map(function (a) {\n return (react_1.default.createElement(DropDownListItem, { key: \"item-\" + a.label },\n react_1.default.createElement(navbarLink_1.Link, { target: \"_parent\", href: a.url }, a.label)));\n })))));\n};\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;\n","module.exports = __webpack_public_path__ + \"images/new_graphic_banner_default.png\";","module.exports = __webpack_public_path__ + \"images/chameleon_icon_white.svg\";","module.exports = __webpack_public_path__ + \"images/Media_default.svg\";","module.exports = __webpack_public_path__ + \"images/Character C.png\";","module.exports = __webpack_public_path__ + \"images/Wide Image.png\";","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar styled_system_1 = require(\"styled-system\");\nvar Core = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"])), styled_system_1.space, styled_system_1.width, styled_system_1.color, styled_system_1.fontSize, styled_system_1.display);\nCore.displayName = \"Core\";\nexports.default = Core;\nvar templateObject_1;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./windowButton\"));\n__export(require(\"./indicator\"));\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./accordion\"));\n__export(require(\"./accordionBody\"));\n__export(require(\"./accordionField\"));\n__export(require(\"./accordionHeader\"));\n__export(require(\"./animation\"));\n__export(require(\"./animationGroup\"));\n__export(require(\"./back\"));\n__export(require(\"./branchButton\"));\n__export(require(\"./carousel\"));\n__export(require(\"./choice\"));\n__export(require(\"./choices\"));\n__export(require(\"./column\"));\n__export(require(\"./continueButton\"));\n__export(require(\"./description\"));\n__export(require(\"./dragAndDrop\"));\n__export(require(\"./dragContainer\"));\n__export(require(\"./dragItem\"));\n__export(require(\"./dropContainer\"));\n__export(require(\"./dropItem\"));\n__export(require(\"./feedback\"));\n__export(require(\"./header\"));\n__export(require(\"./heading\"));\n__export(require(\"./image\"));\n__export(require(\"./interaction\"));\n// export * from \"./logo\";\n__export(require(\"./menu\"));\n__export(require(\"./module\"));\n__export(require(\"./multipleChoice\"));\n__export(require(\"./paragraph\"));\n__export(require(\"./quiz\"));\n__export(require(\"./rating\"));\n__export(require(\"./result\"));\n__export(require(\"./singleChoice\"));\n__export(require(\"./singleColumnLayout\"));\n__export(require(\"./slide\"));\n__export(require(\"./text\"));\n__export(require(\"./textarea\"));\n__export(require(\"./title\"));\n__export(require(\"./topic\"));\n__export(require(\"./topicTitle\"));\n__export(require(\"./twoColumnLayout\"));\n__export(require(\"./editable\"));\n__export(require(\"./video\"));\n","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nexports.Select = function (children, kind) {\n var elements = [];\n react_1.Children.forEach(children, function (child, i) {\n if (!child.type) {\n return;\n }\n if (child.type.displayName === kind) {\n elements.push(child);\n }\n if (child.props.children) {\n var es = exports.Select(child.props.children, kind);\n elements = __spreadArrays(elements, es);\n }\n });\n return elements;\n};\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar module_1 = require(\"./module\");\nexports.TopicContext = react_1.createContext({ name: \"\" });\nexports.Topic = function (_a) {\n var children = _a.children, name = _a.name;\n var _b = react_1.useContext(module_1.ModuleContext), modCtx = _b[0], _ = _b[1];\n var c = react_1.default.Children.map(children, function (child) {\n if (child.type.displayName === \"AnimationGroup\") {\n return react_1.cloneElement(child, { active: modCtx.currentInteraction });\n }\n return child;\n });\n return react_1.default.createElement(exports.TopicContext.Provider, { value: { name: name } }, c);\n};\nexports.Topic.displayName = \"Topic\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Topics = function () {\n return react_1.default.createElement(creator_ui_1.Box, null, \"Edit Topics\");\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Bar = function (_a) {\n var children = _a.children, boxed = _a.boxed;\n return (react_1.default.createElement(\"div\", { style: {\n background: \"#fff\",\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100vw\",\n height: \"70px\",\n zIndex: 1000,\n boxShadow: \"0 2px 10px rgba(0, 0, 0, 0.1)\"\n } },\n react_1.default.createElement(\"div\", { style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n maxWidth: boxed ? \"1024px\" : \"100%\",\n margin: \"auto\"\n } }, children)));\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar BurgerIcon = function () {\n return (react_1.default.createElement(\"svg\", { width: \"26px\", height: \"16px\", viewBox: \"0 0 18 14\", version: \"1.1\" },\n react_1.default.createElement(\"title\", null, \"Burger\"),\n react_1.default.createElement(\"desc\", null, \"Created with Sketch.\"),\n react_1.default.createElement(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" },\n react_1.default.createElement(\"g\", { fill: \"#282A2B\" },\n react_1.default.createElement(\"rect\", { x: \"0\", y: \"0\", width: \"18\", height: \"2\" }),\n react_1.default.createElement(\"rect\", { x: \"0\", y: \"6\", width: \"18\", height: \"2\" }),\n react_1.default.createElement(\"rect\", { x: \"0\", y: \"12\", width: \"18\", height: \"2\" })))));\n};\nexports.Burger = function (_a) {\n var showDrawer = _a.showDrawer, setDrawer = _a.setDrawer;\n return (react_1.default.createElement(creator_ui_1.Flexbox, { flex: \"0 0 52px\", pl: \"24px\", pr: \"4px\", height: \"70px\", style: { cursor: \"pointer\" }, onClick: function () { return setDrawer(!showDrawer); }, justifyContent: \"center\", alignItems: \"center\" },\n react_1.default.createElement(BurgerIcon, null)));\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nexports.Drawer = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n transition: transform 0.2s ease-out;\\n transform: translate3d(-340px, 0, 0);\\n width: 340px;\\n height: calc(100vh - 0px);\\n position: fixed;\\n top: 0px;\\n left: 0;\\n z-index: 10000;\\n background: #fff;\\n\"], [\"\\n transition: transform 0.2s ease-out;\\n transform: translate3d(-340px, 0, 0);\\n width: 340px;\\n height: calc(100vh - 0px);\\n position: fixed;\\n top: 0px;\\n left: 0;\\n z-index: 10000;\\n background: #fff;\\n\"])));\nexports.Overlay = styled_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: fixed;\\n top: 0px;\\n left: 0;\\n z-index: 9999;\\n background: rgba(0, 0, 0, 0.5);\\n width: 100%;\\n height: calc(100vh - 0px);\\n cursor: pointer;\\n\"], [\"\\n position: fixed;\\n top: 0px;\\n left: 0;\\n z-index: 9999;\\n background: rgba(0, 0, 0, 0.5);\\n width: 100%;\\n height: calc(100vh - 0px);\\n cursor: pointer;\\n\"])));\nexports.DrawerLink = styled_1.default.a(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n padding: 24px;\\n display: block;\\n color: #333;\\n text-decoration: none;\\n transition: color 0.2s;\\n border-bottom: 1px solid rgb(221, 229, 254);\\n\\n &:hover {\\n color: #ff0063;\\n text-decoration: none;\\n }\\n\"], [\"\\n padding: 24px;\\n display: block;\\n color: #333;\\n text-decoration: none;\\n transition: color 0.2s;\\n border-bottom: 1px solid rgb(221, 229, 254);\\n\\n &:hover {\\n color: #ff0063;\\n text-decoration: none;\\n }\\n\"])));\nvar Item = styled_1.default.li(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n list-style: none;\\n\"], [\"\\n list-style: none;\\n\"])));\nexports.DrawerItem = function (_a) {\n var item = _a.item;\n var url = item.url, label = item.label, _b = item.children, children = _b === void 0 ? [] : _b;\n return (react_1.default.createElement(Item, { id: \"drawer-\" + item.label + \"-i\" },\n url ? (react_1.default.createElement(exports.DrawerLink, { href: url }, label)) : (react_1.default.createElement(exports.DrawerLink, null, label)),\n react_1.default.createElement(\"ul\", { style: { padding: \"0\", listStyle: \"none\", margin: 0 } }, children.map(function (a, i) {\n return (react_1.default.createElement(\"li\", { key: \"item-\" + a.label + \"-\" + i },\n react_1.default.createElement(exports.DrawerLink, { href: a.url }, a.label)));\n }))));\n};\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar navbarContext_1 = require(\"./navbarContext\");\nvar Container = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n position: absolute;\\n top: calc(100% + 12px);\\n min-width: 256px;\\n right: 0;\\n background: #fff;\\n padding: 32px;\\n flex-direction: column;\\n opacity: 0;\\n transition: opacity 0.3s;\\n min-width: 440px;\\n border-radius: 14px;\\n box-shadow: 0 32px 80px -30px rgba(0, 0, 0, 0.17);\\n\\n &::before {\\n content: \\\" \\\";\\n width: 12px;\\n height: 12px;\\n border-radius: 2px;\\n position: absolute;\\n top: -4px;\\n right: 24px;\\n background: #fff;\\n transform: rotate(45deg);\\n box-shadow: 0px 0px 15px -5px rgba(0, 0, 0, 0.5);\\n }\\n\"], [\"\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n position: absolute;\\n top: calc(100% + 12px);\\n min-width: 256px;\\n right: 0;\\n background: #fff;\\n padding: 32px;\\n flex-direction: column;\\n opacity: 0;\\n transition: opacity 0.3s;\\n min-width: 440px;\\n border-radius: 14px;\\n box-shadow: 0 32px 80px -30px rgba(0, 0, 0, 0.17);\\n\\n &::before {\\n content: \\\" \\\";\\n width: 12px;\\n height: 12px;\\n border-radius: 2px;\\n position: absolute;\\n top: -4px;\\n right: 24px;\\n background: #fff;\\n transform: rotate(45deg);\\n box-shadow: 0px 0px 15px -5px rgba(0, 0, 0, 0.5);\\n }\\n\"])));\nexports.DropDownItem = styled_1.default.li(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: block;\\n\"], [\"\\n display: block;\\n\"])));\nexports.DropDownCtx = react_1.createContext({\n open: false\n});\nexports.DropDown = function (_a) {\n var children = _a.children, id = _a.id;\n var _b = react_1.useContext(navbarContext_1.NavContext), isOpen = _b.isOpen, toggleMenu = _b.toggleMenu;\n var open = isOpen(id);\n react_1.useEffect(function () {\n var onBodyClick = function () {\n if (open) {\n toggleMenu(id);\n }\n };\n window.addEventListener(\"click\", onBodyClick);\n return function () { return window.removeEventListener(\"click\", onBodyClick); };\n }, [open]);\n return (react_1.default.createElement(exports.DropDownCtx.Provider, { value: { open: open } },\n react_1.default.createElement(Container, { style: {\n display: open ? \"flex\" : \"none\",\n opacity: open ? 1 : 0\n }, onClick: function (e) {\n e.stopPropagation();\n toggleMenu(id);\n } }, children)));\n};\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Logo = function (_a) {\n var _b = _a.style, style = _b === void 0 ? {} : _b;\n return (react_1.default.createElement(\"svg\", { width: \"41px\", height: \"44px\", viewBox: \"0 0 41 44\", version: \"1.1\" },\n react_1.default.createElement(\"defs\", null,\n react_1.default.createElement(\"linearGradient\", { x1: \"0%\", y1: \"49.9784576%\", x2: \"100%\", y2: \"49.9784576%\", id: \"linearGradient-1\" },\n react_1.default.createElement(\"stop\", { stopColor: \"#3CBCB8\", offset: \"0%\" }),\n react_1.default.createElement(\"stop\", { stopColor: \"#61CECE\", offset: \"54%\" }))),\n react_1.default.createElement(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" },\n react_1.default.createElement(\"g\", { id: \"New-Dashboard-Nav\", transform: \"translate(-37.000000, -27.000000)\", fillRule: \"nonzero\" },\n react_1.default.createElement(\"g\", { id: \"Logo_2019\", transform: \"translate(37.000000, 27.000000)\" },\n react_1.default.createElement(\"path\", { d: \"M15.456,29.6 C17.4556354,35.7401831 22.3805494,40.4821374 28.592,42.248 C36.1045868,39.1387759 41.0047894,31.8105734 41.008,23.68 L28.96,23.68 C28.9336224,28.1029126 25.3429891,31.675682 20.92,31.68 C18.9006207,31.705658 16.9471288,30.9620154 15.456,29.6 Z\", id: \"Fill-1\", fill: \"url(#linearGradient-1)\" }),\n react_1.default.createElement(\"path\", { d: \"M25.368,-2.20638349e-06 L25.368,4.064 C17.2161938,2.2078218 8.76619046,5.58832662 4.14399692,12.5548658 C-0.478196616,19.521405 -0.308512623,28.6209422 4.57019481,35.410313 C9.44890224,42.1996837 18.0190634,45.2628043 26.096,43.104 C18.529893,40.0722864 13.4003278,32.9376693 12.936,24.8 C12.8828595,24.4396532 12.8534628,24.0762031 12.848,23.712 C12.8742091,19.3046238 16.4406238,15.7382091 20.848,15.712 L25.312,15.712 L25.312,15.712 L40.9922955,15.712 C41.0175725,11.5523841 39.3825169,7.5544678 36.4494404,4.60487116 C33.5163639,1.65527452 29.5276939,-0.0022095975 25.368,-2.20638349e-06 Z M32.952,12.72 C31.1846888,12.72 29.752,11.2873112 29.752,9.52 C29.752,7.7526888 31.1846888,6.32 32.952,6.32 C34.7193112,6.32 36.152,7.7526888 36.152,9.52 C36.152,11.2873112 34.7193112,12.72 32.952,12.72 L32.952,12.72 Z\", id: \"Shape\", fill: \"#61CECE\" }),\n react_1.default.createElement(\"path\", { d: \"M33.12,9.512 C33.1245177,8.82254066 33.6839774,8.26561729 34.3734502,8.26422978 C35.0629229,8.26284745 35.6246154,8.8175188 35.6319029,9.50695443 C35.6391903,10.1963901 35.089348,10.7628105 34.4,10.776 C34.0654974,10.776 33.7448105,10.642581 33.5090334,10.4053022 C33.2732564,10.1680234 33.1418694,9.84649586 33.144,9.512\", id: \"Fill-12\", fill: \"#61CECE\" }))))));\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar I = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n margin-left: 4px;\\n transform: rotate(90deg);\\n transition: all 0.2s;\\n\\n & svg {\\n stroke: #282a2b;\\n }\\n\"], [\"\\n margin-left: 4px;\\n transform: rotate(90deg);\\n transition: all 0.2s;\\n\\n & svg {\\n stroke: #282a2b;\\n }\\n\"])));\nexports.NavArrow = function () { return (react_1.default.createElement(I, null,\n react_1.default.createElement(\"svg\", { width: \"8px\", height: \"13px\", viewBox: \"0 0 9 15\" },\n react_1.default.createElement(\"defs\", null),\n react_1.default.createElement(\"g\", { strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" },\n react_1.default.createElement(\"g\", { id: \"Third\", transform: \"translate(-1206.000000, -566.000000)\", strokeWidth: \"2\" },\n react_1.default.createElement(\"polyline\", { id: \"Pointer---dark\", transform: \"translate(1210.000000, 573.500000) rotate(-90.000000) translate(-1210.000000, -573.500000) \", points: \"1216.5 570.5 1210 576.5 1203.5 570.5\" })))))); };\nvar templateObject_1;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar navItem_1 = require(\"./navItem\");\nexports.Admin = function (_a) {\n var name = _a.name, profileImg = _a.profileImg;\n return (react_1.default.createElement(\"div\", null,\n react_1.default.createElement(navItem_1.NavItem, { item: {\n logo: profileImg,\n label: name,\n children: [\n {\n label: \"Settings\",\n url: \"/users/edit\"\n },\n {\n label: \"Logout\",\n url: \"/users/sign_out\"\n }\n ]\n }, id: \"user-menu\" })));\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nexports.Link = styled_1.default.a(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n flex: 1;\\n color: #333;\\n text-decoration: none;\\n transition: color 0.2s;\\n display: flex;\\n padding: 4px 8px;\\n cursor: pointer;\\n height: calc(100%);\\n align-items: center;\\n width: calc(100% + 6px);\\n font-size: 14px;\\n\\n &:hover {\\n color: #ff0063;\\n text-decoration: none;\\n }\\n\\n & svg {\\n transition: stroke 0.2s;\\n }\\n\\n &:hover svg {\\n transition: stroke 0.2s;\\n stroke: #ff0063;\\n }\\n\"], [\"\\n flex: 1;\\n color: #333;\\n text-decoration: none;\\n transition: color 0.2s;\\n display: flex;\\n padding: 4px 8px;\\n cursor: pointer;\\n height: calc(100%);\\n align-items: center;\\n width: calc(100% + 6px);\\n font-size: 14px;\\n\\n &:hover {\\n color: #ff0063;\\n text-decoration: none;\\n }\\n\\n & svg {\\n transition: stroke 0.2s;\\n }\\n\\n &:hover svg {\\n transition: stroke 0.2s;\\n stroke: #ff0063;\\n }\\n\"])));\nvar templateObject_1;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.SearchBar = function (_a) {\n var _b = _a.q, q = _b === void 0 ? \"\" : _b, showSearch = _a.showSearch;\n return showSearch ? (react_1.default.createElement(\"div\", { style: {\n width: \"100%\",\n height: \"40px\",\n borderRadius: \"9999px\",\n background: \"#eaeffb\"\n } },\n react_1.default.createElement(creator_ui_1.Flexbox, { as: \"label\", html: \"#global-search\", alignItems: \"center\", style: { width: \"100%\", height: \"100%\", cursor: \"text\" } },\n react_1.default.createElement(\"i\", { className: \"fa fa-search\", style: { fontSize: 14, margin: \"0 0 0 20px\" } }),\n react_1.default.createElement(\"form\", { action: \"/search\", method: \"GET\" },\n react_1.default.createElement(\"input\", { id: \"global-search\", type: \"text\", name: \"q\", style: {\n flex: 1,\n outline: \"none\",\n border: \"none\",\n background: \"transparent\",\n padding: \"0 0 0 20px\"\n }, defaultValue: q, placeholder: \"Search\", onKeyUp: function (e) {\n var value = e.currentTarget.value;\n if (e.key === \"Enter\") {\n console.log({ value: value });\n }\n } }))))) : null;\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar navItem_1 = require(\"./navItem\");\nexports.NavigationList = styled_1.default.ul(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n margin: 0;\\n padding: 0;\\n user-select: none;\\n justify-content: center;\\n align-items: center;\\n height: 70px;\\n list-style: none;\\n\"], [\"\\n display: flex;\\n margin: 0;\\n padding: 0;\\n user-select: none;\\n justify-content: center;\\n align-items: center;\\n height: 70px;\\n list-style: none;\\n\"])));\nexports.Navigation = function (_a) {\n var nav = _a.nav;\n return (react_1.default.createElement(exports.NavigationList, null, nav.map(function (r, i) { return (react_1.default.createElement(navItem_1.NavItem, { key: \"nav-\" + r.label + \"-i\", id: \"nav-\" + r.label + \"-i\", item: r })); })));\n};\nvar templateObject_1;\n","module.exports = __webpack_public_path__ + \"images/Card_Test.png\";","/**\n * Element.closest() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n */\nif (!Element.prototype.closest) {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element.prototype as any).msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n }\n Element.prototype.closest = function (s) {\n var el = this;\n var ancestor = this;\n if (!document.documentElement.contains(el)) return null;\n do {\n if (ancestor.matches(s)) return ancestor;\n ancestor = ancestor.parentElement!;\n } while (ancestor !== null);\n return null;\n };\n}\n","module.exports = __webpack_public_path__ + \"images/Loader_Logo_2.gif\";","module.exports = __webpack_public_path__ + \"images/edit.svg\";","module.exports = __webpack_public_path__ + \"images/pdf_thumbnail_26012023.png\";","module.exports = __webpack_public_path__ + \"images/CC_Correct.png\";","module.exports = __webpack_public_path__ + \"images/CC_Incorrect.png\";","module.exports = __webpack_public_path__ + \"images/CC_TryAgain.png\";","module.exports = __webpack_public_path__ + \"images/previewInteractionIcon.svg\";","module.exports = __webpack_public_path__ + \"images/reviewToolReviewsBubble.svg\";","module.exports = __webpack_public_path__ + \"images/expand.svg\";","module.exports = __webpack_public_path__ + \"images/Wide Image 2.png\";","module.exports = __webpack_public_path__ + \"images/genericAdditionalPlaceholder.png\";","module.exports = __webpack_public_path__ + \"images/CC_Phone Character.png\";","module.exports = __webpack_public_path__ + \"images/addInteractionDefault.svg\";","module.exports = __webpack_public_path__ + \"images/addInteractionHover.svg\";","module.exports = __webpack_public_path__ + \"images/Play Default.svg\";","module.exports = __webpack_public_path__ + \"images/Play Hover.svg\";","module.exports = __webpack_public_path__ + \"images/the Gwillest.png\";","module.exports = __webpack_public_path__ + \"images/addInteractionBKG.svg\";","module.exports = __webpack_public_path__ + \"images/theresNothingHereYet.png\";","module.exports = __webpack_public_path__ + \"images/watchAQuickHowToVideo.png\";","module.exports = __webpack_public_path__ + \"images/playVideo.svg\";","module.exports = __webpack_public_path__ + \"images/clickPreviewToSeeOutput.png\";","module.exports = __webpack_public_path__ + \"images/CC_Multi Choice Media Placeholders_1.svg\";","module.exports = __webpack_public_path__ + \"images/CC_Multi Choice Media Placeholders_2.svg\";","module.exports = __webpack_public_path__ + \"images/CC_Multi Choice Media Placeholders_3.svg\";","module.exports = __webpack_public_path__ + \"images/CC_Multi Choice Media Placeholders_4.svg\";","module.exports = __webpack_public_path__ + \"images/CC_Multi Choice Media Placeholders_5.svg\";","module.exports = __webpack_public_path__ + \"images/CC_Multi Choice Media Placeholders_6.svg\";","module.exports = __webpack_public_path__ + \"images/CC_Question Text + Image.svg\";","module.exports = __webpack_public_path__ + \"images/Cross.svg\";","module.exports = __webpack_public_path__ + \"images/Plus_purple.svg\";","module.exports = __webpack_public_path__ + \"images/Info.svg\";","module.exports = __webpack_public_path__ + \"images/CC_Sortation Placeholder_Panel Media 4.png\";","module.exports = __webpack_public_path__ + \"images/CC_QuestionTextImage.svg\";","module.exports = __webpack_public_path__ + \"images/HotspotSVGError.svg\";","module.exports = __webpack_public_path__ + \"images/Delete_new.svg\";","module.exports = __webpack_public_path__ + \"images/tick_grey.svg\";","module.exports = __webpack_public_path__ + \"images/Hotspot_Add.svg\";","module.exports = __webpack_public_path__ + \"images/imageUploadError_hotSpot.svg\";","module.exports = __webpack_public_path__ + \"images/SVG.svg\";","module.exports = __webpack_public_path__ + \"images/AudioIcon.svg\";","module.exports = __webpack_public_path__ + \"images/Text.svg\";","module.exports = __webpack_public_path__ + \"images/Search.svg\";","module.exports = __webpack_public_path__ + \"images/removeNavigation.svg\";","module.exports = __webpack_public_path__ + \"images/Plus_Icon.svg\";","module.exports = __webpack_public_path__ + \"images/Widest Image.png\";","module.exports = __webpack_public_path__ + \"images/hotspotLandingPageImg.png\";","module.exports = __webpack_public_path__ + \"images/hotspotQuizImg.png\";","module.exports = __webpack_public_path__ + \"images/collectFeedbackSubmitted.svg\";","module.exports = __webpack_public_path__ + \"images/CC_AW_Feedback-min.png\";","module.exports = __webpack_public_path__ + \"images/landingPageCake_1.png\";","module.exports = __webpack_public_path__ + \"images/landingPageCake_2.png\";","module.exports = __webpack_public_path__ + \"images/landingPageCake_3.png\";","module.exports = __webpack_public_path__ + \"images/landingPageCake_4.png\";","module.exports = __webpack_public_path__ + \"images/landingPageCake_5.png\";","module.exports = __webpack_public_path__ + \"images/landingPageCake_6.png\";","module.exports = __webpack_public_path__ + \"images/clickToRevealMagicMan.png\";","module.exports = __webpack_public_path__ + \"images/CC_Topic Portal V3_Topic Portal Placeholder Icon.png\";","module.exports = __webpack_public_path__ + \"images/CC_Text_Entry_Quiz_Placeholder.png\";","module.exports = __webpack_public_path__ + \"images/new_assessment_intro_default.png\";","module.exports = __webpack_public_path__ + \"images/CC_Assessment Question Image.png\";","module.exports = __webpack_public_path__ + \"images/Certificate-V2.png\";","module.exports = __webpack_public_path__ + \"images/Drag Icon_Blue.svg\";","module.exports = __webpack_public_path__ + \"images/Resize Icon.svg\";","module.exports = __webpack_public_path__ + \"images/move_cert_input.svg\";","module.exports = __webpack_public_path__ + \"images/resize_cert_input.svg\";","module.exports = __webpack_public_path__ + \"images/chameleonLogoForCertificate.svg\";","module.exports = __webpack_public_path__ + \"images/lizard.svg\";","const URLs = {\n local: 'http://localhost:8000',\n development: 'https://development.v2.chameleoncreator.com',\n staging: 'https://staging.v2.chameleoncreator.com',\n production: 'https://v2.chameleoncreator.com',\n anz: \"https://anz.v2.chameleoncreator.com\"\n};\n\nfunction getParams() {\n var qu = window.location.href.split('?')[1];\n var data = {} as any;\n\n\n if (!qu) {\n var env = window.env || 'local';\n\n return {\n hasRemote: false,\n projectId: window.projectId || '-1',\n url: URLs[env.toLowerCase()] || URLs.local,\n hosted: window.hosted == true,\n mode: window.mode || 'DEVELOPMENT',\n };\n } else {\n var params = qu.split('&');\n\n for (var x in params) {\n data[params[x].split('=')[0]] = params[x].split('=')[1];\n }\n\n var env = data.env || 'local';\n\n return {\n hasRemote: true,\n projectId: window.projectId || data.project_id || '1',\n url: URLs[env.toLowerCase()] || URLs.local,\n mode: window.mode || data.mode,\n hosted: window.hosted == true || data.hosted == 'true',\n };\n }\n}\n\nwindow.chameleon = {\n CHAMELEON_URL: getParams().url,\n};\n\nwindow.hasMode = mode => {\n const windowMode = getParams().mode || 'DEVELOPMENT';\n\n return mode === windowMode;\n};\n\nwindow.getParams = getParams;\n","module.exports = __webpack_public_path__ + \"images/whoopsBrowserIncompatible.png\";","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar render_1 = require(\"./utils/render\");\nvar edit_1 = require(\"./edit\");\nvar useModule_1 = require(\"./hooks/useModule\");\nvar useSidebar_1 = require(\"./hooks/useSidebar\");\nvar frame_1 = require(\"./components/frame\");\n// import { GlobalStyles } from \"./globalStyles\";\nexports.Editor = function (_a) {\n var data = _a.data, root = _a.root;\n var _b = useModule_1.useModule(data, root), mod = _b[0], Set = _b[1], Remove = _b[2];\n var blocks = mod.blocks;\n var renderer = render_1.Renderer(root, blocks, [render_1.editorPlugin]);\n var children = react_1.useMemo(function () { return renderer.renderRoot(); }, [blocks]);\n var ctx = useSidebar_1.useSidebar();\n return (react_1.default.createElement(useSidebar_1.EditContext.Provider, { value: ctx },\n react_1.default.createElement(creator_ui_1.Flexbox, { p: 20, height: \"100vh\", width: \"100%\" },\n react_1.default.createElement(creator_ui_1.Box, { as: \"aside\", flex: [\"0 0 0\", \"0 0 0\", \"0 0 400px\"], mr: [0, 0, 30] },\n react_1.default.createElement(edit_1.Sidebar, null)),\n react_1.default.createElement(creator_ui_1.Box, { as: \"main\", height: \"100%\", flex: \"1\" },\n react_1.default.createElement(creator_ui_1.BrowserWindow, null,\n react_1.default.createElement(frame_1.Frame, null, children))))));\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar styled_system_1 = require(\"styled-system\");\nvar flexbox_1 = require(\"./flexbox\");\nvar buttons = styled_system_1.variant({ key: \"buttons\" });\nexports.Button = styled_1.default(flexbox_1.Flexbox)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\" \\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\\n cursor: pointer;\\n \\n & img {\\n display: block;\\n }\\n\"], [\" \\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\\n cursor: pointer;\\n \\n & img {\\n display: block;\\n }\\n\"])), styled_system_1.fontWeight, styled_system_1.borders, styled_system_1.borderColor, styled_system_1.borderRadius, styled_system_1.buttonStyle, buttons, function (p) { return p.theme[\"Button\"]; });\nexports.Button.defaultProps = {\n as: \"button\",\n fontSize: \"inherit\",\n fontWeight: \"bold\",\n m: 0,\n px: 3,\n py: 2,\n border: 0,\n borderRadius: 4,\n alignItems: \"center\"\n};\nexports.Button.displayName = \"button\";\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar styled_system_1 = require(\"styled-system\");\nvar flexbox_1 = require(\"./flexbox\");\nvar cards = styled_system_1.variant({ key: \"cards\" });\nexports.Card = styled_1.default(flexbox_1.Flexbox)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"])), styled_system_1.borders, styled_system_1.borderColor, styled_system_1.borderRadius, styled_system_1.boxShadow, styled_system_1.backgroundImage, styled_system_1.backgroundSize, styled_system_1.backgroundPosition, styled_system_1.backgroundRepeat, styled_system_1.opacity, cards, function (p) { return p.theme[\"Card\"]; });\nexports.Card.displayName = \"Card\";\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar styled_system_1 = require(\"styled-system\");\nvar box_1 = require(\"./box\");\nexports.Grid = styled_1.default(box_1.Box)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\" \\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n display: grid;\\n\"], [\" \\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n display: grid;\\n\"])), styled_system_1.gridGap, styled_system_1.gridRowGap, styled_system_1.gridColumnGap, styled_system_1.gridColumn, styled_system_1.gridRow, styled_system_1.gridAutoFlow, styled_system_1.gridAutoRows, styled_system_1.gridAutoColumns, styled_system_1.gridTemplateRows, styled_system_1.gridTemplateColumns, styled_system_1.gridTemplateAreas);\nexports.Grid.displayName = \"Grid\";\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar text_1 = require(\"./text\");\nvar styled_system_1 = require(\"styled-system\");\nvar headings = styled_system_1.variant({ key: \"Heading\" });\nexports.Heading = styled_1.default(text_1.Text)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), headings);\nexports.Heading.defaultProps = {\n as: \"h1\"\n};\nexports.Heading.displayName = \"Heading\";\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar styled_system_1 = require(\"styled-system\");\nvar text_1 = require(\"./text\");\nvar images = styled_system_1.variant({ key: \"Image\" });\nvar Image = styled_1.default(text_1.Text)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), images);\nImage.defaultProps = {\n as: \"img\"\n};\nImage.displayName = \"Image\";\nexports.default = Image;\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar styled_system_1 = require(\"styled-system\");\nvar text_1 = require(\"./text\");\nvar links = styled_system_1.variant({ key: \"Link\" });\nexports.Link = styled_1.default(text_1.Text)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), links);\nexports.Link.defaultProps = {\n as: \"a\",\n color: \"blue\"\n};\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar box_1 = require(\"./box\");\nexports.Icon = styled_1.default(box_1.Box)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: block;\\n\\n svg {\\n display: block;\\n }\\n\"], [\"\\n display: block;\\n\\n svg {\\n display: block;\\n }\\n\"])));\nexports.Icon.defaultProps = {\n as: \"i\"\n};\nexports.Icon.displayName = \"logo\";\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nexports.WindowButton = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n width: 13px;\\n height: 13px;\\n border-radius: 50%;\\n border: 1px solid #dee3f3;\\n flex: 0 13px;\\n margin-right: 7px;\\n\"], [\"\\n width: 13px;\\n height: 13px;\\n border-radius: 50%;\\n border: 1px solid #dee3f3;\\n flex: 0 13px;\\n margin-right: 7px;\\n\"])));\nvar templateObject_1;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar core_1 = require(\"../core\");\nexports.Indicator = function (_a) {\n var onClick = _a.onClick, isActive = _a.isActive;\n return (react_1.default.createElement(core_1.Box, { as: \"li\", style: { cursor: \"pointer\", listStyle: \"none\" }, m: \"2px\", p: \"5px\", onClick: onClick },\n react_1.default.createElement(core_1.Box, { width: \"10px\", height: \"10px\", borderRadius: \"50%\", bg: \"#000\", transition: \"transform 0.3\", style: {\n transform: \"scale(\" + (isActive ? \"1.4\" : \"1\") + \")\"\n } })));\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.test = \"test\";\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./browserWindow\"));\n__export(require(\"./column\"));\n__export(require(\"./row\"));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar core_1 = require(\"../core\");\nvar atoms_1 = require(\"../atoms\");\nexports.BrowserWindow = function (props) {\n return (react_1.default.createElement(core_1.Flexbox, { boxShadow: \"0 2px 100px -10px rgba(0, 0, 0, 0.2)\", borderRadius: \"10px\", border: \"1px solid #dee3f3\", flexDirection: \"column\", width: \"100%\", height: \"100%\" },\n react_1.default.createElement(core_1.Flexbox, { flex: \"0 0 40px\", p: 10, px: 20, borderBottom: \"1px solid\", borderColor: \"#dee3f3\", alignItems: \"center\" },\n react_1.default.createElement(atoms_1.WindowButton, null),\n react_1.default.createElement(atoms_1.WindowButton, null),\n react_1.default.createElement(atoms_1.WindowButton, null)),\n react_1.default.createElement(core_1.Box, { p: 0, flex: \"1 1 100%\", height: \"100%\", maxHeight: \"100%\", style: { overflowX: \"hidden\", overflowY: \"auto\" } }, props.children)));\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar core_1 = require(\"../core\");\nexports.Column = styled_1.default(core_1.Flexbox)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\"], [\"\"])));\nexports.Column.defaultProps = {\n flexDirection: \"column\",\n justifyContent: \"center\",\n flex: 1,\n margin: 2,\n};\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar flexbox_1 = require(\"../core/flexbox\");\nvar RowContainer = styled_1.default(flexbox_1.Flexbox)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n @media (max-width: 767px) {\\n flex-direction: column;\\n }\\n\\n flex: 0;\\n\"], [\"\\n @media (max-width: 767px) {\\n flex-direction: column;\\n }\\n\\n flex: 0;\\n\"])));\nexports.Row = function (_a) {\n var children = _a.children, props = __rest(_a, [\"children\"]);\n return (react_1.default.createElement(RowContainer, __assign({}, props, { m: 2 }), children));\n};\nvar templateObject_1;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./back\"));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar core_1 = require(\"../core\");\nexports.BackIcon = function (props) {\n return (react_1.default.createElement(core_1.Icon, null,\n react_1.default.createElement(\"svg\", { width: \"31px\", height: \"31px\", viewBox: \"0 0 31 31\", version: \"1.1\" },\n react_1.default.createElement(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" },\n react_1.default.createElement(\"g\", { transform: \"translate(-235.000000, -232.000000)\" },\n react_1.default.createElement(\"g\", { transform: \"translate(235.000000, 232.000000)\" },\n react_1.default.createElement(\"circle\", { fill: \"#ECEDF0\", cx: \"15.5\", cy: \"15.5\", r: \"15.5\" }),\n react_1.default.createElement(\"polyline\", { stroke: \"#525456\", strokeWidth: \"2\", transform: \"translate(15.000000, 15.500000) rotate(-270.000000) translate(-15.000000, -15.500000) \", points: \"21 13 15 18 9 13\" })))))));\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Accordion = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Accordion.displayName = \"Accordion\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.AccordionBody = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.AccordionBody.displayName = \"AccordionBody\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.AccordionField = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.AccordionField.displayName = \"AccordionField\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.AccordionHeader = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.AccordionHeader.displayName = \"AccordionHeader\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Animation = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Animation.displayName = \"Animation\";\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\n// const PagerAnimator = (children, active) => {\n// const el = React.Children.toArray(children).find(\n// r => r.props.name === active\n// );\n// if (!el) return null;\n// return cloneElement(el);\n// };\nexports.ScrollAnimator = function (children, active) {\n react_1.useEffect(function () {\n window.location.hash = active;\n }, [active]);\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.AnimationGroup = function (_a) {\n var children = _a.children, _b = _a.active, active = _b === void 0 ? undefined : _b;\n //return animator(children, active);\n return children;\n};\nexports.AnimationGroup.displayName = \"AnimationGroup\";\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar module_1 = require(\"./module\");\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Back = function () {\n var _a = react_1.useContext(module_1.ModuleContext), state = _a[0], dispatch = _a[1];\n return (react_1.default.createElement(\"button\", { onClick: function () { return dispatch(module_1.goBack()); } },\n react_1.default.createElement(creator_ui_1.BackIcon, null)));\n};\nexports.Back.displayName = \"Back\";\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar module_1 = require(\"./module\");\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.BranchButton = function (_a) {\n var children = _a.children, to = _a.to;\n var _b = react_1.useContext(module_1.ModuleContext), state = _b[0], dispatch = _b[1];\n var goto = react_1.useMemo(function () { return function () {\n dispatch(module_1.goToPath(to));\n }; }, [to]);\n return (react_1.default.createElement(creator_ui_1.Button, { width: \"fit-content\", alignSelf: \"center\", onClick: goto }, children));\n};\nexports.BranchButton.displayName = \"BranchButton\";\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nexports.CarouselReducer = function (state, action) {\n switch (action.type) {\n case \"PREV\":\n var prev = state.current === 0 ? state.count - 1 : state.current - 1;\n return __assign(__assign({}, state), { current: prev });\n case \"NEXT\":\n var next = state.current === state.count - 1 ? 0 : state.current + 1;\n return __assign(__assign({}, state), { current: next });\n case \"GOTO\":\n return __assign(__assign({}, state), { current: action.data });\n }\n return state;\n};\nexports.Next = function () {\n return {\n type: \"NEXT\"\n };\n};\nexports.Prev = function () {\n return {\n type: \"PREV\"\n };\n};\nexports.Goto = function (num) {\n return {\n type: \"GOTO\",\n data: num\n };\n};\nexports.useCarousel = function (slideCount, initialSlide) {\n var _a = react_1.useReducer(exports.CarouselReducer, {\n current: initialSlide,\n count: slideCount\n }), state = _a[0], dispatch = _a[1];\n return {\n state: state,\n goTo: function (i) { return dispatch(exports.Goto(i)); },\n prev: function () { return dispatch(exports.Prev()); },\n next: function () { return dispatch(exports.Next()); }\n };\n};\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar carousel_1 = require(\"./carousel\");\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar heighAwareComponent_1 = require(\"./heighAwareComponent\");\nexports.CarouselAnimator = function (_a) {\n var children = _a.children;\n var _b = react_1.useContext(carousel_1.CarouselContext), current = _b.state.current, goTo = _b.goTo;\n var _c = react_1.useState(0), height = _c[0], setHeight = _c[1];\n var slides = children.map(function (child, i) {\n var isActive = current === i;\n var isLeft = i < current;\n var pos = isLeft\n ? [\"translateX(-100%)\", \"translateX(-70%)\"]\n : isActive\n ? [\"translateX(-50%)\", \"translateX(-50%)\"]\n : [\"translateX(0%)\", \"translateX(-30%)\"];\n var forwardProps = {\n position: \"absolute\",\n left: \"50%\",\n onClick: function () { return goTo(i); },\n \"aria-hidden\": isActive ? undefined : \"true\",\n style: {\n cursor: isActive ? \"initial\" : \"pointer\",\n zIndex: isActive ? 100 : 90 + (current - i * (isLeft ? -1 : 1)),\n transition: \"transform 0.5s\",\n transform: pos[1] + \" scale(\" + (isActive ? 1 : 0.8) + \")\"\n }\n };\n return (react_1.default.createElement(heighAwareComponent_1.HeightAwareComponent, __assign({ key: \"slide-cont-\" + i, active: isActive, setHeight: setHeight }, forwardProps), react_1.default.cloneElement(child, __assign({}, forwardProps))));\n });\n return (react_1.default.createElement(creator_ui_1.Box, { as: \"ul\", height: height }, slides));\n};\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nexports.HeightAwareComponent = function (_a) {\n var active = _a.active, children = _a.children, setHeight = _a.setHeight, others = __rest(_a, [\"active\", \"children\", \"setHeight\"]);\n var measuredRef = react_1.useCallback(function (node) {\n if (node !== null) {\n setHeight(node.offsetHeight);\n }\n setTimeout(function () {\n if (node !== null) {\n setHeight(node.offsetHeight);\n }\n }, 30);\n }, [active]);\n return (react_1.default.createElement(react_1.default.Fragment, null, react_1.cloneElement(react_1.default.Children.only(children), __assign(__assign({}, others), { ref: measuredRef }))));\n};\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar carousel_1 = require(\"./carousel\");\nexports.CarouselNavigation = function () {\n var _a = react_1.useContext(carousel_1.CarouselContext), _b = _a.state, current = _b.current, count = _b.count, goTo = _a.goTo, prev = _a.prev, next = _a.next;\n var mapper = Array.from(Array(count));\n var indicators = mapper.map(function (_, i) {\n var isActive = current === i;\n return (react_1.default.createElement(creator_ui_1.Indicator, { isActive: isActive, onClick: function () { return goTo(i); }, key: \"slide-indicator-\" + i }));\n });\n return (react_1.default.createElement(creator_ui_1.Flexbox, { justifyContent: \"center\", p: \"10px\" },\n react_1.default.createElement(creator_ui_1.Button, { onClick: prev }, \"Prev\"),\n react_1.default.createElement(creator_ui_1.Flexbox, { as: \"ul\" }, indicators),\n react_1.default.createElement(creator_ui_1.Button, { onClick: next }, \"Next\")));\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Choice = function (_a) {\n var children = _a.children, correct = _a.correct, name = _a.name;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Choice.displayName = \"Choice\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Choices = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Choices.displayName = \"Choices\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Column = function (_a) {\n var children = _a.children, align = _a.align;\n return (react_1.default.createElement(creator_ui_1.Flexbox, { flexDirection: \"column\", justifyContent: align }, children));\n};\nexports.Column.displayName = \"Column\";\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar module_1 = require(\"./module\");\nvar interaction_1 = require(\"./interaction\");\nexports.ContinueButton = function (_a) {\n var _b = _a.children, children = _b === void 0 ? \"Continue\" : _b, _c = _a.onClick, onClick = _c === void 0 ? undefined : _c, _d = _a.align, align = _d === void 0 ? \"center\" : _d, other = __rest(_a, [\"children\", \"onClick\", \"align\"]);\n var _e = react_1.useContext(module_1.ModuleContext), _ = _e[0], dispatch = _e[1];\n var ti = react_1.useContext(interaction_1.InteractionContext);\n if (!onClick) {\n onClick = function () { return dispatch(module_1.goForward(ti.topic + \":\" + ti.name)); };\n }\n return (react_1.default.createElement(creator_ui_1.Button, __assign({ alignSelf: align, onClick: onClick }, other), children));\n};\nexports.ContinueButton.displayName = \"ContinueButton\";\nexports.ContinueButton.editableFields = [\n {\n name: \"align\",\n assign: function (block, value) {\n block.props.alignSelf = value;\n },\n type: \"enum\",\n defaultValue: [\"center\", \"center\"],\n values: [\n [\"left\", \"flex-start\"],\n [\"center\", \"center\"],\n [\"right\", \"flex-end\"]\n ],\n help: \"Horizontal alignment of the button\"\n },\n {\n name: \"content\",\n assign: function (block, value) {\n block.children = value;\n },\n defaultValue: \"Continue\",\n type: \"text\",\n help: \"Button content; default is Continue\"\n }\n];\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Description = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Description.displayName = \"Description\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.DragAndDrop = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.DragAndDrop.displayName = \"DragAndDrop\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.DragContainer = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.DragContainer.displayName = \"DragContainer\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.DragItem = function (_a) {\n var children = _a.children, value = _a.value;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.DragItem.displayName = \"DragItem\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.DropContainer = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.DropContainer.displayName = \"DropContainer\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.DropItem = function (_a) {\n var children = _a.children, value = _a.value;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.DropItem.displayName = \"DropItem\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Feedback = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Feedback.displayName = \"Feedback\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Header = function (_a) {\n var children = _a.children, sticky = _a.sticky;\n return (react_1.default.createElement(creator_ui_1.Flexbox, { style: { position: \"sticky\", top: 0 }, bg: \"#fff\", color: \"#333\", p: \"10px\", borderBottom: \"1px solid #eee\", zIndex: \"1000\", boxShadow: \"1px 1px 20px 0 rgba(0,0,0,0.2)\", alignItems: \"center\" }, children));\n};\nexports.Header.displayName = \"Header\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Heading = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(\"h2\", null, children);\n};\nexports.Heading.displayName = exports.Heading;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Image = function (_a) {\n var src = _a.src, _b = _a.title, title = _b === void 0 ? \"\" : _b;\n return react_1.default.createElement(\"img\", { src: src, title: title });\n};\nexports.Image.displayName = \"Image\";\nexports.Image.editableFields = [\n {\n name: \"shape\",\n assign: function (block, value) {\n block.props.shape = value;\n },\n type: \"enum\",\n defaultValue: [\"rectangle\"],\n values: [\n [\"Circular\", \"circle\"],\n [\"Rounded\", \"rounded\"],\n [\"Rectangular\", \"rectangle\"]\n ],\n help: \"\"\n },\n {\n name: \"Source\",\n assign: function (block, value) {\n block.props.src = value;\n },\n type: \"image\",\n help: \"\"\n }\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Menu = function () {\n return null;\n};\nexports.Menu.displayName = \"Menu\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.MultipleChoice = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.MultipleChoice.displayName = \"MultipleChoice\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Paragraph = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(\"p\", null, children);\n};\nexports.Paragraph.displayName = \"Paragraph\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Quiz = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Quiz.displayName = \"Quiz\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rating = function (_a) {\n return null;\n};\nexports.Rating.displayName = \"Rating\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Result = function (_a) {\n var children = _a.children, correct = _a.correct, _b = _a.to, to = _b === void 0 ? \"\" : _b;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Result.displayName = \"Result\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.SingleChoice = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.SingleChoice.displayName = \"SingleChoice\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.SingleColumnLayout = function (_a) {\n var children = _a.children, _b = _a.fill, fill = _b === void 0 ? true : _b, _c = _a.contain, contain = _c === void 0 ? \"boxed\" : _c;\n return (react_1.default.createElement(creator_ui_1.Flexbox, { flexDirection: \"column\", justifyContent: \"center\", height: fill ? \"100%\" : \"auto\", maxWidth: contain === \"boxed\" ? \"960px\" : \"100%\", mx: contain === \"boxed\" ? \"auto\" : \"initial\" }, children));\n};\nexports.SingleColumnLayout.displayName = \"SingleColumnLayout\";\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Slide = react_1.forwardRef(function (_a, ref) {\n var children = _a.children, other = __rest(_a, [\"children\"]);\n return (react_1.default.createElement(creator_ui_1.Card, __assign({ ref: ref, as: \"li\", flexDirection: \"column\", p: \"10px\", borderRadius: \"10px\", bg: \"#fff\", border: \"1px solid #eee\", textAlign: \"center\", boxShadow: \"2px 2px 20px -2px rgba(0,0,0,0.1)\", width: \"fit-content\", height: \"fit-content\" }, other), children));\n});\nexports.Slide.displayName = \"Slide\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Text = function (_a) {\n var children = _a.children;\n return (react_1.default.createElement(creator_ui_1.Text, { as: \"div\", width: \"100%\" }, children));\n};\nexports.Text.displayName = \"Text\";\nexports.Text.editableFields = [];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextArea = function (_a) {\n return null;\n};\nexports.TextArea.displayName = \"TextArea\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Title = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Title.displayName = \"Title\";\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar module_1 = require(\"./module\");\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.TopicTitle = function () {\n var modCtx = react_1.useContext(module_1.ModuleContext)[0];\n return react_1.default.createElement(creator_ui_1.Box, { mx: \"10px\" }, modCtx.currentTopic);\n};\nexports.TopicTitle.displayName = \"TopicTitle\";\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.TwoColumnLayout = function (_a) {\n var children = _a.children, _b = _a.fill, fill = _b === void 0 ? true : _b;\n return (react_1.default.createElement(creator_ui_1.Flexbox, { flexDirection: \"column\", height: fill ? \"100%\" : \"auto\" }, children));\n};\nexports.TwoColumnLayout.displayName = \"TwoColumnLayout\";\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar useSidebar_1 = require(\"../hooks/useSidebar\");\nexports.Editable = function (_a) {\n var children = _a.children, block = _a.block;\n var child = react_1.default.Children.only(children);\n var editableFields = child.type.editableFields;\n var ref = react_1.useRef(null);\n var returnFocus = function () {\n if (ref.current) {\n ref.current.focus();\n }\n };\n var ctx = react_1.useContext(useSidebar_1.EditContext);\n var onClick = function () {\n ctx.pushSidebarItem({\n block: block,\n fields: editableFields\n });\n };\n var onActivate = function () {\n ctx.pushSidebarItem({\n block: block,\n fields: editableFields,\n returnFocus: returnFocus\n });\n };\n var requiredProps = {\n onClick: onClick,\n onKeyPress: function (e) {\n if (e.nativeEvent.key === \"Enter\") {\n onActivate();\n }\n },\n ref: ref,\n tabIndex: 0\n };\n if (child.type.editableContainer) {\n return react_1.createElement(child.type.editableContainer, __assign(__assign({}, requiredProps), { children: react_1.cloneElement(child, { onClick: function () { }, tabIndex: -1 }) }));\n }\n return (react_1.default.createElement(creator_ui_1.Box, __assign({ p: \"10px\", border: \"1px solid #eee\", style: { alignSelf: \"center\" }, width: block.type === \"ContinueButton\" ? \"auto\" : \"100%\" }, requiredProps), react_1.cloneElement(child, { onClick: function () { }, tabIndex: -1 })));\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nexports.Video = function (_a) {\n var children = _a.children;\n return react_1.default.createElement(react_1.default.Fragment, null, children);\n};\nexports.Video.displayName = \"Video\";\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./color\"));\n__export(require(\"./enum\"));\n__export(require(\"./richText\"));\n__export(require(\"./sidebar\"));\n__export(require(\"./text\"));\n__export(require(\"./topics\"));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Color = function () {\n react_1.default.createElement(creator_ui_1.Box, null);\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Enum = function () {\n react_1.default.createElement(creator_ui_1.Box, null);\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.RichText = function () {\n react_1.default.createElement(creator_ui_1.Box, null);\n};\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar useSidebar_1 = require(\"../hooks/useSidebar\");\nvar topics_1 = require(\"./topics\");\nvar block_1 = require(\"./block\");\nexports.Sidebar = function (props) {\n var sidebarlist = react_1.useContext(useSidebar_1.EditContext).sidebarlist;\n var editor;\n if (sidebarlist.length === 0) {\n editor = react_1.default.createElement(topics_1.Topics, null);\n }\n else {\n var o = sidebarlist[sidebarlist.length - 1];\n editor = react_1.default.createElement(block_1.Block, { data: o });\n }\n return react_1.default.createElement(creator_ui_1.Box, null, editor);\n};\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar useSidebar_1 = require(\"../hooks/useSidebar\");\nexports.Block = function (props) {\n var ctx = react_1.useContext(useSidebar_1.EditContext);\n var onReturn = function () {\n ctx.popSidebarItem();\n };\n if (props.data.returnFocus) {\n onReturn = function () {\n ctx.popSidebarItem();\n props.data.returnFocus();\n };\n }\n var ref = react_1.useRef(null);\n react_1.useEffect(function () {\n if (ref.current && props.data.returnFocus) {\n ref.current.focus();\n }\n }, [props.data]);\n return (react_1.default.createElement(creator_ui_1.Box, null,\n react_1.default.createElement(creator_ui_1.Button, { onClick: onReturn, ref: ref },\n react_1.default.createElement(creator_ui_1.BackIcon, null),\n \" Back\"),\n react_1.default.createElement(creator_ui_1.Heading, { as: \"h3\" },\n \"Editing Block: \",\n props.data.block.type)));\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nexports.Text = function () {\n react_1.default.createElement(creator_ui_1.Box, null);\n};\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nexports.cloneModule = function (mod) {\n return __assign(__assign({}, mod), { blocks: __assign({}, mod.blocks) });\n};\nexports.Set = function (block) { return ({ type: \"Set\", data: block }); };\nexports.Remove = function (block) { return ({\n type: \"Remove\",\n data: block\n}); };\nexports.ModuleReducer = function (state, action) {\n switch (action.type) {\n case \"Set\": {\n var nextState = exports.cloneModule(state);\n nextState.blocks[action.data.id] = action.data;\n return nextState;\n }\n case \"Remove\": {\n var nextState = exports.cloneModule(state);\n delete nextState.blocks[action.data.id];\n return nextState;\n }\n }\n};\nexports.useModule = function (data, rootId) {\n var _a = react_1.useReducer(exports.ModuleReducer, {\n rootId: rootId,\n blocks: data\n }), mod = _a[0], dispatch = _a[1];\n var SetBlock = function (block) { return dispatch(exports.Set(block)); };\n var RomoveBlock = function (block) { return dispatch(exports.Remove(block)); };\n return [mod, SetBlock, RomoveBlock];\n};\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar react_frame_component_1 = __importStar(require(\"react-frame-component\"));\nexports.Frame = function (props) {\n var _a = props.style, style = _a === void 0 ? {} : _a, children = props.children, rest = __rest(props, [\"style\", \"children\"]);\n return (react_1.default.createElement(react_frame_component_1.default, __assign({ style: __assign({ display: \"block\", overflow: \"scroll\", border: 0, width: \"100%\", height: \"100%\" }, style) }, rest),\n react_1.default.createElement(react_frame_component_1.FrameContextConsumer, null, function (frameContext) { return (react_1.default.createElement(react_1.default.Fragment, null, children)); })));\n};\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar render_1 = require(\"./utils/render\");\n// import { GlobalStyles } from \"./globalStyles\";\nexports.Player = function (_a) {\n var data = _a.data, root = _a.root;\n var renderer = render_1.Renderer(root, data);\n var children = react_1.useMemo(function () { return renderer.renderRoot(); }, [data]);\n return (react_1.default.createElement(react_1.default.Fragment, null, children));\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExampleSerializedNestedRoot = \"62e376e7-5e02-4fda-9b2e-fe75f59064cc\";\nexports.ExampleSerializedNested = {\n \"62e376e7-5e02-4fda-9b2e-fe75f59064cc\": {\n id: \"62e376e7-5e02-4fda-9b2e-fe75f59064cc\",\n type: \"Module\",\n props: {},\n children: [\n { id: \"afaf91cb-894c-4f30-92f3-88c0434044e7\", type: \"Ref\" },\n { id: \"d45955b4-50af-47f6-919c-7ff443b88de6\", type: \"Ref\" }\n ]\n },\n \"afaf91cb-894c-4f30-92f3-88c0434044e7\": {\n id: \"afaf91cb-894c-4f30-92f3-88c0434044e7\",\n type: \"Header\",\n props: {\n sticky: \"top\"\n },\n children: [\n { id: \"420b641b-9c33-4169-b6fc-23e1c3756975\", type: \"Ref\" },\n { id: \"03e9c4e5-9d55-45c1-abf3-46ef460e73c4\", type: \"Ref\" },\n { id: \"441a2e33-d06f-4822-899a-323025f8fc52\", type: \"Ref\" },\n { id: \"746d06da-fa25-4b6f-be82-edfa6f052d88\", type: \"Ref\" }\n ]\n },\n \"420b641b-9c33-4169-b6fc-23e1c3756975\": {\n id: \"420b641b-9c33-4169-b6fc-23e1c3756975\",\n type: \"Back\"\n },\n \"03e9c4e5-9d55-45c1-abf3-46ef460e73c4\": {\n id: \"03e9c4e5-9d55-45c1-abf3-46ef460e73c4\",\n type: \"TopicTitle\"\n },\n \"441a2e33-d06f-4822-899a-323025f8fc52\": {\n id: \"441a2e33-d06f-4822-899a-323025f8fc52\",\n type: \"Logo\"\n },\n \"746d06da-fa25-4b6f-be82-edfa6f052d88\": {\n id: \"746d06da-fa25-4b6f-be82-edfa6f052d88\",\n type: \"Menu\"\n },\n \"d45955b4-50af-47f6-919c-7ff443b88de6\": {\n id: \"d45955b4-50af-47f6-919c-7ff443b88de6\",\n type: \"AnimationGroup\",\n meta: {\n subType: \"Topic\"\n },\n children: [\n {\n id: \"50c7d9d7-304c-47e7-ac2a-9e4439ccfb0f\",\n type: \"Ref\"\n }\n ]\n },\n \"50c7d9d7-304c-47e7-ac2a-9e4439ccfb0f\": {\n id: \"50c7d9d7-304c-47e7-ac2a-9e4439ccfb0f\",\n type: \"Topic\",\n props: { name: \"welcome\" },\n children: [\n {\n id: \"1690aa8f-2016-46dd-baa0-be5340b84aa0\",\n type: \"Ref\"\n }\n ]\n },\n \"1690aa8f-2016-46dd-baa0-be5340b84aa0\": {\n id: \"1690aa8f-2016-46dd-baa0-be5340b84aa0\",\n type: \"AnimationGroup\",\n props: {},\n meta: {\n subType: \"Interaction\"\n },\n animator: {\n type: \"ScrollAnimator\",\n config: {}\n },\n children: [{ id: \"d3ddb5d5-212e-4a4e-81fa-8de0be3a0316\", type: \"Ref\" }]\n },\n \"d3ddb5d5-212e-4a4e-81fa-8de0be3a0316\": {\n id: \"d3ddb5d5-212e-4a4e-81fa-8de0be3a0316\",\n type: \"Interaction\",\n props: {\n name: \"intro\"\n },\n children: [{ id: \"725d0fbf-f7eb-43f8-b08d-2dfb263a550c\", type: \"Ref\" }]\n },\n \"725d0fbf-f7eb-43f8-b08d-2dfb263a550c\": {\n id: \"725d0fbf-f7eb-43f8-b08d-2dfb263a550c\",\n type: \"SingleColumnLayout\",\n children: [\n {\n id: \"4e71a6dc-a101-47d7-9277-e3b14805a35e\",\n type: \"Ref\"\n }\n ]\n },\n \"4e71a6dc-a101-47d7-9277-e3b14805a35e\": {\n id: \"4e71a6dc-a101-47d7-9277-e3b14805a35e\",\n type: \"Column\",\n props: {\n align: \"center\"\n },\n children: [\n {\n id: \"04d365f3-a2ae-4970-9f3d-af259d5fec70\",\n type: \"Ref\"\n },\n {\n id: \"385afaf3-48a6-491a-b3bd-a0c2c4938c70\",\n type: \"Ref\"\n },\n {\n id: \"2238f67f-242d-413e-93d9-68f87a350ca2\",\n type: \"Ref\"\n }\n ]\n },\n \"04d365f3-a2ae-4970-9f3d-af259d5fec70\": {\n id: \"04d365f3-a2ae-4970-9f3d-af259d5fec70\",\n type: \"Text\",\n children: [\n {\n id: \"09d9ed61-4c03-48d9-a151-c552b581b64c\",\n type: \"Ref\"\n },\n {\n id: \"80f683c3-d5b8-4fd7-bedf-ec49ecdeac5b\",\n type: \"Ref\"\n }\n ]\n },\n \"09d9ed61-4c03-48d9-a151-c552b581b64c\": {\n id: \"09d9ed61-4c03-48d9-a151-c552b581b64c\",\n type: \"Heading\",\n children: \"Module Title\"\n },\n \"80f683c3-d5b8-4fd7-bedf-ec49ecdeac5b\": {\n id: \"80f683c3-d5b8-4fd7-bedf-ec49ecdeac5b\",\n type: \"Paragraph\",\n children: \"Welcome text explaining what this module is about\"\n },\n \"ee79d1b0-2fdd-4efd-9e52-507d2b25ee07\": {\n id: \"ee79d1b0-2fdd-4efd-9e52-507d2b25ee07\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n \"752f8931-7395-4f01-9e4b-9ace9865236a\": {\n id: \"752f8931-7395-4f01-9e4b-9ace9865236a\",\n type: \"Text\",\n children: \"Slide A\"\n },\n \"2441aebc-4a8e-4d7b-88c2-7850b4390f2f\": {\n id: \"2441aebc-4a8e-4d7b-88c2-7850b4390f2f\",\n type: \"Slide\",\n children: [\n {\n id: \"ee79d1b0-2fdd-4efd-9e52-507d2b25ee07\",\n type: \"Ref\"\n },\n {\n id: \"752f8931-7395-4f01-9e4b-9ace9865236a\",\n type: \"Ref\"\n }\n ]\n },\n \"66900c97-0381-4a9d-9533-95125b08d548\": {\n id: \"66900c97-0381-4a9d-9533-95125b08d548\",\n type: \"Text\",\n children: \"Slide B\"\n },\n \"e6cf5d47-1ce3-4300-a892-c2543bbf1ab1\": {\n id: \"e6cf5d47-1ce3-4300-a892-c2543bbf1ab1\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n \"8ccd4fcf-fee8-43f1-bddc-3defb9184d8a\": {\n id: \"8ccd4fcf-fee8-43f1-bddc-3defb9184d8a\",\n type: \"Slide\",\n children: [\n {\n id: \"e6cf5d47-1ce3-4300-a892-c2543bbf1ab1\",\n type: \"Ref\"\n },\n {\n id: \"66900c97-0381-4a9d-9533-95125b08d548\",\n type: \"Ref\"\n }\n ]\n },\n \"df8164c8-f51f-4de4-bc1b-c527ac09308f\": {\n id: \"df8164c8-f51f-4de4-bc1b-c527ac09308f\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n \"9c33776c-3eaf-4032-8cdd-a630e516072e\": {\n id: \"9c33776c-3eaf-4032-8cdd-a630e516072e\",\n type: \"Text\",\n children: \"Slide C\"\n },\n \"e2364ede-ff20-4894-9ef3-c71c0f154b0a\": {\n id: \"e2364ede-ff20-4894-9ef3-c71c0f154b0a\",\n type: \"Slide\",\n children: [\n {\n id: \"df8164c8-f51f-4de4-bc1b-c527ac09308f\",\n type: \"Ref\"\n },\n {\n id: \"9c33776c-3eaf-4032-8cdd-a630e516072e\",\n type: \"Ref\"\n }\n ]\n },\n \"385afaf3-48a6-491a-b3bd-a0c2c4938c70\": {\n id: \"385afaf3-48a6-491a-b3bd-a0c2c4938c70\",\n type: \"Carousel\",\n children: [\n {\n id: \"2441aebc-4a8e-4d7b-88c2-7850b4390f2f\",\n type: \"Ref\"\n },\n {\n id: \"8ccd4fcf-fee8-43f1-bddc-3defb9184d8a\",\n type: \"Ref\"\n },\n {\n id: \"e2364ede-ff20-4894-9ef3-c71c0f154b0a\",\n type: \"Ref\"\n }\n ]\n },\n \"2238f67f-242d-413e-93d9-68f87a350ca2\": {\n id: \"2238f67f-242d-413e-93d9-68f87a350ca2\",\n type: \"ContinueButton\",\n children: \"Continue\"\n }\n};\nexports.ExampleSerialized = {\n id: \"62e376e7-5e02-4fda-9b2e-fe75f59064cc\",\n type: \"Module\",\n props: {},\n children: [\n {\n id: \"d45955b4-50af-47f6-919c-7ff443b88de6\",\n type: \"AnimationGroup\",\n meta: {\n subType: \"Topic\"\n },\n children: [\n {\n id: \"50c7d9d7-304c-47e7-ac2a-9e4439ccfb0f\",\n type: \"Topic\",\n props: { name: \"welcome\" },\n children: [\n {\n id: \"1690aa8f-2016-46dd-baa0-be5340b84aa0\",\n type: \"AnimationGroup\",\n meta: {\n subType: \"Interaction\"\n },\n props: {},\n animator: {\n type: \"ScrollAnimator\",\n config: {}\n },\n children: [\n {\n id: \"d3ddb5d5-212e-4a4e-81fa-8de0be3a0316\",\n type: \"Interaction\",\n props: {\n name: \"intro\"\n },\n children: [\n {\n id: \"725d0fbf-f7eb-43f8-b08d-2dfb263a550c\",\n type: \"SingleColumnLayout\",\n children: [\n {\n id: \"4e71a6dc-a101-47d7-9277-e3b14805a35e\",\n type: \"Column\",\n props: {\n align: \"center\"\n },\n children: [\n {\n id: \"04d365f3-a2ae-4970-9f3d-af259d5fec70\",\n type: \"Text\",\n children: [\n {\n id: \"09d9ed61-4c03-48d9-a151-c552b581b64c\",\n type: \"Heading\",\n children: \"Module Title\"\n },\n {\n id: \"80f683c3-d5b8-4fd7-bedf-ec49ecdeac5b\",\n type: \"Paragraph\",\n children: \"Welcome text explaining what this module is about\"\n }\n ]\n },\n {\n id: \"385afaf3-48a6-491a-b3bd-a0c2c4938c70\",\n type: \"Carousel\",\n children: [\n {\n id: \"2441aebc-4a8e-4d7b-88c2-7850b4390f2f\",\n type: \"Slide\",\n children: [\n {\n id: \"ee79d1b0-2fdd-4efd-9e52-507d2b25ee07\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n {\n id: \"752f8931-7395-4f01-9e4b-9ace9865236a\",\n type: \"Paragraph\",\n children: \"Slide A\"\n }\n ]\n },\n {\n id: \"8ccd4fcf-fee8-43f1-bddc-3defb9184d8a\",\n type: \"Slide\",\n children: [\n {\n id: \"e6cf5d47-1ce3-4300-a892-c2543bbf1ab1\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n {\n id: \"66900c97-0381-4a9d-9533-95125b08d548\",\n type: \"Paragraph\",\n children: \"Slide B\"\n }\n ]\n },\n {\n id: \"e2364ede-ff20-4894-9ef3-c71c0f154b0a\",\n type: \"Slide\",\n children: [\n {\n id: \"df8164c8-f51f-4de4-bc1b-c527ac09308f\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n {\n id: \"9c33776c-3eaf-4032-8cdd-a630e516072e\",\n type: \"Paragraph\",\n children: \"Slide C\"\n }\n ]\n }\n ]\n },\n {\n id: \"2238f67f-242d-413e-93d9-68f87a350ca2\",\n type: \"ContinueButton\",\n children: \"Continue\"\n }\n ]\n }\n ]\n }\n ]\n },\n {\n id: \"e9f6f212-250c-409d-a14d-68838c7e1bc3\",\n type: \"Interaction\",\n props: {\n name: \"number-two\"\n },\n children: [\n {\n id: \"07f3cadd-7abc-4d19-8073-0ed0155627ac\",\n type: \"SingleColumnLayout\",\n children: [\n {\n type: \"Column\",\n props: {\n align: \"center\"\n },\n children: [\n {\n id: \"610e47ed-eb35-44d6-9c00-d5db5179d21d\",\n type: \"Text\",\n children: [\n {\n id: \"\",\n type: \"Heading\",\n children: \"Section 2\"\n },\n {\n id: \"\",\n type: \"Paragraph\",\n children: \"Welcome text explaining what this module is about\"\n }\n ]\n },\n {\n id: \"7fbd0b94-684d-49f2-acb2-8624ead6b634\",\n type: \"Carousel\",\n children: [\n {\n id: \"cf6e7f24-6e91-4cb9-ba94-55d0183bf4a3\",\n type: \"Slide\",\n children: [\n {\n id: \"0ef952ca-72c2-465e-a33b-32a474dd557f\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n {\n id: \"1a284c98-6727-4e42-bb82-4735c325bb4b\",\n type: \"Paragraph\",\n children: \"Slide A\"\n }\n ]\n },\n {\n id: \"eba83134-5738-478c-a719-2b4b3a8732ba\",\n type: \"Slide\",\n children: [\n {\n id: \"9e27942b-3252-4b6a-ab02-2543a07451cf\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n {\n id: \"a9b357ac-f28a-4d23-8877-d9796b3154c1\",\n type: \"Paragraph\",\n children: \"Slide B\"\n }\n ]\n },\n {\n id: \"cbe3b6b7-5f93-41f7-b449-404ac0b7fd4f\",\n type: \"Slide\",\n children: [\n {\n id: \"c911107d-54c6-45ca-a5f0-3e66b886bfed\",\n type: \"Image\",\n props: {\n src: \"https://dummyimage.com/400x300/333/d5d6ed.png\"\n }\n },\n {\n id: \"e5e02602-b8e6-4c20-a340-fc2a3178f897\",\n type: \"Paragraph\",\n children: \"Slide C\"\n }\n ]\n }\n ]\n },\n {\n id: \"381ad80c-5e01-4c77-96ac-d78037cd3a6a\",\n type: \"ContinueButton\",\n children: \"Continue\"\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n};\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./block\"));\n__export(require(\"./children\"));\n__export(require(\"./render\"));\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Block = /** @class */ (function () {\n function Block(data) {\n this.id = data.id;\n this.type = data.type;\n this.props = data.props;\n this.meta = data.meta;\n this.children = data.children;\n this.animator = data.animator;\n }\n Block.new = function () {\n return new Block({});\n };\n return Block;\n}());\nexports.Block = Block;\nexports.cloneBlock = function (block) {\n var children = Array.isArray(block.children) ? __spreadArrays(block.children) : block.children;\n return __assign(__assign({}, block), { children: children, props: __assign({}, block.props) });\n};\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./bar\"));\n__export(require(\"./burger\"));\n__export(require(\"./drawer\"));\n__export(require(\"./dropDown\"));\n__export(require(\"./logo\"));\n__export(require(\"./navArrow\"));\n__export(require(\"./navbar\"));\n__export(require(\"./navbarContext\"));\n__export(require(\"./navbarLink\"));\n__export(require(\"./navigation\"));\n__export(require(\"./navItem\"));\n__export(require(\"./search\"));\n__export(require(\"./user\"));\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar creator_ui_1 = require(\"@chameleoncreator/creator-ui\");\nvar navbarContext_1 = require(\"./navbarContext\");\nvar user_1 = require(\"./user\");\nvar search_1 = require(\"./search\");\nvar logo_1 = require(\"./logo\");\nvar navigation_1 = require(\"./navigation\");\nvar drawer_1 = require(\"./drawer\");\nvar burger_1 = require(\"./burger\");\nvar bar_1 = require(\"./bar\");\nvar lock_1 = require(\"./lock\");\nvar divider_1 = require(\"./divider\");\nvar networkActivity_1 = require(\"./networkActivity\");\nvar toggler = function (menu, setMenu) { return function (id) {\n var _a;\n setMenu(__assign(__assign({}, Object.keys(menu).reduce(function (acc, r) {\n return (acc[r] = false);\n }, {})), (_a = {}, _a[id] = !menu[id], _a)));\n}; };\nexports.Navbar = function (props) {\n var _a = react_1.useState({}), menu = _a[0], setMenu = _a[1];\n var isOpen = function (id) {\n return !!menu[id];\n };\n var toggleMenu = toggler(menu, setMenu);\n var boxed = props.boxed, nav = props.nav, currentUser = props.currentUser, _b = props.search, search = _b === void 0 ? { url: \"\", q: \"\" } : _b, lock = props.lock, networkRequestActive = props.networkRequestActive, networkAvailable = props.networkAvailable, showNetworkActivity = props.showNetworkActivity, showLock = props.showLock, showSearch = props.showSearch;\n var ctx = {\n boxed: boxed,\n nav: nav,\n currentUser: currentUser,\n search: search,\n lock: lock,\n networkRequestActive: networkRequestActive,\n networkAvailable: networkAvailable,\n isOpen: isOpen,\n toggleMenu: toggleMenu,\n };\n var _c = react_1.useState(window.innerWidth >= 768 ? \"header\" : \"drawer\"), display = _c[0], setDisplay = _c[1];\n var _d = react_1.useState(false), showDrawer = _d[0], setDrawer = _d[1];\n react_1.useEffect(function () {\n var onResize = function (e) {\n if (window.innerWidth >= 768) {\n display !== \"header\" && setDisplay(\"header\");\n return;\n }\n display !== \"drawer\" && setDisplay(\"drawer\");\n };\n window.addEventListener(\"resize\", onResize);\n return function () { return window.removeEventListener(\"resize\", onResize); };\n }, [display]);\n var isMobileDisplay = display === \"drawer\";\n return (react_1.default.createElement(navbarContext_1.NavContext.Provider, { value: ctx },\n react_1.default.createElement(bar_1.Bar, { boxed: props.boxed },\n react_1.default.createElement(creator_ui_1.Flexbox, { alignItems: \"center\", style: { flex: isMobileDisplay ? 1 : 0, height: 70 } },\n isMobileDisplay ? react_1.default.createElement(burger_1.Burger, __assign({}, { showDrawer: showDrawer, setDrawer: setDrawer })) : null,\n react_1.default.createElement(creator_ui_1.Flexbox, { flex: \"0\", pl: 3, pr: 2 },\n react_1.default.createElement(creator_ui_1.Flexbox, { as: \"span\" },\n react_1.default.createElement(logo_1.Logo, null))),\n react_1.default.createElement(creator_ui_1.Flexbox, { style: { flex: isMobileDisplay ? 1 : 0 }, px: 2 },\n react_1.default.createElement(search_1.SearchBar, { q: search.q, url: search.url, showSearch: showSearch })),\n !isMobileDisplay ? (react_1.default.createElement(react_1.default.Fragment, null,\n showLock ? (react_1.default.createElement(creator_ui_1.Flexbox, { px: 2 },\n react_1.default.createElement(lock_1.Lock, { lock: lock }))) : null,\n react_1.default.createElement(creator_ui_1.Flexbox, { px: 2 },\n react_1.default.createElement(networkActivity_1.NetworkActivity, { showActivity: showNetworkActivity, isActive: networkRequestActive })))) : null),\n !isMobileDisplay ? (react_1.default.createElement(creator_ui_1.Flexbox, { flex: \"1\", justifyContent: \"flex-end\", px: 3 },\n react_1.default.createElement(navigation_1.Navigation, { nav: nav }),\n currentUser ? react_1.default.createElement(user_1.Admin, { name: currentUser.firstName, profileImg: currentUser.profileImage }) : null)) : null),\n isMobileDisplay ? (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(drawer_1.Overlay, { style: {\n display: showDrawer ? \"block\" : \"none\",\n }, onClick: function () { return setDrawer(false); } }),\n react_1.default.createElement(drawer_1.Drawer, { style: {\n transform: showDrawer ? \"translate3d(0,0,0)\" : \"translate3d(-340px,0,0)\",\n } },\n react_1.default.createElement(creator_ui_1.Flexbox, { px: 3, py: \"11px\" },\n react_1.default.createElement(logo_1.Logo, null)),\n react_1.default.createElement(divider_1.Divider, null),\n react_1.default.createElement(creator_ui_1.Box, { as: \"ul\", p: 0, m: 0 }, nav.map(function (r, i) { return (react_1.default.createElement(drawer_1.DrawerItem, { key: \"nav-\" + r.label + \"-i\", item: r })); }))))) : null));\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar LockedIcon = function () { return (react_1.default.createElement(\"svg\", { width: \"45px\", height: \"45px\", viewBox: \"0 0 48 48\" },\n react_1.default.createElement(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" },\n react_1.default.createElement(\"g\", { transform: \"translate(1.000000, 1.000000)\" },\n react_1.default.createElement(\"g\", { transform: \"translate(15.000000, 11.000000)\" },\n react_1.default.createElement(\"path\", { d: \"M15.1678711,19.9519192 L1.71800361,19.9519192 C0.769075904,19.9519192 -2.04819277e-05,19.1933333 -2.04819277e-05,18.2573737 L-2.04819277e-05,9.31353535 C-2.04819277e-05,8.37777778 0.769075904,7.6189899 1.71800361,7.6189899 L15.1678711,7.6189899 C16.116594,7.6189899 16.8858952,8.37777778 16.8858952,9.31353535 L16.8858952,18.2573737 C16.8858952,19.1933333 16.116594,19.9519192 15.1678711,19.9519192 Z\", stroke: \"#111214\" }),\n react_1.default.createElement(\"path\", { d: \"M13.2371831,7.61907071 L13.2371831,4.72876768 C13.2371831,2.11725253 11.0906771,8.08080808e-05 8.44297831,8.08080808e-05 C5.79527952,8.08080808e-05 3.64877349,2.11725253 3.64877349,4.72876768 L3.64877349,7.61907071\", stroke: \"#111214\" }),\n react_1.default.createElement(\"path\", { d: \"M9.98668072,12.667899 C9.98668072,11.8268889 9.29541566,11.1452727 8.44295783,11.1452727 C7.59029518,11.1452727 6.89923494,11.8268889 6.89923494,12.667899 C6.89923494,13.207899 7.18495783,13.6812323 7.61487349,13.9515354 L7.61487349,15.627899 C7.61487349,16.0790101 7.98559639,16.4446667 8.44295783,16.4446667 C8.90031928,16.4446667 9.27104217,16.0790101 9.27104217,15.627899 L9.27104217,13.9515354 C9.70075301,13.6812323 9.98668072,13.207899 9.98668072,12.667899\", id: \"Fill-5\", fill: \"#111214\" })),\n react_1.default.createElement(\"circle\", { stroke: \"#D0DBFE\", cx: \"23\", cy: \"23\", r: \"23\" }),\n react_1.default.createElement(\"circle\", { fill: \"#FF0566\", cx: \"40\", cy: \"8\", r: \"4\" }))))); };\nvar UnlockedIcon = function () { return (react_1.default.createElement(\"svg\", { width: \"45px\", height: \"45px\", viewBox: \"0 0 48 48\" },\n react_1.default.createElement(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" },\n react_1.default.createElement(\"g\", { transform: \"translate(1.000000, 1.000000)\" },\n react_1.default.createElement(\"g\", { transform: \"translate(15.000000, 11.000000)\" },\n react_1.default.createElement(\"path\", { d: \"M15.167912,19.9519192 L1.71804458,19.9519192 C0.769116867,19.9519192 2.04819277e-05,19.1933333 2.04819277e-05,18.2573737 L2.04819277e-05,9.31353535 C2.04819277e-05,8.37777778 0.769116867,7.6189899 1.71804458,7.6189899 L15.167912,7.6189899 C16.1166349,7.6189899 16.8859361,8.37777778 16.8859361,9.31353535 L16.8859361,18.2573737 C16.8859361,19.1933333 16.1166349,19.9519192 15.167912,19.9519192 Z\", stroke: \"#111214\" }),\n react_1.default.createElement(\"path\", { d: \"M12.8603976,2.88810101 C12.1326747,1.19092929 10.4287831,2.02020202e-05 8.44306024,2.02020202e-05 L8.44285542,2.02020202e-05 C5.79515663,2.02020202e-05 3.6486506,2.11719192 3.6486506,4.72870707 L3.6486506,7.6190101\", stroke: \"#111214\" }),\n react_1.default.createElement(\"path\", { d: \"M9.98674217,12.667899 C9.98674217,11.8268889 9.29547711,11.1452727 8.44281446,11.1452727 C7.59035663,11.1452727 6.89909157,11.8268889 6.89909157,12.667899 C6.89909157,13.207899 7.18501928,13.6812323 7.61473012,13.9515354 L7.61473012,15.627899 C7.61473012,16.0790101 7.98565783,16.4446667 8.44301928,16.4446667 C8.9001759,16.4446667 9.27110361,16.0790101 9.27110361,15.627899 L9.27110361,13.9515354 C9.70081446,13.6812323 9.98674217,13.207899 9.98674217,12.667899\", fill: \"#111214\" })),\n react_1.default.createElement(\"circle\", { stroke: \"#D0DBFE\", cx: \"23\", cy: \"23\", r: \"23\" }),\n react_1.default.createElement(\"circle\", { fill: \"#4DE2C1\", cx: \"40\", cy: \"8\", r: \"4\" }))))); };\nvar LockIcon = styled_1.default.i(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n width: 45px;\\n height: 45px;\\n cursor: pointer;\\n transition: opacity 0.2s;\\n\\n &:hover {\\n opacity: 0.5;\\n }\\n\"], [\"\\n width: 45px;\\n height: 45px;\\n cursor: pointer;\\n transition: opacity 0.2s;\\n\\n &:hover {\\n opacity: 0.5;\\n }\\n\"])));\nexports.Lock = function (_a) {\n var lock = _a.lock;\n var _b = react_1.useState(false), locked = _b[0], setLocked = _b[1];\n return (react_1.default.createElement(LockIcon, { onClick: function (e) {\n setLocked(!locked);\n } }, locked ? react_1.default.createElement(LockedIcon, null) : react_1.default.createElement(UnlockedIcon, null)));\n};\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nexports.Divider = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: \", \";\\n width: 100%;\\n height: 0px;\\n border-bottom: 1px solid #dde5fe;\\n\"], [\"\\n position: \", \";\\n width: 100%;\\n height: 0px;\\n border-bottom: 1px solid #dde5fe;\\n\"])), function (p) { return p.position || \"initial\"; });\nvar templateObject_1;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar loadingSpinner_1 = require(\"./loadingSpinner\");\nexports.NetworkActivity = function (_a) {\n var showActivity = _a.showActivity, isActive = _a.isActive;\n if (showActivity && isActive) {\n return react_1.default.createElement(loadingSpinner_1.LoadingSpinner, null);\n }\n return null;\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar emotion_1 = require(\"emotion\");\nvar styled_1 = __importDefault(require(\"@emotion/styled\"));\nvar lineWeight = 5;\nvar dualRingAnimation = emotion_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n\"], [\"\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n\"])));\nvar Ring = styled_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: inline-block;\\n width: \", \"px;\\n height: \", \"px;\\n animation: 1.2s linear infinite;\\n\\n &:after {\\n content: \\\"\\\";\\n display: block;\\n width: \", \"px;\\n height: \", \"px;\\n\\n border-radius: 50%;\\n border: \", \"px solid \", \";\\n border-color: \", \" transparent \", \" transparent;\\n animation: \", \" 1.2s linear infinite;\\n }\\n\"], [\"\\n display: inline-block;\\n width: \", \"px;\\n height: \", \"px;\\n animation: 1.2s linear infinite;\\n\\n &:after {\\n content: \\\"\\\";\\n display: block;\\n width: \", \"px;\\n height: \", \"px;\\n\\n border-radius: 50%;\\n border: \", \"px solid \", \";\\n border-color: \", \" transparent \", \" transparent;\\n animation: \", \" 1.2s linear infinite;\\n }\\n\"])), function (p) { return p.size; }, function (p) { return p.size; }, function (p) { return p.size - lineWeight * 2; }, function (p) { return p.size - lineWeight * 2; }, lineWeight, function (p) { return p.color; }, function (p) { return p.color; }, function (p) { return p.color; }, dualRingAnimation);\nvar SpinContainer = styled_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n\"])));\nexports.LoadingSpinner = function (_a) {\n var _b = _a.size, size = _b === void 0 ? 36 : _b, _c = _a.color, color = _c === void 0 ? \"#ff0063\" : _c;\n return (react_1.default.createElement(SpinContainer, null,\n react_1.default.createElement(Ring, { size: size, color: color })));\n};\nvar templateObject_1, templateObject_2, templateObject_3;\n","// from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md\n(function(arr) {\n arr.forEach(function(item) {\n if (item.hasOwnProperty('remove')) {\n return;\n }\n Object.defineProperty(item, 'remove', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function remove() {\n this.parentNode.removeChild(this);\n },\n });\n });\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\n","// from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md\n(function(arr) {\n arr.forEach(function(item) {\n if (item.hasOwnProperty('remove')) {\n return;\n }\n Object.defineProperty(item, 'remove', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function remove() {\n this.parentNode.removeChild(this);\n },\n });\n });\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\n","const url = new URL(window.location.href);\nconst queryParams = new URLSearchParams(url.search);\n\nconst highlightActiveElement =\n queryParams.has('highlightActiveElement') &&\n queryParams.get('highlightActiveElement') === '1';\n\nif (window.parent === window && highlightActiveElement) {\n const ACTIVE_ELEMENT_MARKER = document.createElement('div');\n ACTIVE_ELEMENT_MARKER.style.position = 'fixed';\n ACTIVE_ELEMENT_MARKER.style.borderRadius = '1px';\n ACTIVE_ELEMENT_MARKER.style.boxShadow = `\n 0 0 0 2px #00D9D3, 0 0 0 3px #fff, 0 0 0 5px #00D9D3\n `;\n\n document.body.appendChild(ACTIVE_ELEMENT_MARKER);\n\n let currentActiveElement;\n\n setInterval(() => {\n const { activeElement } = document as any;\n\n if (!activeElement) {\n return;\n }\n\n const { top, left, width, height } = activeElement.getBoundingClientRect();\n\n const currentActiveElementIsSection =\n activeElement.tagName.toLowerCase() === 'section';\n\n const topOffset = !currentActiveElementIsSection ? 5 : -20;\n const leftOffset = !currentActiveElementIsSection ? 5 : -20;\n const widthOffset = !currentActiveElementIsSection ? 10 : -40;\n const heightOffset = !currentActiveElementIsSection ? 10 : -40;\n\n ACTIVE_ELEMENT_MARKER.style.pointerEvents = 'none';\n ACTIVE_ELEMENT_MARKER.style.top = `${top - topOffset}px`;\n ACTIVE_ELEMENT_MARKER.style.left = `${left - leftOffset}px`;\n ACTIVE_ELEMENT_MARKER.style.width = `${width + widthOffset}px`;\n ACTIVE_ELEMENT_MARKER.style.height = `${height + heightOffset}px`;\n ACTIVE_ELEMENT_MARKER.style.zIndex = '2147483647';\n\n if (currentActiveElement !== activeElement) {\n // so only fires when activeElement changes\n // we can put the above code in here. but creates lag drawing the focus indication\n //\n\n currentActiveElement = activeElement;\n\n if (currentActiveElement.tagName.toLowerCase() === 'section') {\n console.log('is section :', currentActiveElement.tagName.toLowerCase());\n }\n }\n }, 1000 / 60);\n}\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./core\"));\n__export(require(\"./atoms\"));\n__export(require(\"./molecules\"));\n__export(require(\"./elements\"));\n__export(require(\"./icons\"));\n","module.exports = __webpack_public_path__ + \"images/Rectangle.png\";"],"sourceRoot":""}