{"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/updateScoreAction.ts","webpack:///./hosting/context.tsx","webpack:///./services/transformScoreData.ts","webpack:///./services/scorm/API.ts","webpack:///./components/lib/Scorm/SCORMToCollect.ts","webpack:///./components/lib/Scorm/SCORM.tsx","webpack:///./services/apiHelpers/getAssessments.ts","webpack:///./actions/setExitCompleteAction.ts","webpack:///./hosting/events.ts","webpack:///./actions/setCurrentInteractionAction.ts","webpack:///./services/reviewToolPostMessage.ts","webpack:///./theme.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/interactionContext.ts","webpack:///./components/lib/Carousel/CarouselBtn.tsx","webpack:///./components/lib/Carousel/CarouselMarker.tsx","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/Button.tsx","webpack:///./components/lib/AssessmentResults/ScoreBar.tsx","webpack:///./components/lib/AssessmentResults/getAttempt.ts","webpack:///./components/lib/AssessmentResults/AssessmentResults.tsx","webpack:///./components/lib/AssessmentResults/getQuestionsInAssessment.tsx","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/PrepareHostedModuleSavedData.tsx","webpack:///./components/Module/TopicContainer.tsx","webpack:///./components/Module/windowScrollInfo.ts","webpack:///./services/getModuleIsFreeScrolling.ts","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/allGoogleFonts.ts","webpack:///./services/fontService/fonts.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/rating.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:///./assets/tick_mint.svg","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/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","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","onComplete","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","remove","mockPercentLoaded","setMockPercentLoaded","tick","setInterval","round","random","clearInterval","percentLoaded","display","createPortal","div","ref","initial","opacity","transition","duration","ease","animate","onAnimationComplete","alt","textAlign","aria-valuemin","aria-valuemax","aria-valuenow","role","overflow","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","addEventListener","removeEventListener","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","updateScoreAction","cachedSessionId","readCookie","nameEQ","ca","cookie","charAt","substring","HostingContext","createContext","HostingProvider","url","isHosted","enableAnalytics","isScorm","source","versionId","accountId","signaler","createSignalServer","getSession","currentSession","setSession","session","start","Provider","localSession","isHostedOrisAnalyticsEnabled","csrfToken","decodeURIComponent","fetch","method","credentials","headers","Accept","req","json","userId","getLocalStorageUserId","sessionId","getSessionId","resume","end","sendBeacon","Blob","stateSession","jsonReshaped","user_id","learning_module_session","isInitialized","scormUserId","SCORM","suspendData","set","event","dispatchEvent","CustomEvent","detail","getParams","analyticsUrl","keepalive","useHostingSession","useContext","transformScoreDataFromIdToSId","scoreData","tF","transformScoreDataFromSIdToId","blockWithSIdOrId","scoreMin","scoreMax","scoreScaled","scoreRaw","success","completion","suspend_data","SCORMToCollectValues","SCORMToCollect","hosted","raw","hosting","learning_module_session_data","myHeaders","Headers","append","requestOptions","redirect","endPoint","chameleon","CHAMELEON_URL","response","text","Version","SuccessString","CompletionString","ShouldSendScore","ReportableInteractions","scormInitialized","API_KEYS","API","getSCORMInitialized","getResult","OnePointTwo","hasReloadedScoreData","setScoreData","scorm","passed","sendScore","assessmentScoringData","assessmentScoringAverageOrFirstPassed","shouldSendSuccess","TwoThousandAndFour","Passed","Failed","setSCORMCompletion","isComplete","scormCompletionString","completionString","Complete","Incomplete","setCompletionStatus","save","setIsComplete","interactionCompletion","scoreCompletion","setShouldSendScore","shouldSendScore","Never","Always","OnComplete","setCompleteOnExitOps","exitProps","qid","qdesc","question","qtype","qstudent","qlearner","qcorrect","correct","qresult","qsave","cmiInteractions","Multichoice","Sortation","Likert","FillIn","LongFillIn","loadActiveBlocks","createSelector","loadScoringBlocks","scoringAssessments","scoring","assessmentsQuestions","interactionsInTopic","PIPWERKS","pipwerks","SCORMRenderer","debug","isActive","useDispatch","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","ri","setRI","completed","delivered","x","rep","interactionType","reportable","qProps","setCMIInteractions","resultParsed","qp","entries","rating","message","setLocationOnSuspendData","unsubscribe","sectionInView","currentLocation","leaveInteractionEvent","at","Date","toISOString","videoPlayEvent","videoSeekEvent","videoPauseEvent","videoFinishEvent","hotspotEvent","REVIEW_MODE_WINDOW","setCurrentInteractionAction","reviewToolPostMessage","postMessageData","postMessage","breakpoints","space","fonts","default","Text","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","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","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","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","IsAppleAndroid","rowFieldBody","aria-live","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","divisor","videoSrc","useTranscript","viewingTranscriptUnlocksInteraction","posterSrc","presetCustomAspectRatio","vWidth","vHeight","gcd","hideControls","playInline","isYouTube","isPlaying","setIsPlaying","hasPlayedVideoWithPoster","setHasPlayedVideoWithPoster","calcHeight","setCalcHeight","showTranscript","context","interactionContextFromContainerLogical","shouldUnlockInteraction","contextId","hostingCtx","video","player","hasAutoPlayed","threshold","_id_","onWindowResize","calcHeightTarget","continuePlayingInFullscreen","videoHeight","videoPlayer","streamRef","onSeek","onEnded","poster","autoplay","loop","muted","playsinline","playing","light","playVideo","handleClickPreview","showTranscriptBtn","showTranscriptButtonElement","AudioImage","cachedImgSrc","Audio","transcript","Audio_default","audioInteraction","audioPausedByUser","currentTime","Img","prerender","renderer","animationData","headphonesWoman","onSeeked","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","now","accordion_id","accordionClose","mt","mb","AccordionHeader","includeHeadingBackground","headingBackgroundOpacity","fieldHeaderRef","fieldFauxFocus","borderRadiusRealculatedForCSSBug","fieldOpen","aria-expanded","pl","pr","AccordionBody","fieldBodyElements","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","slideId","exitSlideEvent","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","flipcard_flip","flipcardId","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","attemptNumber","responseIds","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","selectedOutlineColor","includeRadioCheckbox","_includeRadioCheckbox_","Boolean","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","alphabetToArray","optionsIds","orderIds","sortationResolved","isCorrectCurrentToScore","idDep","mq","onMQChange","onDragEnd","startIndex","endIndex","reordered","removed","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_","sliderElem","questionElement","fromToFields","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","attempt_number","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","hotspot_id","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","autoComplete","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","interactionName","feedbackEvent","ratingIsReporting","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","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","ctr_click","ctr_id","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","imgProps","medias","mediaIndex","_props","includeCardBackground","contentcardBackgroundOpacity","includeButton","mediaProps","mediaPadding","pdf","textMargin","mediaBorderRadius","isImageContained","imgMediaPadding","mediaPaddingWhenFitContain","leftRightPositionMedia","ContentCardDisplay","selectedOptions","setSelectedOptions","optionQuestions","dropdown_id","selectedIndex","dropdownOptionResponseEvent","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","includesNestedTopicPortals","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","CC_Text_Entry_Quiz_Placeholder","TextEntryQuizDisplay","Assessment","AssessmentIntroduction","AssessmentQuestion","AssessmentResults","AssessmentQuestions","AssessmentDisplay","includeMedia","_imgWidth_","_imgHeight_","isRaster","lastIndexOf","AssessmentIntroductionDisplay","SubmitContinue","AssessmentQuestionContext","singleSelect","hasUpdatedScoreRaw","assessmentContext","questionCounterColor","interactionsInAssessment","questionIndex","resultsPage","newSelected","optionIds","labels","assessment_id","question_id","CheckboxRadioBtn","assessmentQuestionContext","AssessmentQuestionOption","optionBackgroundColor","optionCheckboxColor","optionCheckboxSelectedColor","numOptions","qNum","noMargin","optionBackgroundColorIsWhite","AssessmentQuestionOptions","QuestionCounter","LearnMore","assessmentQuestionOptionsChildren","updatedCorrectOptions","interactionContextValue","AssessmentCorrect","AssessmentIncorrect","hidden","ReVisitTryAgain","indexA","targetQuestion","ScoreBar","getAttempt","resultsKeys","attemptCounts","highestAttemptCount","resultsPercentTextColor","attemptCounterTextColor","questionTitleColor","showFeedbackText","backgroundPanelColor","backgroundPanelBorderRadius","backgroundPanelDropShadow","feedbackPassed","feedbackFailed","showCorrect","setShowCorrect","numCorrect","assessmentBlock","getQuestionsInAssessment","hasNotBeenAttempted","allQuestionsMaxAttempted","enableRetryAssessmentBtn","visible","updatePassedFailed","resultsInDev","includeLearnMore","learnMoreLocation","assessmentCompleteEvent","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","base64ToArrayBuffer","base64","binaryString","atob","bytes","Uint8Array","charCodeAt","buffer","blobToBase64","reader","FileReader","onloadend","readAsDataURL","fileName","imgType","certificateType","html2canvas","allowTaint","useCORS","toBlob","displayGeneratedPDFOutput","newImg","revokeObjectURL","imgBytes","PDFDocument","pdfDoc","embedImgType","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","imgId","textFields","downloadBtn","CertificateDefaultPNG","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","PrepareHostedModuleSavedData","hostingContext","session_data","transformedAssessments","transformedScoreData","debounceScrolling","oldTopic","newTopic","topicUpdated","TopicContainer","_backgroundImage_","getModuleIsFreeScrollingDesktop","oldPosition","newPosition","windowScrollInfo","scrollDirection","inView","moduleHasAudio","getSCORMVersion","chameleonOrigins","markedComplete","bookmarkState","editModuleHasAudioMessage","setEditModuleHasAudioMessage","setAudioAcknowledged","bookmarkingEnabled","topicList","interactionNameUpdates","scormBlock","runExit","TopicAssessmentContainer","showModuleHasAudioMessage","hostingSession","sectionRef","awayTime","useExitProps","maxScore","useReducer","nowStart","getTime","awayStart","nowEnd","seconds","cumulativeAwayTime","startTime","timeState","timeDispatch","compareIds","topicInteraction","topicSid","targetTopic","targetInteraction","targetInteractionIndex","updatedInteractionsSeen","updatedInteractionsOpen","targetSectionId","targetSectionElement","navLoadingIndicator","loadingSpinnerChild","getNavLoadingIndicator","backgroundColorOrGradient","locationTimeOut","exitModule","nowI","totalTime","handleVisibilityChange","visibilityState","unsub","timespent","enterInteractionEvent","moduleTopicsAndInteractionsData","navToInteractionMessage","origin","setCurrentInteraction","firstInteractionId","Header_v2","Interactions_Module","allGoogleFonts","parseFontUrl","chunks","fontName","fontExtension","fontFormat","ttf","otf","loadAssets","fontsFromThemeButtons","fontFamilyMarks","anyFontOrFontFamilyPropOnABlock","fontFamilyMark","trimStart","trimEnd","userSelectedFonts","f","addFont","targetWindow","head","styleTag","onFontLoaded","IS_CHAMELEON_EDITOR","frames","fontIsCustomFont","getCustomFontNames","WebFont","google","families","loading","inactive","fontloading","WebFontConfig","loadFonts","familyName","fvd","fontactive","fontinactive","getModuleImages","extension","fader","require","smoothscroll","polyfill","hasRemote","loadTheme","checkFontFamilyDisplays","ccURL","HostingWrapper","moduleImages","ModuleWithPreloader","showModule","setShowModule","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","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","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","account_id","version_id","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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,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,EAAE,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,OAAO,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,OAAQ,EAAI,IAAI,EAAI,CAAC,MAAM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AAG,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,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,I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,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,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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AC,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,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,MAAM,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,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,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,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CA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AAE,EAAE,IAAI,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,MAAM,EAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,MAAM,EAAI,CAAC,IAAI,IAAI,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,IAAI,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,MAAM,EAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,MAAM,EAAI,CAAC,IAAI,IAAI,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,IAAI,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,OAAO,EAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,CAAC,EAAI,CAAC,KAAM,KAAM,MAAO,EAAI,CAAC,EAAE,EAAE,IAAI,EAAI,O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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,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,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,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,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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,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,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,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,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CEx5G,IAAG,UAAEuN,EAAa,UAAf,aAAE,EAAiB5L,GACtB4L,aAAcA,KAKpB,mBACE5L,GAAG,cACH+hB,MAAO,CACLvR,SAAU,QACVwX,OAAQ,eAKbgtF,GACC,YAAC,GAAD,CACE1wD,QAAS,WACPmwD,EAAsBnyG,IAAoB,MAK/C4xG,KAAmB5xG,IAAqB1D,OAAOyN,QAC9C,YAAC,GAAD,CAAahO,IAAKO,OAAOyN,MAAQif,EAAgB,KAGlDopF,GACC,YAAC,GAAD,CAAUr+C,oBAAqBA,KAjH5B,MKjzBEyhD,I,OAAiB,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,kBCz5CEh0E,GAAQ,CACV,OACA,gBACA,OACA,YACA,QACA,iBACA,QACA,OACA,OACA,YACA,SACA,SACA,aACA,QACA,QACA,YACA,SACA,YACA,cACA,eACA,iBACA,SACA,QACA,cACA,MACA,QACA,YACA,sBACA,aACA,eACA,oBACA,QACA,OACA,eACA,gBACA,cACA,eACA,QACA,eACA,QACA,QACA,OACA,oBACA,iBACA,UACA,OACA,YACA,eACA,oBACA,aACA,QACA,OACA,eACA,aACA,eACA,YACA,eACA,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,qBAGFA,GAAQ/6B,MAAMkU,KAAK,IAAIC,IAAJ,cAAY4mB,IAAZ,IAAsBg0E,OAAkBllC,OAE3D,IAiBe9uC,MC7GAi0E,GAhBM,SAAA1hF,GACnB,IAAM2hF,EAAS3hF,EAAIhc,WAAW6K,MAAM,OADV,EAEQ8yF,EAAOA,EAAOv8G,OAAS,GAAGypB,MAAM,MAFxC,WAEnB+yF,EAFmB,KAETC,EAFS,KAS1B,MAAO,CACLD,WACAC,gBACAC,WARiB,CACjBC,IAAK,WACLC,IAAK,YACLH,K,4BCDJ,IAAMI,GAAa,G,qkBCGnB,IAAM7rG,GAAQD,KACN/M,GAAagN,GAAbhN,S,GACqDA,KAAW8E,M,MAAhE9C,mB,OAAa,G,SAAIsD,qB,OAAe,G,SAAIO,gB,OAAU,G,GAEhDizG,GAAyB78G,OAAO0D,OAAOkG,IAAuBxF,KAClE,SAAAixD,GACE,OAAOA,aAAP,EAAOA,EAAQtvD,cAoBf+2G,GAA4B,GAI5BC,GAA4C,GAEhD/8G,OAAO0D,OAAOqN,GAAMhN,WAAWP,QAAQ+J,SAAQ,SAACT,GAAW,UACnDwvD,GAAOxvD,aAAA,YAAAA,EAAGqD,aAAH,eAAUmsD,QAAQxvD,aAAlB,YAAkBA,EAAGqD,aAArB,aAAkB,EAAUpK,YAKzC,GAJIu2D,GACFygD,GAAgC18G,KAAKi8D,GAGxB,SAAXxvD,EAAErJ,OAAmBqJ,aAArB,YAAqBA,EAAGqD,aAAxB,aAAqB,EAAUqnB,SAAS,CAC1C,IAAMwlF,EAAiBlwG,EAAEqD,MAAMqnB,QAC5BhO,MAAM,UACN7c,QAAO,SAAC0F,GAAD,OAAgBA,EAAM4D,SAAS,0BACtC7R,KAAI,SAACiO,GAAD,OACHA,EACGgI,QAAQ,sDAAuD,IAC/D4iG,YACAC,aAEJvwG,QAAO,SAAC0F,GAAD,MAA0B,KAAVA,KAE1ByqG,GAAkB,GAAH,WAAOA,IAAP,IAA2BE,QAK9C,IAAMG,GAAoB9vG,MAAMkU,KAC9B,IAAIC,IAAJ,CACEzb,IADF,WAEK+2G,IACAC,GAHL,IAIKF,OAGLlwG,QAAO,SAAAywG,GAEP,OAAOA,KAKHC,GAAU,SAAC1iF,GAA+B,IAA1B2iF,EAA0B,uDAAXp6G,OACnC,GAAKy3B,EAAL,CAD8C,MAKE0hF,GAAa1hF,GAArD4hF,EALsC,EAKtCA,SAAyBE,GALa,EAK5BD,cAL4B,EAKbC,YAGjC,IAAKF,GAAYn0E,GAAMnyB,SAASsmG,GAC9B,OAAOA,EAGT,IAAMgB,EAAOD,EAAazxF,SAASE,cAAc,QACjD,IAAIwxF,EAAKxxF,cAAL,WAAuBwwF,IAA3B,CAIA,IAAMiB,EAAW3xF,SAASI,cAAc,SAYxC,OAVAuxF,EAASl5G,GAAKi4G,EACdiB,EAASrwE,UAAT,kDAEoBovE,EAFpB,+BAGgB5hF,EAHhB,sBAGiC8hF,EAHjC,kBAOAc,EAAK/wF,YAAYgxF,GAEVjB,KAQTj0F,GAAO1N,UArF4B,oBAqFG,SAAC2D,GAAyB,IAG1DutC,EACAvqD,EAJ0D,EACfgd,EAAvC+9C,YADsD,MAC/C,GAD+C,IACf/9C,EAA5Bk/F,oBAD2C,MAC5B,aAD4B,EAc9D,GARIv6G,OAAOw6G,oBAETn8G,GADAuqD,EAAS5oD,QACOy6G,OAAO,IAEvB7xD,EAAS5oD,OAAO2hB,OAChBtjB,EAAS2B,QAGNo5D,EAAL,CAKA,IACMshD,EA7GmB,WAAsC,IAArC/2G,EAAqC,uDAAjB,GAC9C,OAAOA,EAAYzC,KAAI,SAAAg5G,GAAC,uBAAKA,SAAL,aAAI,EAAUx7G,QA2Gdi8G,CAnHjB95G,KAAW8C,aAoHuBoP,SAASqmD,GAMlD,GAAIshD,EAGF,OAFAzkG,QAAQC,IAAR,gCAAqCkjD,SACrCmhD,EAAanhD,GAIfnjD,QAAQC,IAAR,gCAAqCkjD,IAErC,CAACxQ,EAAQvqD,GAAQgM,SAAQ,SAAAq/E,GACvBkxB,KAAQrhD,KAAR,UACOmhD,GAAoB,CACvBG,OAAQ,CACNC,SAAU,CAAC,GAAD,OAAI1hD,EAAJ,gBAHhB,IAME2hD,QAAS,aACT3yG,OAAQ,WAENmyG,EAAanhD,IAEf4hD,SAAU,WACRn2C,MACE,kFAGJo2C,YAAa,SAAAf,KAGbl7C,QAAS0qB,aAvCX6wB,EAAanhD,MA4CjB,IAAM8hD,GAAgB,CACpBL,OAAQ,CACNC,SAAUb,GACPxwG,QAAO,SAAAywG,GAEN,OAAQhB,GAAuBnmG,SAASmnG,MAEzCh5G,KAAI,SAAAg5G,GAAC,gBAAOA,EAAP,gBAEVa,QAAS,aACT3yG,OAAQ,WACNsxG,GAAWyB,WAAazB,GAAWyB,aAErCH,SAAU,WACR/kG,QAAQC,IAAI,gCACZwjG,GAAWyB,WAAazB,GAAWyB,aAErCF,YAAa,SAACG,EAAYC,KAG1BC,WAAY,SAACF,EAAYC,KAGzBE,aAAc,SAACH,EAAYC,M,qkBAMvBl1G,GAAatJ,QACjBsJ,GAAakE,SAAQ,SAAA6vG,GACnBC,GAAQD,MAIZjkG,QAAQC,IAAI,CACVlW,OAAQA,OAAOwT,SAAS0D,KACxB+iG,qBACA,gCAAiCiB,GAAcL,OAAOC,WAGpDI,GAAcL,OAAOC,SAASj+G,QAChC+9G,KAAQrhD,KAAK2hD,ICvNf,IA4CeM,GA5CS,WACtB,IAAMr0F,EAAS,GAGX7mB,EAASsN,KAAW/M,WAAWP,OAqCnC,OAnCAxD,OAAO0D,OAAOF,GAAQ+J,SAAQ,SAACT,EAAQ2L,GAAkB,IAC/CtI,GAAUrD,GAAK,IAAfqD,MAIOnQ,OAAO0D,OAAP,YACVyM,IACCA,aAAA,EAAAA,EAAOkW,QAAS,KAChBlW,aAAA,EAAAA,EAAO8zF,YAAa,KAGnB12F,SAAQ,SAAC8E,GACd,GAAIA,GAA0B,iBAAVA,EAAoB,CACtC,IAAIssG,EAA+BtsG,aAAH,EAAGA,EAAOmX,MAAM,OAChDm1F,EACEA,EAAU5+G,OAAS,EACf4+G,EAAUA,EAAU5+G,OAAS,GAAG2R,cAChC,GAGJ,CAAC,MAAO,MAAO,OAAQ,MAAO,OAAOuE,SAAS0oG,KAC7CtsG,EAAMuD,MAAM,yBAEbyU,EAAOhqB,KAAKgS,UAMmBhF,MAAMkU,KAAK,IAAIC,IAAI6I,K,qBC7B5D,IAAMu0F,GAAK,iGASX,4zCAwMeA,GAxMf,wCA4MeA,GA5Mf,uCAgNeA,GAhNf,4E5ZSoB,+B4ZTpB,6B5ZSoB,+B4ZTpB,6rCCjBwB,qSDiBxB,IEjBsB,yNFiBtB,IGhBwB,2NHgBxB,IIhB8B,6JJgB9B,IKX2B,6kGLW3B,I,kBMsCM,yBAA0B17G,QAC9B27G,EAAQ,MAGVC,KAAaC,WAEb77G,OAAO87G,UAAY,kBAAO97G,OAAew6B,YAAYshF,WAErD97G,OAAOyN,IAAM,WAAM,MACjB,IACE,OAAOzN,OAAO2hB,OAAO64F,oBACrB,MAAO94G,IAIT,MAAO,CAAC,cAAe,QAAQqR,SAAxB,UAAiC/S,cAAjC,aAAiC,EAAQX,OAIlDW,OAAO,+CAAgD,EAEvD,IAAM6N,GAAQD,KAEd,IACE5N,OAAOma,QAAU,SAAA9a,GAEf,OAAOA,KADYW,OAAOX,MAAQ,gBAIpCW,OAAOgK,OAAS2X,OAAO3X,OACvB,MAAOtI,IAIT,IAqCK+6B,GArCCs/E,GAAYluG,GAAM6J,WAAU,WAAM,MAMlC7J,GAAMhN,WAAW8E,MANiB,IAEpC5D,uBAFoC,MAElB,GAFkB,MAGpCc,kBAHoC,MAGvB,GAHuB,OAIpC2D,UAJoC,EAKpCL,qBALoC,MAKrB,GALqB,EAiBtC,GATAwiB,SAASU,KAAKlG,MAAMlQ,WAAalR,EAE3BoE,EAAatJ,QACjBsJ,EAAakE,SAAQ,SAAA6vG,GACnBC,GAAQD,MAKRr3G,EACF,IAAMm5G,EAA0BvxF,aAAY,WACtC9B,SAASU,KAAKlG,MAAMtgB,WAAWkQ,SAASlQ,IAC1C+nB,cAAcoxF,GAGhBrzF,SAASU,KAAKlG,MAAMtgB,WAAaA,IAChC,GAGLk5G,GAAUh4E,aAAeg4E,GAAUh4E,iBAG/BrM,GAAY13B,OAAew6B,YAAYmB,OAEvChE,GAAmB33B,OAAew6B,YAAY7C,gBAE9CskF,GAASj8G,OAAeq8B,UAAUC,e,SAGnCG,K,kBAAAA,E,2BAAAA,Q,KAWL,IAAI7E,GAAmB,GAEvB,IAAM53B,OAAe27B,OACnB,IAEE1B,SAAM/d,QAAWlc,OAAe8hC,cAAgB,MAE5C7H,SAAM3L,SACRsJ,GAAQmC,eAAgB,GAE1B,MAAOr4B,GACPuU,QAAQC,IAAIxU,GAIhB,IAAMw6G,GAAqB,SAAC,GAAoC,IAAlCj7G,EAAkC,EAAlCA,SACtBiE,EAAalF,OAAew6B,YAAYt1B,UACxC6yB,EAAa/3B,OAAew6B,YAAYzC,UACxCD,EAAa93B,OAAew6B,YAAY1C,UACxCD,EAAU73B,OAAew6B,YAAY3C,OAC3C,OACE,kBAAC,GAAD,CACED,QAASA,GACTF,SAAUA,GACVC,gBAAiBA,GACjBF,IAAKwkF,GACLpkF,OAAQA,EACR3yB,UAAWA,EACX6yB,UAAWA,EACXD,UAAWA,GAEV72B,IAKDk7G,GAAeX,KAIfY,GAAsB,WAAM,MACIv2F,oBAAS,GADb,WACzBw2F,EADyB,KACbC,EADa,KAGhC,OACE,kBAAC,WAAD,KACGD,GAAc,kBAAC,GAAD,CAAQzkF,QAASA,GAASF,SAAUA,KACnD,kBAAC,GAAD,CACEvQ,OAAQg1F,GACR/0F,WAAY,WACVk1F,GAAc,SAOxBC,KAASx5D,OACP,kBAAC,WAAD,KACE,kBAAC,GAAD,KACE,kBAAC,GAAD,KACE,kBAAC,KAAD,CAAUl1C,MAAOA,KAGV7N,OAAOyN,QAAR,WAAiBI,GAAMhN,kBAAvB,yBAAiB,GAAkB8E,aAAnC,cAAiB,GAAyBmB,mBAC5C,kBAAC,GAAD,MAEA,kBAAC,GAAD,CAAQ8wB,QAASA,GAASF,SAAUA,KAIrC13B,OAAOyN,OACN,kBAAC,GAAD,CACE0Z,OAAQ,GACRC,WAAY,mBASxBuB,SAASE,cAAc,W,oBC3NzBxqB,EAAOD,QAAU+B,IAA0B,2B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,6B,iCCC3C,IAAIq8G,EAAYr4F,MAAQA,KAAKq4F,UAAa,WAStC,OARAA,EAAW1/G,OAAO2/G,QAAU,SAASr9G,GACjC,IAAK,IAAInB,EAAGtB,EAAI,EAAGgD,EAAIqpC,UAAUnsC,OAAQF,EAAIgD,EAAGhD,IAE5C,IAAK,IAAImD,KADT7B,EAAI+qC,UAAUrsC,GACOG,OAAOC,UAAUC,eAAeC,KAAKgB,EAAG6B,KACzDV,EAAEU,GAAK7B,EAAE6B,IAEjB,OAAOV,IAEK5B,MAAM2mB,KAAM6kB,YAE5B0zE,EAAgBv4F,MAAQA,KAAKu4F,cAAiB,SAAUtiG,GACxD,GAAIA,GAAOA,EAAI9a,WAAY,OAAO8a,EAClC,IAAI1c,EAAS,GACb,GAAW,MAAP0c,EAAa,IAAK,IAAI/Q,KAAK+Q,EAAStd,OAAOE,eAAeC,KAAKmd,EAAK/Q,KAAI3L,EAAO2L,GAAK+Q,EAAI/Q,IAE5F,OADA3L,EAAM,QAAc0c,EACb1c,GAEXZ,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUD,EAAaf,EAAQ,IAC/BiB,EAAajB,EAAQ,KACrBkB,EAAqB,CACrBr5G,aAAc,GACdF,mBAAoB,GACpByK,OAAQ,GACRf,aAAc,GACd8vG,QAAS,IAEb1+G,EAAQ0iC,cAAgB67E,EAAQplF,cAAc,CAC1CslF,EACA,eAEJz+G,EAAQ2+G,cAAgB,SAAU7zG,EAAOkX,GAErC,YADc,IAAVlX,IAAoBA,EAAQ2zG,GACxBz8F,EAAO7f,MACX,IAAK,OAGD,OAFgB2I,EAAM4zG,QAAQ/+G,OAAO,GAC3BZ,KAAKijB,EAAO/jB,MACfmgH,EAASA,EAAS,GAAItzG,GAAQ,CAAE1F,aAAc4c,EAAO/jB,OAChE,IAAK,aACD,IAAI2gH,EAAQ9zG,EAAM4zG,QAAQ/+G,OAAO,GACjCi/G,EAAM7/G,KAAKijB,EAAO/jB,MAClB,IAAI4gH,EAAK78F,EAAO/jB,KAAKiqB,MAAM,KAAM42F,EAAOD,EAAG,GAAIE,EAAKF,EAAG,GACnDrwG,EAAQ1D,EAAM6E,OAAOtN,MAAK,SAAUrB,GAAK,OAAOA,EAAEV,OAASw+G,KAC/D,IAAKtwG,EACD,OAAO1D,EAEX,IAAIk0G,EAAMxwG,EAAMI,aAAa8I,QAAQqnG,GACrC,IAAa,IAATC,EACA,OAAOl0G,EAEX,GAAIk0G,IAAQxwG,EAAMI,aAAanQ,OAAS,EAAG,CACvC,IAAIwgH,EAAUn0G,EAAM6E,OAAO2kB,WAAU,SAAUtzB,GAAK,OAAOA,EAAEV,OAASw+G,KACtE,IAAiB,IAAbG,EACA,OAAOn0G,EAEX,GAAIm0G,IAAYn0G,EAAM6E,OAAOlR,OAAS,EAClC,OAAOqM,EAEX,IAAI5F,EAAqB4F,EAAM6E,OAAOsvG,EAAU,GAAGrwG,aAAa,GAChE,OAAOwvG,EAASA,EAAS,GAAItzG,GAAQ,CAAE1F,aAAc0F,EAAM6E,OAAOsvG,EAAU,GAAG3+G,KAAM4E,mBAAoBA,EAAoBw5G,QAASE,IAGlI15G,EAAqBsJ,EAAMI,aAAaowG,EAAM,GAClD,OAAOZ,EAASA,EAAS,GAAItzG,GAAQ,CAAE1F,aAAc05G,EAAM55G,mBAAoBA,EAAoBw5G,QAASE,IAEpH,IAAK,UACD,IAAIM,EAAQp0G,EAAM4zG,QAAQ/+G,OAAO,GAC7BwvB,EAAO+vF,EAAMC,MAEjB,GADAtnG,QAAQC,IAAIqX,IACPA,EACD,OAAOrkB,EACX,IAAIs0G,EAAKjwF,EAAKjH,MAAM,KAAMm3F,EAAQD,EAAG,GAAIE,EAAQF,EAAG,GAEpD,OADAvnG,QAAQC,IAAIwnG,GACLlB,EAASA,EAAS,GAAItzG,GAAQ,CAAE1F,aAAci6G,EAAOn6G,mBAAoBo6G,EAAOZ,QAASQ,IAExG,OAAOp0G,GAEX9K,EAAQu/G,SAAW,SAAU79G,GACzB,MAAO,CACHS,KAAM,QACNlE,KAAMyD,IAGd1B,EAAQw/G,OAAS,WACb,MAAO,CACHr9G,KAAM,YAGdnC,EAAQy/G,UAAY,SAAU/0F,GAC1B,MAAO,CACHvoB,KAAM,aACNlE,KAAMysB,IAGd1qB,EAAQ+a,OAAS,SAAU8jG,GACvB,IAAIh8G,EAAWg8G,EAAGh8G,SAClB07G,EAAQppF,SAAQ,WACZ,IAAIxlB,EAAS6uG,EAAWkB,OAAO78G,EAAU,SACzC47G,EAAmBr5G,aAAeuK,EAAO,GAAGd,MAAMvO,KAClDqP,EAAO1D,SAAQ,SAAUlJ,EAAOxE,GAC5B,IAAIiQ,EAAQ,CACRlO,KAAMyC,EAAM8L,MAAMvO,KAClBsO,aAAc,IAElB6vG,EAAmB9uG,OAAO5Q,KAAKyP,GACZgwG,EAAWkB,OAAO38G,EAAM8L,MAAMhM,SAAU,eAC9CoJ,SAAQ,SAAU+yG,EAAKv/G,GAChCg/G,EAAmB7vG,aAAa7P,KAAKigH,EAAInwG,MAAMvO,MAC/CkO,EAAMI,aAAa7P,KAAKigH,EAAInwG,MAAMvO,YAG1Cm+G,EAAmBv5G,mBACfu5G,EAAmB9uG,OAAO,GAAGf,aAAa,KAC/C,CAAC/L,IACJ,IAAIu8G,EAAKb,EAAQjG,WAAWt4G,EAAQ2+G,cAAeF,GAAqB3zG,EAAQs0G,EAAG,GAAI58G,EAAW48G,EAAG,GACrG,OAAQb,EAAQx3E,QAAQpc,cAAc3qB,EAAQ0iC,cAAcvI,SAAU,CAAEp5B,MAAO,CAAC+J,EAAOtI,IACnF+7G,EAAQx3E,QAAQpc,cAAc4zF,EAAQx3E,QAAQ44E,SAAU,KACpD98G,EAAS,GACT07G,EAAQ7jD,aAAa73D,EAAS,GAAI,CAAEmH,OAAQc,EAAM1F,kBAE9DpF,EAAQ+a,OAAO6kG,YAAc,U,oBC1H7B3/G,EAAOD,QAAU+B,IAA0B,oB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,uC,iCCC3C,SAAS89G,EAAS1/G,GACd,IAAK,IAAIuB,KAAKvB,EAAQH,EAAQpB,eAAe8C,KAAI1B,EAAQ0B,GAAKvB,EAAEuB,IAEpEhD,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD8+G,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,O,iCCdjB,IAAIuC,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPC,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAQIk/G,EARAC,EAAWF,EAAgBzC,EAAQ,KACnC4C,EAASH,EAAgBzC,EAAQ,MACjC6C,EAAkB7C,EAAQ,IAC9Bv9G,EAAQqgH,IAAMH,EAASn5E,QAAQo5E,EAAOp5E,QAAxBm5E,CAAiCD,IAAqBA,EAAmBH,EAAqB,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAASM,EAAgB7nF,SAAU6nF,EAAgBp3E,SAAUo3E,EAAgBr1F,OAAQq1F,EAAgB73E,UAAW63E,EAAgBxuF,UAAWwuF,EAAgB9yF,UAAW8yF,EAAgBtxF,UAAWsxF,EAAgBE,UAAWF,EAAgB7qF,KAAM6qF,EAAgBvhC,MAAOuhC,EAAgBzyF,SAAUyyF,EAAgBG,SAAUH,EAAgBrzF,QAASqzF,EAAgB5sG,SAAU4sG,EAAgBp1F,OAAQo1F,EAAgBv1F,IAAKu1F,EAAgBnyF,MAAOmyF,EAAgB9nF,OAAQ8nF,EAAgBx1F,KAAMw1F,EAAgBt1F,MAAOs1F,EAAgBvrG,WAAYurG,EAAgBr2E,gBAAiBq2E,EAAgB1pF,eAAgB0pF,EAAgB3pF,mBAAoB2pF,EAAgBI,iBAAkBJ,EAAgBpuF,OAAQouF,EAAgB9e,aAAc8e,EAAgBK,UAAWL,EAAgBM,YAAaN,EAAgBO,WAAYP,EAAgBhrE,YAAagrE,EAAgBjuF,UAAWiuF,EAAgBj8G,cACz/CnE,EAAQqgH,IAAIT,YAAc,MAC1B5/G,EAAQqgH,IAAIz5C,aAAe,CACvBrxC,KAAM,I,oBCfVt1B,EAAOD,QAAU+B,IAA0B,2B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,0B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,wB,gCCC3C,SAAS89G,EAAS1/G,GACd,IAAK,IAAIuB,KAAKvB,EAAQH,EAAQpB,eAAe8C,KAAI1B,EAAQ0B,GAAKvB,EAAEuB,IAEpEhD,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD8+G,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,O,iCCTjB,IAAIuC,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPC,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAKIk/G,EALAC,EAAWF,EAAgBzC,EAAQ,KACnCqD,EAAQrD,EAAQ,KAChB6C,EAAkB7C,EAAQ,IAC9Bv9G,EAAQ6gH,QAAUX,EAASn5E,QAAQ65E,EAAMP,IAAvBH,CAA4BD,IAAqBA,EAAmBH,EAAqB,CAAC,6BAA8B,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,CAAC,6BAA8B,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAASM,EAAgBluF,WAAYkuF,EAAgBnuF,eAAgBmuF,EAAgB5vE,SAAU4vE,EAAgB7vE,cAAe6vE,EAAgBU,aAAcV,EAAgBW,WAC5a/gH,EAAQ6gH,QAAQjB,YAAc,W,iCCZ9B,IAAIE,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPC,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAWIk/G,EAXAC,EAAWF,EAAgBzC,EAAQ,KACnCqD,EAAQrD,EAAQ,KAChB6C,EAAkB7C,EAAQ,IAC1BttC,EAAQmwC,EAAgBY,QAAQ,CAAE3/G,IAAK,eAC3CrB,EAAQgnC,KAAOk5E,EAASn5E,QAAQ65E,EAAMP,IAAvBH,CAA4BD,IAAqBA,EAAmBH,EAAqB,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,MAAO,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAASM,EAAgB37G,WAAY27G,EAAgBpuD,WAAYouD,EAAgB9yF,UAAW8yF,EAAgBp4G,WAAYo4G,EAAgBa,cAAehxC,GAAO,SAAUvuE,GAAK,OAAOA,EAAE6F,MAAF,OAAoB64G,EAAgBprG,OACzehV,EAAQgnC,KAAK4/B,aAAe,CACxBlgB,GAAI,IACJvmD,EAAG,EACHuB,EAAG,EACHgD,SAAU,I,iCCjBd,IAAI05G,EAAYr4F,MAAQA,KAAKq4F,UAAa,WAStC,OARAA,EAAW1/G,OAAO2/G,QAAU,SAASr9G,GACjC,IAAK,IAAInB,EAAGtB,EAAI,EAAGgD,EAAIqpC,UAAUnsC,OAAQF,EAAIgD,EAAGhD,IAE5C,IAAK,IAAImD,KADT7B,EAAI+qC,UAAUrsC,GACOG,OAAOC,UAAUC,eAAeC,KAAKgB,EAAG6B,KACzDV,EAAEU,GAAK7B,EAAE6B,IAEjB,OAAOV,IAEK5B,MAAM2mB,KAAM6kB,YAEhClsC,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUhB,EAAQ,GACtBv9G,EAAQkhH,aAAe,CACnBC,YAAa,IAEjBnhH,EAAQohH,YAAc7C,EAAQplF,mBAAc11B,GAC5CzD,EAAQqhH,WAAa,WACjB,IAAIxC,EAAKN,EAAQ92F,SAASznB,EAAQkhH,cAAep2G,EAAQ+zG,EAAG,GAAI/4F,EAAW+4F,EAAG,GAiB9E,OAhBUT,EAASA,EAASA,EAAS,GAAItzG,GAAQ,CAC7Cw2G,gBAAiB,SAAUz8B,EAAMhoB,QACX,IAAdA,IAAwBA,GAAY,GACxC,IAAI0kD,EAAK1kD,EAAY,GAAK/xD,EAAMq2G,YAAYxhH,OAAO,GACnD4hH,EAAGxiH,KAAK8lF,GACR/+D,EAAS,CAAEq7F,YAAaI,KAE5BC,eAAgB,WACZ,IAAID,EAAKz2G,EAAMq2G,YAAYxhH,OAAO,GAClC4hH,EAAGpC,MACHr5F,EAAS,CAAEq7F,YAAaI,KAE5BE,iBAAkB,WACd37F,EAAS,CAAEq7F,YAAa,QAE5B,CAAE/hH,MAAO,SAAUkD,S,iCClC3B5D,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUhB,EAAQ,GAUtBv9G,EAAQ0hH,WAAanD,EAAQplF,cATR,CACjBwoF,OAAO,EACPxxF,IAAK,GACLyxF,OAAQ,CAAE3yG,EAAG,GAAIoqB,IAAK,IACtBwoF,sBAAsB,EACtBC,kBAAkB,EAClBn8D,OAAQ,SAAU3iD,GAAM,OAAO,GAC/B++G,WAAY,SAAU/+G,Q,oBCV1B/C,EAAOD,QAAU+B,IAA0B,mB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,wB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,oB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,oB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,6B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,4B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,oB,iCCC3C,IAAIq8G,EAAYr4F,MAAQA,KAAKq4F,UAAa,WAStC,OARAA,EAAW1/G,OAAO2/G,QAAU,SAASr9G,GACjC,IAAK,IAAInB,EAAGtB,EAAI,EAAGgD,EAAIqpC,UAAUnsC,OAAQF,EAAIgD,EAAGhD,IAE5C,IAAK,IAAImD,KADT7B,EAAI+qC,UAAUrsC,GACOG,OAAOC,UAAUC,eAAeC,KAAKgB,EAAG6B,KACzDV,EAAEU,GAAK7B,EAAE6B,IAEjB,OAAOV,IAEK5B,MAAM2mB,KAAM6kB,YAE5B0zE,EAAgBv4F,MAAQA,KAAKu4F,cAAiB,SAAUtiG,GACxD,GAAIA,GAAOA,EAAI9a,WAAY,OAAO8a,EAClC,IAAI1c,EAAS,GACb,GAAW,MAAP0c,EAAa,IAAK,IAAI/Q,KAAK+Q,EAAStd,OAAOE,eAAeC,KAAKmd,EAAK/Q,KAAI3L,EAAO2L,GAAK+Q,EAAI/Q,IAE5F,OADA3L,EAAM,QAAc0c,EACb1c,GAEXZ,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAI+nD,EAAaw1D,EAAaf,EAAQ,MAClCgB,EAAUhB,EAAQ,GACtBv9G,EAAQgiH,SAAW,SAAU72F,EAAMjpB,EAAQ+/G,GACvC,IAIIC,EAJAv0G,EAAYzL,EAAOipB,GACvB,IAAKA,IAAUxd,EAAUxL,MAA2B,WAAnBwL,EAAUxL,KACvC,MAAM,IAAIgM,MAAM,qCAGpB,GAAK8zG,EAGA,KAAIl2G,MAAMC,QAAQi2G,GAInB,MAAM,IAAI9zG,MAAM,2DAHhB+zG,EAAgBD,OAHhBC,EAAgB,GAQpB,IAGIv9D,EAAS,SAATA,EAAmBriD,GACnB,IAAKA,EACD,MAAM,IAAI6L,MAAM,0BAED,QAAf7L,EAAMH,OACNG,EAAQJ,EAAOI,EAAMU,KAEzB,IAAIH,EAAWP,EAAMO,SAChBA,EAGIA,GAAYkJ,MAAMC,QAAQnJ,KAC/BA,EAAWA,EAASC,IAAI6hD,IAHxB9hD,EAAW,KAKf,IAAI0O,EAAW,GACXjP,EAAMiP,WACNA,EAASA,SAAWu3C,EAAWxmD,EAAMiP,SAASpP,MAC9CoP,EAAS4wG,OAAS7/G,EAAMiP,SAAS4wG,QAErC,IAAIlzF,EAAUsvF,EAAQ5zF,cAAcm+B,EAAWxmD,EAAMH,MAAOi8G,EAASA,EAAS,CAAE/8G,IAAK6P,KAAKqb,SAAU1pB,SAAUA,GAAYP,EAAMuM,OAAQ0C,IACpIstG,EAAKqD,EAAcp1G,QAAO,SAAU+xG,EAAIn0G,GACxC,IAAIpI,EAAQu8G,EAAG,GAAI5vF,EAAU4vF,EAAG,GAChC,OAAOn0G,EAAG03G,gBAAgB9/G,EAAO2sB,KAClC,CAAC3sB,EAAO2sB,IAAe4vF,EAAG,GAC7B,OADmDA,EAAG,IAG1D,MAAO,CACHl6D,OAAQA,EACR09D,WA/Ba,WACb,OAAO19D,EAAOh3C,MAiCtB3N,EAAQsiH,aAAe,CACnBF,gBAAiB,SAAU9/G,EAAO2sB,GAC9B,OAAIA,EAAQ9sB,KAAKogH,eACN,CACHjgH,EACAi8G,EAAQ5zF,cAAcm+B,EAAW05D,SAAU,CACvClgH,MAAOA,EACPjB,IAAK,QAAUiB,EAAMU,GACrBH,SAAU07G,EAAQ7jD,aAAazrC,MAIpC,CAAC3sB,EAAO2sB,M,iCClFvB,IAAIqvF,EAAgBv4F,MAAQA,KAAKu4F,cAAiB,SAAUtiG,GACxD,GAAIA,GAAOA,EAAI9a,WAAY,OAAO8a,EAClC,IAAI1c,EAAS,GACb,GAAW,MAAP0c,EAAa,IAAK,IAAI/Q,KAAK+Q,EAAStd,OAAOE,eAAeC,KAAKmd,EAAK/Q,KAAI3L,EAAO2L,GAAK+Q,EAAI/Q,IAE5F,OADA3L,EAAM,QAAc0c,EACb1c,GAEXZ,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUD,EAAaf,EAAQ,IAC/BkF,EAAelF,EAAQ,GACvBmF,EAAgBnF,EAAQ,KACxBoF,EAAqBpF,EAAQ,KAC7BqF,EAAuBrF,EAAQ,KAC/BsF,EAAgBtF,EAAQ,KAC5Bv9G,EAAQupE,gBAAkBg1C,EAAQplF,cAAc,IAMhDn5B,EAAQorE,SAAW,SAAUyzC,GACzB,IAAIh8G,EAAWg8G,EAAGh8G,SACdy6D,EAAMolD,EAAcI,YAAYjgH,EAASpE,OAAQ,GACjD2gH,EAAK9hD,EAAIxyD,MAAO4f,EAAU00F,EAAG10F,QAAS3lB,EAAQq6G,EAAGr6G,MACjDwO,EAAcgrG,EAAQ/hF,WAAWqmF,EAAch+D,oBAMnD,OALA05D,EAAQ72F,WAAU,WACVgD,IAAY3lB,EAAQ,GACpBwO,EAAYwvG,aAEjB,CAACr4F,EAAS3lB,IACLw5G,EAAQx3E,QAAQpc,cAAc3qB,EAAQupE,gBAAgBpvC,SAAU,CAAEp5B,MAAOu8D,GAC7EihD,EAAQx3E,QAAQpc,cAAc83F,EAAapC,IAAK,CAAEz5D,GAAI,OAAQpzC,SAAU,WAAYuR,MAAO,CAAEi+F,UAAW,gBACpGzE,EAAQx3E,QAAQpc,cAAcg4F,EAAmBM,iBAAkB,KAAMpgH,IAC7E07G,EAAQx3E,QAAQpc,cAAci4F,EAAqBM,mBAAoB,MACvE3E,EAAQx3E,QAAQpc,cAAc,MAAO,CAAE5F,MAAO,CAAE2H,QAAS,QAAU,YAAa,SAAU,cAAe,QACrG,SACAhC,EACA,OACA3lB,KAEZ/E,EAAQorE,SAASw0C,YAAc,Y,iCCxC/B,IAAIxB,EAAYr4F,MAAQA,KAAKq4F,UAAa,WAStC,OARAA,EAAW1/G,OAAO2/G,QAAU,SAASr9G,GACjC,IAAK,IAAInB,EAAGtB,EAAI,EAAGgD,EAAIqpC,UAAUnsC,OAAQF,EAAIgD,EAAGhD,IAE5C,IAAK,IAAImD,KADT7B,EAAI+qC,UAAUrsC,GACOG,OAAOC,UAAUC,eAAeC,KAAKgB,EAAG6B,KACzDV,EAAEU,GAAK7B,EAAE6B,IAEjB,OAAOV,IAEK5B,MAAM2mB,KAAM6kB,YAE5B0zE,EAAgBv4F,MAAQA,KAAKu4F,cAAiB,SAAUtiG,GACxD,GAAIA,GAAOA,EAAI9a,WAAY,OAAO8a,EAClC,IAAI1c,EAAS,GACb,GAAW,MAAP0c,EAAa,IAAK,IAAI/Q,KAAK+Q,EAAStd,OAAOE,eAAeC,KAAKmd,EAAK/Q,KAAI3L,EAAO2L,GAAK+Q,EAAI/Q,IAE5F,OADA3L,EAAM,QAAc0c,EACb1c,GAEXZ,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUD,EAAaf,EAAQ,IAC/BkF,EAAelF,EAAQ,GACvB4F,EAAU5F,EAAQ,KACtBv9G,EAAQ6kD,mBAAqB05D,EAAQplF,cAAc,CAC/C3qB,MAAO,GACPlO,KAAM,GACNs/B,YAAY,EACZmjF,SAAU,eAEd/iH,EAAQy1G,YAAc,SAAUoJ,GAC5B,IAAIh8G,EAAWg8G,EAAGh8G,SAAUvC,EAAOu+G,EAAGv+G,KAAM8+G,EAAKP,EAAGtrB,aAAcA,OAAsB,IAAP6rB,GAAuBA,EACpG5wG,EAAQ+vG,EAAQ/hF,WAAW2mF,EAAQC,cACnCC,EAAK9E,EAAQ92F,SAAS,CAAEmY,WAAY2zD,IAAiBzoF,EAAQu4G,EAAG,GAAIv9F,EAAWu9F,EAAG,GACtF,OAAQ9E,EAAQx3E,QAAQpc,cAAc3qB,EAAQ6kD,mBAAmB1qB,SAAU,CAAEp5B,MAAO,CAC5EyN,MAAOA,EAAMlO,KACbA,KAAMA,EACNs/B,WAAY90B,EAAM80B,WAClBmjF,SAAU,WAAc,OAAOj9F,EAAS,CAAE8Z,YAAY,OAE1D2+E,EAAQx3E,QAAQpc,cAAc83F,EAAapC,IAAK,CAAE35D,GAAI,UAAW1jD,GAAI1C,EAAMioC,UAAW,sBAAuBxd,OAAQ,sBAAuBD,MAAO,OAAQppB,EAAG,QAAUmB,KAEhL7C,EAAQy1G,YAAYmK,YAAc,cAClC5/G,EAAQy1G,YAAY8M,eAAiB,GACrCviH,EAAQy1G,YAAY6N,kBAAoB/E,EAAQgF,YAAW,SAAU10G,EAAOge,GACxE,IAAInrB,EAAI08G,EAAS,GAAIvvG,GAIrB,cAHOnN,EAAEojB,eACFpjB,EAAE8hH,kBACF9hH,EAAEijB,SACF45F,EAAQx3E,QAAQpc,cAAc83F,EAAapC,IAAKjC,EAAS,GAAI18G,EAAG,CAAEmrB,IAAKA,EAAKnrB,EAAG,MAAOvB,EAAG,OAAQ2qB,MAAO,2B,iCC/CnH,IAAIg1F,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEP3B,EAAYr4F,MAAQA,KAAKq4F,UAAa,WAStC,OARAA,EAAW1/G,OAAO2/G,QAAU,SAASr9G,GACjC,IAAK,IAAInB,EAAGtB,EAAI,EAAGgD,EAAIqpC,UAAUnsC,OAAQF,EAAIgD,EAAGhD,IAE5C,IAAK,IAAImD,KADT7B,EAAI+qC,UAAUrsC,GACOG,OAAOC,UAAUC,eAAeC,KAAKgB,EAAG6B,KACzDV,EAAEU,GAAK7B,EAAE6B,IAEjB,OAAOV,IAEK5B,MAAM2mB,KAAM6kB,YAE5B0zE,EAAgBv4F,MAAQA,KAAKu4F,cAAiB,SAAUtiG,GACxD,GAAIA,GAAOA,EAAI9a,WAAY,OAAO8a,EAClC,IAAI1c,EAAS,GACb,GAAW,MAAP0c,EAAa,IAAK,IAAI/Q,KAAK+Q,EAAStd,OAAOE,eAAeC,KAAKmd,EAAK/Q,KAAI3L,EAAO2L,GAAK+Q,EAAI/Q,IAE5F,OADA3L,EAAM,QAAc0c,EACb1c,GAEP0gH,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAgCIk/G,EAAkBwD,EAAkBC,EAAkBC,EAhCtDpF,EAAUD,EAAaf,EAAQ,IAC/BqG,EAAerG,EAAQ,KACvBsG,EAAatG,EAAQ,KACrBuG,EAAavG,EAAQ,KACrBwG,EAAkBxG,EAAQ,KAC1B2C,EAAWF,EAAgBzC,EAAQ,KACnCyG,EAAW9D,EAASn5E,QAAQqlB,GAAG6zD,IAAqBA,EAAmBH,EAAqB,CAAC,oJAAqJ,CAAC,uJACnPmE,EAAe/D,EAASn5E,QAAQm9E,GAAGT,IAAqBA,EAAmB3D,EAAqB,CAAC,wDAAyD,CAAC,2DAC3JqE,EAAmBjE,EAASn5E,QAAQqlB,GAAGs3D,IAAqBA,EAAmB5D,EAAqB,CAAC,0YAA6Y,CAAC,6YACnfsE,EAAWlE,EAASn5E,QAAQte,IAAIk7F,IAAqBA,EAAmB7D,EAAqB,CAAC,uGAAwG,CAAC,0GAC3M9/G,EAAQqkH,QAAU,SAAUxF,GACxB,IAAIh6B,EAAOg6B,EAAGh6B,KAAM7hF,EAAK67G,EAAG77G,GACxBq2B,EAAMwrD,EAAKxrD,IAAK71B,EAAQqhF,EAAKrhF,MAAOX,EAAWgiF,EAAKhiF,SAAUoQ,EAAO4xE,EAAK5xE,KAC1E8uG,EAAaxD,EAAQ/hF,WAAWunF,EAAgBrC,YAAYK,WAChE,OAAI1oF,EACQklF,EAAQx3E,QAAQpc,cAAcq5F,EAAU,KAC5CzF,EAAQx3E,QAAQpc,cAAci5F,EAAaU,KAAM,CAAE5yF,OAAQ,UAAW5Y,KAAMugB,GAAO71B,IAEnF+6G,EAAQx3E,QAAQpc,cAAcq5F,EAAU,KAC5CzF,EAAQx3E,QAAQpc,cAAci5F,EAAaU,KAAM,CAAEx/F,QAAS,SAAUsM,GAC9DA,EAAEy3B,kBACFk5D,EAAW/+G,IACZ+hB,MAAO,CAAEw/F,aAAc,KAC1BhG,EAAQx3E,QAAQpc,cAAc,MAAO,KAAMnnB,GAC3CyP,EAAOsrG,EAAQx3E,QAAQpc,cAAcy5F,EAAU,CAAE3xG,IAAKQ,IAAU,KAChEsrG,EAAQx3E,QAAQpc,cAAcm5F,EAAWU,SAAU,OACvDjG,EAAQx3E,QAAQpc,cAAck5F,EAAWY,SAAUrG,EAAS,GAAI,CAAEp7G,GAAIA,IAClEu7G,EAAQx3E,QAAQpc,cAAcs5F,EAAc,KAAMphH,EAASC,KAAI,SAAU+H,GACrE,OAAQ0zG,EAAQx3E,QAAQpc,cAAcw5F,EAAkB,CAAE9iH,IAAK,QAAUwJ,EAAErH,OACvE+6G,EAAQx3E,QAAQpc,cAAci5F,EAAaU,KAAM,CAAE5yF,OAAQ,UAAW5Y,KAAMjO,EAAEwuB,KAAOxuB,EAAErH,gB,oBCxD3GvD,EAAOD,QAAU+B,IAA0B,yC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,4B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,0B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,yB,iCCC3C,IAAI+9G,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPC,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAKIk/G,EALAC,EAAWF,EAAgBzC,EAAQ,KACnC6C,EAAkB7C,EAAQ,IAC1BmH,EAAOxE,EAASn5E,QAAQna,IAAIqzF,IAAqBA,EAAmBH,EAAqB,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,MAAO,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,QAASM,EAAgBv5E,MAAOu5E,EAAgBt1F,MAAOs1F,EAAgBprG,MAAOorG,EAAgB17G,SAAU07G,EAAgB1zF,SAClUg4F,EAAK9E,YAAc,OACnB5/G,EAAQ+mC,QAAU29E,G,iCCZlB,SAAS7E,EAAS1/G,GACd,IAAK,IAAIuB,KAAKvB,EAAQH,EAAQpB,eAAe8C,KAAI1B,EAAQ0B,GAAKvB,EAAEuB,IAEpEhD,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD8+G,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,O,iCCLjB,SAASsC,EAAS1/G,GACd,IAAK,IAAIuB,KAAKvB,EAAQH,EAAQpB,eAAe8C,KAAI1B,EAAQ0B,GAAKvB,EAAEuB,IAEpEhD,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD8+G,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MAEjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,MACjBsC,EAAStC,EAAQ,O,iCC9CjB,IAAIoH,EAAkB5+F,MAAQA,KAAK4+F,gBAAmB,WAClD,IAAK,IAAI9kH,EAAI,EAAGtB,EAAI,EAAGqmH,EAAKh6E,UAAUnsC,OAAQF,EAAIqmH,EAAIrmH,IAAKsB,GAAK+qC,UAAUrsC,GAAGE,OACxE,IAAImC,EAAImL,MAAMlM,GAAIoL,EAAI,EAA3B,IAA8B1M,EAAI,EAAGA,EAAIqmH,EAAIrmH,IACzC,IAAK,IAAIsM,EAAI+/B,UAAUrsC,GAAIkB,EAAI,EAAGolH,EAAKh6G,EAAEpM,OAAQgB,EAAIolH,EAAIplH,IAAKwL,IAC1DrK,EAAEqK,GAAKJ,EAAEpL,GACjB,OAAOmB,GAEXlC,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUhB,EAAQ,GACtBv9G,EAAQ0/G,OAAS,SAAU78G,EAAUiiH,GACjC,IAAIC,EAAW,GAaf,OAZAxG,EAAQhhD,SAAStxD,QAAQpJ,GAAU,SAAUE,EAAOxE,GAChD,GAAKwE,EAAMZ,OAGPY,EAAMZ,KAAKy9G,cAAgBkF,GAC3BC,EAAShmH,KAAKgE,GAEdA,EAAM8L,MAAMhM,UAAU,CACtB,IAAImiH,EAAKhlH,EAAQ0/G,OAAO38G,EAAM8L,MAAMhM,SAAUiiH,GAC9CC,EAAWJ,EAAeI,EAAUC,OAGrCD,I,iCCvBX,IAAIzG,EAAgBv4F,MAAQA,KAAKu4F,cAAiB,SAAUtiG,GACxD,GAAIA,GAAOA,EAAI9a,WAAY,OAAO8a,EAClC,IAAI1c,EAAS,GACb,GAAW,MAAP0c,EAAa,IAAK,IAAI/Q,KAAK+Q,EAAStd,OAAOE,eAAeC,KAAKmd,EAAK/Q,KAAI3L,EAAO2L,GAAK+Q,EAAI/Q,IAE5F,OADA3L,EAAM,QAAc0c,EACb1c,GAEXZ,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUD,EAAaf,EAAQ,IAC/B0H,EAAW1H,EAAQ,KACvBv9G,EAAQojH,aAAe7E,EAAQplF,cAAc,CAAE74B,KAAM,KACrDN,EAAQklH,MAAQ,SAAUrG,GACtB,IAAIh8G,EAAWg8G,EAAGh8G,SAAUvC,EAAOu+G,EAAGv+G,KAClC8+G,EAAKb,EAAQ/hF,WAAWyoF,EAASviF,eAAgByiF,EAAS/F,EAAG,GAC7Dh/G,GADqEg/G,EAAG,GACpEb,EAAQx3E,QAAQw2B,SAASz6D,IAAID,GAAU,SAAUE,GACrD,MAA+B,mBAA3BA,EAAMZ,KAAKy9G,YACJrB,EAAQ7jD,aAAa33D,EAAO,CAAEiH,OAAQm7G,EAAOjgH,qBAEjDnC,MAEX,OAAOw7G,EAAQx3E,QAAQpc,cAAc3qB,EAAQojH,aAAajpF,SAAU,CAAEp5B,MAAO,CAAET,KAAMA,IAAUF,IAEnGJ,EAAQklH,MAAMtF,YAAc,S,iCCtB5B,IAAII,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUyB,EAAgBzC,EAAQ,IAClCkF,EAAelF,EAAQ,GAC3Bv9G,EAAQolH,OAAS,WACb,OAAO7G,EAAQx3E,QAAQpc,cAAc83F,EAAapC,IAAK,KAAM,iB,iCCPjE,IAAIL,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUyB,EAAgBzC,EAAQ,IACtCv9G,EAAQqlH,IAAM,SAAUxG,GACpB,IAAIh8G,EAAWg8G,EAAGh8G,SAAU8+G,EAAQ9C,EAAG8C,MACvC,OAAQpD,EAAQx3E,QAAQpc,cAAc,MAAO,CAAE5F,MAAO,CAC9ClQ,WAAY,OACZrB,SAAU,QACVqX,IAAK,EACLD,KAAM,EACNE,MAAO,QACPC,OAAQ,OACRC,OAAQ,IACRmH,UAAW,kCAEfosF,EAAQx3E,QAAQpc,cAAc,MAAO,CAAE5F,MAAO,CACtC2H,QAAS,OACTuF,eAAgB,gBAChBC,WAAY,SACZqG,SAAUopF,EAAQ,SAAW,OAC7Bz5G,OAAQ,SACPrF,M,iCCvBjB,IAAIm9G,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUyB,EAAgBzC,EAAQ,IAClCkF,EAAelF,EAAQ,GACvB+H,EAAa,WACb,OAAQ/G,EAAQx3E,QAAQpc,cAAc,MAAO,CAAEG,MAAO,OAAQC,OAAQ,OAAQ+I,QAAS,YAAahW,QAAS,OACzGygG,EAAQx3E,QAAQpc,cAAc,QAAS,KAAM,UAC7C4zF,EAAQx3E,QAAQpc,cAAc,OAAQ,KAAM,wBAC5C4zF,EAAQx3E,QAAQpc,cAAc,IAAK,CAAEoJ,OAAQ,OAAQC,YAAa,IAAKC,KAAM,OAAQC,SAAU,WAC3FqqF,EAAQx3E,QAAQpc,cAAc,IAAK,CAAEsJ,KAAM,WACvCsqF,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAEoa,EAAG,IAAKqZ,EAAG,IAAKtzB,MAAO,KAAMC,OAAQ,MAC7EwzF,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAEoa,EAAG,IAAKqZ,EAAG,IAAKtzB,MAAO,KAAMC,OAAQ,MAC7EwzF,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAEoa,EAAG,IAAKqZ,EAAG,KAAMtzB,MAAO,KAAMC,OAAQ,UAE9F/qB,EAAQ+1B,OAAS,SAAU8oF,GACvB,IAAI0G,EAAa1G,EAAG0G,WAAYC,EAAY3G,EAAG2G,UAC/C,OAAQjH,EAAQx3E,QAAQpc,cAAc83F,EAAa5B,QAAS,CAAEtrF,KAAM,WAAY+yC,GAAI,OAAQC,GAAI,MAAOx9C,OAAQ,OAAQhG,MAAO,CAAEgK,OAAQ,WAAajK,QAAS,WAAc,OAAO0gG,GAAWD,IAAgBtzF,eAAgB,SAAUC,WAAY,UAChPqsF,EAAQx3E,QAAQpc,cAAc26F,EAAY,S,iCCnBlD,IAAIxF,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPC,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUyB,EAAgBzC,EAAQ,IAClC2C,EAAWF,EAAgBzC,EAAQ,KACvCv9G,EAAQylH,OAASvF,EAASn5E,QAAQna,IAAIqzF,IAAqBA,EAAmBH,EAAqB,CAAC,2NAA4N,CAAC,8NACjU9/G,EAAQ0lH,QAAUxF,EAASn5E,QAAQna,IAAI62F,IAAqBA,EAAmB3D,EAAqB,CAAC,0KAA2K,CAAC,6KACjR9/G,EAAQ2lH,WAAazF,EAASn5E,QAAQl8B,EAAE64G,IAAqBA,EAAmB5D,EAAqB,CAAC,qOAAsO,CAAC,wOAC7U,IAWIG,EAAkBwD,EAAkBC,EAAkBC,EAXtDiC,EAAO1F,EAASn5E,QAAQqlB,GAAGu3D,IAAqBA,EAAmB7D,EAAqB,CAAC,2BAA4B,CAAC,8BAC1H9/G,EAAQ6lH,WAAa,SAAUhH,GAC3B,IAAIh6B,EAAOg6B,EAAGh6B,KACVxrD,EAAMwrD,EAAKxrD,IAAK71B,EAAQqhF,EAAKrhF,MAAO47G,EAAKv6B,EAAKhiF,SAAUA,OAAkB,IAAPu8G,EAAgB,GAAKA,EAC5F,OAAQb,EAAQx3E,QAAQpc,cAAci7F,EAAM,CAAE5iH,GAAI,UAAY6hF,EAAKrhF,MAAQ,MACvE61B,EAAOklF,EAAQx3E,QAAQpc,cAAc3qB,EAAQ2lH,WAAY,CAAE7sG,KAAMugB,GAAO71B,GAAW+6G,EAAQx3E,QAAQpc,cAAc3qB,EAAQ2lH,WAAY,KAAMniH,GAC3I+6G,EAAQx3E,QAAQpc,cAAc,KAAM,CAAE5F,MAAO,CAAE9c,QAAS,IAAK69G,UAAW,OAAQ59G,OAAQ,IAAOrF,EAASC,KAAI,SAAU+H,EAAGtM,GACrH,OAAQggH,EAAQx3E,QAAQpc,cAAc,KAAM,CAAEtpB,IAAK,QAAUwJ,EAAErH,MAAQ,IAAMjF,GACzEggH,EAAQx3E,QAAQpc,cAAc3qB,EAAQ2lH,WAAY,CAAE7sG,KAAMjO,EAAEwuB,KAAOxuB,EAAErH,e,iCCrBrF,IAAIs8G,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPzB,EAAgBv4F,MAAQA,KAAKu4F,cAAiB,SAAUtiG,GACxD,GAAIA,GAAOA,EAAI9a,WAAY,OAAO8a,EAClC,IAAI1c,EAAS,GACb,GAAW,MAAP0c,EAAa,IAAK,IAAI/Q,KAAK+Q,EAAStd,OAAOE,eAAeC,KAAKmd,EAAK/Q,KAAI3L,EAAO2L,GAAK+Q,EAAI/Q,IAE5F,OADA3L,EAAM,QAAc0c,EACb1c,GAEP0gH,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IA8BIk/G,EAAkBwD,EA9BlBlF,EAAUD,EAAaf,EAAQ,IAC/B2C,EAAWF,EAAgBzC,EAAQ,KACnCwG,EAAkBxG,EAAQ,KAC1BwI,EAAY7F,EAASn5E,QAAQna,IAAIqzF,IAAqBA,EAAmBH,EAAqB,CAAC,4mBAA+mB,CAAC,+mBACntB9/G,EAAQgmH,aAAe9F,EAASn5E,QAAQqlB,GAAGq3D,IAAqBA,EAAmB3D,EAAqB,CAAC,yBAA0B,CAAC,4BACpI9/G,EAAQimH,YAAc1H,EAAQplF,cAAc,CACxChgB,MAAM,IAEVnZ,EAAQykH,SAAW,SAAU5F,GACzB,IAAIh8G,EAAWg8G,EAAGh8G,SAAUG,EAAK67G,EAAG77G,GAChCo8G,EAAKb,EAAQ/hF,WAAWunF,EAAgBrC,YAAa/7D,EAASy5D,EAAGz5D,OAAQo8D,EAAa3C,EAAG2C,WACzF5oG,EAAOwsC,EAAO3iD,GAUlB,OATAu7G,EAAQ72F,WAAU,WACd,IAAIw+F,EAAc,WACV/sG,GACA4oG,EAAW/+G,IAInB,OADApB,OAAO2vB,iBAAiB,QAAS20F,GAC1B,WAAc,OAAOtkH,OAAO4vB,oBAAoB,QAAS00F,MACjE,CAAC/sG,IACIolG,EAAQx3E,QAAQpc,cAAc3qB,EAAQimH,YAAY9rF,SAAU,CAAEp5B,MAAO,CAAEoY,KAAMA,IACjFolG,EAAQx3E,QAAQpc,cAAco7F,EAAW,CAAEhhG,MAAO,CAC1C2H,QAASvT,EAAO,OAAS,OACzB4T,QAAS5T,EAAO,EAAI,GACrB2L,QAAS,SAAUsM,GAClBA,EAAEy3B,kBACFk5D,EAAW/+G,KACVH,M,iCC3CjB,IAAIm9G,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUyB,EAAgBzC,EAAQ,IACtCv9G,EAAQmmH,KAAO,SAAUtH,GACZA,EAAG95F,MACZ,OAAQw5F,EAAQx3E,QAAQpc,cAAc,MAAO,CAAEG,MAAO,OAAQC,OAAQ,OAAQ+I,QAAS,YAAahW,QAAS,OACzGygG,EAAQx3E,QAAQpc,cAAc,OAAQ,KAClC4zF,EAAQx3E,QAAQpc,cAAc,iBAAkB,CAAEy7F,GAAI,KAAMC,GAAI,cAAeC,GAAI,OAAQC,GAAI,cAAevjH,GAAI,oBAC9Gu7G,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAE67F,UAAW,UAAW71G,OAAQ,OACtE4tG,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAE67F,UAAW,UAAW71G,OAAQ,UAC9E4tG,EAAQx3E,QAAQpc,cAAc,IAAK,CAAEoJ,OAAQ,OAAQC,YAAa,IAAKC,KAAM,OAAQC,SAAU,WAC3FqqF,EAAQx3E,QAAQpc,cAAc,IAAK,CAAE3nB,GAAI,oBAAqB8rB,UAAW,oCAAqCoF,SAAU,WACpHqqF,EAAQx3E,QAAQpc,cAAc,IAAK,CAAE3nB,GAAI,YAAa8rB,UAAW,mCAC7DyvF,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAEtqB,EAAG,mQAAoQ2C,GAAI,SAAUixB,KAAM,2BACnUsqF,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAEtqB,EAAG,+yBAAgzB2C,GAAI,QAASixB,KAAM,YAC92BsqF,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAEtqB,EAAG,oUAAqU2C,GAAI,UAAWixB,KAAM,kB,iCCjBzZ,IAAI6rF,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPC,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IASIk/G,EATA1B,EAAUyB,EAAgBzC,EAAQ,IAElCkJ,EADWzG,EAAgBzC,EAAQ,KACtBx2E,QAAQna,IAAIqzF,IAAqBA,EAAmBH,EAAqB,CAAC,yHAA0H,CAAC,4HACtN9/G,EAAQwkH,SAAW,WAAc,OAAQjG,EAAQx3E,QAAQpc,cAAc87F,EAAG,KACtElI,EAAQx3E,QAAQpc,cAAc,MAAO,CAAEG,MAAO,MAAOC,OAAQ,OAAQ+I,QAAS,YAC1EyqF,EAAQx3E,QAAQpc,cAAc,OAAQ,MACtC4zF,EAAQx3E,QAAQpc,cAAc,IAAK,CAAEqJ,YAAa,IAAKC,KAAM,OAAQC,SAAU,WAC3EqqF,EAAQx3E,QAAQpc,cAAc,IAAK,CAAE3nB,GAAI,QAAS8rB,UAAW,uCAAwCkF,YAAa,KAC9GuqF,EAAQx3E,QAAQpc,cAAc,WAAY,CAAE3nB,GAAI,iBAAkB8rB,UAAW,8FAA+FqF,OAAQ,+C,iCChBpM,IAAI6rF,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUyB,EAAgBzC,EAAQ,IAClCmJ,EAAYnJ,EAAQ,KACxBv9G,EAAQ2mH,MAAQ,SAAU9H,GACtB,IAAIv+G,EAAOu+G,EAAGv+G,KAAMsmH,EAAa/H,EAAG+H,WACpC,OAAQrI,EAAQx3E,QAAQpc,cAAc,MAAO,KACzC4zF,EAAQx3E,QAAQpc,cAAc+7F,EAAUrC,QAAS,CAAEx/B,KAAM,CACjD5xE,KAAM2zG,EACNpjH,MAAOlD,EACPuC,SAAU,CACN,CACIW,MAAO,WACP61B,IAAK,eAET,CACI71B,MAAO,SACP61B,IAAK,qBAGdr2B,GAAI,iB,iCCtBnB,IAAI88G,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPC,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAEIk/G,EAFAC,EAAWF,EAAgBzC,EAAQ,KACvCv9G,EAAQskH,KAAOpE,EAASn5E,QAAQl8B,EAAEo1G,IAAqBA,EAAmBH,EAAqB,CAAC,kbAAmb,CAAC,sb,iCCTphB,IAAIE,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAAIw9G,EAAUyB,EAAgBzC,EAAQ,IAClCkF,EAAelF,EAAQ,GAC3Bv9G,EAAQ6mH,UAAY,SAAUhI,GAC1B,IAAIO,EAAKP,EAAG5vG,EAAGA,OAAW,IAAPmwG,EAAgB,GAAKA,EACxC,OADyDP,EAAGiI,WACvCvI,EAAQx3E,QAAQpc,cAAc,MAAO,CAAE5F,MAAO,CAC3D+F,MAAO,OACPC,OAAQ,OACR5mB,aAAc,SACd0Q,WAAY,YAEhB0pG,EAAQx3E,QAAQpc,cAAc83F,EAAa5B,QAAS,CAAEn6D,GAAI,QAASoD,KAAM,iBAAkB53B,WAAY,SAAUnN,MAAO,CAAE+F,MAAO,OAAQC,OAAQ,OAAQgE,OAAQ,SAC7JwvF,EAAQx3E,QAAQpc,cAAc,IAAK,CAAEqD,UAAW,eAAgBjJ,MAAO,CAAErgB,SAAU,GAAIwD,OAAQ,gBAC/Fq2G,EAAQx3E,QAAQpc,cAAc,OAAQ,CAAE3I,OAAQ,UAAWyY,OAAQ,OAC/D8jF,EAAQx3E,QAAQpc,cAAc,QAAS,CAAE3nB,GAAI,gBAAiBb,KAAM,OAAQ7B,KAAM,IAAKykB,MAAO,CACtFwQ,KAAM,EACNhxB,QAAS,OACTytB,OAAQ,OACRnd,WAAY,cACZ5M,QAAS,cACV47E,aAAc50E,EAAG+nC,YAAa,SAAUtkB,QAAS,SAAUtB,GAC1D,IAAIrwB,EAAQqwB,EAAEuB,cAAc5xB,MACd,UAAVqwB,EAAE/vB,KACFwW,QAAQC,IAAI,CAAE/W,MAAOA,UAElB,O,iCC5B/B,IAAI++G,EAAwB/5F,MAAQA,KAAK+5F,sBAAyB,SAAUC,EAAQviF,GAEhF,OADI9+B,OAAO+B,eAAkB/B,OAAO+B,eAAes/G,EAAQ,MAAO,CAAEh/G,MAAOy8B,IAAiBuiF,EAAOviF,IAAMA,EAClGuiF,GAEPC,EAAmBj6F,MAAQA,KAAKi6F,iBAAoB,SAAUhkG,GAC9D,OAAQA,GAAOA,EAAI9a,WAAc8a,EAAM,CAAE,QAAWA,IAExDtd,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,IACtD,IAQIk/G,EARA1B,EAAUyB,EAAgBzC,EAAQ,IAClC2C,EAAWF,EAAgBzC,EAAQ,KACnCmJ,EAAYnJ,EAAQ,KACxBv9G,EAAQ+mH,eAAiB7G,EAASn5E,QAAQm9E,GAAGjE,IAAqBA,EAAmBH,EAAqB,CAAC,qKAAsK,CAAC,wKAClR9/G,EAAQgnH,WAAa,SAAUnI,GAC3B,IAAI1uF,EAAM0uF,EAAG1uF,IACb,OAAQouF,EAAQx3E,QAAQpc,cAAc3qB,EAAQ+mH,eAAgB,KAAM52F,EAAIrtB,KAAI,SAAUlC,EAAGrC,GAAK,OAAQggH,EAAQx3E,QAAQpc,cAAc+7F,EAAUrC,QAAS,CAAEhjH,IAAK,OAAST,EAAE4C,MAAQ,KAAMR,GAAI,OAASpC,EAAE4C,MAAQ,KAAMqhF,KAAMjkF,U,oBCf9NX,EAAOD,QAAU+B,IAA0B,wB,kBCItCopC,QAAQxsC,UAAU0tC,UAChBlB,QAAQxsC,UAAU2mE,UACrBn6B,QAAQxsC,UAAU2mE,QACfn6B,QAAQxsC,UAAkBsoH,mBAC3B97E,QAAQxsC,UAAUuoH,uBAEtB/7E,QAAQxsC,UAAU0tC,QAAU,SAAUxsC,GACpC,IACIsnH,EAAWphG,KACf,IAAKwE,SAAS68F,gBAAgBh9D,SAFrBrkC,MAEmC,OAAO,KACnD,EAAG,CACD,GAAIohG,EAAS7hD,QAAQzlE,GAAI,OAAOsnH,EAChCA,EAAWA,EAASE,oBACA,OAAbF,GACT,OAAO,Q,oBClBXlnH,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,IAA0B,0B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,uC,oBCA3C9B,EAAOD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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 = \"/@player/1.4.75/\";\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([572,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;\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 => {\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 => {\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 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 //\n\n const { props = {} } = entry;\n const { version } = props;\n\n if (version && version === 1) {\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 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 /*\n we're leaving this transform out now since it has caused problems\n for super old old modules where the buttonOutline has been baked into templates\n and spread wide\n \n // ...(updateBackgroundOpacityForOutline && {\n // backgroundOpacity: 0,\n // }),\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 \n {children || label}\n \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 \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 \n \n \n
\n

Oh no :(

\n

Something has gone wrong. The error message provided is:

\n

\n \"{this.state.error.toString()}\".\n

\n

\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

\n
\n {\n window.location.reload();\n }}\n />\n
\n
\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';\nimport { motion } from 'framer-motion';\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 => {\n return new Promise(resolve => {\n const img = new Image();\n\n img.crossOrigin = 'anonymous';\n img.src = src;\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 onComplete: () => void;\n}\n\nconst ModuleImagesPreloader = ({\n images,\n onComplete,\n}: IModuleImagesPreloader) => {\n //\n const [imgsLoaded, setImgsLoaded] = useState(false);\n const [whichImagesLoaded, setImgAsLoaded] = useState([]);\n const [minDisplayTime, setMinDisplayTime] = useState(false);\n const [boot, setBoot] = useState(false);\n\n const [showEditPreloader, setShowEditPreloader] = useState(false);\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(null);\n const documentTitle = useRef(document.title);\n\n const moduleImagesPreloaderDomContainer = useRef(\n document.querySelector(\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('#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 useEffect(() => {\n if (imgsLoaded && onComplete) {\n // console.log('* module images preloading complete *', imgsLoaded);\n onComplete();\n }\n }, [imgsLoaded]);\n\n useEffect(() => {\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(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 // @ts-ignore\n {\n // console.log('boot ya muddyFudger !!!');\n // Fade out > boot > remove the loading screen from the DOM\n\n setBoot(true);\n }}\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 transition: opacity 0.35s;\n z-index: 2147483638;\n `}\n >\n \n\n \n \n {moduleLoadingMessage}\n \n\n \n \n \n \n ,\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 \n \n \n {children(error)}\n {\n window.location.reload();\n }}\n />\n \n \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 \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 \n \n \n \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(false);\n const nav = useRef(null);\n const tabIndex = useRef(-1);\n const scrollableContainer = useRef(null);\n const menuItemsContainer = useRef(null);\n const anchors = useRef([]);\n const closeButton = useRef(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 \n {\n close();\n }}\n aria-label=\"close menu\"\n >\n \n \n\n \n
    \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 \n {\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 \n \n );\n })}\n
\n \n \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 \n \n \n \n \n \n \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(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 {\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 Go Back\n \n \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 \n \n\n Progress: {percent}%\n \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 \n {children}\n \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 {\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 \n \n {backButton && (\n \n )}\n\n {topicName && (\n \n Current Topic: \n {currentTopicName}\n \n )}\n \n\n {includeLogo && (\n \n \n \n \n \n )}\n\n \n \n {progressBar && (\n \n \n \n )}\n\n {topicMenu && (\n <_>\n {\n setMenuState(true);\n }}\n />\n\n \n {\n // console.log('close');\n setMenuState(false);\n }}\n />\n \n \n )}\n \n \n \n \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(null);\n\n return (\n {\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 \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 \n );\n};\n\nconst Burger = props => {\n const width = 24;\n const { color = '#2a2c2d', onClick } = props;\n\n return (\n \n \n {[0, 1, 2].map(i => (\n \n ))}\n \n \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 \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 \n \n {includeHeaderOverlay && (\n \n )}\n \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 \n \n {[0, 1, 2].map(i => (\n \n ))}\n \n \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(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 {\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={}\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 \n ) : (\n \n )}\n\n {window.dev() && (\n \n {\n setCurrentBlock({ id: headerId });\n }}\n >\n {!selected && }\n \n \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(window.dev() || false);\n // const [playAudio, setPlayAudio] = useState(window.dev() || false);\n\n const audioPlayer = useRef(null);\n const delayAudioPlay = useRef>();\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 \n {\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 \n ) : null;\n};\n","export const updateScoreAction = (id: string, score: 0 | 1) => {\n return {\n type: 'UPDATE_SCORE',\n data: { id, score },\n };\n};\n","import { SCORM } from 'pipwerks-scorm-api-wrapper';\nimport React, {\n createContext,\n PropsWithChildren,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport getStore from 'services/getStore';\nimport { GetParams } from 'setup';\nimport uuid from 'uuidv4';\nimport { ModuleEvent } from './events';\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 & {};\n\nexport const HostingContext = createContext(\n undefined\n);\n\nexport interface SessionState {\n currentSession: Session;\n}\n\nexport const HostingProvider = ({\n url,\n isHosted,\n enableAnalytics,\n isScorm,\n source,\n projectId,\n versionId,\n accountId,\n children,\n}: PropsWithChildren<{\n url: string;\n isHosted: boolean;\n enableAnalytics: boolean;\n source: string;\n isScorm: {};\n projectId: string;\n versionId: string;\n accountId: string;\n}>) => {\n const [state, setState] = useState(null);\n\n const signaler = createSignalServer({\n url,\n projectId,\n versionId,\n accountId,\n source,\n isHosted,\n enableAnalytics,\n isScorm,\n getSession() {\n return state?.currentSession;\n },\n setSession(session) {\n setState(() => ({\n currentSession: session,\n }));\n },\n });\n\n // Start a new session\n useEffect(() => {\n signaler?.start && typeof signaler.start === 'function' && signaler.start();\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport interface Session {}\n\ninterface Event {}\n\nconst createSignalServer = ({\n url,\n projectId,\n versionId,\n accountId,\n source,\n isHosted,\n enableAnalytics,\n isScorm,\n setSession,\n getSession,\n}) => {\n let localSession: any;\n\n // we can apply further logics here if needed...\n const isHostedOrisAnalyticsEnabled = isHosted || enableAnalytics;\n\n console.log(isHostedOrisAnalyticsEnabled, 'isHostedOrisAnalyticsEnabled');\n console.log(isHosted, 'isHosted');\n console.log(enableAnalytics, 'enableAnalytics');\n\n return {\n // Start will either\n // - create a new session\n // - create a new session from a bookmark\n async start(): Promise {\n // skip this code if we are not hosted\n if (!isHosted) {\n return {};\n }\n\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 let json = await req.json();\n json = {\n projectId: `project_${projectId}`,\n versionId: `version_${versionId}`,\n accountId: `${accountId}`,\n userId: getLocalStorageUserId(),\n sessionId: getSessionId(),\n source,\n ...json,\n };\n\n localSession = 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 {\n if (!isHosted) {\n return false;\n }\n\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 {\n if (!isHosted) {\n return false;\n }\n\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 localSession = 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 {\n if (!isHosted) {\n return;\n }\n\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\n // Gets the current session\n async current(): Promise {\n //\n if (localSession) {\n return localSession;\n }\n\n const stateSession = getSession();\n if (stateSession) {\n return stateSession;\n }\n\n console.log('no current session, generating new one');\n // should we dig into a project running in preview for its actual id ?\n\n let jsonReshaped: {\n source: string;\n projectId: string;\n versionId: string;\n accountId: string;\n userId: string;\n sessionId: string;\n } = {\n projectId: `project_${projectId}`,\n versionId: `version_${versionId}`,\n accountId: `${accountId}`,\n userId: getLocalStorageUserId(),\n sessionId: getSessionId(),\n source,\n };\n\n console.log('sessionId', jsonReshaped.sessionId);\n\n if (isHosted) {\n // but disabled ???\n try {\n const req = await fetch(`${url}/harp/hosting/${projectId}/session`, {\n method: 'GET',\n credentials: 'include',\n });\n\n const json = await req.json();\n\n //I think we want to turn this off for hosting as we will want to use project id\n // jsonReshaped.projectId = json.learning_module_id;\n\n if (enableAnalytics) {\n jsonReshaped.userId = `harp_user_${json.user_id}`;\n jsonReshaped.sessionId = `harp_session_${json.learning_module_session.id}`;\n }\n } catch (err) {\n console.warn(`${url}/harp/hosting/${projectId}/session`, err);\n }\n }\n\n if (isScorm?.isInitialized && enableAnalytics) {\n const scormUserId = SCORM.get(\n SCORM.version === '1.2' ? 'cmi.core.student_id' : 'cmi.learner_id '\n );\n\n jsonReshaped.userId =\n `scorm_user_${scormUserId}` || jsonReshaped.userId;\n\n // this is where it gets murky. . .\n // if bookmarking is enabled we'll get / set the sessionId in suspendData\n const isBookmarking = getStore().getState()?.theme?.enableBookmarking;\n\n if (isBookmarking) {\n let suspendData = SCORM.get('cmi.suspend_data');\n\n if (suspendData) {\n suspendData = JSON.parse(suspendData) || {};\n }\n\n if (suspendData?.sessionId) {\n jsonReshaped.sessionId = suspendData.sessionId;\n } else {\n SCORM.set(\n 'cmi.suspend_data',\n JSON.stringify({\n ...suspendData,\n sessionId: jsonReshaped.sessionId,\n })\n );\n }\n\n // but then we want to account for if the learner does NOT return to bookmark\n // . . .\n }\n }\n\n localSession = jsonReshaped;\n // json;\n\n setSession(jsonReshaped);\n\n return jsonReshaped;\n // json;\n //\n },\n\n //\n async data(event: ModuleEvent): Promise {\n const currentSession = (await this.current()) as any;\n\n const data = { ...event } as ModuleEvent & {\n projectId: string;\n accountId: string;\n versionId: string;\n userId?: string;\n sessionId: string;\n source: string;\n };\n\n const {\n projectId,\n accountId,\n versionId,\n userId,\n sessionId,\n source,\n } = currentSession;\n\n data.projectId = projectId; // || currentSession.learning_module_id;\n data.accountId = accountId; // || currentSession.account_id;\n data.versionId = versionId; // || currentSession.version_id;\n data.userId = userId; // || currentSession.user_id;\n data.sessionId = sessionId; // || currentSession.learning_module_session.id;\n data.source = source;\n\n window.dispatchEvent(new CustomEvent('moduleEvent', { detail: data }));\n\n if (window.enableAnalytics || enableAnalytics) {\n //\n\n console.log((window.getParams() as GetParams).analyticsUrl);\n\n try {\n const req = await fetch(\n `${(window.getParams() as GetParams).analyticsUrl}/track/event`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n keepalive: true,\n body: JSON.stringify(data),\n }\n );\n\n const json = await req.json();\n\n return json;\n } catch (err) {\n console.warn(err);\n\n return;\n }\n }\n },\n };\n};\n\nfunction getLocalStorageUserId() {\n // localStorage.clear();\n //\n let userId = localStorage.getItem('userId');\n\n if (!userId) {\n userId = uuid() as string;\n localStorage.setItem('userId', userId);\n }\n\n return userId;\n}\n\nlet cachedSessionId;\nfunction getSessionId() {\n console.log('setting Session Id');\n if (cachedSessionId) {\n return cachedSessionId;\n }\n\n cachedSessionId = uuid();\n return cachedSessionId;\n}\n\nexport const useHostingSession = () => {\n const ctx = useContext(HostingContext);\n return ctx;\n};\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","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 { 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, createScorm } 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 getStore from 'services/getStore';\nimport pubSub from 'services/pubSub';\nimport {\n transformAssessmentsFromSuspendData,\n transformAssessmentsToSuspendData,\n} from 'services/transformAssessmentsToAndFromSuspendData';\nimport {\n transformListFromIdToSId,\n transformListFromSIdToId,\n} from 'services/transformListBetweenIdSId';\nimport {\n transformScoreDataFromIdToSId,\n transformScoreDataFromSIdToId,\n} from 'services/transformScoreData';\nimport {\n Assessments,\n LandingPagesSeenState,\n LessonStatus,\n Report,\n State,\n} from 'store/store';\nimport {\n findBlocksIn,\n getAllInteractionsOrdered,\n} from '../../../selectors/block';\nimport API from '../../../services/scorm/API';\nimport SCORMToCollect from './SCORMToCollect';\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 passMark?: number | null;\n}\n\nexport const useExitProps = (): ExitProps => {\n const state = getStore().getState();\n\n const module = Object.values(state.blocks).find(b => {\n return (b as Block)?.type === 'Module';\n }) as Block;\n\n let scormBlock = Object.values(state.blocks).find(b => {\n return (b as Block)?.type === 'SCORM';\n }) as Block;\n\n if (!scormBlock) {\n scormBlock = createScorm();\n }\n\n if (!module) {\n throw Error('Unable to find module block');\n }\n\n // I think this comes from\n const {\n shouldSendScoreWhen,\n moduleCompleteInterationRequirement,\n moduleCompleteScoreRequirement,\n sendOnlySuccessStatus = false,\n lessonStatus = 'completed/incomplete',\n scoringCriteria,\n } = scormBlock.props as SCORMProps;\n\n const passMark = module?.props?.passMark;\n\n const { interactionsSeen, scoreData = {}, exiting } = useSelector(\n (state: State) => {\n return {\n interactionsSeen: state.interactionsSeen,\n scoreData: state.userBehaviour.score,\n exiting: state.exit,\n };\n }\n );\n\n const allInteractions = useSelector(getAllInteractionsOrdered); //\n const scoringInteractions = useSelector(loadScoringBlocks);\n const numberOfScorableInteractions = scoringInteractions.length;\n\n const [lastInteractionSeen, setLastInteractionSeen] = useState(false);\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 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 passMark,\n };\n\n const interactionCompletion =\n exitProps[exitProps.moduleCompleteInterationRequirement];\n const scoreCompletion = exitProps.moduleCompleteScoreRequirement\n ? exitProps.passed\n : true;\n\n const isComplete = interactionCompletion && scoreCompletion;\n\n exitProps.isComplete = isComplete;\n\n return exitProps;\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\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\nexport const loadScoringBlocks = createSelector(\n loadActiveBlocks,\n scoringBlocks\n);\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 // console.log(props, props?.isInitialized);\n\n const [initialised, setInitialized] = useState(false);\n const [version, setVersion] = useState(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 //\n\n if ((props as any)?.isInitialized) {\n // set it local to the module\n scormInitialized = true;\n setInitialized(true);\n } else {\n SCORM.version = (window as any).scormVersion || Version.OnePointTwo;\n //\n if (SCORM.init()) {\n scormInitialized = true;\n setInitialized(true);\n }\n }\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, sessionId } = 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 ...(sessionId && {\n sessionId,\n }),\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([]);\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 type ModuleEvent = {\n action: string;\n at: string;\n interactionId?: string;\n data?: any;\n};\n\nexport function startModuleEvent(): ModuleEvent {\n //\n\n return {\n action: 'start_module',\n at: new Date().toISOString(),\n };\n}\n\nexport function blurEvent(): ModuleEvent {\n return {\n action: 'blur_module',\n at: new Date().toISOString(),\n };\n}\n\nexport function focusEvent(): ModuleEvent {\n //\n\n return {\n action: 'focus_module',\n at: new Date().toISOString(),\n };\n}\n\nexport function completeModuleEvent(): ModuleEvent {\n return {\n action: 'complete_module',\n at: new Date().toISOString(),\n };\n}\n\nexport function exitModuleEvent(event: { duration: number }): ModuleEvent {\n return {\n action: 'exit_module',\n at: new Date().toISOString(),\n data: event,\n };\n}\n\ntype progressEventData = { progress: number };\n\nexport function progressEvent(event: progressEventData): ModuleEvent {\n //\n\n return {\n action: 'progress',\n data: event,\n at: new Date().toISOString(),\n };\n}\n\ntype scoreEventData = {\n score: number;\n maxScore: number;\n percent: number;\n passMark: number;\n};\nexport function scoreEvent(event: scoreEventData): ModuleEvent {\n return {\n action: 'score_change',\n data: event,\n at: new Date().toISOString(),\n };\n}\n\nexport function enterInteractionEvent(interactionId: string): ModuleEvent {\n //\n\n return {\n action: 'enter_interaction',\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function leaveInteractionEvent(\n interactionId: string,\n duration: number\n): ModuleEvent {\n //\n\n return {\n action: 'leave_interaction',\n interactionId,\n data: { duration },\n at: new Date().toISOString(),\n };\n}\n\nexport function passFailEvent(event: { success: boolean }): ModuleEvent {\n return {\n action: 'pass_fail',\n data: event,\n at: new Date().toISOString(),\n };\n}\n\ntype multichoiceEventData = {\n type: 'multi' | 'single';\n attemptNumber: number;\n response: string | string[];\n responseIds: string[];\n success: boolean;\n};\n\nexport function multichoiceEvent(\n interactionId: string,\n event: multichoiceEventData\n): ModuleEvent {\n //\n\n return {\n action: 'multichoice_attempt',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\ntype sortationEventData = {\n order: string[];\n attemptNumber: string;\n success: string;\n};\n\nexport function sortationEvent(\n interactionId: string,\n event: sortationEventData\n): ModuleEvent {\n return {\n action: 'sortation_attempt',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\ntype feedbackEventData = {\n interactionName: string;\n message: string;\n rating: string;\n};\n\nexport function feedbackEvent(\n interactionId: string,\n event: feedbackEventData\n): ModuleEvent {\n return {\n interactionId,\n action: 'feedback',\n data: event,\n at: new Date().toISOString(),\n };\n}\n\ntype flipcardEventData = {\n flipcardId: string;\n};\n\nexport function flipcardEvent(\n interactionId: string,\n event: flipcardEventData\n): ModuleEvent {\n //\n\n return {\n action: 'flipcard_flip',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function videoPlayEvent(\n interactionId: string,\n event: {\n videoId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'video_play',\n interactionId,\n data: event,\n //\n at: new Date().toISOString(),\n };\n}\n\nexport function videoSeekEvent(\n interactionId: string,\n event: {\n videoId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'video_seek',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\nexport function videoPauseEvent(\n interactionId: string,\n event: {\n videoId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'video_pause',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\nexport function videoFinishEvent(\n interactionId: string,\n event: {\n videoId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'video_finish',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\nexport function audioPlayEvent(\n interactionId: string,\n event: {\n audioId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'audio_play',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\nexport function audioSeekEvent(\n interactionId: string,\n event: {\n audioId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'audio_seek',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\nexport function audioPauseEvent(\n interactionId: string,\n event: {\n audioId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'audio_pause',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\nexport function audioFinishEvent(\n interactionId: string,\n event: {\n audioId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'audio_finish',\n interactionId,\n data: event,\n at: new Date().toISOString(),\n };\n}\n\nexport function enterSlideEvent(\n interactionId: string,\n event: {\n slideId: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'enter_slide',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function exitSlideEvent(\n interactionId: string,\n event: {\n slideId: string;\n duration: number;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'exit_slide',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function accordionOpen(\n interactionId: string,\n event: {\n accordion_id: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'accordion_open',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function accordionClose(\n interactionId: string,\n event: {\n accordion_id: string;\n duration: number;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'accordion_close',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function clickRevealEvent(\n interactionId: string,\n event: {\n ctr_id: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'click_reveal',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function matchingDropEvent(\n interactionId: string,\n event: {\n matching_drop: {\n drag_id: string;\n drop_id: string;\n success: boolean;\n };\n }\n): ModuleEvent {\n //\n\n return {\n action: 'matching_drop',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function matchingCompleteEvent(interactionId: string): ModuleEvent {\n //\n\n return {\n action: 'matching_complete',\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\ntype hotspotClickEventData = {\n hotspot_id: string;\n};\n\nexport function hotspotEvent(\n interactionId: string,\n event: hotspotClickEventData\n): ModuleEvent {\n //\n\n return {\n action: 'hotspot_click',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\ntype hotspotQuizEventData = {\n values: string | number | (string | number)[];\n responseIds: string[];\n type: string;\n success: boolean;\n attempt_number: number;\n};\n\nexport function hotspotQuizEvent(\n interactionId: string,\n event: hotspotQuizEventData\n): ModuleEvent {\n //\n\n return {\n action: 'hotspot_attempt',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function assessmentQuestionEvent(\n interactionId: string,\n event: {\n assessment_id: string;\n question_id: string;\n success: boolean;\n attemptNumber: number;\n responseIds: string[];\n }\n): ModuleEvent {\n //\n\n return {\n action: 'assessment_question_attempt',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function assessmentCompleteEvent(\n assessmentId: string,\n event: {\n assessment_id: string;\n value: number;\n attemptNumber: number;\n success: boolean;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'assessment_complete',\n data: event,\n interactionId: assessmentId,\n at: new Date().toISOString(),\n };\n}\n\nexport function pdfMaximiseEvent(\n interactionId: string,\n event: {}\n): ModuleEvent {\n return {\n action: 'pdf_maximise',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function pdfMinimizeEvent(\n interactionId: string,\n event: {}\n): ModuleEvent {\n return {\n action: 'pdf_maximise',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function sortationUserResponseEvent(\n //\n interactionId: string,\n event: {\n order: string | string[];\n success: boolean;\n attemptNumber: number;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'sortation_user_response',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function sliderSubmitEvent(\n interactionId: string,\n event: {\n value: number;\n success: boolean;\n attemptNumber: number;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'slider_submit',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function textEntryValueEvent(\n interactionId: string,\n event: {\n value: string;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'text_entry_value',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function textEntryResponseEvent(\n interactionId: string,\n event: {\n value: string;\n success: boolean;\n attemptNumber: number;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'text_entry_response',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function textEntryEvent(\n interactionId: string,\n event: {\n value: string;\n success: boolean;\n attemptNumber: number;\n }\n): ModuleEvent {\n return {\n action: 'text_entry_submit',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function dropdownOptionResponseEvent(\n interactionId: string,\n event: {\n dropdown_id?: string;\n value: string;\n success: boolean;\n selectedIndex: number;\n attemptNumber: number;\n }\n): ModuleEvent {\n //\n\n return {\n action: 'dropdown_option_response',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\n}\n\nexport function dropdownResponseEvent(\n interactionId: string,\n event: {\n success: boolean;\n attemptNumber: number;\n }\n): ModuleEvent {\n return {\n action: 'dropdown_response',\n data: event,\n interactionId,\n at: new Date().toISOString(),\n };\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","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","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 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(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 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(false);\n\n const img = useRef(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 \n \n \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 \n );\n};\n\nconst AssessmentContext = createContext({\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 \n \n {backgroundGradient && !backgroundGradientFullHeight && (\n \n )}\n\n {window.dev() || !parallax ? (\n \n ) : (\n \n )}\n\n {children}\n \n \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 `
`,\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(/\\

/g, '')\n .replace(/\\<\\/p\\>/g, '
');\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 = `${liInnerHTML}`;\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 // add these additioanal checks for if there have been other nodes not appendChildable\n //\n if (closestLi && closestLi?.tagName && closestLi?.appendChild) {\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 = (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(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 \n \n\n {!topicAsAssessment && (\n {\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 setHover(true)}\n onMouseOut={() => setHover(false)}\n onClick={() => {\n setCurrentBlock(focusedNodeId !== id ? { id } : null);\n }}\n >\n Settings\n

\n\n {\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\n window.open(`${newWindowUrl}${previewLocation}`, 'preview');\n }\n }}\n data-info-bubble=\"Preview this interaction\"\n />\n\n {window.reviewModeEnabled && !reviewToolToggleOn && (\n {\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 \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 {\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 \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 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(null);\n const [fauxFocus, setFauxFocus] = useState(false);\n const [menu, setMenu] = useState(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(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 {\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 \n {fauxFocus && (\n \n )}\n \n {\n hiddenButton.current?.focus();\n setMenu(false);\n }}\n />\n \n ,\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({\n x: 0,\n y: window.innerHeight * 2,\n width: 0,\n height: 0,\n });\n\n const bubble = useRef(null);\n const arrow = useRef(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 \n \n \n \n \n \n \n \n \n \n \n\n \n {content}\n \n ,\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 ? : 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(null);\n\n useLayoutEffect(() => {\n if (title.current) {\n const { height } = title.current.getBoundingClientRect();\n setTitleHeight(height);\n }\n }, []);\n\n return (\n \n \n {name}\n \n \n {children}\n \n \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 \n \n {name}\n {isCurrentLocation ? ' (current)' : ''}\n \n\n {!usingExternalURL && isTargetLocation && }\n \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(location);\n\n const topics = getTopics();\n\n const { currentInteraction } = useSelector((state: any) => state);\n\n const topicPanelsContainer = useRef(null);\n\n // set to false on init\n // true only when we legit click to update\n const hasUpdated = useRef(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 \n \n \n {!noActions && (\n \n {\n updateLocalLocation(localLocation === NEXT ? location : NEXT);\n }}\n />\n {\n updateLocalLocation(localLocation === EXIT ? location : EXIT);\n }}\n />\n\n {\n updateLocalLocation(\n localLocation === SET_MODULE_COMPLETE\n ? location\n : SET_MODULE_COMPLETE\n );\n }}\n />\n\n {\n updateLocalLocation(\n localLocation === SET_MODULE_COMPLETE_AND_EXIT\n ? location\n : SET_MODULE_COMPLETE_AND_EXIT\n );\n }}\n />\n\n {\n updateLocalLocation(\n localLocation === RESET_MODULE ? location : RESET_MODULE\n );\n }}\n />\n \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 \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 {\n updateLocalLocation(\n interactionSId == interactionLocation\n ? location\n : `${topicSId}/${interactionSId}`\n );\n }}\n />\n );\n })}\n \n );\n })}\n \n \n \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(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 \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 \n \n \n \n \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(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(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(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 \n {/* @ts-ignore */}\n 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 \n )}\n\n {backgroundStyle === 'animatedOrbs' && (\n \n )}\n\n {backButton && }\n {topicMenu && }\n\n {/* @ts-ignore */}\n \n {children}\n \n\n {window.dev() && (\n \n )}\n \n\n \n \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(undefined);\n\n const focusedNodeIdOnOpen = useSelector(\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(null);\n const contentContainer = useRef(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 \n {\n if (disableNullSpaceClick) {\n return;\n }\n //\n onClose!();\n }}\n aria-hidden=\"true\"\n >\n\n e.stopPropagation()}\n tabIndex={0}\n >\n {children}\n \n ,\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 setState(false)}>{children};\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
;\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 \r\n {children}\r\n \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

\n {children}\n

\n );\n\n case 'list-item':\n return (\n
  • \n {children}\n
  • \n );\n\n case 'bulleted-list':\n return (\n
      \n {children}\n
    \n );\n\n case 'numbered-list':\n return (\n
      \n {children}\n
    \n );\n\n case 'indented-list':\n return (\n
      \n {children}\n
    \n );\n\n case 'indented':\n return (\n \n {children}\n
    \n );\n\n case 'textAlignLeft':\n return (\n
    \n {children}\n
    \n );\n\n case 'textAlignCenter':\n return (\n
    \n {children}\n
    \n );\n\n case 'textAlignRight':\n return (\n
    \n {children}\n
    \n );\n\n case 'heading-one':\n return

    {children}

    ;\n\n case 'heading-two':\n return

    {children}

    ;\n\n case 'heading-three':\n return

    {children}

    ;\n\n case 'heading-four':\n return

    {children}

    ;\n\n case 'heading-five':\n return
    {children}
    ;\n\n case 'heading-six':\n return
    {children}
    ;\n\n case 'code':\n return (\n \n {children}\n \n );\n\n case 'br':\n return
    
    ;\n\n case 'span':\n return {children};\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 \n {children}\n \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 {children};\n\n case 'italic':\n return {children};\n\n case 'underline':\n return {children};\n\n case 'superscript':\n return {children};\n\n case 'subscript':\n return {children};\n\n case 'indent':\n return {children};\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 \n {children}\n \n );\n case 'fontSize':\n const fontSizePXToREM = `${Number(\n String(data.fontSize).replace(/px/g, '')\n ) / 16}rem`;\n\n return (\n \n {children}\n \n );\n case 'color':\n return (\n \n {children}\n \n );\n case 'lang':\n return (\n \n {children}\n \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 \n {children}\n \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 \n {children}\n \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 \n \n {children}\n \n {lang && (\n \n *{lang}\n \n )}\n \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 {children};\n case 'italic':\n return {children};\n case 'underline':\n return {children};\n\n case 'fontFamily':\n const fontFamily = data.get('fontFamily');\n\n return (\n \n {children}\n \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 \n {children}\n \n );\n\n case 'color':\n return (\n \n {children}\n \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 \n {children}\n \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();\n const variable = useRef();\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 {\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(' ');\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 \n {\n try {\n editor.moveToRangeOfNode(node).delete();\n } catch (err) {}\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n\n case 'indent': {\n return (\n \n {children}\n \n );\n }\n\n case 'superscript': {\n return (\n \n {children}\n \n );\n }\n\n case 'subscript': {\n return (\n \n {children}\n \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
  • \n {/* {children} */}\n {children}\n
  • \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
  • {children}
  • ;\n // return
  • {children}
  • ;\n\n case 'bulleted-list':\n return (\n
      \n {children}\n
    \n );\n\n case 'numbered-list':\n return (\n
      \n {children}\n
    \n );\n\n case 'indented-list':\n return (\n
      \n {children}\n
    \n );\n\n case 'indented':\n return (\n
    \n {children}\n
    \n );\n\n case 'textAlignLeft':\n return (\n
    \n {children}\n
    \n );\n\n case 'textAlignCenter':\n return (\n
    \n {children}\n
    \n );\n\n case 'textAlignRight':\n return (\n
    \n {children}\n
    \n );\n\n case 'heading-one':\n return (\n

    \n {children}\n

    \n );\n\n case 'heading-two':\n return (\n

    \n {children}\n

    \n );\n\n case 'heading-three':\n return (\n

    \n {children}\n

    \n );\n\n case 'heading-four':\n return (\n

    \n {children}\n

    \n );\n\n case 'heading-five':\n return (\n
    \n {children}\n
    \n );\n\n case 'heading-six':\n return (\n
    \n {children}\n
    \n );\n\n case 'paragraph': {\n return (\n

    \n {children}\n

    \n );\n }\n\n case 'code': {\n return (\n
    \n          {children}\n        
    \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 {\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 \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 \n {children}\n \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 \n \n \n \n ) : (\n \n \n \n \n );\n};\n\nexport const TextToSpeech = props => {\n const [color, setColor] = useState(undefined);\n const [canPlay, setCanPlay] = useState(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();\n const textToSpeechBtn = useRef(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 {\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 \n \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((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 \n \n\n {'speechSynthesis' in window &&\n textToSpeech &&\n enableTextToSpeechBtn &&\n content && (\n \n )}\n \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(null);\n const editor = useRef(null);\n const clearedFormatting = useRef(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 \n );\n }\n\n return (\n {\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 {\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}

    `)\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 \n )}\n\n {selected && parent.updateEditor && parent.updateEditor(Math.random())}\n\n {!selected && }\n \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 \n \n \n \n \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(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 {\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 \n \n \n )}\n \n );\n\n updateButtonHeightForIE(buttonRef.current, buttonShape);\n\n return window.dev() ? (\n \n {navigationButton}\n\n {\n if (selected) {\n return;\n }\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && }\n \n \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(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 {\n speechSynthesisCancel();\n onClick && onClick();\n }}\n >\n {label}\n \n );\n\n updateButtonHeightForIE(buttonRef.current, buttonShape);\n\n return window.dev() ? (\n \n {genericButton}\n\n {\n if (selected) {\n return;\n }\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && }\n \n \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 {\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 && }\r\n \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 \r\n {children}\r\n \r\n {\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 \r\n )}\r\n\r\n {!selected && }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst EditWrapper2 = ({ id, mediaParentId, selected, children }) => {\r\n return (\r\n \r\n {children}\r\n \r\n {\r\n e.stopPropagation();\r\n if (selected) {\r\n return;\r\n }\r\n setCurrentBlock({ id });\r\n }}\r\n >\r\n {!selected && }\r\n \r\n \r\n \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 \r\n {children}\r\n\r\n {\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 && }\r\n \r\n \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 \n \n \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 \n ) : (\n \n \n \n {children}\n \n \n \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(false);\n const container = useRef(null);\n const circle = useRef(null);\n const img = useRef(null);\n const hyperLink = useRef(null);\n\n const pageBackgroundColor = useRef('#fff');\n const aHiliteColor = useRef('#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(\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 \n ) : (\n \n \n\n \n \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);\n const { overideStyles } = useContext(ImageZoomContext);\n\n const imageZoom = useRef(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 \n {\n e.stopPropagation();\n setZoom(OPEN);\n }}\n aria-label=\"expand image\"\n title={description}\n >\n \n \n \n\n {zoom &&\n (createPortal(\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(null);\n const closeBtn = useRef(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 {\n e.stopPropagation();\n }}\n >\n \n \n \n\n {\n e.stopPropagation();\n setZoom(CLOSE);\n }}\n >\n \n \n \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('#fff');\r\n const aHiliteColor = useRef('#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(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(\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 \r\n {children}\r\n \r\n ),\r\n '1': (\r\n \r\n {children}\r\n \r\n ),\r\n '2': (\r\n \r\n {children}\r\n \r\n ),\r\n '3': (\r\n \r\n {children}\r\n \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 \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <_>\r\n \r\n = 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 \r\n ) : (\r\n \r\n {linkData ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n\r\n {imageZoom && (\r\n \r\n )}\r\n \r\n \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 ;\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 \n {children}\n \n );\n};\n\nconst Bookmark = props => {\n const { updateBookmarkState } = props;\n const [bookmark, setBookmark] = useState(\n // (!window.dev() && 'true') ||\n // 'true' || null\n null\n );\n\n const [showLoadingBookmark, setShowLoadingBookmark] = useState(\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 '

    Would you like to return to where you left off?

    ',\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 \n {\n setBookmark(null);\n //\n updateBookmarkState(2);\n\n resetAriaAndOverflowY();\n }}\n >\n \n {img ? (\n cloneElement(img, {\n placeholder: bookmark_graphic,\n })\n ) : (\n \n )}\n\n \n {txt ? (\n txt\n ) : (\n \n Would you like to return to where you left off?\n

    \n )}\n \n\n \n {noBtn ? (\n cloneElement(noBtn, {\n onClick() {\n noBtnOnClick();\n },\n })\n ) : (\n {\n noBtnOnClick();\n }}\n >\n No\n \n )}\n {/* */}\n {yesBtn ? (\n cloneElement(yesBtn, {\n onClick() {\n yesBtnOnClick();\n },\n })\n ) : (\n {\n yesBtnOnClick();\n }}\n >\n Yes{' '}\n \n {showLoadingBookmark && }\n \n \n )}\n \n \n \n
    \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
    setHover(true)} onMouseOut={() => setHover(false)}>\n {children(hover)}\n
    \n );\n};\n\nconst DashboardRow = props => {\n const { color = '#000', background = '#fff', children } = props;\n\n return (\n \n {children}\n \n );\n};\n\nconst Templates = () => {\n return (\n <_>\n
    \n Start with a template\n
    \n
    \n Click here to access library\n
    \n
    \n {\n pubSub.publish('SHOW_MODULE_TEMPLATES', {\n showModuleTemplates: true,\n });\n }}\n >\n Templates\n \n
    \n \n );\n};\n\nconst DashBoard = () => {\n // const [gettingStarted, setGettingStarted] = useState(false);\n\n const paddingX = '10vw';\n const paddingY = '108px';\n\n return (\n \n \n \n\n \n
    \n \n Jump straight into it\n \n \n Start with an interaction\n \n
    \n \n\n \n \n {hover => (\n {\n parent.setNewSectionWizard &&\n parent.setNewSectionWizard(true);\n }}\n />\n )}\n \n
    Add an interaction
    \n \n
    \n\n \n \n \n {hover => (\n \n \n {\n pubSub.publish('SHOW_GETTING_STARTED_VIDEO', {\n showGettingStartedVideo: true,\n });\n }}\n />\n\n \n \n \n )}\n \n \n\n \n
    Watch a quick
    \n
    “how to” video
    \n \n\n \n
    \n \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 ;\n }\n\n return (\n \n {!window.dev() ? (\n <_>\n \n \n There are no interactions here yet\n \n \n ) : (\n <_>\n \n {\n parent.setNewSectionWizard && parent.setNewSectionWizard(true);\n }}\n >\n \n \n \n Add an interaction.\n \n \n )}\n \n );\n};\n\nconst AddInteractionBtn = () => {\n return (\n \n \n \n \n \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') `\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') `\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 \n \n \n \n \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(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';\nimport { HostingContext } from 'hosting/context';\nimport { accordionOpen, accordionClose } from 'hosting/events';\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({\n toggle: () => {},\n isOpen: () => false,\n});\n\ntype IsAppleAndroid = {\n id: string;\n isOpen: boolean;\n borderRadius: number;\n fieldBodyTextColor: string;\n children: React.ReactElement;\n};\n\nconst IsAppleAndroid = (props: IsAppleAndroid) => {\n const { id, isOpen, borderRadius, fieldBodyTextColor, children } = props;\n\n useLayoutEffect(() => {\n const rowFieldBody = document.querySelector(`#i${id}`);\n rowFieldBody && updateReadOnlyText(rowFieldBody);\n }, [isOpen, fieldBodyTextColor]);\n\n return (\n span {\n color: ${fieldBodyTextColor};\n }\n\n overflow: hidden;\n `}\n aria-hidden={!isOpen}\n aria-live=\"assertive\"\n >\n {children}\n \n );\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 const hostingCtx = useContext(HostingContext);\n // console.log({ hostingCtx });\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\n const { id, idx } = props;\n\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(null);\n const headerHeight = useRef(0);\n\n const now = useRef(Date.now());\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 useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n if (interactionContext?.id !== window['sectionInView']?.id) {\n // console.log(interactionContext?.id, window['sectionInView']?.id);\n return;\n }\n\n if (isFieldOpen) {\n hostingCtx?.data(\n accordionOpen(interactionContext.id, { accordion_id: id })\n );\n\n return;\n }\n\n if (now.current) {\n hostingCtx?.data(\n accordionClose(interactionContext.id, {\n accordion_id: id,\n duration: Date.now() - now.current,\n // / 1000,\n })\n );\n\n now.current = Date.now();\n }\n }, [isFieldOpen]);\n\n return (\n \n \n \n {React.Children.map(children, child =>\n cloneElement(child, { trigger, isOpen: isFieldOpen })\n )}\n \n \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(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 \n {\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 \n {children}\n \n \n \n \n \n \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(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 return (\n \n {children}\n \n );\n }\n\n return (\n {\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 span {\n color: ${fieldBodyTextColor};\n }\n `}\n >\n {children}\n \n \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 \n {React.Children.map(children, (c, i) => cloneElement(c, { idx: i }))}\n \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(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 {\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 \n {children}\n \n ) : (\n children\n )}\n \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 \n \n \n \n \n );\n\n return !lastPageMessageReceived ? (\n \n
    \n This is the last page of your module. Consider adding an 'Exit' action\n and label, or removing the button altogether.\n
    \n\n {\n e.stopPropagation();\n setShowLastPageMessage((lastPageMessageReceived = true));\n }}\n >\n Got it!\n \n \n \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 {\n e.stopPropagation();\n if (isEditActive) {\n return;\n }\n setCurrentBlock({ id });\n }}\n >\n \n {label}\n \n {!isEditActive && }\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 \n )}\n \n ) : (\n \n {label}\n \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(null);\n","import React, { useState, useRef, useEffect } from 'react';\n\nconst useIntersectionObserver = (updateWhenIsNotIntersecting = false) => {\n const [entry, update] = useState(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(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 \n \n \n {text}\n \n \n
    {btn}
    \n \n \n
    \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 { InteractionContext as interactionContextFromContainerLogical } from 'components/Layouts/ContainerLogical';\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 ReactElement,\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';\nimport { HostingContext } from 'hosting/context';\nimport {\n videoPlayEvent,\n videoSeekEvent,\n videoPauseEvent,\n videoFinishEvent,\n} from 'hosting/events';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\nimport pubSub from 'services/pubSub';\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 {\n setShowTranscript(true);\n }}\n >\n {showTranscriptLabel}\n \n );\n};\n\nconst EditWrapper = ({ id, selected }) => {\n return (\n \n {\n e.stopPropagation();\n if (selected) return;\n setCurrentBlock({ id });\n }}\n >\n {!selected && (\n \n )}\n\n {!selected && }\n \n \n );\n};\n\ntype VideoProps = {\n id: string | any;\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: string;\n focusColor: string;\n autoPlay: boolean;\n playInline: boolean;\n isSquare: boolean;\n presetCustomAspectRatio: 'preset' | 'custom';\n aspectRatio: string;\n vWidth: number;\n vHeight: number;\n children: ReactElement;\n};\n\nfunction getAspectRatio(width, height) {\n const gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\n const divisor = gcd(width, height);\n return `${width / divisor}/${height / divisor}`;\n}\n\nconst Video = (props: VideoProps) => {\n const { entry, init } = useIntersectionObserver(true);\n\n const {\n id,\n src,\n videoSrc,\n maxWidth = 960,\n useTranscript,\n showTranscriptFontSize = 12,\n showTranscriptFontColor = '#000',\n showTranscriptLabel = 'Show transcript',\n viewingTranscriptUnlocksInteraction = false,\n\n posterSrc,\n presetCustomAspectRatio = 'preset',\n vWidth,\n vHeight,\n focusColor = '#000',\n children,\n } = props;\n\n // for local testing of the ReactPlayer when we have a video coming from cloudFlare\n //\n let cloudflareUid = props?.cloudflareUid;\n // nix the Uid\n // cloudflareUid = null;\n\n let aspectRatio;\n\n if (presetCustomAspectRatio === 'preset') {\n aspectRatio = props?.aspectRatio;\n } else {\n if (vWidth && vHeight) {\n aspectRatio = getAspectRatio(vWidth, vHeight);\n }\n }\n\n // defaults\n let { hideControls = false, autoPlay = false, playInline = false } = props;\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 [hasPlayedVideoWithPoster, setHasPlayedVideoWithPoster] = useState(\n false\n );\n const [calcHeight, setCalcHeight] = useState(maxWidth * 0.5625);\n\n const [showTranscript, setShowTranscript] = useState(false);\n\n const highContrast = useSelector((state: State) => {\n return state?.theme?.highContrast;\n });\n\n const focusedNodeId = useSelector((state: State) => {\n return state.focusedNodeId;\n });\n\n const selected = focusedNodeId === id;\n\n const context = (useContext(interactionContext) ||\n useContext(interactionContextFromContainerLogical)) as Block;\n\n // we should only unlock interaction when in the basic TextAndImage context\n // otherwise we might unlock interaction early. and that'd be a wrongness\n const shouldUnlockInteraction = context?.meta?.subType === 'TextAndImage';\n\n // let's grab the context id explicitly;\n const { id: contextId } = context || {};\n\n const hostingCtx = useContext(HostingContext);\n\n const mounted = useRef(false);\n const video = useRef(null);\n\n // need to get the correct type for player\n const player = useRef(null);\n\n const hasAutoPlayed = useRef(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 pS = pubSub.subscribe('KILL_ALL_PLAYING_VIDEO', ({ _id_ }) => {\n // console.log(\n // // { id, _id_ },\n // id !== _id_ ? `video with id ${id} pauses` : `video with id ${id} plays`\n // );\n\n if (id !== _id_) {\n setIsPlaying(false);\n }\n });\n\n return pS;\n });\n\n useEffect(() => {\n const onWindowResize = () => {\n const { width } = video.current!.getBoundingClientRect();\n\n if (aspectRatio) {\n const [a, b] = aspectRatio?.split('/') || [];\n\n setCalcHeight(width * (b / a));\n return;\n }\n\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 hostingCtx?.data(videoPauseEvent(contextId, id));\n }\n }, [entry?.isIntersecting]);\n\n useEffect(() => {\n if (isPlaying) {\n killAllAudio();\n //\n hostingCtx?.data(videoPlayEvent(contextId, id));\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${contextId}`);\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 (\n shouldUnlockInteraction &&\n viewingTranscriptUnlocksInteraction &&\n showTranscript\n ) {\n unlockInteraction(contextId);\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 // if we have an aspectRatio. videoHeight will be 100% the height of video-player-container\n // if not we set it to the ' default ' calcHeight which has been the height for all times\n // ( so no change to existing )\n // if none of these conditions we'll fallBack to 100%\n //\n const videoHeight = aspectRatio ? '100%' : calcHeight || '100%';\n\n console.log(\n !window.dev(),\n !cloudflareUid,\n posterSrc,\n hasPlayedVideoWithPoster\n );\n\n const videoPlayer = (\n \n <_>\n {cloudflareUid ? (\n {\n // console.log('CLOUDFLARE PLAYER PLAYS. . .');\n pubSub.publish('KILL_ALL_PLAYING_VIDEO', { _id_: id });\n //\n setIsPlaying(true);\n //\n hostingCtx?.data(videoPlayEvent(contextId, id));\n }}\n onSeek={() => {\n hostingCtx?.data(videoSeekEvent(contextId, id));\n }}\n onPause={() => {\n setIsPlaying(false);\n //\n hostingCtx?.data(videoPauseEvent(contextId, id));\n }}\n onEnded={() => {\n shouldUnlockInteraction && unlockInteraction(contextId);\n //\n hostingCtx?.data(videoFinishEvent(contextId, 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 {}}\n onPlay={() => {\n // console.log('REACT PLAYER PLAYS. . .');\n pubSub.publish('KILL_ALL_PLAYING_VIDEO', { _id_: id });\n //\n setIsPlaying(true);\n //\n hostingCtx?.data(videoPlayEvent(contextId, id));\n }}\n onSeek={() => {\n hostingCtx?.data(videoSeekEvent(contextId, id));\n }}\n onPause={() => {\n setIsPlaying(false);\n //\n hostingCtx?.data(videoPauseEvent(contextId, id));\n }}\n onEnded={() => {\n shouldUnlockInteraction && unlockInteraction(contextId);\n //\n hostingCtx?.data(videoFinishEvent(contextId, 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 />\n )}\n \n\n {!window.dev() && (\n <_>\n {hideControls && !isYouTube && (\n {\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 \n )}\n \n )}\n \n )}\n\n {!window.dev() &&\n !cloudflareUid &&\n posterSrc &&\n !hasPlayedVideoWithPoster && (\n {\n if (!hasPlayedVideoWithPoster) {\n //\n // this is to 'manually' let ReactPlayer know we've clicked the poster\n // and it should respond appropriately\n player?.current?.handleClickPreview();\n //\n //\n setHasPlayedVideoWithPoster(true);\n setIsPlaying(true);\n //\n }\n }}\n css={css({\n all: 'unset',\n position: 'absolute',\n left: -2,\n top: -2,\n width: 'calc(100% + 4px)',\n height: 'calc(100% + 4px)',\n boxShadow: '0 0 0 4px rgba(0, 0, 0, 0)',\n cursor: 'pointer',\n background: 'rgba(255, 255, 255, 0)',\n ':hover': {\n background: 'rgba(255, 255, 255, 0.05)',\n },\n ':focus-visible': {\n boxShadow: `0 0 0 ${highContrast ? 3 : 1}px ${focusColor}`,\n },\n transition: 'background 0.1s, box-shadow 0.2s',\n })}\n />\n )}\n\n {window.dev() && }\n \n );\n\n const showTranscriptBtn = (\n
    \n \n
    \n );\n\n return (\n <_>\n {window.dev() ? (\n \n {videoPlayer}\n\n {useTranscript && showTranscriptBtn}\n \n ) : (\n \n {videoPlayer}\n\n {useTranscript && showTranscriptBtn}\n \n )}\n\n {showTranscript && (\n {\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 \n )}\n \n );\n};\n\nexport const CloudflareVideo = props => {\n const { id, cloudflareUid, ...rest } = props;\n const { height } = rest;\n\n return (\n \n \n \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 \n \n \n {text}\n \n \n
    {btn}
    \n \n \n
    \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 { Block } from '@chameleoncreator/creator-app';\nimport Audio_default from 'assets/Audio.png';\nimport { interactionContext } from 'components/lib/TextAndImage/interactionContext';\nimport { InteractionContext as interactionContextFromContainerLogical } from 'components/Layouts/ContainerLogical';\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';\nimport SVG from 'components/lib/SVG';\nimport ReactBodymovin from 'react-lottie';\nimport imagePlaceholder from 'assets/Character A.png';\nimport headphonesWoman from 'assets/animations/headphonesWoman.js';\nimport { HostingContext } from 'hosting/context';\nimport {\n audioPlayEvent,\n audioSeekEvent,\n audioPauseEvent,\n audioFinishEvent,\n} from 'hosting/events';\nimport React from 'react';\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 \n ) : null;\n};\n\nconst ShowTranscriptBtn = ({\n id,\n setShowTranscript,\n showTranscriptFontSize = 12,\n showTranscriptFontColor = '#000',\n showTranscriptLabel = 'Show transcript',\n}) => {\n return (\n {\n setShowTranscript(true);\n }}\n aria-label=\"Show transcript\"\n >\n {showTranscriptLabel}\n \n );\n};\n\ntype AudioProps = {\n id: string | any;\n audioSrc: string;\n imgSrc: string;\n description: string;\n useTranscript: boolean;\n showTranscriptFontSize: number;\n showTranscriptFontColor: string;\n viewingTranscriptUnlocksInteraction: boolean;\n showTranscriptLabel: string;\n maxHeight: boolean;\n autoPlay: boolean;\n children?: any;\n};\n\nconst Audio = (props: AudioProps) => {\n const { entry, init } = useIntersectionObserver(true) as any;\n\n const {\n id,\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 children,\n } = props;\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\n const context = (useContext(interactionContext) ||\n useContext(interactionContextFromContainerLogical)) as Block;\n\n // we should only unlock interaction when in the basic TextAndImage context\n // otherwise we might unlock interaction early. and that'd be a wrongness\n const shouldUnlockInteraction = context?.meta?.subType === 'TextAndImage';\n\n // let's grab the context id explicitly;\n const { id: contextId } = context || {};\n\n const hostingCtx = useContext(HostingContext);\n\n const mounted = useRef(false);\n const audioInteraction = useRef(null);\n const audio = useRef(null);\n const audioPausedByUser = useRef(false);\n const player = useRef(null);\n\n let autoPlay = 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(contextId);\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(contextId);\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 //\n }\n } else {\n audio.current.pause();\n //\n }\n }\n\n let Img =\n imgSrc === Audio_default ? (\n \n ) : (\n \n );\n\n Img = (\n \n );\n\n const showTranscriptBtn = (\n
    \n \n
    \n );\n\n return (\n <_>\n {window.dev() ? (\n \n {Img}\n\n \n \n \n {useTranscript && showTranscriptBtn}\n \n {\n e.stopPropagation();\n if (selected) return;\n setCurrentBlock({ id });\n }}\n >\n {!selected && }\n \n \n \n ) : (\n \n {Img}\n\n \n {\n setIsPlaying(true);\n //\n hostingCtx?.data(audioPlayEvent(contextId, id));\n }}\n onSeeked={() => {\n //\n hostingCtx?.data(audioSeekEvent(contextId, id));\n }}\n onPause={() => {\n audioPausedByUser.current = true;\n setIsPlaying(false);\n //\n hostingCtx?.data(audioPauseEvent(contextId, id));\n }}\n onEnded={() => {\n hostingCtx?.data(audioFinishEvent(contextId, id));\n }}\n css={css({\n width: '100%',\n })}\n autoPlay={autoPlay && entry && entry.isIntersecting}\n controls\n />\n \n {useTranscript && showTranscriptBtn}\n \n )}\n\n {showTranscript && (\n {\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 \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 {\n e.stopPropagation();\n\n if (selected) return;\n\n setCurrentBlock({ id });\n }}\n >\n {children}\n\n {!selected && }\n \n );\n};\n\nconst EditWrapper1 = ({ id, selected, children }) => {\n return (\n \n {children}\n \n {\n e.stopPropagation();\n\n if (selected) return;\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && }\n\n {!selected && }\n \n \n \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(null);\n const reactBodyMovin = useRef(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 \n {children}\n ,\n \n {children}\n ,\n \n {children}\n ,\n ][editWrapperType];\n // editWrapperType === 0 ? (\n // \n // {children}\n // \n // ) : (\n // \n // {children}\n // \n // )\n }\n : ({ children }) => <_>{children};\n\n return (\n \n \n {hasAnimationData ? (\n \n
    \n \n
    \n \n ) : (\n ''\n )}\n
    \n \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 \n {children[child]}\n \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 {\n e.stopPropagation();\n\n if (selected) return;\n\n // console.log({ mediaParentId });\n\n setCurrentBlock({ id });\n }}\n >\n {children}\n\n {!selected && }\n \n );\n};\n\n// ${!selected && 'border-radius: 50%;'}\nconst EditWrapper1 = ({ id, mediaParentId, selected, children }) => {\n return (\n \n {children}\n \n {\n e.stopPropagation();\n\n if (selected) return;\n\n // console.log({ mediaParentId });\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && (\n // \n \n )}\n\n {!selected && }\n \n \n \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 {\n setLoaded(true);\n }}\n >\n {!loaded && (\n \n \n \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(false);\n const [fullscreenMode, setFullscreenMode] = useState(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 {\n setIFrameHovered(true);\n }}\n onMouseOut={() => {\n setIFrameHovered(false);\n }}\n >\n {window.dev() ? (\n \n \n {!loaded && (\n \n \n \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(false);\n const [fullscreenMode, setFullscreenMode] = useState(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 {\n setIFrameHovered(true);\n }}\n onMouseOut={() => {\n setIFrameHovered(false);\n }}\n >\n {window.dev() ? (\n \n \n \n ) : (\n \n )}\n\n {!!allowFullScreen &&\n (!fullscreenMode ? (\n {\n setFullscreenMode(true);\n }}\n >\n \n Full screen\n \n ) : (\n {\n setFullscreenMode(false);\n }}\n />\n ))}\n \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 \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(false);\n const container = useRef(null);\n\n return (\n \n \n {window.dev() ? (\n \n \n \n \n \n ) : (\n {\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 \n \n )}\n\n {includeText && (\n \n {children}\n \n )}\n \n \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 \n {txt}\n \n \n );\n },\n\n Accordion: ({ children, ...props }) => {\n return (\n
    \n {children}\n
    \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 \n );\n },\n\n Video: ({ children, ...props }) => {\n return (\n <_>\n \n {props.useTranscript &&
    }\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 \n {children}\n \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return render(child, ComponentsObject);\n })}\n \n \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","import { createContext } from 'react';\n\nexport const interactionContext = createContext(null);\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 \n \n \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 {\n onClick();\n }}\n >\n \n \n \n
    \n \n \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 \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 {\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","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(undefined);\n\n const [imgHeight, setImgHeight] = useState(carouselHeight);\n const debounceSetImgHeight = useRef();\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 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 \n {backGround && (\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 \n\n \n Showing slide {currentIndex + 1} of {React.Children.count(children)}:\n \n\n {includeSlideIndicators && (\n \n \n {React.Children.map(children, (_, i) => (\n \n ))}\n \n \n )}\n\n 0}\n color={prevNextBtnColor}\n hoverColor={prevNextBtnHoverColor}\n arrowColor={prevNextArrowColor}\n onClick={carouselContext[Direction.Prev]}\n />\n \n \n \n );\n});\n\nexport default CarouselLayout;\n","import React, {\n ReactElement,\n useState,\n useRef,\n createContext,\n useEffect,\n useContext,\n} from 'react';\n\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport CarouselLayout from './CarouselLayout';\n\nimport { HostingContext } from 'hosting/context';\nimport { enterSlideEvent, exitSlideEvent } from 'hosting/events';\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(undefined);\n\nconst Carousel = (props: CarouselProps) => {\n const interactionContext = useContext(InteractionContext);\n const hostingCtx = useContext(HostingContext);\n\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\n const prev = (): void => {\n if (currentIndex >= 1) {\n setPreviousIndex(currentIndex);\n setCurrentIndex(_currentIndex => _currentIndex - 1);\n }\n };\n\n const goto = (slideNum: number): void => {\n console.log('goto :', slideNum);\n\n setPreviousIndex(currentIndex);\n setCurrentIndex(slideNum);\n };\n\n const now = useRef(Date.now());\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 useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n hostingCtx?.data(\n enterSlideEvent(interactionContext.id, {\n slideId: children[currentIndex || 0]?.props.id,\n })\n );\n\n if (currentIndex !== previousIndex && now.current) {\n hostingCtx?.data(\n exitSlideEvent(interactionContext.id, {\n slideId: children[currentIndex || 0]?.props.id,\n duration: Date.now() - now.current,\n // / 1000,\n })\n );\n\n now.current = Date.now();\n }\n }, [currentIndex]);\n\n return (\n \n {children}\n \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(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 === '

    ') {\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 \n \n \n {img}\n \n \n\n {includeText && (\n \n {text}\n \n )}\n \n ) : (\n {\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 \n \n {img}\n \n \n\n {includeText && (\n \n {text}\n \n )}\n \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 \n {txt}\n \n \n );\n },\n Video,\n Media,\n Carousel,\n Slide: ({ children, ...props }) => {\n return (\n \n {children}\n \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 \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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 \n \n Click a button to change the content\n \n\n \n {children.map((child: any, index) =>\n React.cloneElement(child, {\n updateFlipCardSeen,\n numFlipCards: children.length,\n index,\n })\n )}\n \n \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(\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 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 \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\nimport { HostingContext } from 'hosting/context';\nimport { flipcardEvent } from 'hosting/events';\n\nconst Flipcard = props => {\n const { id, updateFlipCardSeen, numFlipCards, index, children } = props;\n const [cardHasFocus, setCardHasFocus] = useState(false);\n\n const [{ rotation, visibleFace }, updateCardDisplay] = useState({\n rotation: 0,\n visibleFace: 'front',\n });\n\n const [cardContent, setCardContent] = useState();\n\n let [frontFaceMedia, backFaceMedia] = children;\n\n const [edgeOpacityHack, setEdgeOpacityHack] = useState(0);\n\n const context = useContext(interactionContext);\n const hostingCtx = useContext(HostingContext);\n\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(null);\n const flipCardFaces = useRef(undefined);\n const flipCardInit = useRef(false);\n const hiddenButton = useRef(null);\n const delayReadingCardContent = useRef(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 if (window.dev()) {\n // && hostingCtx?.data\n return;\n }\n\n const flipcard_flip = {\n flipcardId: id,\n };\n\n hostingCtx?.data(flipcardEvent(context.id, flipcard_flip));\n\n // console.log(flipcard_flip);\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 .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 {\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 \n {frontFaceMediaIsSVG\n ? cloneElement(frontFaceMedia, {\n key: frontFaceMediaIsSVGKey.current,\n })\n : frontFaceMedia}\n \n \n {backFaceMediaIsSVG\n ? cloneElement(backFaceMedia, {\n key: backFaceMediaIsSVGKey.current,\n })\n : backFaceMedia}\n \n \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 \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 \n {txt}\n \n \n );\n },\n\n Flipcards: Flipcards_v2,\n Flipcard({ children, ...props }) {\n return (\n \n {children}\n \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 \n );\n },\n\n Video,\n Audio,\n // these can return null\n Transcript: () => null,\n EditableButton: () => null,\n //\n SVG: ({ children, ...props }) => (\n \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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 \n \n \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
    e.preventDefault()}>\n {\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 \n \n {acceptContent}\n \n\n \n \n \n \n \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 \n {children}\n\n \n \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 \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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 // \n // \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 \n );\n },\n Video: ({ children, ...props }) => {\n let freshProps = useFreshProps(props.id);\n freshProps = {\n ...props,\n ...freshProps,\n };\n\n return ;\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 ;\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 ;\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 ;\n },\n ContinueButton: ({ ...props }) => {\n let freshProps = useFreshProps(props.id);\n freshProps = {\n ...props,\n ...freshProps,\n };\n\n return (\n {}}\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(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 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(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 \n \n {useMediaInFeedback && (\n \n {img}\n \n )}\n\n {correct === 'attempt' && showAttemptNumberComputed && (\n \n

    \n Attempt {attempt} of {numberOfAttempts}\n

    \n \n )}\n \n {text}\n \n\n {correct === 'attempt' && showAttemptNumberComputed && (\n \n Attempt {attempt} of {numberOfAttempts}\n \n )}\n \n {\n !window.dev() ? parsedOnClose() : null;\n }}\n >\n {button}\n \n \n \n \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 \n \n \n {getFeedbackDisplay().props.children[0]}\n \n \n {getFeedbackDisplay().props.children[1]}\n \n \n\n (!window.dev() ? parsedOnClose() : null)}>\n {ContinueBtn}\n \n \n \n \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(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 { ImageContext } from 'components/lib/Image/Image';\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';\n//\nimport { HostingContext } from 'hosting/context';\nimport { multichoiceEvent } from 'hosting/events';\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(\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 const hostingCtx = useContext(HostingContext);\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([]);\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(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 hostingCtx?.data(\n multichoiceEvent(interactionContextId, {\n type: isMultiCorrect ? 'multi' : 'single',\n attemptNumber: attempts[interactionContextId],\n responseIds: selected,\n response: isMultiCorrect\n ? responseExpanded.split(',')\n : responseExpanded,\n success: !!correct,\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 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();\n\n return (\n {\n attempts[interactionContextId] += 1;\n showFeedback(isCorrect.current);\n },\n }}\n >\n {\n e.preventDefault();\n }}\n >\n {!isMultichoiceMedia || includeQuestionTextPlusImage ? (\n
    {Question}
    \n ) : null}\n\n {isMultichoiceMedia ? (\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 \n {answer}\n \n );\n })}\n \n ) : (\n _Answers_\n )}\n\n {(!showReviewFeedback || submit !== SubmitState.Resolved) && (\n \n {React.cloneElement(SubmitBtn, {\n enabled: !!isLive,\n onClick: onSubmit,\n })}\n \n )}\n\n {showReviewFeedback &&\n (window.dev() || submit === SubmitState.Resolved) && (\n \n {React.cloneElement(ReviewFeedback, {\n onClick() {\n showFeedback(parsedIsCorrect);\n },\n })}\n \n )}\n \n\n {feedback && (\n {\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 \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 \n \n \n \n \n );\n};\n\nexport const Tick = ({ type = 'radio', width = 11, height = 11, color }) => {\n return (\n \n \n \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 \n {\n e.stopPropagation();\n updateSelected(id);\n }\n : () => {}\n }\n // tabIndex={isMultichoiceMedia && 0}\n // aria-live=\"assertive\"\n >\n {!!showCorrectAnswer && resolved && correct && (\n \n \n \n )}\n\n {/*
    {selected ? 'checked' : 'not checked'}
    */}\n \n
    \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 includeRadioCheckbox: true,\n};\n\nconst Answer = props => {\n const { id, children, style = {} } = props;\n\n // contexts\n const interactionContext = useContext(_interactionContext);\n const multichoiceContext = useContext(MultichoiceContext);\n\n // refs\n const answer = useRef(null);\n const label = useRef(null);\n const optionText = useRef(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 selectedOutlineColor = '#000',\n includeRadioCheckbox: _includeRadioCheckbox_ = 1, // true\n focusColor = '#000',\n } = interactionContext.props;\n\n const includeRadioCheckbox = Boolean(_includeRadioCheckbox_);\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(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 // hhmmm. seems to ba a conflict with the label / inputs when this is included\n //\n // onKeyUp: window.dev()\n // ? () => {}\n // : (e: any) => {\n // console.log(e, e.key);\n\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 \n \n {media}\n \n\n \n {!!includeText && (\n \n {window.dev() ? (\n txt\n ) : (\n <_>\n {\n e.stopPropagation();\n }}\n >\n {txt}\n \n \n )}\n \n )}\n\n {imgDescription && (\n \n )}\n\n {!resolved && (\n {\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 updateSelected(id);\n }\n }}\n onChange={(e: any) => {\n updateSelected(id);\n }}\n />\n )}\n\n {includeRadioCheckbox && (\n \n \n \n )}\n \n \n );\n }\n\n return (\n
    \n {' '}\n {window.dev() ? (\n \n {children}\n \n
    \n
    \n ) : (\n
    \n div:not([class*=\"TextToSpeech\"])': {\n padding: '8px 50px 8px 15px',\n },\n\n '.chameleon-text [class*=\"TextToSpeech\"]': {\n margin: '0px 0px 0px 15px',\n },\n\n overflow: 'hidden',\n } as any)}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n {children}\n\n \n \n
    \n \n\n {!resolved && (\n {\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 updateSelected(id);\n }\n }}\n onChange={(e: any) => {\n updateSelected(id);\n }}\n />\n )}\n
    \n )}\n \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 \n {img}\n \n ) : (\n \n {txt}\n \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 \n {txt}\n \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 \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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 \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 \n \n \n \n \n \n \n \n \n \n \n \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 \n );\n};\n\nconst AddRemoveBtnWrapped = ({ rotation = 0, onClick }) => {\n return (\n \n \n \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
    \n

    Colours from theme:

    \n \n {Object.keys(colorsFromTheme).map((color, i) => (\n selectColor(colorsFromTheme[color])}\n />\n ))}\n
    \n\n

    \n Add or remove current colour:\n

    \n\n \n \n \n \n \n {userPalette.map((color, i) => (\n selectColor(color)}\n />\n ))}\n \n \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([]);\n const [isResolved, setIsResolved] = useState(false);\n const [isCorrect, setIsCorrect] = useState(false);\n const [result, setResult] = useState(undefined);\n const [showFeedback, setShowFeedback] = useState(false);\n\n const attempt = useRef(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 {\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 \n {answers.props.children.map((answer, index) => {\n return cloneElement(answer, { index: index + 1 });\n })}\n \n \n {submitBtn}\n \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 \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 {/* */}\n interaction: settings}\n toggle={\n togglePanelsCache[id]\n ? togglePanelsCache[id]['interaction: settings']\n : true\n }\n onToggle={open => saveTogglePanelState('interaction: settings', open)}\n >\n setBlockProps(block, { lockDown: !!lockDown ? 0 : 1 })}\n />\n\n \n {!!scoringQuizzes.length && (\n \n Scoring is disabled for this interaction while an assessment is\n scoring.\n \n )}\n setBlockProps(block, { score: !score })}\n />\n \n \n\n multichoice: settings}\n toggle={\n togglePanelsCache[id]\n ? togglePanelsCache[id]['multichoice: settings']\n : true\n }\n onToggle={open => saveTogglePanelState('multichoice: settings', open)}\n >\n
    \n \n Answers\n \n\n {\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
    \n\n
    \n \n Correct answers\n \n\n {\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
    \n\n
    \n \n setBlockProps(block, {\n randomizeOptions: !randomizeOptions,\n })\n }\n />\n
    \n\n
    \n \n setBlockProps(block, {\n useFeedback: !useFeedback,\n })\n }\n // style={{\n // ...(multi && { opacity: 0.25, pointerEvents: 'none' }),\n // }}\n />\n
    \n\n {useFeedback && (\n <_>\n multichoice feedback\n \n {multi || !useUniqueOptionFeedback ? (\n \n {\n // window.showFeedback[id](true)\n pubSub.publish(`${ShowMultichoiceMediaFeedback}${id}`, {\n result: 'correct',\n });\n }}\n >\n Show correct\n \n\n {\n //window.showFeedback[id](false)\n pubSub.publish(`${ShowMultichoiceMediaFeedback}${id}`, {\n result: 'incorrect',\n });\n }}\n >\n Show incorrect\n \n \n ) : (\n \n \n {\n // window.showFeedback[id](isCorrect)\n pubSub.publish(`${ShowMultichoiceMediaFeedback}${id}`, {\n result: 'correct',\n });\n }}\n >\n Show feedback\n \n \n \n )}\n \n\n \n setBlockProps(block, {\n useUniqueOptionFeedback: !useUniqueOptionFeedback,\n })\n }\n style={{\n ...(multi && { opacity: 0.25, pointerEvents: 'none' }),\n }}\n />\n\n \n {hasAttemptFeedback && (\n {\n setBlockProps(block, { numberOfAttempts: value });\n }}\n />\n )}\n \n\n {hasAttemptFeedback &&\n !useUniqueOptionFeedback &&\n numberOfAttempts > 1 ? (\n <_>\n \n \n {\n //window.showFeedback[id]('attempt')\n pubSub.publish(`${ShowMultichoiceMediaFeedback}${id}`, {\n result: 'attempt',\n });\n }}\n >\n Show attempted\n \n \n \n \n ) : null}\n\n {hasAttemptFeedback && numberOfAttempts > 1 && (\n \n setBlockProps(block, {\n showAttemptNumber: !showAttemptNumber,\n })\n }\n />\n )}\n\n \n \n setBlockProps(block, {\n useMediaInFeedback: !useMediaInFeedback,\n })\n }\n />\n \n \n )}\n\n \n setBlockProps(block, {\n showCorrectAnswer: !!showCorrectAnswer ? 0 : 1,\n })\n }\n />\n\n
    \n \n Navigation\n \n\n
    \n \n setBlockProps(block, {\n navigationBehaviour: {\n ...navigationBehaviour,\n correct: !navigationBehaviour.correct,\n },\n })\n }\n />\n\n \n setBlockProps(block, {\n navigationBehaviour: {\n ...navigationBehaviour,\n incorrect: !navigationBehaviour.incorrect,\n },\n })\n }\n />\n
    \n
    \n\n multichoice appearance: settings\n\n \n \n setBlockProps(block, {\n useMediaInColumn: !useMediaInColumn,\n })\n }\n />\n \n\n {\n setBlockProps(block, { imageWidth: value });\n }}\n />\n\n {\n setBlockProps(block, { imageHeight: value });\n }}\n />\n\n setBlockProps(block, { imageBackground: color })}\n label=\"Image background colour\"\n clearedColor=\"\"\n />\n\n \n setBlockProps(block, {\n optionTextColor: color,\n })\n }\n label=\"Text colour\"\n clearedColor=\"#000\"\n />\n\n \n setBlockProps(block, {\n dropShadow: !dropShadow,\n })\n }\n />\n\n {\n setBlockProps(block, { imageBorderRadius: value });\n }}\n />\n\n \n setBlockProps(block, {\n outlineColor: color,\n })\n }\n label=\"Outline colour\"\n clearedColor=\"#000\"\n />\n\n \n setBlockProps(block, {\n focusColor: color,\n })\n }\n label=\"Focus colour\"\n clearedColor=\"#000\"\n />\n\n \n setBlockProps(block, {\n selectedColor: color,\n })\n }\n label=\"Selected colour\"\n clearedColor=\"#000\"\n />\n \n {/*
    */}\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 \n {children}\n \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 \n {children}\n \n );\n },\n TwoColumnLayout: ({ children }) => {\n return (\n \n {children}\n \n );\n },\n SingleColumnLayout: ({ children }) => {\n return (\n 1 && 'height: auto;'}\n\n .chameleon-text {\n width: 100%;\n\n * {\n width: 100%;\n }\n }\n `}\n >\n {children}\n \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 \n \n Correct\n \n \n \n \n \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(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 {\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 \n {img}\n\n {showCorrectAnswer && isResolved && isCorrectOption && (\n \n )}\n \n \n {txt}\n \n \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 \n \n {children}\n
    \n \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 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 \n \n {useMediaInFeedback && (\n \n {img}\n \n )}\n\n {result === 'attempt' && showAttemptNumberComputed && (\n \n

    \n Attempt {attempt} of {numberOfAttempts}\n

    \n \n )}\n \n {txt}\n \n \n {\n !window.dev() ? parsedOnClose() : null;\n }}\n >\n {btn}\n \n \n \n \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 ;\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 \n \n {renderedChildren}\n \n \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(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(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(interactionContext);\n\n const optionContainer = useRef(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 \n {!!includeImage && (\n \n {img}\n \n )}\n\n {!!!includeImage && txt}\n \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\nimport { HostingContext } from 'hosting/context';\nimport { sortationUserResponseEvent } from 'hosting/events';\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 hostingCtx = useContext(HostingContext);\n\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(null);\n const hasAttempt = useRef(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 alphabetToArray = 'abcdefghijklmnopqrstuvwxyz'.split('');\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 getCorrectAndResponseOptions = entry => {\n let optionText: HTMLElement | string = document.querySelector(\n `#sortation-option-${entry.id}`\n ) as HTMLElement;\n\n if (optionText) {\n optionText = optionText.innerText;\n }\n\n return optionText || '';\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 correctExpanded = alphabetToArray\n .slice(0, options.length)\n .join(SCORM.version == '1.2' ? ',' : '[,]');\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 //\n\n hostingCtx?.data(\n sortationUserResponseEvent(context.id, {\n order: orderIds,\n //order.map(o => getCorrectAndResponseOptions(o)).join(),\n success: isCorrect.current,\n attemptNumber: attempts[context.id],\n })\n );\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 {\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 \n {questionText && (\n \n {questionText}\n \n )}\n \n {sortFrom}\n {\n if (!data.destination) {\n return;\n }\n\n updateOrder(data);\n }}\n >\n \n {provided => (\n \n {order.map((option, i) => (\n \n {(provided, snapshot) => {\n if (!hasAttempt.current && snapshot.isDragging)\n hasAttempt.current = true;\n return (\n \n \n \n );\n }}\n \n ))}\n {provided.placeholder}\n \n )}\n \n \n {sortTo}\n \n\n \n {SubmitBtn}\n \n\n {feedback && (\n {\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 \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 \n {children}\n \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 \n );\n // return ;\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 \n {txt}\n \n \n );\n },\n Sortation: ({ children, ...props }) => {\n // \n return ;\n // \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(InteractionContext);\n\n const { children } = props;\n const Img = children[0];\n\n return (\n \n {cloneElement(Img, {\n placeholder: CC_Sortation_Placeholder_Panel_Media,\n })}\n \n );\n};\n","import SortationDisplay from './SortationDisplay_v2';\n\nexport default SortationDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext(null);\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport { cloneElement, useContext, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport hexToRgb from 'services/hexToRGB';\nimport pubSub from 'services/pubSub';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { Report } from 'store/store';\nimport { interactionContext } from './interactionContext';\n\nimport { HostingContext } from 'hosting/context';\nimport { sliderSubmitEvent } from 'hosting/events';\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 === '

    ' ? 'left' : 'center';\n\n return (\n \n {field}\n \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 hostingCtx = useContext(HostingContext);\n\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,\n \n \n\n ')`;\n\n //\n const [value, setValue] = useState();\n const [inputFieldHasFocus, setInputFieldHasFocus] = useState(false);\n const [attempt, setAttempt] = useState(0);\n const [result, setResult] = useState(undefined);\n const [resolved, setResolved] = useState(0);\n const [showFeedback, setShowFeedback] = useState(result);\n const [isLive, setIsLive] = useState(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 hostingCtx?.data(\n sliderSubmitEvent(id, {\n value: _value_,\n success: result === 'correct',\n attemptNumber: attempt + 1,\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 } 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 question;\n\n const sliderElem = document.querySelector(\n `#i${InteractionContext.id}`\n ) as HTMLElement;\n\n let questionElement = sliderElem?.querySelector(\n `.chameleon-text :not([class*=\"FromToField\"])`\n ) as HTMLElement;\n\n if (questionElement) {\n question = questionElement.innerText;\n }\n\n const fromToFields = Array.from(\n sliderElem?.querySelectorAll(\n `#i${InteractionContext.id} [class*=\"FromToField\"]`\n )\n ) as HTMLElement[];\n\n if (fromToFields) {\n question = `${question && question + ' - '}${\n fromToFields[0].innerText\n }/${fromToFields[1].innerText}`;\n }\n\n if (question) {\n question = question\n ?.replace(/\\n/g, '')\n ?.replace(/\\s+/g, ' ')\n ?.trim();\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 \n {includeQuestionTextPlusImage ? (\n
    {sharedQuestionMedia}
    \n ) : null}\n\n \n \n \n \n\n {\n setIsLive(true);\n setValue(e.currentTarget.value);\n }}\n />\n\n \n {!!showSliderStepMarkers && (\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 \n );\n })}\n \n \n )}\n\n {!!includeSliderAnswerInputBox && (\n \n \n {\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 \n \n )}\n \n\n \n {cloneElement(submitBtn, {\n onClick() {\n onSubmit();\n },\n })}\n \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 \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 \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 \n {txt}\n \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 \n {img}\n \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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 // \n\n // ${isImg &&\n // `\n // position: relative;\n // display: flex;\n // align-items: center;\n // `}\n\n return (\n onClose()}>\n \n {useMediaInFeedback && (\n \n \n {Img}\n \n \n )}\n\n \n {txt}\n \n \n {window.dev() ? btn : React.cloneElement(btn, { onClick: onClose })}\n {/* {React.cloneElement(btn, { onClick: onClose })} */}\n \n \n \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(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 \n {children}\n \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(null);\n const availableDropsIndex = useRef(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 \n {\n availableDropsIndex.current = NaN;\n }}\n onDragEnd={onDragEnd}\n >\n \n \n {columns.column_a}\n \n \n {columns.column_b}\n \n \n \n\n {feedback && (\n {\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 \n )}\n \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 \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 Reset\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst Placeholder = () => {\n const context = useContext(interactionContext);\n\n const { panelWidth = 250, panelHeight = 250 } = context.props;\n\n return (\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(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 \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 \n );\n};\n\nexport const MatchingWrapper = ({ children, ...props }) => {\n const [reset, setReset] = useState(0);\n\n return (\n <_\n key={`Matching_${children[0].props.children.length}${reset &&\n `_${reset}`}`}\n >\n \n {window.dev() && (\n \n }\n onClick={() => setReset(Math.random())}\n css={css`\n width: 150px;\n `}\n />\n \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(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 \n \n 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 \n \n \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 \n div,\n .chameleon-image img {\n width: ${panelWidth}px !important;\n height: ${panelHeight}px !important;\n }\n `}\n >\n {children}\n \n \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 \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 \n ) : (\n \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 \n {txt}\n \n \n );\n },\n\n MatchPairs: ({ children, ...props }) => children,\n Matching({ children, ...props }) {\n return (\n \n {children}\n \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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 \n {txt}\n \n \n );\n },\n Image: ({ children, ...props }) => {\n const mediaContext = useContext(MediaContext) as IMediaContext;\n\n return (\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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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 \n {\n e.stopPropagation();\n if (selected) return;\n\n setCurrentBlock({ id });\n }}\n >\n {!selected && (\n <_>\n {/* */}\n \n \n )}\n \n \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 onClose()}>\n \n {useMediaInFeedback && (\n \n {image}\n \n )}\n \n {text}\n \n \n {window.dev() ? btn : React.cloneElement(btn, { onClick: onClose })}\n \n \n \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 \n \n {displayAsRadio ? (\n \n \n \n ) : (\n \n \n \n )}\n \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 setHover(true)}\n onMouseOut={() => setHover(false)}\n onClick={onClick}\n >\n \n\n {hotSpotsAnimated && (\n \n )}\n\n \n {`hotspot-${hotSpotFocus}` === id && (\n \n )}\n \n\n {showChecked && (\n \n )}\n \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 \n \n\n {showChecked && (\n \n )}\n \n );\n};\n\nexport { Polygon };\n","import { createContext } from 'react';\n\nexport default createContext(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 \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 \n
    \n \n {mediaTypes[mediaType]}\n \n
    \n\n {\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 \n\n \n\n \n\n {hasAudio && (\n \n )}\n\n \n\n {!(isAccordion || isFlipCard) && hasPDF && (\n \n )}\n\n {!(isAccordion || isFlipCard) && hasEmbed && (\n \n )}\n \n \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(null);\n\n return (\n
    \n {\n onUploadStart && onUploadStart();\n fileUpload.current!.click();\n }}\n {...props}\n />\n {\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
    \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 \n no image selected\n \n );\n};\n\nconst PreviewImg = ({ preview }) => {\n return (\n \n );\n};\n\nexport const PreviewInfo = ({ property, value }) => {\n return value ? (\n \n \n {property}:\n {' '}\n {value}\n \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(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 \n {imgData ? (\n <_>\n \n \n \n \n \n \n ) : (\n \n {!preview ? : }\n \n )}\n\n \n {\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 {\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 \n An error occured while uploading your image. Please try again.\n \n )}\n \n \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 \n <_>\n {loaded ? (\n \n ) : (\n \n )}\n \n \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 \n \n {/* */}\n {\n setSelected((cacheSelected!.yourLibrary = result));\n reload();\n }}\n />\n \n \n {\n // setPage(1);\n setFilter((cacheFilter!.value = value));\n // unset. .\n setSelected((cacheSelected!.yourLibrary = null));\n // reload();\n }}\n />\n \n \n {moduleImages.map((entry, i) => {\n //\n const { id, name, url } = entry;\n return (\n {\n setSelected(\n (cacheSelected!.yourLibrary = {\n ...entry,\n url,\n })\n );\n }}\n />\n );\n })}\n \n \n {\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 && } */}\n \n \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 \n
    getRef(ref)} dangerouslySetInnerHTML={{ __html: svg }} />\n
    \n );\n};\n\nconst SVGPreview = ({ src, label }) => {\n const { onAddImage, onClose } = useContext(ImageLibraryContext)!;\n const { cache } = useContext(ChameleonsLibraryContext)!;\n\n const [svg, setSvg] = useState(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(null);\n const placeholder = useRef(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 \n ) : (\n <_>\n \n {/*
    */}\n {svg !== 'unload' ? (\n <_>\n (svgDOM.current = ref)}\n svg={svg}\n />\n \n {label}\n
    \n \n ) : (\n \n \n \n )}\n \n \n {\n update(src, color);\n }}\n />\n \n Primary colour\n \n \n\n \n {\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 \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(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 \n \n \n {previewData && (\n \n )}\n \n\n \n {\n setTags((cachedSearch = value));\n onSetSelected(0, svgs[0]);\n }}\n />\n\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 onSetSelected(i, entry)}\n color=\"#61cece\"\n />\n );\n })}\n \n \n\n {\n setPage(page => {\n return (dir === 'prev'\n ? page > 1 && page - 1\n : page < meta.totalPages && page + 1) as number;\n });\n }}\n />\n \n \n \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(\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 \n \n {!info ? {title} : {title}}\n \n {children}\n \n );\n};\n\nconst Input = ({ defaultValue, update }) => {\n return (\n {\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 {\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 {\n setBlock(block, { [key]: value });\n }}\n >\n {label}\n \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 \n \n \n {\n setBlock(block, { description: value });\n }}\n />\n \n\n {imageLibrary && (\n \n \n \n )}\n \n );\n }\n\n return (\n
    \n \n\n \n \n Max widths for:\n
    \n
    \n Single Column - 1100px\n
    \n
    \n Two Column - 1100px\n
    \n
    \n Full screen Width - 1920px\n
    \n
    \n Background Image - 1920px\n
    \n \n Aim to keep file size below 1.5mb\n \n \n }\n css={css`\n font-size: 12px;\n `}\n >\n {!localModeImageUpload ? (\n \n ) : (\n \n {\n console.log({ src: value });\n\n setBlock(block, { src: value || undefined });\n }}\n />\n \n )}\n\n {/* */}\n\n {src && (\n
    \n \n {!!size && }\n
    \n )}\n \n\n \n ({\n value: e,\n label: borderStyles[e],\n }))}\n components={{ Option: Option('borderStyle') }}\n />\n \n\n \n ({\n value: e,\n label: fits[e],\n }))}\n components={{ Option: Option('fit') }}\n />\n \n\n {imageContainerHeightPermission && (\n <_>\n \n {\n setBlockProps(block, { imgContainerHeight: value });\n }}\n />\n \n \n )}\n\n <_>\n \n {\n setBlockProps(block, { imgMagnification: value });\n }}\n />\n \n \n\n {!(1 === 1) && isTextAndImage && (\n <_>\n \n {\n setBlockProps(block, { imgSize: value });\n }}\n />\n \n \n )}\n\n \n {\n setBlock(block, { description: value });\n }}\n />\n \n\n
    \n \n setBlockProps(block, {\n imageZoom: !imageZoom,\n })\n }\n />\n
    \n\n {imageZoom && (\n \n \n \n setBlockProps(block, { imageZoomIconColor: color })\n }\n label=\"Icon colour\"\n />\n \n\n \n setBlockProps(block, { imageZoomBackgroundColor: color })\n }\n label=\"Background colour\"\n />\n \n )}\n\n {isFeatureEnabled(FeatureFlag.AddESVGImage) && (\n <_>\n {imageLibrary && (\n \n \n \n )}\n\n {isTextAndImage && (\n
    \n \n \n IMAGE NAVIGATION\n \n
    \n\n \n \n )}\n\n {modal && (\n
    \n showModal(false)}\n >\n {(localLinkData, updateLocalLinkData, currentTab) => {\n let label = 'Save and close';\n\n return (\n
    \n \n {\n showModal(false);\n }}\n />\n\n {\n setBlockProps(block, {\n linkData: {\n ...linkData,\n ...localLinkData,\n ...(location && {\n location: null,\n }),\n },\n });\n\n showModal(false);\n }}\n />\n
    \n {\n setBlockProps(block, {\n linkData: {\n url: '',\n title: '',\n target: '',\n },\n });\n\n showModal(false);\n }}\n >\n Remove link\n
    \n \n );\n }}\n \n \n )}\n \n )}\n \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 // this was already being checked for but assigning to explicit null\n const hotSpotScorable = hotSpotIsolatedParent\n ? (findByKeyVal_V2(\n hotSpotIsolatedParent?.id,\n 'type',\n 'HotSpotScorable'\n ) as any)\n : null;\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(\n undefined\n );\n\n const scoringQuizzes = useScoringQuizzes();\n\n const currentBlock = useRef(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(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 interaction functions & behaviours}\n toggle={\n togglePanelsCache[hotspotsBlockId]\n ? togglePanelsCache[hotspotsBlockId]['interaction: settings']\n : true\n }\n onToggle={open => saveTogglePanelState('interaction: settings', open)}\n >\n {\n setBlockProps(hotSpotIsolatedParent, {\n lockDown: !!lockDown ? 0 : 1,\n });\n }}\n />\n\n {hotSpotScorable && !immediateFeedback && (\n \n {!!scoringQuizzes.length && (\n \n Scoring is disabled for this interaction while an assessment is\n scoring.\n \n )}\n \n setBlockProps(hotSpotIsolatedParent, { score: !score })\n }\n />\n \n )}\n\n {/* was score */}\n {!immediateFeedback && (\n <_>\n \n {\n showFeedback('correct');\n }}\n style={{\n margin: '0 5px 0 0',\n }}\n >\n Show correct\n \n\n {\n showFeedback('incorrect');\n }}\n style={{\n margin: '0 0 0 5px',\n }}\n >\n Show incorrect\n \n \n \n {\n setBlockProps(hotSpotScorable, { numberOfAttempts: value });\n }}\n />\n \n {numberOfAttempts > 1 && (\n \n {\n showFeedback('attempt');\n }}\n >\n Show attempt feedback\n \n \n )}\n {numberOfAttempts > 1 && (\n \n setBlockProps(hotSpotScorable, {\n showAttemptNumber: !showAttemptNumber,\n })\n }\n />\n )}\n \n \n setBlockProps(hotSpotScorable, {\n useMediaInFeedback: !useMediaInHotSpotScorableFeedback,\n })\n }\n />\n \n \n \n setBlockProps(hotSpotScorable, {\n showCorrectAnswer: !showCorrectAnswer,\n })\n }\n />\n \n\n \n \n Navigation\n \n\n
    \n \n setBlockProps(hotSpotScorable, {\n navigationBehaviour: {\n ...navigationBehaviour,\n correct: !navigationBehaviour.correct,\n },\n })\n }\n />\n\n \n setBlockProps(hotSpotScorable, {\n navigationBehaviour: {\n ...navigationBehaviour,\n incorrect: !navigationBehaviour.incorrect,\n },\n })\n }\n />\n
    \n \n \n )}\n \n\n hotspot styling}\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 \n {\n setImageLibrary(!imageLibrary);\n }}\n />\n \n\n \n {\n setBlock(block, { description: value });\n }}\n />\n \n \n \n
    \n Select \"Circle\" to create round hot spots with an optional\n pulsing animation.\n
    \n
    \n Select \"Rectangle\" to draw an outline around areas of\n interest.\n
    \n
    \n Select \"Freeform\" to draw an outline around areas of interest.\n
    \n \n }\n >\n Type\n \n \n\n \n {\n setHotspotType('circle');\n }}\n >\n \n \n\n {\n setHotspotType('rectangle');\n }}\n >\n \n \n\n {\n setHotspotType('polygon');\n }}\n >\n \n \n \n\n setBlockProps(block, { hotSpotColor: color })}\n label=\"Color\"\n />\n {hotspotType === 'circle' && [\n {\n setBlockProps(block, { hotSpotSize: value });\n }}\n label=\"Size\"\n />,\n {\n setBlockProps(block, { hotSpotsAnimated: !hotSpotsAnimated });\n }}\n />,\n ]}\n\n {hotspotType === 'rectangle' && (\n <_>\n {\n setBlockProps(block, { rectangleBorderRadius: value });\n }}\n label=\"Border radius\"\n />\n\n {\n setBlockProps(block, {\n rectangleDisplayOutlineOnly: !rectangleDisplayOutlineOnly,\n });\n }}\n style={{\n marginTop: 10,\n }}\n />\n \n )}\n {\n setBlockProps(block, { hotSpotsVisible: !hotSpotsVisible });\n }}\n />\n {/* !score && */}\n {!isGlobalNavigation && (\n \n \n setBlockProps(block, {\n useMediaInFeedback: !useMediaInFeedback,\n })\n }\n />\n \n )}\n\n \n \n setBlockProps(block, { showSeenState: !!showSeenState ? 0 : 1 })\n }\n />\n \n\n {immediateFeedback && (\n \n \n
    \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
    \n
    \n Once you've created a hotspot, click on it in the module\n view to add/update content or navigation.\n
    \n \n }\n style={{ margin: '0 0 5px 0' }}\n >\n Content type\n \n\n {\n setBlockProps(hotSpotIsolatedParent, {\n isGlobalNavigation: value === 'navigation' ? true : false,\n });\n }}\n />\n \n )}\n\n {(true || image) && (\n \n
    \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 {\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
    \n\n {\n !currentHotspotId\n ? createNew(e)\n : setCurrentHotspotId(undefined);\n }}\n >\n Add new hotspot\n \n \n )}\n \n\n {imageLibrary && (\n \n \n \n )}\n\n <_>\n {modal && (\n
    \n showModal(false)}\n >\n {(localLinkData, updateLocalLinkData, currentTab) => {\n let label = 'Save and close';\n\n return (\n <_>\n {\n showModal(false);\n }}\n />\n\n {\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 \n
    \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 showCorrectAnswer,\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(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 \n setHover(true)}\n onMouseOut={() => setHover(false)}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n }}\n />\n\n {((immediateFeedback && showChecked) || showCorrectAnswer) && (\n \n )}\n \n );\n};\n\nexport default Rectangle;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport {\n cloneElement,\n createContext,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport pubSub from 'services/pubSub';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { interactionContext } from './interactionContext';\n\nimport { HostingContext } from 'hosting/context';\nimport { hotspotQuizEvent } from 'hosting/events';\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 hostingCtx = useContext(HostingContext);\n\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(null);\n const [selected, setSelected] = useState([]);\n const [attempt, setAttempt] = useState(0);\n const [feedback, setFeedback] = useState(null);\n const [submitState, setSubmitState] = useState(\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 const isCorrect =\n selected.sort().join('') === correctAnswers.sort().join('');\n\n if (isCorrect) {\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 hostingCtx?.data(\n hotspotQuizEvent(InteractionContextId, {\n values: selected,\n responseIds: selected,\n type: correctAnswers.length > 1 ? 'multi' : 'single',\n success: isCorrect,\n attempt_number: attempt,\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 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 \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 \n {cloneElement(submitBtn, {\n onClick: onSubmit,\n })}\n \n \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\nimport { HostingContext } from 'hosting/context';\nimport { hotspotEvent, hotspotQuizEvent } from 'hosting/events';\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 const hostingCtx = useContext(HostingContext);\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(\n undefined\n );\n\n const [SVGHasNoDimensionsError, setSVGHasNoDimensionsError] = useState<\n boolean\n >(false);\n\n const [showFeedback, setShowFeedback] = useState(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(\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(null);\n const root = useRef(null);\n const mounted = useRef(true);\n const currentHotspot = useRef(null);\n const hasPointsOnProps = useRef(undefined);\n\n const drawing = useRef(false);\n const startXY = useRef<{ startX: number; startY: number }>({\n startX: 0,\n startY: 0,\n });\n const rectState = useRef({});\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(undefined);\n const rectangleCoords = useRef({});\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\n hostingCtx?.data(\n hotspotEvent(context.id, {\n hotspot_id: id,\n })\n );\n\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 //\n hostingCtx?.data(\n hotspotEvent(context.id, {\n hotspot_id: id,\n })\n );\n\n requestAnimationFrame(() => {\n updateHotspotSeen(id);\n });\n },\n };\n };\n\n return !!imgSize.length ? (\n \n
    \n

    {description}

    \n
    \n \n \n {[0, 2].includes(imgLoading) ? (\n {\n if (e.target !== e.currentTarget) {\n return;\n }\n }}\n >\n \n {/* {description} */}\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 \n );\n }\n\n if (hotspotType === 'polygon') {\n return (\n \n );\n }\n\n if (hotspotType === 'circle') {\n return (\n \n );\n }\n })}\n \n ) : (\n \n )}\n \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 {\n setHotSpotFocus((hotSpotFocusRef.current = id));\n }}\n onBlur={() => {\n setHotSpotFocus(undefined);\n }}\n onClick={e => {\n requestAnimationFrame(() => {\n updateHotspotSeen(id);\n });\n }}\n />\n ) : (\n {\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 \n \n {showFeedback && (\n {\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 \n )}\n\n {SVGHasNoDimensionsError && (\n {\n setCurrentBlock({ id });\n }}\n />\n )}\n\n {window.dev() && (!image || imgLoading === 2) && (\n \n )}\n \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 \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 \n {txt}\n \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 \n {children}\n \n );\n },\n};\n\nconst HotSpotDisplay = memo((props: any) => {\n const interactionBlock = getBlockById(props.blockId);\n\n return (\n \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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 {\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(false);\n const textArea = useRef(null);\n const textAreaProxy = useRef(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, '
    ');\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 \n \n {messageUnderline && (\n ${\n newLineCheck > maxLinesBeforeScrolling ? ' ' : ''\n }`,\n }}\n aria-hidden=\"true\"\n />\n )}\n\n \n\n {\n setHasFocus(true);\n }}\n onBlur={() => {\n setHasFocus(false);\n }}\n onChange={e => {\n onUpdate(e.currentTarget.value);\n }}\n // aria-label={placeholder}\n autoComplete=\"off\"\n />\n \n\n {messageUnderline && (\n \n )}\n \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\nimport { HostingContext } from 'hosting/context';\nimport { feedbackEvent, textEntryValueEvent } from 'hosting/events';\n\nconst { lGrey2 } = colors;\nconst FiveStarRatingContext = createContext(undefined);\n\nconst FeedbackSubmitted = ({ color }) => {\n return (\n \n \n \n Thanks! Your feedback has been submitted.\n {/* {children} */}\n \n \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 const hostingCtx = useContext(HostingContext);\n\n const {\n useMyFeedbackApp = 0,\n emailRequired = 1,\n emailOptional = 0,\n anonymityRequired = 0,\n identityPlaceholder,\n include5StarRating = true,\n includeMessageText = true,\n messageTextBackgroundColor = '#fff',\n messageTextBackgroundOpacity = 100,\n messageBorderRadius = 0,\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 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 \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 useEffect(() => {\n if (window.dev()) {\n return;\n }\n\n const feedback = {\n interactionName: interactionContext?.props?.name,\n\n message,\n rating,\n };\n\n if (isTextEntry) {\n hostingCtx?.data(\n textEntryValueEvent(interactionContext.id, {\n value: message,\n })\n );\n } else {\n hostingCtx?.data(feedbackEvent(interactionContext.id, feedback));\n }\n }, [submitted]);\n\n return (\n \n \n {!submitted && (\n \n {!isTextEntry && include5StarRating && FiveStarList}\n {Id}\n {showTextEntry && (\n {\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 \n )}\n\n {submitted &&\n (FeedbackSubmittedEditable ?? (\n \n ))}\n \n \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();\n\n const shapesRoot = useRef(null);\n const shapesContainer = useRef(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 \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 \n \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 \n \n \n );\n};\n\nexport const heart = (\n \n \n \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 \n \n \n );\n};\n\nexport const diamond = (\n \n \n \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 \n \n \n \n \n \n \n );\n\n return (\n \n \n \n \n\n \n \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 \n \n {shape === 'star' && (\n \n )}\n {shape === 'heart' && (\n \n )}\n {shape === 'diamond' && (\n \n )}\n {shape === 'smiley' && (\n \n )}\n \n {\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 \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';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { useDispatch } from 'react-redux';\n\nconst myFeedbackApp = ({\n key,\n rating,\n message,\n identity,\n reference,\n onComplete = ({}) => {},\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 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 //\n let endPoint;\n\n try {\n endPoint =\n window['collectResponseEndpoint'] ||\n window.top!['collectResponseEndpoint'] ||\n 'https://collect.chameleoncreator.com/api/v1/responses/create';\n } catch (err) {\n console.log('ERROR GETTING REFERENCE TO COLLECT ENDPOINT :', err);\n //\n endPoint =\n window['collectResponseEndpoint'] ||\n 'https://collect.chameleoncreator.com/api/v1/responses/create';\n }\n\n if (!(window as any).hosted) {\n fetch(endPoint, requestOptions)\n .then(response => {\n return response.text();\n })\n .then(result => {\n onComplete(result);\n })\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 dispatch = useDispatch();\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 \n {\n if (ratingEndpoint === 'scorm') {\n if (!isTextEntry) {\n const questionElement = document.querySelector(\n `#i${context.id} .rating-text`\n ) as HTMLElement;\n\n let question = '';\n\n if (questionElement) {\n question = questionElement.innerText;\n }\n\n const response = `Rating: ${rating + 1}, Message: ${message}`;\n\n const action = {\n id: context.id,\n type: 'likert',\n question,\n reportable: 'likert' as 'likert',\n response,\n correct: String(rating + 1),\n result: 1,\n };\n\n console.log('Rating: ', action);\n\n dispatch(addScormResponseAction(action as any));\n\n onSubmit(true);\n submitted(1);\n return;\n }\n\n onSubmit();\n submitted(1);\n return;\n }\n //\n //\n\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 onComplete(result) {\n console.log(`${result} submitted successfully to collect !!!`);\n //\n onSubmit();\n },\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 onSubmit();\n submitted(1);\n }}\n enabled={enabled}\n {...props}\n />\n \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 \n ),\n InteractionColumn: ({ children }) => {\n return children?.[0] || null;\n },\n Image: ({ children, ...props }) => {\n return (\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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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 \n {img}\n \n {txt}\n \n \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(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(\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(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 \n {window.dev()\n ? children![displayPassFailContent === 'passed' ? 0 : 1]\n : children![passed ? 0 : 1]}\n \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 \n \n \n \n \n \n \n \n \n\n \n

    \n {window.dev() ? Math.ceil(animatedValue * 100) : score}%\n

    \n \n \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 \n \n \n\n \n

    \n {window.dev() ? Math.ceil(animatedValue * 100) : score}%\n

    \n \n \n \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 \n {graphType === 'circle' ? (\n \n ) : (\n \n )}\n \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 \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 \n {txt}\n \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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\nimport { HostingContext } from 'hosting/context';\nimport { clickRevealEvent } from 'hosting/events';\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\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 console.log({ id });\n\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 \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 \n {element}\n \n ) : (\n element\n );\n })}\n \n \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\nimport { HostingContext } from 'hosting/context';\nimport { clickRevealEvent } from 'hosting/events';\n\nconst store = getStore();\nconst { lGrey0, lPink } = colors;\n\nconst PanelColumn = ({ width, children }) => {\n //\n return (\n \n {children}\n \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 \n {'Content has been seen' || titleComped}\n \n \n \n \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(initialMediaType);\n //\n\n const [panelContainsImageZoom, setPanelContainsImageZoom] = useState(false);\n //\n let imgZoomIsActiveElement = false;\n\n const context: any = useContext(interactionContext);\n const hostingCtx = useContext(HostingContext);\n\n const { id, updateClickAndRevealSeen } = context;\n\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(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
    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
    \n 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
    \n\n {!!showSeenState && (window.dev() || seen) && (\n \n \n \n )}\n \n );\n\n const panelLabel = !!includeLabel ? (\n \n {text}\n \n ) : null;\n\n return (\n <_>\n \n {!useGlobalNavigation ? (\n {\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 const ctr_click = {\n ctr_id: id,\n };\n\n hostingCtx?.data(clickRevealEvent(context.id, ctr_click));\n }}\n aria-label={ariaLabel}\n //\n >\n {panel}\n \n ) : (\n {\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
    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 \n )}\n {panelLabel}\n \n\n {showFeedback && (\n {\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 \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 \n \n {children}\n \n \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 \n \n {DOMLayout[0]}\n\n {layout !== 'No image' && (\n {DOMLayout[1]}\n )}\n \n \n {React.cloneElement(btn, { onClick: () => onClose() })}\n \n \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 \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 \n {children}\n \n );\n },\n\n Feedback: ({ children, ...props }) => children,\n Content: ({ children, ...props }) => {\n const { layout = '' } = props;\n\n return (\n \n \n {children}\n \n \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 \n ) : (\n \n );\n },\n Video,\n Audio,\n Transcript: () => null,\n SVG: ({ children, ...props }) => (\n \n ),\n Media,\n Embed,\n PDF,\n OpenPDF: ({ children, ...props }) => {\n return {children};\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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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 {\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 \r\n )}\r\n \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(null);\r\n const cells = useRef([]);\r\n const imgsLoaded = useRef(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 \r\n {Children.map(children, (child, index) => {\r\n return (\r\n {\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 \r\n );\r\n })}\r\n \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(null);\r\n\r\n const updateCounter = useRef(0);\r\n const masonryContainer = useRef(null);\r\n const cardOrder = useRef('');\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 \r\n {Children.map(children, (child: any, index: number) => {\r\n return (\r\n \r\n {window.dev && window.dev() && (\r\n \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 \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n return (\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 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 \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 \r\n );\r\n })}\r\n \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\nimport { position } from 'html2canvas/dist/types/css/property-descriptors/position';\r\nimport { backgroundPosition } from 'html2canvas/dist/types/css/property-descriptors/background-position';\r\nimport { backgroundSize } from 'html2canvas/dist/types/css/property-descriptors/background-size';\r\nimport { imgPlaceholders } from 'components/lib/Image';\r\nimport { visibility } from 'html2canvas/dist/types/css/property-descriptors/visibility';\r\nimport { opacity } from 'html2canvas/dist/types/css/property-descriptors/opacity';\r\n\r\nconst Text = props => {\r\n const { sx = {}, children } = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst ButtonWrapper = ({ sx = {}, children }) => {\r\n return (\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 \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 const mediaProps = media?.props?.children[mediaIndex]?.props;\r\n\r\n let imgProps;\r\n\r\n //\r\n if (\r\n mediaIndex === 1 &&\r\n ['left', 'right'].includes(imagePosition) &&\r\n ['cover', 'fill'].includes(mediaProps?.fit)\r\n ) {\r\n const { src = imgPlaceholders[0], width, height, fit, imgMagnification } =\r\n mediaProps || {};\r\n\r\n imgProps = {\r\n src,\r\n width,\r\n height,\r\n fit,\r\n imgMagnification,\r\n };\r\n }\r\n\r\n let mediaPadding: string | undefined = '0px';\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' : '0px',\r\n\r\n undefined: mediaPadding,\r\n }[medias[mediaIndex]];\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\r\n if (!contentCardBackgroundColor) {\r\n a = 0;\r\n }\r\n\r\n // When 2 columns and image.fit is contain\r\n // we want to take into account the border radius of the card\r\n // so as not to have it 'clip' the corners of the image\r\n // we do this by increasing the padding of the container\r\n // relative to the borderRadius\r\n\r\n const isImageContained = mediaProps?.fit === 'contain';\r\n const is2column = ['left', 'right'].includes(imagePosition);\r\n\r\n // default for either not 2 column or image is fit or fill\r\n let imgMediaPadding: string = '0px';\r\n\r\n if (is2column && isImageContained) {\r\n if (borderRadius > 20) {\r\n imgMediaPadding = `${borderRadius / 1.5}px`;\r\n } else {\r\n imgMediaPadding = `${20 / 1.5}px`;\r\n }\r\n }\r\n\r\n const mediaPaddingWhenFitContain = imgMediaPadding;\r\n\r\n const leftRightPositionMedia = (\r\n div': {\r\n background: 'none',\r\n },\r\n }),\r\n\r\n '@media (max-width: 768px)': {\r\n background: 'none',\r\n\r\n img: {\r\n //\r\n maxHeight: '50vh !important',\r\n },\r\n },\r\n }}\r\n >\r\n {imgProps && (\r\n \r\n )}\r\n {media}\r\n \r\n );\r\n\r\n return (\r\n \r\n {imagePosition === 'top' && (\r\n <_>\r\n \r\n \r\n {media}\r\n \r\n {includeText && (\r\n \r\n {text}\r\n \r\n )}\r\n \r\n {includeButton && {btn}}\r\n \r\n )}\r\n\r\n {imagePosition === 'right' && (\r\n \r\n \r\n {includeText && (\r\n \r\n {text}\r\n \r\n )}\r\n {leftRightPositionMedia}\r\n \r\n {includeButton && {btn}}\r\n \r\n )}\r\n\r\n {imagePosition === 'bottom' && (\r\n <_>\r\n \r\n {includeText && {text}}\r\n \r\n {media}\r\n \r\n \r\n {includeButton && {btn}}\r\n \r\n )}\r\n\r\n {imagePosition === 'left' && (\r\n \r\n \r\n {/* \r\n {media}\r\n {\r\n */}\r\n {leftRightPositionMedia}\r\n {includeText && (\r\n \r\n {text}\r\n \r\n )}\r\n \r\n {includeButton && {btn}}\r\n \r\n )}\r\n\r\n {imagePosition === 'full' && (\r\n \r\n {media}\r\n \r\n )}\r\n\r\n {imagePosition === 'none' && (\r\n \r\n {text}\r\n {includeButton && {btn}}\r\n \r\n )}\r\n \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 \r\n {txt}\r\n \r\n \r\n );\r\n },\r\n ContentCards,\r\n ContentCard({ children, ...props }) {\r\n return (\r\n \r\n {children}\r\n \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 \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 \r\n \r\n {(interactionBlock.children as Block[]).map(child => {\r\n return renderBlock(child, Components);\r\n })}\r\n \r\n \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(null);\n","import {\n dropdownOptionResponseEvent,\n dropdownResponseEvent,\n} from 'hosting/events';\nimport { 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 hostingCtx,\n //\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 options.forEach((option, index) => {\n const { id, values } = option?.props || {};\n\n const event = {\n dropdown_id: id,\n value: values[selectedOptions[index]],\n selectedIndex: selectedOptions[index],\n success: selectedOptions[index] === correctAnswers[index],\n attemptNumber: attempt + 1,\n };\n\n hostingCtx.data(dropdownOptionResponseEvent(interactionContext.id, event));\n });\n\n console.log('test select options');\n hostingCtx.data(\n dropdownResponseEvent(interactionContext.id, {\n success: result === 'correct',\n attemptNumber: attempt + 1,\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 { css, jsx } from '@emotion/core';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useScoringQuizzes } from 'services/apiHelpers/useScoringQuizzes';\nimport pubSub from 'services/pubSub';\nimport { unlockInteraction } from 'services/unlockInteraction';\nimport { colors } from 'styles/variables';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport { onSubmit } from './onSubmit';\n\nimport { HostingContext } from 'hosting/context';\n\nconst { lGrey0, mint } = colors;\n\nexport const SelectOptionsContext = createContext(null);\n\nexport type Result = 'correct' | 'incorrect' | 'attempt' | undefined;\n\nconst SelectOptionsRoot = ({ children, ...props }) => {\n const interactionContext = useContext(InteractionContext);\n const hostingCtx = useContext(HostingContext);\n\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(0);\n const [result, setResult] = useState(undefined);\n const [showFeedback, setShowFeedback] = useState(result);\n const [isLive, setIsLive] = useState(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 {\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 showCorrectAnswer,\n onClose: () => {\n setShowFeedback(undefined);\n },\n correctAnswers,\n }}\n >\n {\n e.preventDefault();\n }}\n >\n \n {question}\n \n\n \n \n {options.map((option, index) => {\n return React.cloneElement(option, {\n index,\n });\n })}\n \n\n
    \n\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 hostingCtx: hostingCtx,\n score,\n });\n }\n }\n >\n {submitBtn}\n \n \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 \n \n );\n};\n\nexport default SelectOptionsRoot;\n","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\n\nconst SelectOptions = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default SelectOptions;\n","/** @jsx jsx */\n\nimport { useContext, useEffect, useRef } 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';\nimport { resolveModuleName } from 'typescript';\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 result,\n showCorrectAnswer,\n correctAnswers,\n isLive,\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[selectGroupIndex]];\n\n const [txt] = children;\n const nameId = `i${id}`;\n\n const resolved = useRef(false);\n if (isLive === false && result === 'incorrect' && !resolved.current) {\n resolved.current = true;\n }\n\n const _ = ({ innerRef, innerProps, ...props }) => {\n const { label, isFocused, data } = props;\n const { index } = data;\n\n return (\n \n {label}\n {window.dev() && correctAnswers[selectGroupIndex] === index ? (\n \n ) : null}\n \n );\n };\n\n useEffect(() => {}, []);\n\n return (\n {\n setCurrentBlock(menuIsOpen ? null : { id });\n }\n : undefined\n }\n >\n \n {txt}\n \n\n
    \n\n \n {/* @ts-ignore */}\n {\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() && resolved.current && showCorrectAnswer) && (\n \n )}\n\n {window.dev() && (\n \n \n {!menuIsOpen && }\n
    \n \n )}\n \n\n
    \n
    \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 \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 \n {txt}\n \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(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 \n {\n e.stopPropagation();\n setIconSelected(!iconSelected);\n }\n : () => {}\n }\n />\n \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';\nimport { State } from 'store/store';\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 \n \n \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 \n {children}\n \n ) : (\n \n {children}\n \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 includesNestedTopicPortals = false,\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(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 //\n if (includesNestedTopicPortals) {\n return true;\n }\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 //\n if (includesNestedTopicPortals) {\n return true;\n }\n\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\n const topics = useMemo(() => {\n return displayedTopics || getTopics();\n }, []);\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\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 \n {\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 borderRadius,\n },\n })}\n >\n {media}\n \n )}\n\n {!positionTextBelow && (\n <_>\n {!includeCustomText ? (\n \n \n {name}\n \n \n ) : (\n \n {txt}\n \n )}\n\n \n \n {percentComplete}%\n \n \n \n \n )}\n \n\n {!!positionTextBelow && (\n \n \n {!includeCustomText ? name : txt}\n \n \n {percentComplete}%\n \n \n \n )}\n\n {!!addImage && (\n \n )}\n \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 \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 \n {topicMedia ? topicMedia.props.children : null}\n \n );\n })}\n \n \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 \n {txt}\n \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 \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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 \n {\n onSubmit();\n }}\n enabled={enabled}\n {...props}\n />\n \n );\n};\n\nexport default SubmitBtn;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext(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(false);\n const [isSubmitted, setIsSubmitted] = useState(false);\n const [showFeedback, setShowFeedback] = useState(false);\n\n const [result, setResult] = useState(undefined);\n const [hasFocus, setHasFocus] = useState(false);\n\n const scoringQuizzes = useScoringQuizzes();\n const dispatch = useDispatch();\n\n const message = useRef('');\n const textArea = useRef(null);\n const textAreaProxy = useRef(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, '
    ');\n\n return (\n \n \n \n\n {\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 autoComplete=\"off\"\n />\n \n\n \n \n {submitBtn}\n \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 {\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 \n )}\n \n )}\n \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 //\n let endPoint;\n\n try {\n endPoint =\n window['collectResponseEndpoint'] ||\n window.top!['collectResponseEndpoint'] ||\n 'https://collect.chameleoncreator.com/api/v1/responses/create';\n } catch (err) {\n console.log('ERROR GETTING REFERENCE TO COLLECT ENDPOINT :', err);\n //\n endPoint =\n window['collectResponseEndpoint'] ||\n 'https://collect.chameleoncreator.com/api/v1/responses/create';\n }\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 \n
    {img}
    \n\n \n {txt}\n \n\n \n {btn}\n \n \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 ;\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
    \n
    {img}
    \n
    {txt}
    \n
    \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(false);\n\n const renderedBlock = (interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n });\n\n return (\n \n \n {renderedBlock}\n \n \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 \n {\n onSubmit();\n }}\n enabled={enabled}\n {...props}\n />\n \n );\n};\n\nexport default SubmitBtn;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext(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(null);\n const proxy = useRef(null);\n const textArea = useRef(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 \n \n Aa\n \n ')}
    `,\n }}\n >\n {\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 autoComplete=\"off\"\n {...rest}\n />\n \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(false);\n const [isSubmitted, setIsSubmitted] = useState('');\n const [hasFocus, setHasFocus] = useState(false);\n\n const dispatch = useDispatch();\n\n const moduleVariables = useSelector((state: State) => {\n return state.moduleVariables || {};\n });\n\n const message = useRef(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 \n \n {\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 \n\n \n \n {submitBtn}\n \n \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 \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 ;\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
    \n {useMediaInColumn ?
    {img}
    : null}\n
    {txt}
    \n
    \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(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 \n \n {renderedBlock}\n \n \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\nimport { HostingContext } from 'hosting/context';\nimport { textEntryResponseEvent } from 'hosting/events';\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 const hostingCtx = useContext(HostingContext);\n\n console.log(\n 'IS THIS THE TEXT ENTRY ??? OR IS ALWAYS QUIZ !?!?',\n interactionContext.props,\n props\n );\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 // console.log(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(0);\n const [result, setResult] = useState(undefined);\n const [resolved, setResolved] = useState(0);\n const [isLive, setIsLive] = useState(undefined);\n const [isSubmitted, setIsSubmitted] = useState(false);\n const [showFeedback, setShowFeedback] = useState(false);\n\n const [hasFocus, setHasFocus] = useState(false);\n\n const scoringQuizzes = useScoringQuizzes();\n const dispatch = useDispatch();\n\n const message = useRef('');\n const [_message_, setMessage] = useState('');\n message.current = _message_;\n\n submitBtn = cloneElement(submitBtn, {\n onClick() {\n const { id } = interactionContext;\n\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 hostingCtx?.data(\n textEntryResponseEvent(id, {\n value: message?.current,\n attemptNumber: attempt + 1,\n success: isCorrect ? true : false,\n })\n );\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 \n \n {txt}\n \n \n {\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 \n\n \n \n {submitBtn}\n \n \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 \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(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 ;\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(false);\n\n const renderedBlock = (interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n });\n\n return (\n \n \n {renderedBlock}\n \n \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 \n {children}\n \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 \n

    Assessment Introduction

    \n \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 \n

    Assessment Question

    \n \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 \n

    Assessment Results

    \n \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 // \n // {children}\n\n // {\n // // console.log('terms met');\n // // }}\n // />\n // \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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(InteractionContext);\n\n const [img, text] = children;\n\n const { includeMedia = true } = interactionContext.props;\n\n const imgProps = img?.props?.children[1]?.props;\n\n const {\n width: _imgWidth_,\n height: _imgHeight_,\n imgContainerHeight,\n src,\n } = imgProps;\n\n const isRaster =\n src &&\n ['png', 'jpg', 'jpeg', 'gif'].includes(\n src?.slice(src?.lastIndexOf('.') + 1).toLowerCase()\n );\n\n return (\n \n {includeMedia && (\n \n {!window.dev() && isRaster ? (\n <_>\n \n {img}\n \n \n ) : (\n img\n )}\n \n )}\n\n \n {text}\n \n \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 \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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 = props => {\n const { selected, location, navigateToResults, onSubmit, children } = props;\n\n return (\n \n {\n if (window.dev && window.dev()) {\n return;\n }\n\n navigateToResults ? requestAnimationFrame(onSubmit) : onSubmit();\n }}\n >\n \n {React.cloneElement(children, {\n location: navigateToResults ? location : 'next',\n })}\n \n \n \n );\n};\n\nexport default SubmitContinue;\n","import { Block } from '@chameleoncreator/creator-app';\nimport { addScormResponseAction } from 'actions/addScormResponseAction';\nimport { updateAssessmentAction } from 'actions/updateAssessmentAction';\nimport { updateScoreAction } from 'actions/updateScoreAction';\nimport { AssessmentContext } from 'components/Module/AssessmentContainer';\nimport { HostingContext } from 'hosting/context';\nimport { assessmentQuestionEvent } from 'hosting/events';\nimport React, {\n Fragment as _,\n createContext,\n useContext,\n useEffect,\n useMemo,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport getBlockById from 'services/apiHelpers/getBlockById';\nimport getCurrentTopic from 'services/apiHelpers/getCurrentTopic';\nimport getInteractionsInTopic from 'services/apiHelpers/getInteractionsInTopic';\nimport { Report, State } from 'store/store';\nimport { Box } from 'theme-ui';\nimport { interactionContext as InteractionContext } from './interactionContext';\nimport SubmitContinue from './SubmitContinue';\n\ninterface IAssessmentQuestionContext {\n singleSelect: boolean;\n selected: string[];\n isLocked: boolean;\n}\n\nconst AssessmentQuestionContext = createContext({\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(InteractionContext);\n const hostingCtx = useContext(HostingContext);\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 hostingCtx?.data(\n assessmentQuestionEvent(interactionContext.id, {\n assessment_id: assessmentId,\n question_id: id,\n success: isCorrect,\n attemptNumber: attemptCount + 1,\n responseIds: selected,\n })\n );\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 const imgProps = img?.props?.children[1]?.props;\n\n const {\n width: _imgWidth_,\n height: _imgHeight_,\n imgContainerHeight,\n src,\n } = imgProps;\n\n const isRaster =\n src &&\n ['png', 'jpg', 'jpeg', 'gif'].includes(\n src?.slice(src?.lastIndexOf('.') + 1).toLowerCase()\n );\n\n return (\n \n {\n e.preventDefault();\n }}\n >\n \n \n Question {questionIndex + 1} of {questions.length}\n \n\n {includeMedia && (\n \n {!window.dev() && isRaster ? (\n <_>\n \n {img}\n \n \n ) : (\n img\n )}\n \n )}\n\n {text}\n\n \n \n {options}\n \n\n \n {React.cloneElement(submitBtn, {\n label: submitButtonLabel,\n })}\n \n \n \n \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(AssessmentQuestionContext);\n const { singleSelect, selected, setSelected } = assessmentQuestionContext;\n const { id, color, selectedColor } = props;\n\n return (\n \n );\n};\n\nconst AssessmentQuestionOption = ({ children, ...props }) => {\n const assessmentQuestionContext = useContext(AssessmentQuestionContext);\n const interactionContext = useContext(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 {\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 \n )}\n\n \n \n {children}\n \n \n\n \n \n \n \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 \n {[...children].map((child, index) => {\n return React.cloneElement(child, {\n numOptions: children.length,\n index,\n });\n })}\n \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 \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 \n \n {(interactionBlock.children as Block[]).map(child => {\n return renderBlock(child, Components);\n })}\n \n \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 \n Correct\n \n\n \n \n );\n};\n\nexport default AssessmentCorrect;\n","import React, { Fragment as _ } from 'react';\n\nconst AssessmentIncorrect = ({ color = '#9E6CFF' }: { color: string }) => {\n return (\n \n Incorrect\n \n \n \n \n );\n};\n\nexport default AssessmentIncorrect;\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