{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/Hotspot_Done.svg","webpack:///./assets/CC Logos - Logo wide.svg","webpack:///./store/store.ts","webpack:///./actions/addHeaderBlocksToStateAction.ts","webpack:///./actions/rehydrate.ts","webpack:///./actions/setAPIErrorAction.ts","webpack:///./store/theme.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:///./reducers/moduleWasManuallySetComplete.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/useReadyWaiter.ts","webpack:///./services/transformScoreData.ts","webpack:///./services/scorm/API.ts","webpack:///./components/lib/Scorm/SCORMToHosting.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/text.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:///./services/useFreshProps.ts","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:///./services/useModuleVersionOnCreation.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/AccordionConfig.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/Accordion/index.tsx","webpack:///./components/lib/Carousel/interactionContext.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:///./services/apiHelpers/setNewBlockNewTree.ts","webpack:///./components/lib/Carousel/CarouselConfig.ts","webpack:///./components/lib/Carousel/swipeGesture.ts","webpack:///./components/lib/Carousel/CarouselBtn.tsx","webpack:///./components/Editor/EditCarousel/EditCarousel.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/FlipCardConfig.ts","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:///./services/feedbackButtonHoverStyles.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/MultichoiceConfig.ts","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:///./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/SortationConfig.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/clickAndRevealConfig.ts","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:///./actions/moduleHasManuallySetComplete.ts","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/cards.styles.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/Plus.svg","webpack:///./assets/Image.svg","webpack:///./assets/CloseFullscreenEmbed.svg","webpack:///./assets/Plus_purple.svg","webpack:///./assets/Square.svg","webpack:///./assets/Rectangle.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/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/Feedback - Correct.svg","webpack:///./assets/Video.svg","webpack:///./assets/Embed.svg","webpack:///./assets/FullScreenIcon.svg","webpack:///./assets/PDF_smallIcon.svg","webpack:///./assets/Cross.svg","webpack:///./assets/Delete_new.svg","webpack:///./assets/Square.png","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/Long Rectangle.svg","webpack:///./assets/Graphic Banner.svg","webpack:///./assets/Media_default.svg","webpack:///./assets/Character C.png","webpack:///./assets/Character A.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/addImg@3x.svg","webpack:///./assets/Full Background_b.svg","webpack:///./assets/Feedback - Incorrect.svg","webpack:///./assets/Feedback - Retry.svg","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/Info.svg","webpack:///./assets/CC_Sortation Placeholder_Panel Media 4.png","webpack:///./assets/CC_Sortation_Placeholder.png","webpack:///./assets/HotspotSVGError.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/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/Topic Portal Icon.svg","webpack:///./assets/Topic Portal Background.svg","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:///./assets/Mid Rectangle.svg","webpack:///./setup.ts","webpack:///./assets/whoopsBrowserIncompatible.png","webpack:///./assets/Short Rectangle.svg","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"],"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","themeButtonsDefaultStyles","base","label","undefined","shape","backgroundColor","backgroundOpacity","backgroundColorOnHover","backgroundOpacityOnHover","borderWidth","focusColor","includeButtonBackground","useLargeButton","borderRadius","textColor","textColorOnHover","shadow","outline","outlineColor","fontFamily","fontSize","bold","uppercase","getDefaultButtonStyles","moduleVersionOnCreation","semver","valid","gte","initialState","apiError","count","bookmarkLoaded","bookmarkLocation","currentInteraction","currentInteractionBlockId","currentTopic","audio","audioAcknowledged","customFonts","error","exit","exitComplete","moduleWasManuallySetComplete","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","versionOnCreation","isModernVersion","console","log","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","getTheme","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","packageVersion","process","includes","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","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","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","topicPortalMedias","tPM","tPMBlock","topicSId","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","MODULE_WAS_MANUALLY_SET_COMPLETE","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","TopicPortalContainers","topicPortalMediasUpdatedWithSIds","nextTPMBlock","updateTopicPortalMediasWithSIds","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","removeAttribute","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","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","flexDirection","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","readyWaiter","isResolved","setIsResolved","promiseRef","resolveRef","promise","reset","useReadyWaiter","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","SCORM","suspendData","set","event","dispatchEvent","CustomEvent","detail","getParams","analyticsUrl","keepalive","useHostingSession","useContext","transformScoreDataFromIdToSId","scoreData","tF","transformScoreDataFromSIdToId","blockWithSIdOrId","SCORMToHostingValues","scoreMin","scoreMax","scoreScaled","scoreRaw","success","completion","suspend_data","SCORMToHosting","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","lastInteractionSeen","allInteractionsSeen","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","setLastInteractionSeen","reportedInteractions","setReportedInteractions","exiting","numberOfScorableInteractions","lastInteraction","_curr_","scorePercent","percentComplete","hasExited","setShouldSendScoreValue","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","textPlaceholderContent","displayInline","getPlaceholderText","hX","headingX","ImageChoice","parsedFlipCardLayout","makeLeftChoice","imgBlock","textBlock","makeRightChoice","makeFillChoice","makeNoneChoice","createChoice","choice","None","media","createTextBlock","Left","Right","Fill","createAccordionFieldBlock","imageChoice","createAccordionBlock","createAFB","contentForColumn","createSlideBlock","createFlipcardsBlock","createFlipcardInteractionBlock","flipcardLayout","imageText","imageImage","textText","answerCount","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","createModalWithEditableBtn","createDragAndDropElement","Media_default","createDragAndDropBlock","createDragAndDropInteractionBlock","panelBackground","panelBackgroundDragging","textColorDragging","dropZoneColor","baseColor","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","isTextEntry","createFiveStarRatingBlock","createFiveStarRatingInteractionBlock","starColor","submissionEmailDestination","subject","resultsPassed","resultsFailed","createResultsPageInteractionBlock","graphType","graphColor","createClickAndRevealBlock","isLandingPage","createClickAndRevealsBlock","createClickAndRevealInteractionBlock","clickAndRevealPanelTextColor","clickAndRevealLabelTextColor","borderColor","useGlobalNavigation","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","numberOfAccordions","createAccordionInteractionBlock","none","forceOneColumnReversed","carousel","slideCount","carouselColor","carouselTextColor","numberOfSlides","FullPageTextBackground","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","onFocus","onBlur","checkWindowHasScrolled","backgroundImageURL","updateInteractionsOpenAction","nextTopic","nextInteraction","topicContainer","getNextInteraction","windowScrollY","preventScroll","getFontSize","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","getHiddenBackButton","ContainerLogical","moduleContext","setComplete","setCompleteAndExit","resetModule","includeAudio","stopAudioWhenModalIsOpened","autoOpenNextSection","backgroundStyle","tabbableElements","setTabbableElements","lastTabbableElement","hasNavigationButton","fullWidth","isOpen","contentContainer","tabDirection","trappingFocusMessage","useLayoutEffect","hiddenBackButton","onKeyDown","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","useFreshProps","checkShallowEqual","shallowEqual","CHAMELEON_COPIED_TEXT","isBoldHotkey","isKeyHotkey","isItalicHotkey","isUnderlinedHotkey","schema","isVoid","EditableText","placeholderText","textBackgroundOpacity","enableSecondaryLinkColors","enableCustomLinkColors","customLinkColors","clearedFormatting","onCopy","copied","clipboardData","getData","hasPlaceholder","editorCurrent","readOnly","onChange","toggleMark","onPaste","pasted","pastedToPs","renderBlock","updateEditor","getBaseButtonStyles","fontWeight","hoverColor","buttonShape_","pill","rectangle","circle","aspectRatio","updateLinkColors","getFocusColorForCSSObject","updateButtonHeightForIE","buttonRef","goalHeight","offsetWidth","hasValidLocationUpdated","parsedLocation","useModuleVersionOnCreation","IsExternalLink","strokeMiterlimit","GenericButton","themeButtonDefault","getThemeDefaultButtonStyles","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","resetInertAndOverflowY","setBlockProps","makeRootInert","hasAttribute","isInert","docBodyOverflowY","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","accordionDefaultStyles","headingColor","headingTextColor","includeBorder","getDefaultStyles","blockMetaPackageVersion","clearFieldHilites","field","useAccordion","unlock","exclusive","viewed","past","AccordionContext","IsAppleAndroid","fieldBodyTextColor","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","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","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","ComponentsObject","InteractionColumn","includeAdditionalTextField","AccordionField","includeFieldBodyBackground","fieldBodyBackgroundOpacity","fieldBodyBackgroundColor","trigger","interactionIsOpen","isFieldOpen","fieldBody","now","accordion_id","accordionClose","mt","mb","AccordionHeader","includeHeadingBackground","headingBackgroundOpacity","fieldHeaderRef","fieldFauxFocus","borderRadiusRealculatedForCSSBug","fieldOpen","aria-expanded","pl","pr","AccordionBody","fieldBodyElements","onAnimationStart","accordionImgPlaceholder","ContinueButton","ContinueBtn","AccordionDisplay","blockId","useSetState","setErrorAction","updateUserPaletteAction","nextTheme","themes","AddRemmoveBtn","rotation","Swatch","marginRight","AddRemoveBtnWrapped","AddRemoveBtn","currentColor","selectColor","colorsFromTheme","themeButtonsMain","confirm","setNewBlockNewTree","carouselDefaultStyles","backGround","checkSwipeIsLive","Btn","dir","arrowColor","ariaDisabled","hoverColorToRGB","heightOffset","Marker_v2","carouselContext","CarouselContext","goto","isDefaultColor","notCurrentMarkerColor","isEDGE","edge","Direction","CarouselLayout","currentIndex","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","longRectangle","CarouselDisplay","updateItemsSeen","Flipcards","updateFlipCardSeen","numFlipCards","noop","headingStylesForPanelsAndCards","Face","face","includeFlipcardBackground","cardBackgroundOpacity","alignTextTop","flipcardOutline","flipcardOutlineColor","flipcardBorderRadius","visibleFace","mediaType","mediaTypeUpdated","faceMedia","faceElement","addRemoveStopPropagation","addRemove","flipCardDefaultStyles","flipcardFrontColor","flipcardBackColor","flipcardFrontTextColor","flipcardBackTextColor","flipcardWidth","flipcardHeight","Flipcard","cardHasFocus","setCardHasFocus","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","placeholderImage","Flipcard_v2","FlipcardSide","Front","Back","continueBtn","FlipCardDisplay","Tick","tickColor","TermsAndConditions","accept","acceptContent","acceptBorderRadius","acceptTextColor","acceptBackgroundColor","setToggle","onSubmit","checked","htmlFor","FullPageText","FullPageTextDisplay","addScormResponseAction","scormAction","getFeedbackButtonHoverStyles","buttonProps","hR","hG","hB","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","buttonStylesOnHover","parsedOnClose","useScoringQuizzes","SubmitState","multichoiceMediaPlaceholders","CC_Multi_Choice_Media_Placeholder","placeholderMappingToImageId","MultichoiceContext","sessionLock","sessionSelected","sessionIsCorrect","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","multichoiceDefaultStyles","panelBorderRadius","multichoiceMediaPanelBorderRadius","optionTextColor","mediaPanelHeight","hasSetWidthHeight","includeRadioCheckbox","fixedPanelHeight","Answer","multichoiceContext","optionText","panelBackgroundOpacity","_panelBackgroundOpacity","selectedOutlineColor","_includeRadioCheckbox_","Boolean","panelOutline","panelOutlineColor","setHasFocus","buttonFocus","optionStyles","imgDescription","mediaIsText","mediaIsImage","eventHandlers","input","ColumnContentForMultichoiceMedia","CC_QuestionTextImage","MultichoiceMedia","MultichoiceWithText","Multichoice_v2","MultichoiceDisplay","MultichoiceImageContext","MultichoiceImage","defaultFeedback","answers","submitBtn","setResult","setShowFeedback","findChildByType","IELayout","isButtonBlock","aria-describedby","selectedColor","imageBorderRadius","imageBackground","multichoiceImageContext","isSelected","isCorrectOption","targetFeedback","txtFreshProps","feedbackTextCB","buttonContainerCB","updatedProps","MultiChoice_default","MultichoiceImageWithText","ColumnImageAndText","useMediaInColumn","MultichoiceImageDisplay","renderedChildren","sortationDefaultStyles","baseColorOpacity","baseOutline","baseOutlineColor","baseBorderRadius","optionBorderRadius","optionBackgroundOpacity","optionBackgroundOpacityDragging","optionOutline","optionOutlineColor","Option","isDragging","metaPackageVersion","optionContainer","_panelBackground","_panelBackgroundDragging","_0_100_","rgbaFromHexAndOpacity","panelTextColor","panelTextColorDragging","rr","gg","bb","firstElementChild","userSelect","_baseColor","_baseColorOpacity","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","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","Long_Rectangle","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_","_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","normalizedRating","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","clickAndRevealDefaultStyles","includePanelBackground","includeLabel","clickAndRevealShowSeenStateBackgroundColor","clickAndRevealShowSeenStateTickColor","globalNavigation","PanelColumn","ClickAndRevealSeenTick","imageDescription","doc","DOMParser","parseFromString","altTextForAnchorTag","imgZoomIsActiveElement","labelContent","panelImg","navigation","panelId","panelBlock","returnToLastFocused","findLastFocused","lastFocused","panel","panelLabel","ctr_click","ctr_id","Content","mediaChanged","setMediaChanged","minHeightInDev","ClickAndRevealContent","_interactionContext_","columnA","columnB","DOMLayout","clickAndReveals","Short_Rectangle","Mid_Rectangle","clickToRevealPanelPlaceholder","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","_props","includeCardBackground","contentcardBackgroundOpacity","includeButton","mediaIndex","mediaProps","mediaPadding","pdf","textMargin","mediaBorderRadius","isImageContained","imgMediaPadding","mediaPaddingWhenFitContain","leftRightPositionMedia","alignContent","cardPlaceholderImg","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","Dropdown_default","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","delayTopicChildrenLengthCheck","getTopicPortalContainerBlock","getTopicPortalContainerBlockChildrenData","addMedia","topicPortalContainerBlockChildrenData","removeMedia","topicIdentifiers","updateTopicPortalMedia","topicMedia","topicPortal","TopicPortalMedia","Topic_Portal_Background","TopicPortalDisplay","feedbackNonScoring","feedbackScoring","textAreaStyle","setTextAreaStyle","isSubmitted","updateTextAreaStyle","submitToCollect","chameleonTextElement","shouldDispatch","FeedbackNonScoring","TextAreaDynamicHeight","initialValue","setInit","characterHeightMeasured","setCharacterHeightMeasured","characterHeight","proxy","_style_","computedStyles","computedFontFamily","computedFontSize","TextEntryVariable","variableName","_submitBtn_","setIsSubmitted","TextEntryVariableDisplay","TextEntryQuiz","messagePlaceholder","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","moduleHasManuallySetComplete","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","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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AG,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,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,IA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CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,EAAE,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,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,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C,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,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,CAA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AI,CAAC,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,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,CA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AAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,MAAM,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,I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AAO,EAAI,CAAC,IAAI,GAAK,MAAM,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,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,E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,YAAC,GAAD,CACEtzD,QAAS,WACP+yD,EAAsB91G,IAAoB,MAK/Cu1G,KAAmBv1G,IAAqBhE,OAAOqO,QAC9C,YAAC,GAAD,CAAa5O,IAAKO,OAAOqO,MAAQ0f,EAAgB,KAGlDgsF,GACC,YAAC,GAAD,CAAU1gD,oBAAqBA,KAnH5B,MMjzBE8jD,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,kBCz5CEn2E,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,mB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oBCA3C9B,EAAOD,QAAU+B,IAA0B,mB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,wB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,gC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,+B,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,mB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,qD,oBCA3C9B,EAAOD,QAAU+B,IAA0B,uC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,8B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,wB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,0B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,uC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,kB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,wB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,mB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,qB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,+B,oBCA3C9B,EAAOD,QAAU+B,IAA0B,wB,oBCA3C9B,EAAOD,QAAU+B,IAA0B,uC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,iC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,gC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,gC,oBCA3C9B,EAAOD,QAAU+B,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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.5.26/\";\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([582,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"images/Hotspot_Done.svg\";","module.exports = __webpack_public_path__ + \"images/CC Logos - Logo wide.svg\";","import { Block, Blocks } from '@chameleoncreator/creator-app';\nimport { getTheme, TTheme } from './theme';\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 IdSIdMapping = {\n idToSId: { [key: string]: Number };\n sIdToId: { [key: string]: string };\n};\n\nexport type LessonStatus = 'completed/incomplete' | 'passed/failed/incomplete';\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 moduleWasManuallySetComplete: undefined | 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: TTheme;\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 moduleWasManuallySetComplete: undefined,\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: getTheme(),\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 semver from 'semver';\n\nexport type ModuleIsFreeScrolling = {\n desktop: boolean;\n device: boolean;\n};\n\nexport type TThemeButtonsDefaultStyles = {\n label: string | undefined;\n shape: 'pill' | 'rectangle' | 'circle';\n backgroundColor: string;\n backgroundOpacity: number;\n backgroundColorOnHover: string | undefined;\n backgroundOpacityOnHover: number;\n borderWidth: number;\n focusColor: string | undefined;\n includeButtonBackground: boolean;\n useLargeButton: boolean;\n borderRadius: number;\n textColor: string;\n textColorOnHover: string | undefined;\n shadow: boolean;\n outline: boolean;\n outlineColor: string | undefined;\n fontFamily: string | undefined;\n fontSize: number;\n bold: boolean;\n uppercase: boolean;\n};\n\nexport const themeButtonsDefaultStyles: {\n [key: string]: TThemeButtonsDefaultStyles;\n} = {\n base: {\n label: undefined,\n shape: 'pill',\n backgroundColor: '#060709',\n backgroundOpacity: 100,\n backgroundColorOnHover: undefined,\n backgroundOpacityOnHover: 80,\n borderWidth: 1,\n focusColor: undefined,\n includeButtonBackground: true,\n useLargeButton: false,\n borderRadius: 8,\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 '1.5.0': {\n label: undefined,\n shape: 'rectangle',\n backgroundColor: '#1A1A2B',\n backgroundOpacity: 100,\n backgroundColorOnHover: '#1A1A2B',\n backgroundOpacityOnHover: 80,\n borderWidth: 1,\n focusColor: undefined,\n includeButtonBackground: true,\n useLargeButton: false,\n borderRadius: 8,\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};\n\nexport const getDefaultButtonStyles = (\n moduleVersionOnCreation: string = ''\n) => {\n if (!moduleVersionOnCreation || !semver.valid(moduleVersionOnCreation)) {\n return themeButtonsDefaultStyles['base'];\n }\n\n if (semver.gte(moduleVersionOnCreation, '1.5.0')) {\n return themeButtonsDefaultStyles['1.5.0'];\n }\n //\n return themeButtonsDefaultStyles['base'];\n};\n\n//\nexport type TButton = TThemeButtonsDefaultStyles & {\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 TTheme = {\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\nexport const getTheme = (versionOnCreation: string = '') => {\n const isModernVersion =\n semver.valid(versionOnCreation) && semver.gte(versionOnCreation, '1.5.0');\n\n console.log('LOADING APPROPRIATE THEME FOR :', versionOnCreation);\n\n return {\n backgroundColor: isModernVersion ? '#FBFBFD' : '#ffffff',\n buttonBackgroundColor: isModernVersion ? '#1A1A2B' : '#060709',\n buttonBorderRadius: 8,\n buttonOutline: false,\n buttonShadow: false,\n buttonShape: isModernVersion ? 'rectangle' : '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: isModernVersion ? '#E8EDFF' : '#cea5f9',\n buttons: {\n main: getDefaultButtonStyles(versionOnCreation),\n },\n highContrast: false,\n recoloredChameleonImages: {},\n textColor: isModernVersion ? '#1A1A2B' : '#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': isModernVersion ? '#D1D5E7' : '#0000ff',\n 'Menu text active colour': isModernVersion ? '#B2B6CA' : '#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: isModernVersion ? '#B2B6CA' : '#0000ff',\n visited: isModernVersion ? '#B2B6CA' : '#800080',\n hover: isModernVersion ? '#1A1A2B' : '#0000ff',\n focus: isModernVersion ? '#D1D5E7' : '#e59700',\n active: isModernVersion ? '#D1D5E7' : '#ff0000',\n },\n linksSecondary: {\n link: '#0000ff',\n visited: '#800080',\n hover: '#0000ff',\n focus: '#e59700',\n active: '#ff0000',\n },\n } as TTheme;\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 //\n let meta;\n const packageVersion = process.env.PACKAGE_VERSION;\n\n if (extra.meta) {\n meta = extra.meta;\n if (\n meta &&\n ['module', 'topic', 'interaction'].includes(type?.toLowerCase())\n ) {\n meta.packageVersion = packageVersion;\n\n // console.log(\n // 'TYPE :',\n // type,\n // 'HAS UPDATED META WITH PACKAGE_VERSION :',\n // packageVersion\n // );\n }\n }\n\n return {\n id: uuid(),\n type: type,\n props: extra.props,\n 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/Graphic Banner.svg';\nimport graphic_header_logo from 'assets/CC Logos - Logo wide.svg';\nimport standard_header_logo from 'assets/CC Logos - Logo wide.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: '#060709' || '#ffffff',\n backButton: true,\n topicName: true,\n progressBar: true,\n topicMenu: true,\n headerDropShadow: false,\n};\n\nexport const createHeader = (): Block => {\n // console.log('header is being created here ? or did it come from the server ?');\n\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 meta: {},\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 if (entry?.type === 'TopicPortalContainer') {\n //\n const topicPortalMedias = entry?.children as Block[];\n\n topicPortalMedias?.forEach((tPM, index) => {\n const tPMBlock = state.blocks[tPM?.id];\n\n if (!tPMBlock) {\n return;\n }\n\n if (!tPMBlock?.props?.topicSId) {\n //\n if (!tPMBlock?.props) {\n tPMBlock.props = {};\n }\n\n console.log(\n `TopicPortalMedia is missing topicSId. update : ${topics[index]?.props?.sId}`\n );\n\n tPMBlock.props.topicSId = topics[index]?.props?.sId;\n }\n });\n }\n\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\n savedState.interactionsSeen = [];\n // savedState.interactionsLocked = [];\n // savedState.landingPagesSeenState = {};\n\n // savedState.bookmarkLocation = '1/2';\n\n savedState.moduleWasManuallySetComplete = undefined;\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';\nimport { moduleWasManuallySetComplete } from 'reducers/moduleWasManuallySetComplete';\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 MODULE_WAS_MANUALLY_SET_COMPLETE: moduleWasManuallySetComplete,\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 meta: {},\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 //\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 = (\n state: State = initialState,\n { data }: Action\n): State => {\n //\n console.log(data);\n\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","import { Action, initialState, State } from 'store/store';\n\nexport const moduleWasManuallySetComplete = (\n state: State = initialState,\n { data }: Action\n): State => {\n //\n // console.log('moduleWasManuallySetComplete :', data);\n\n const nextState = {\n ...state,\n moduleWasManuallySetComplete: data as any,\n };\n\n return nextState;\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';\nimport { getAllTopicsOrdered } from 'selectors/block';\n\nfunction updateLegacyBlocksWithSId(store) {\n const { blocks } = store.getState();\n const blocksList = Object.values(blocks) as Block[];\n\n const topicBlocks = getAllTopicsOrdered(blocks);\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 updateTopicPortalMediasWithSIds = () => {\n const TopicPortalContainers = blocksList.filter((block: Block) => {\n return block.type === 'TopicPortalContainer';\n });\n\n console.log(\n 'update TopicPortalMedias with topicSId if required',\n TopicPortalContainers\n );\n\n const topicPortalMediasUpdatedWithSIds: Block[] = [];\n\n TopicPortalContainers.forEach(entry => {\n const topicPortalMedias = entry?.children as Block[];\n\n topicPortalMedias?.forEach((tPM, index) => {\n const tPMBlock = blocks[tPM?.id];\n //\n\n if (!tPMBlock) {\n return;\n }\n\n const nextTPMBlock = cloneBlock(tPMBlock);\n\n if (nextTPMBlock && !nextTPMBlock?.props?.topicSId) {\n //\n if (!nextTPMBlock?.props) {\n nextTPMBlock.props = {};\n }\n\n console.log(\n `TopicPortalMedia is missing topicSId. update : ${topicBlocks[index]?.props?.sId}`\n );\n\n nextTPMBlock.props.topicSId = topicBlocks[index]?.props?.sId;\n\n topicPortalMediasUpdatedWithSIds.push(nextTPMBlock);\n } else {\n console.log(`TopicPortalMedia has topicSId. DOES NOT NEED UPDATING`);\n }\n });\n });\n\n return topicPortalMediasUpdatedWithSIds;\n };\n\n const updatedBlocks = [\n ...blocksUpdatedWithSId(topicBlocks),\n ...blocksUpdatedWithSId(interactionBlocks),\n ...blocksUpdatedWithSId(assessmentQuestionBlocks),\n ...updateTopicPortalMediasWithSIds(),\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\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\n if (window?.dev && !window.dev()) {\n root?.setAttribute('inert', '');\n }\n\n return;\n }\n\n document.title = documentTitle.current;\n\n root?.removeAttribute('inert');\n //\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 backBtn.current!.setAttribute(\n 'title',\n 'Return to previous interaction'\n );\n } else {\n backBtn.current!.style.opacity = '0.1';\n backBtn.current!.style.pointerEvents = 'none';\n backBtn.current!.setAttribute('aria-hidden', 'true');\n backBtn.current!.setAttribute('title', 'Back button unavailable');\n }\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 return (\n {\n if (!backBtn.current) backBtn.current = node;\n }}\n id=\"chameleon-back-button\"\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/CC Logos - Logo wide.svg';\n// '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\nexport const Burger = props => {\n const width = 20;\n // || 24;\n const { color = '#2a2c2d', onClick } = props;\n\n const [hovered, setHovered] = useState(false);\n\n return (\n {\n // console.log(e);\n\n // setHovered(h => !h);\n // }}\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';\nimport { Burger } from 'components/Header/Header';\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 useRef,\n} from 'react';\nimport getStore from 'services/getStore';\nimport { GetParams } from 'setup';\nimport uuid from 'uuidv4';\nimport { ModuleEvent } from './events';\nimport { useReadyWaiter } from 'services/useReadyWaiter';\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 readyWaiter = useReadyWaiter();\n console.log({ 'readyWaiter.isResolved': readyWaiter?.isResolved });\n\n const signaler = createSignalServer({\n url,\n projectId,\n versionId,\n accountId,\n source,\n isHosted,\n enableAnalytics,\n isScorm,\n readyWaiter,\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\n// purely for testing\nconst toyPromise = (t = 3000) => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve();\n }, t);\n });\n};\n\nconst createSignalServer = ({\n url,\n projectId,\n versionId,\n accountId,\n source,\n isHosted,\n enableAnalytics,\n isScorm,\n readyWaiter,\n setSession,\n getSession,\n}) => {\n //\n\n // use the hook here as opposed to in the createSignlaServer itself\n // so we can potentially have multiple readyWaiters\n // in data for example\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 //\n readyWaiter?.resolve();\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\n let json = await req.json();\n\n //\n\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\n readyWaiter?.resolve();\n\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\n // console.log('AWAITING FOR START TO COMPLETE ITS WORK. . .');\n //\n try {\n await readyWaiter.promise();\n // console.log('START HAS COMPLETED ITS WORK');\n } catch (err) {\n console.warn(err);\n }\n\n //\n console.log({ localSession });\n\n if (localSession) {\n return localSession;\n }\n\n const stateSession = getSession();\n\n console.log({ stateSession });\n\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 //\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 if ((err as any)?.name !== 'AbortError') {\n console.warn(`${url}/harp/hosting/${projectId}/session`, err);\n }\n }\n }\n\n if (isScorm?.isInitialized && enableAnalytics) {\n let userId = SCORM.get(\n SCORM.version === '1.2' ? 'cmi.core.student_id' : 'cmi.learner_id'\n );\n\n //\n // some scorm environments do not support cmi.core.student_id | cmi.learner_id !?!?\n //\n if (!userId) {\n userId = getLocalStorageUserId();\n }\n //\n\n jsonReshaped.userId = `scorm_user_${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 //\n\n setSession(jsonReshaped);\n\n return jsonReshaped;\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 { useState, useRef, useCallback } from 'react';\n\nexport function useReadyWaiter() {\n const [isResolved, setIsResolved] = useState(false);\n\n const promiseRef = useRef | null>(null);\n const resolveRef = useRef<(() => void) | null>(null);\n\n const promise = useCallback(() => {\n if (promiseRef.current) {\n return promiseRef.current;\n }\n\n promiseRef.current = new Promise(resolve => {\n if (isResolved) {\n resolve();\n return;\n }\n resolveRef.current = resolve;\n });\n\n return promiseRef.current;\n }, [isResolved]);\n\n const resolve = useCallback(() => {\n if (!isResolved) {\n setIsResolved(true);\n resolveRef.current?.();\n // we can biff resolveRef.current now. . .\n resolveRef.current = null;\n }\n }, [isResolved, setIsResolved]);\n\n const reset = useCallback(() => {\n setIsResolved(false);\n promiseRef.current = null;\n resolveRef.current = null;\n }, [setIsResolved]);\n\n return {\n promise,\n resolve,\n reset,\n isResolved,\n };\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","import { State } from 'store/store';\nimport getStore from 'services/getStore';\n\nlet SCORMToHostingValues: { [key: string]: any } | undefined;\nlet delay;\n\nconst SCORMToHosting = ($: object, key: null | string = null) => {\n const isHosted = (window as any).getParams().hosted;\n\n // console.log($, key);\n\n if (Object.values($).filter(value => value)?.length === 0) {\n console.log('no values. should we bail ???');\n // return;\n }\n\n if (!isHosted) {\n return isHosted;\n }\n\n const state = (getStore().getState() || {}) as State;\n\n if (!SCORMToHostingValues) {\n const {\n scoreData,\n interactionsSeen,\n interactionsLocked,\n landingPagesSeenState,\n assessments,\n moduleVariables,\n } = {\n scoreData: state.userBehaviour.score,\n ...state,\n };\n\n SCORMToHostingValues = {\n data: {\n scoreData,\n interactionsSeen,\n interactionsLocked,\n landingPagesSeenState,\n assessments,\n moduleVariables,\n },\n };\n }\n\n if (key) {\n SCORMToHostingValues = {\n ...SCORMToHostingValues,\n [key]: {\n ...SCORMToHostingValues[key],\n ...$,\n },\n };\n } else {\n SCORMToHostingValues = {\n ...SCORMToHostingValues,\n ...$,\n };\n }\n\n clearTimeout(delay);\n\n delay = setTimeout(() => {\n const raw = JSON.stringify({\n hosting: { learning_module_session_data: SCORMToHostingValues },\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 = `${window.chameleon.CHAMELEON_URL}/harp/hosting/${projectId}/data`;\n\n fetch(endPoint, requestOptions)\n .then(response => {\n // console.log({ response });\n\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 }, 300);\n // 1000 / 60\n};\n\nexport default SCORMToHosting;\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 SCORMToHosting from './SCORMToHosting';\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 moduleWasManuallySetComplete: undefined | 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 const moduleWasManuallySetComplete = useSelector((state: State) => {\n return state.moduleWasManuallySetComplete;\n });\n\n useEffect(() => {\n if (moduleWasManuallySetComplete === undefined) {\n return;\n }\n\n setSCORMCompletion(\n SCORM,\n (SCORM.version as Version) || Version.TwoThousandAndFour\n )(moduleWasManuallySetComplete);\n }, [moduleWasManuallySetComplete]);\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\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 moduleWasManuallySetComplete,\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\n const scoreCompletion = exitProps.moduleCompleteScoreRequirement\n ? exitProps.passed\n : true;\n\n const isComplete =\n moduleWasManuallySetComplete || (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 const {\n lastInteractionSeen,\n allInteractionsSeen,\n moduleCompleteInterationRequirement,\n moduleCompleteScoreRequirement,\n } = props;\n\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 //\n\n if (\n moduleCompleteInterationRequirement === 'lastInteractionSeen' &&\n lastInteractionSeen\n ) {\n shouldSendScore = true;\n }\n\n if (\n moduleCompleteInterationRequirement === 'allInteractionsSeen' &&\n allInteractionsSeen\n ) {\n shouldSendScore = true;\n }\n\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 console.log(cmiInteractions, qProps, {\n version,\n interactionType,\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 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 moduleWasManuallySetComplete,\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 moduleWasManuallySetComplete: state.moduleWasManuallySetComplete,\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 scoreRaw,\n scoreMax: numberOfScorableInteractions,\n passed: scorePercent >= Number(passMark),\n scorePercent,\n percentComplete,\n isComplete: false,\n moduleWasManuallySetComplete,\n sendScore: false,\n hasExited: exiting,\n shouldSendScoreWhen,\n moduleCompleteInterationRequirement,\n moduleCompleteScoreRequirement,\n sendOnlySuccessStatus,\n lessonStatus,\n scoringCriteria,\n };\n\n //\n if (moduleWasManuallySetComplete) {\n exitProps.isComplete = true;\n }\n\n //\n const setShouldSendScoreValue = setShouldSendScore(setIsComplete(exitProps));\n\n if (moduleWasManuallySetComplete) {\n setShouldSendScoreValue.isComplete = true;\n }\n\n SCORMToHosting({\n ...setShouldSendScoreValue,\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 SCORMToHosting(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 SCORMToHosting({\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 SCORMToHosting(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 SCORMToHosting(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 SCORMToHosting({ [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 SCORMToHosting({\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 { 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 textPlaceholderContent?: string;\n className?: 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 textPlaceholderContent,\n className,\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 ...(textPlaceholderContent && {\n content: textPlaceholderContent,\n }),\n className,\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/744068341',\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 content: 'Example description text',\n },\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","type HX = 'h1' | 'h2' | 'h3' | 'h4';\n\ntype headingX =\n | 'heading-one'\n | 'heading-two'\n | 'heading-three'\n | 'heading-four';\n\nexport const getPlaceholderText = (hX: HX, headingX) => {\n return `<${hX} data-type=\"${headingX}\">

${hX?.toUpperCase()} Heading example

Body copy text example set to P

`;\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';\nimport { getPlaceholderText } from './text';\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 const createTextBlock = createBlock('Text', [], {\n props: { content: 'Description text example' },\n });\n\n switch (choice) {\n case ImageChoice.Left: {\n return makeLeftChoice(media, createTextBlock);\n }\n case ImageChoice.Right: {\n return makeRightChoice(media, createTextBlock);\n }\n case ImageChoice.Fill: {\n return makeFillChoice(media, createTextBlock);\n }\n case ImageChoice.None: {\n return makeNoneChoice(createTextBlock);\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', [\n createBlock('Text', [], { props: { content: 'Example text' } }),\n ]),\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 textPlaceholderContent: getPlaceholderText('h1', 'heading-one'),\n className: 'text-align-center',\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 = '#1A1A2B',\n // headingColor = '#FBFBFD',\n // fieldBodyTextColor,\n // fieldBodyBackgroundColor = '#fff',\n lockDown = 0,\n style,\n } = props as any;\n\n let columnCount = 0; // props.columnCount;\n let columnsReversed = true; // props.columnsReversed;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props.numberOfAccordions, props.imgChoice),\n columnCount,\n 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: 'Accordion',\n layout: `${columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n 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';\nimport { getPlaceholderText } from './text';\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 bulletColor: '#000',\n textPlaceholderContent: 'Example text content',\n className: 'text-align-center',\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: '#000',\n textPlaceholderContent: 'Example text content',\n className: 'text-align-center',\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: '#000',\n textPlaceholderContent: 'Example text content',\n className: 'text-align-center',\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 textPlaceholderContent: getPlaceholderText('h1', 'heading-one'),\n className: 'text-align-center',\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 = '#fff',\n // flipcardFrontTextColor = lGrey0,\n // flipcardBackTextColor = '#000',\n // flipcardWidth = 300,\n // flipcardHeight = 280,\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\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';\nimport { getPlaceholderText } from './text';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst contentForColumn = props => (i: number) => {\n // need to know which media we're creating\n // text 0\n // image 1\n // . . .\n\n let textPlaceholderContent = '';\n let className = '';\n\n if ([0, 1, 3, 5, 6].includes(props?.child)) {\n textPlaceholderContent = getPlaceholderText('h2', 'heading-two');\n }\n\n if ([2, 4].includes(props?.child)) {\n textPlaceholderContent = getPlaceholderText('h1', 'heading-one');\n className = 'text-align-center';\n }\n\n return [\n () =>\n createMediaBlock({\n child: 0,\n textPlaceholderContent,\n className,\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 const forceOneColumnReversed = [2, 4].includes(props.child);\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props),\n forceOneColumnReversed ? 0 : props.columnCount,\n forceOneColumnReversed ? true : 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: forceOneColumnReversed\n ? 'OneColumnReversed'\n : `${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';\nimport { getPlaceholderText } from './text';\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 props: {\n content: 'Example text content',\n className: 'text-align-center',\n },\n }),\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 textPlaceholderContent: getPlaceholderText('h1', 'heading-one'),\n className: 'text-align-center',\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 let columnCount = 0; // props.columnCount;\n let columnsReversed = true; // props.columnsReversed;\n\n return createBlock(\n 'Interaction',\n [\n createLayout(\n contentForColumn(props.numberOfSlides),\n columnCount,\n 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: `${columnCount === 0 ? 'OneColumn' : 'TwoColumns'}${\n 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/Feedback - Correct.svg';\n// references to old images. . .\n//\n// CC_Correct.png';\n// CC_Scorable Images_Correct.png';\nimport Incorrect_default from 'assets/Feedback - Incorrect.svg';\n// CC_Incorrect.png';\n// CC_Scorable Images_Incorrect.png';\nimport Attempt_default from 'assets/Feedback - Retry.svg';\n// 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';\nimport { getPlaceholderText } from './text';\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 props: {\n content: 'Example text',\n className: 'text-align-center',\n },\n }),\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 content: 'Example text',\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\n ? createMultichoiceMediaOption()\n : createBlock('Text', [], {\n props: {\n content: 'Example text content',\n className: 'text-align-center',\n },\n }),\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\n ? createMultichoiceMediaOption()\n : createBlock('Text', [], {\n props: {\n content: 'Example text',\n },\n }),\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 textPlaceholderContent: getPlaceholderText('h2', 'heading-two'),\n className: isMultichoiceMedia ? 'text-align-center' : '',\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 { getSId } from '../utils';\nimport { createMediaBlock } from './media';\nimport { getPlaceholderText } from './text';\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 props: {\n content: 'Example text',\n },\n }),\n createBlock('SortableImage', [createBlock('Image')], {\n props: { isSortableImg: true },\n }),\n ]);\n};\n\nexport const createSortationBlock = (count: number) => {\n return createBlock('Sortation', [\n createBlock(\n 'SortationQuestionText',\n [\n createBlock('Text', [], {\n props: {\n content: getPlaceholderText('h2', 'heading-two'),\n },\n }),\n ],\n {\n props: {\n type: 'SortationQuestionText',\n },\n }\n ),\n createBlock('SortationHeading0', [\n createBlock('Text', [], {\n props: {\n content: 'Marker text',\n },\n }),\n ]),\n createBlock('SortationHeading1', [\n createBlock('Text', [], {\n props: {\n content: 'Marker text',\n },\n }),\n ]),\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\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 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 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 uuid from 'uuidv4';\nimport { getSId } from '../utils';\nimport { getPlaceholderText } from './text';\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 textPlaceholderContent: 'Drop-zone text',\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 textPlaceholderContent: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\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',\n panelBackgroundDragging = '#FBFBFD',\n textColorDragging = '#fff',\n dropZoneColor = '#D1D5E7',\n panelWidth = 300,\n panelHeight = 280,\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';\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 = '#D1D5E7',\n hotSpotSize = 75,\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';\nimport { getPlaceholderText } from './text';\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 textPlaceholderContent: getPlaceholderText('h1', 'heading-one'),\n className: 'text-align-center',\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 { getSId } from '../utils';\nimport { getPlaceholderText } from './text';\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, isTextEntry: boolean) => (\n i: number\n) => {\n return [\n () =>\n createBlock('Text', [], {\n props: {\n useBackgroundControls: true,\n content: getPlaceholderText(\n !isTextEntry ? 'h1' : 'h2',\n !isTextEntry ? 'heading-one' : 'heading-two'\n ),\n className: 'text-align-center',\n },\n }),\n () => createFiveStarRatingBlock(count),\n ][i];\n};\n\nexport const createFiveStarRatingInteractionBlock = (\n props: FiveStarRatingInteractionProps\n) => {\n const {\n starColor = '#B2B6CA' || 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, isTextEntry), 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';\nimport { getPlaceholderText } from './text';\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 textPlaceholderContent: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\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 textPlaceholderContent: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\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 {\n graphType = 'circle',\n graphColor = '#D1D5E7' || lPink,\n style,\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: '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';\nimport { getPlaceholderText } from './text';\n\nconst { lGrey0, lGrey2 } = colors;\n\nconst createClickAndRevealBlock = props => {\n return createBlock('ClickAndReveal', [\n createMediaBlock({\n src: undefined,\n child: 1,\n fit: props?.isLandingPage ? 'contain' : 'cover',\n useBackgroundControls: false,\n }),\n createBlock('Text', [], {\n props: {\n useBackgroundControls: false,\n content: 'Example text',\n className: 'text-align-center',\n },\n }),\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 = (\n count: number,\n isLandingPage?: boolean\n) => {\n return createBlock('ClickAndReveals', [\n ...repeat(() => createClickAndRevealBlock({ isLandingPage }), 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, isLandingPage?: boolean) => (\n i: number\n) => {\n return [\n () =>\n createMediaBlock({\n child: 0,\n textPlaceholderContent: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\n }),\n () =>\n createBlock('InteractionColumn', [\n createClickAndRevealsBlock(count, isLandingPage),\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 = 300,\n height = 220,\n borderRadius = 20,\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, isLandingPage), 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';\nimport { getPlaceholderText } from './text';\n\nexport const addTopicPortalMedia = (\n block: Block,\n position: number,\n { topicId, topicSId }\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 topicSId,\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 textPlaceholderContent: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\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';\nimport { getPlaceholderText } from './text';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst createAssessmentIntroduction = (props?: {}) => {\n return createBlock(\n 'AssessmentIntroduction',\n [\n createMediaBlock({}),\n createBlock('Text', [], {\n props: {\n content: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\n },\n }),\n ],\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';\nimport { getPlaceholderText } from './text';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst createAssessmentQuestionOption = (props?: {}) => {\n return createBlock(\n 'AssessmentQuestionOption',\n [\n createBlock('Text', [], {\n props: {\n content: 'Text example',\n },\n }),\n ],\n {\n props: {},\n }\n );\n};\n\nconst createAssessmentQuestion = (props?: {}) => {\n return createBlock(\n 'AssessmentQuestion',\n [\n createMediaBlock({ child: 1 }),\n createMediaBlock({\n child: 0,\n textPlaceholderContent: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\n }),\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: '#B2B6CA' || mint,\n showAttemptCounter: true,\n enableLearnMore: true,\n enableTryAgain: true,\n enableReVisit: true,\n includeResultsGraph: true,\n addAssessmentRetry: true,\n enableBranching: false,\n correctColor: '#B2B6CA' || mint,\n incorrectColor: '#1A1A2B' || 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\nimport { getPlaceholderText } from './text';\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', [], {\r\n props: {\r\n useBackgroundControls: true,\r\n content: 'Example text content',\r\n className: 'text-align-center',\r\n },\r\n }),\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 textPlaceholderContent: getPlaceholderText('h1', 'heading-one'),\r\n className: 'cards media-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';\nimport { getPlaceholderText } from './text';\n\nconst { lPink, lGrey0, lGrey2, lTeal0 } = colors;\n\nexport type SelectOptionsInteractionProps = InteractionProps & {\n answerCount: number;\n};\n\nexport const createSelectOptionBlock = () => {\n return createBlock(\n 'SelectOption',\n [\n createBlock('Text', [], {\n props: {\n content: 'Dropdown heading example',\n },\n }),\n ],\n {\n props: {\n type: 'SelectOption',\n values: ['Option 1', 'Option 2', 'Option 3'],\n correctAnswer: 0,\n },\n }\n );\n};\n\nexport const createSelectOptionsBlock = (count: number) => {\n return createBlock('SelectOptionsRoot', [\n createBlock('Question', [\n createBlock('Text', [], {\n props: {\n content: getPlaceholderText('h2', 'heading-two'),\n },\n }),\n ]),\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 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 { createLayout } from 'factories/layout';\nimport { createContinueBtn } from './continueBtn';\nimport { createFeedbackBlock } from './feedback';\nimport { createMediaBlock } from './media';\nimport { getPlaceholderText } from './text';\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 props: {\n content: 'Marker text',\n },\n }),\n createBlock('Text', [], {\n props: {\n content: 'Marker text',\n },\n }),\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({\n child: 0,\n textPlaceholderContent: getPlaceholderText('h1', 'heading-one'),\n className: 'text-align-center',\n });\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 { colors } from 'styles/variables';\nimport { createContinueBtn } from './continueBtn';\nimport { createEditableBtn } from './editableBtn';\nimport { createMediaBlock } from './media';\nimport { getSId } from '../utils';\nimport { Block, cloneBlock, Blocks } from '@chameleoncreator/creator-app';\nimport { flatten } from 'factories/utils';\nimport { getPlaceholderText } from './text';\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', [\n createMediaBlock({\n child: 0,\n textPlaceholderContent: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\n }),\n ]),\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';\nimport { getPlaceholderText } from './text';\nimport FullPageTextBackground from 'assets/Full Background_b.svg';\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 textPlaceholderContent: getPlaceholderText('h1', 'heading-one'),\n className: 'chameleon-text-align-center',\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 background: FullPageTextBackground,\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 { getPlaceholderText } from './text';\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 props: {\n content: getPlaceholderText('h2', 'heading-two'),\n className: 'text-align-center',\n },\n }),\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';\nimport { getPlaceholderText } from './text';\n\nexport type ImageInteractionProps = InteractionProps & {};\n\nconst contentForColumn = props => (i: number) => {\n return [\n () =>\n createBlock('TextEntryQuiz', [\n createBlock('Text', [], {\n props: {\n content: getPlaceholderText('h2', 'heading-two'),\n },\n }),\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","import React from 'react';\nimport pubSub from 'services/pubSub';\nimport { backBtnOnClick } from 'components/Header/BackBtn';\n\nconst HiddenBackButton = ({ id }) => {\n const handleFocus = () => {\n pubSub.publish('HILITE_CHAMELEON_BACK_BUTTON', { toggle: true });\n };\n\n const handleBlur = () => {\n pubSub.publish('HILITE_CHAMELEON_BACK_BUTTON', { toggle: false });\n };\n\n return (\n \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 RefObject,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\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';\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\nconst getHiddenBackButton = (\n section: HTMLElement,\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 getHiddenMenuButton = (\n section: HTMLElement,\n id: string\n): HTMLButtonElement => {\n const hiddenMenuButton = section?.querySelector(\n `#hidden-button-menu-${id}`\n ) as HTMLButtonElement;\n\n return hiddenMenuButton;\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 backgroundStyle,\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 const [tabbableElements, setTabbableElements] = useState<\n HTMLElement[] | undefined\n >();\n\n const lastTabbableElement = tabbableElements?.length\n ? tabbableElements[tabbableElements.length - 1]\n : null;\n\n const hasNavigationButton = lastTabbableElement?.id?.includes(\n 'navigation-button'\n );\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 tabDirection = useRef<'next' | 'prev' | undefined>();\n const trappingFocusMessage = useRef();\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 e.preventDefault();\n //\n\n tabDirection.current = 'prev';\n\n if (trappingFocusMessage.current) {\n trappingFocusMessage.current.focus({ preventScroll: true });\n //\n tabDirection.current = undefined;\n }\n }\n };\n\n hiddenBackButton.addEventListener('keydown', onKeyDown);\n\n return () => {\n hiddenBackButton.removeEventListener('keydown', onKeyDown);\n };\n }, [open]);\n\n useEffect(() => {\n if (!section?.current) {\n return;\n }\n\n const onKeyDown = (e: any) => {\n const { key, shiftKey } = e;\n\n if (key === 'Tab' && !shiftKey) {\n e.preventDefault();\n\n const hiddenBackButton = getHiddenBackButton(section.current, id);\n const hiddenMenuButton = getHiddenMenuButton(section.current, id);\n\n if (hiddenBackButton && !hiddenBackButton.disabled) {\n //\n hiddenBackButton.focus({ preventScroll: true });\n } else {\n hiddenMenuButton ? hiddenMenuButton.focus() : section.current.focus();\n }\n }\n };\n\n lastTabbableElement?.addEventListener('keydown', onKeyDown);\n\n return () => {\n lastTabbableElement?.removeEventListener('keydown', onKeyDown);\n };\n }, [lastTabbableElement]);\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 (window.dev() || !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 //\n //\n let { target } = e;\n\n const tagName = target.tagName.toLowerCase();\n\n //\n if (tagName !== 'p') {\n // does element contain an anchor. or is the anchor 'outside' of the initial target\n target = target.querySelector('a') || target.closest('a');\n }\n\n const href = target?.getAttribute('href');\n\n // console.log({\n // target,\n // tagName,\n // href,\n // });\n\n if (!href) {\n return;\n }\n\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 ([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 //\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 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 useEffect(() => {\n const tabbableElements = Array.from(\n section.current.querySelectorAll(\n 'a[href], button, input:not([type=\"hidden\"]), select, textarea, area[href], iframe, summary, [contenteditable=\"true\"], [tabindex]:not([tabindex=\"-1\"], span)'\n )\n ) as HTMLElement[];\n\n if (!tabbableElements) {\n return;\n }\n\n const lastTabbableElement = tabbableElements[tabbableElements.length - 1];\n\n // if the lastTabbableElement IS NOT a nav buttons in the ' footer '\n // we push trappingFocusMessage into tabbableElements to ' take its place '\n if (!lastTabbableElement?.id?.includes('navigation-button')) {\n if (trappingFocusMessage.current) {\n tabbableElements.push(trappingFocusMessage.current);\n }\n }\n\n setTabbableElements(tabbableElements as HTMLElement[]);\n }, [open]);\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 {[undefined, 'backgroundImage'].includes(backgroundStyle) &&\n backgroundImage && (\n \n )}\n\n {backgroundStyle === 'animatedOrbs' && (\n \n )}\n\n {/* let's not even render this puppy if isFirstInteraction */}\n {!window.dev() && backButton && !isFirstInteraction ? (\n \n ) : null}\n\n {topicMenu && }\n\n {/* @ts-ignore */}\n \n {children}\n \n\n {!hasNavigationButton ? (\n \n }\n style={{\n padding: '10px 20px',\n opacity: 0,\n transition: 'opacity 0.3s',\n borderRadius: 8,\n border: `1px solid ${parsedTextColor}`,\n color: parsedTextColor,\n fontSize: 14,\n }}\n tabIndex={0}\n onBlur={e => {\n e.currentTarget.style.opacity = '0';\n }}\n onFocus={e => {\n e.currentTarget.style.opacity = '1';\n }}\n >\n Tab to return to top. Shift + Tab to return to content.\n \n ) : null}\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 const root = document.querySelector('#root')!;\n //\n if (window?.dev && !window.dev()) {\n root?.setAttribute('inert', '');\n }\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?.removeAttribute('inert');\n //\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","import { useSelector, shallowEqual } from 'react-redux';\nimport { State } from 'store/store';\n\nexport const useFreshProps = (\n id: string,\n checkShallowEqual?: undefined | boolean\n) => {\n return useSelector(\n (state: State) => {\n return state?.blocks[id]?.props || {};\n },\n checkShallowEqual ? shallowEqual : () => false\n );\n};\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';\nimport { useFreshProps } from 'services/useFreshProps';\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 { content = '', json } = props;\n\n const placeholderText = props.placeholder || 'Add content...';\n\n let enableTextToSpeechBtn = props?.enableTextToSpeechBtn;\n if (enableTextToSpeechBtn === undefined) {\n enableTextToSpeechBtn = true;\n }\n\n const {\n backgroundColor,\n bulletColor,\n borderRadius,\n textBackgroundOpacity,\n liTextColor = undefined,\n enableSecondaryLinkColors,\n enableCustomLinkColors,\n customLinkColors = {},\n } = useFreshProps(id, true);\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 ...(enableSecondaryLinkColors && {\n ...state.theme.linksSecondary,\n }),\n ...(enableCustomLinkColors && {\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) {\n 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) {\n return;\n }\n\n setCurrentBlock({ id });\n //\n\n const editorCurrent = editor.current;\n\n setTimeout(() => {\n if (!editorCurrent) {\n console.warn('where did the current text editor go !?!?');\n return;\n }\n //\n editorCurrent?.focus();\n }, 10);\n //\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","import { useSelector } from 'react-redux';\nimport { State } from 'store/store';\n\nexport const useModuleVersionOnCreation = () => {\n const moduleVersionOnCreation = useSelector((state: State) => {\n return (\n state.rootBlockId &&\n (state.blocks[state.rootBlockId]?.meta as any)?.versionOnCreation\n );\n });\n\n //\n return moduleVersionOnCreation;\n};\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 { getBaseButtonStyles } from './getBaseButtonStyles';\nimport { updateLinkColors, updateButtonHeightForIE } from './buttonHelpers';\nimport hasValidLocationUpdated from 'services/hasValidLocationUpdated';\nimport { moduleNavigationActionsList } from 'components/NavigationSettings/ModuleNavigation';\nimport hexToRgb from 'services/hexToRGB';\nimport { speechSynthesisCancel } from 'services/speechSynthesisCancel';\nimport { removeUndefinedEntriesFromObject } from 'services/removeUndefinedEntriesFromObject';\nimport {\n getDefaultButtonStyles as getThemeDefaultButtonStyles,\n TThemeButtonsDefaultStyles,\n} from 'store/theme';\nimport { useModuleVersionOnCreation } from 'services/useModuleVersionOnCreation';\nimport { getFocusColorForCSSObject } 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 moduleVersionOnCreation = useModuleVersionOnCreation();\n const themeButtonDefault = getThemeDefaultButtonStyles(\n moduleVersionOnCreation\n );\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 TThemeButtonsDefaultStyles;\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 { 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 { getBaseButtonStyles } from './getBaseButtonStyles';\nimport {\n getFocusColorForCSSObject,\n updateButtonHeightForIE,\n} from './buttonHelpers';\nimport hexToRgb from 'services/hexToRGB';\nimport { speechSynthesisCancel } from 'services/speechSynthesisCancel';\nimport { removeUndefinedEntriesFromObject } from 'services/removeUndefinedEntriesFromObject';\nimport {\n getDefaultButtonStyles as getThemeDefaultButtonStyles,\n TThemeButtonsDefaultStyles,\n} from 'store/theme';\nimport { useModuleVersionOnCreation } from 'services/useModuleVersionOnCreation';\n\nconst { lPink } = colors;\n\nconst GenericButton = props => {\n //\n const moduleVersionOnCreation = useModuleVersionOnCreation();\n const themeButtonDefault = getThemeDefaultButtonStyles(\n moduleVersionOnCreation\n );\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 TThemeButtonsDefaultStyles;\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/Mid Rectangle.svg';\r\n// 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 resetInertAndOverflowY = () => {\n const tick = setInterval(() => {\n const root = document.querySelector('#root')!;\n\n root.removeAttribute('inert');\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 (!bookmark || !bookmarkLocation || bookmarkLocation === 'null') {\n return;\n }\n\n const root = document.querySelector('#root');\n\n const makeRootInert = root => {\n root?.setAttribute('inert', '');\n document.body.style.overflowY = 'hidden';\n\n if (!root?.hasAttribute('inert')) {\n requestAnimationFrame(makeRootInert);\n }\n\n console.log('bookmark open. interaction with root disabled', {\n isInert: root?.hasAttribute('inert'),\n docBodyOverflowY: document.body.style.overflowY,\n });\n };\n\n if (window?.dev && !window.dev() && root) {\n makeRootInert(root);\n }\n\n return () => {\n root?.removeAttribute('inert');\n document.body.style.overflowY = 'auto';\n //\n console.log('bookmark closed. interaction with root enabled', {\n isInert: root?.hasAttribute('inert'),\n docBodyOverflowY: document.body.style.overflowY,\n });\n };\n }, [bookmark, 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 resetInertAndOverflowY();\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 resetInertAndOverflowY();\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 resetInertAndOverflowY();\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","import semver from 'semver';\n\ntype TAccordionDefaultStyles = {\n headingColor: string;\n headingTextColor: string;\n borderRadius: number;\n borderColor: string;\n includeBorder: boolean;\n};\n\nexport const accordionDefaultStyles: {\n [key: string]: TAccordionDefaultStyles;\n} = {\n base: {\n headingColor: '#1A1A2B',\n headingTextColor: '#fff',\n borderRadius: 12,\n includeBorder: true,\n borderColor: '#1A1A2B',\n },\n '1.5.0': {\n headingColor: '#fff',\n headingTextColor: '#060709',\n borderRadius: 12,\n includeBorder: true,\n borderColor: '#D1D5E7',\n },\n};\n\nexport const getDefaultStyles = (blockMetaPackageVersion: string = '') => {\n if (!blockMetaPackageVersion || !semver.valid(blockMetaPackageVersion)) {\n return accordionDefaultStyles['base'];\n }\n\n if (semver.gte(blockMetaPackageVersion, '1.5.0')) {\n return accordionDefaultStyles['1.5.0'];\n }\n //\n\n return accordionDefaultStyles['base'];\n};\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';\nimport { getDefaultStyles } from './AccordionConfig';\n\nconst fader = keyframes`\nfrom {\n opacity: 0;\n}\nto {\n opacity: 1;\n}\n`;\n\n//\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 //\n const accordionDefaultStyles = getDefaultStyles(\n interactionContext?.meta?.packageVersion\n );\n //\n\n const hostingCtx = useContext(HostingContext);\n\n const { toggle, isOpen } = useContext(AccordionContext);\n const {\n headingColor = accordionDefaultStyles?.headingColor,\n // was '#1A1A2B',\n borderColor = accordionDefaultStyles?.borderColor,\n // was = '#D1D5E7',\n includeBorder = true,\n borderRadius = accordionDefaultStyles?.borderRadius,\n //\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 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 })\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 = '#1A1A2B',\n // || '#fff',\n background = '#FBFBFD',\n // || '#222',\n ...props\n}: HeaderProps) => {\n const interactionContext = useContext(InteractionContext);\n //\n const accordionDefaultStyles = getDefaultStyles(\n interactionContext?.meta?.packageVersion\n );\n //\n\n const { isOpen, trigger } = props as InjectdProps;\n\n const {\n includeHeadingBackground = true,\n headingBackgroundOpacity = 100,\n headingColor = accordionDefaultStyles?.headingColor,\n borderColor = accordionDefaultStyles?.borderColor,\n headingTextColor = accordionDefaultStyles?.headingTextColor,\n includeBorder = true,\n borderRadius = accordionDefaultStyles?.borderRadius,\n } = 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 //\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 = 600,\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 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/Long Rectangle.svg';\n// 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 e.preventDefault();\n e.stopPropagation();\n //\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 = 20,\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 = 20,\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 || imagePlaceholder;\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 accordionImgPlaceholder from 'assets/Long Rectangle.svg';\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","import AccordionDisplay from './AccordionDisplay_v2';\n\nexport default AccordionDisplay;\n","import { createContext } from 'react';\n\nexport const interactionContext = createContext(null);\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","const setNewBlockNewTree = (newTree, newBlock, store, setBlocksAction) => {\n newTree[newBlock.id] = newBlock;\n store.dispatch(setBlocksAction(newTree));\n};\n\nexport default setNewBlockNewTree;\n","import semver from 'semver';\n\nexport const carouselDefaultStyles = {\n base: {\n backGround: true,\n },\n};\n\ntype TCarouselDefaultStyles = {\n backGround: boolean;\n};\n\nexport const getDefaultStyles = (blockMetaPackageVersion: string = '') => {\n if (!blockMetaPackageVersion || !semver.valid(blockMetaPackageVersion)) {\n return carouselDefaultStyles['base'];\n }\n\n if (semver.gte(blockMetaPackageVersion, '1.5.0')) {\n return carouselDefaultStyles['1.5.0'];\n }\n //\n\n return carouselDefaultStyles['base'];\n};\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","/** @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\nimport {\n DEFAULT_PREV_NEXT_BTN_COLOR,\n DEFAULT_PREV_NEXT_BTN_HOVER_COLOR,\n} from 'components/Editor/EditCarousel/EditCarousel';\n\n// export const DEFAULT_PREV_NEXT_BTN_COLOR = '#B2B6CA';\n// export const DEFAULT_PREV_NEXT_BTN_HOVER_COLOR = '#D1D5E7';\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 = DEFAULT_PREV_NEXT_BTN_COLOR || '#494949',\n hoverColor = DEFAULT_PREV_NEXT_BTN_HOVER_COLOR || '#D1D5E7',\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 _ } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport { findByKeyVal_V2 } from 'services/findByKeyVal';\nimport setBlockProps from 'services/apiHelpers/setBlockProps';\nimport CarouselSlidesAddRemoveWidget from './CarouselSlidesAddRemoveWidget';\n\n// updated UI\nimport { H1 as H1_v2, H2 as H2_v2 } from '../EditorUtilities/UI/Headings';\nimport TogglePanel from '../EditorUtilities/UI/TogglePanel';\nimport CheckBox_v2 from '../EditorUtilities/UI/CheckBox';\nimport ColorPicker_v2 from '../EditorUtilities/UI/ColorPicker';\nimport Info from '../EditorUtilities/UI/Info';\nimport { addRemoveCarouselSlide } from './CarouselSlidesAddRemoveWidget';\nimport { ReorderInteractionWidget } from 'components/Editor/ReorderInteractionWidget/ReorderInteractionWidget';\nimport { colors } from 'styles/variables';\nimport NumberPicker_v2 from '../EditorUtilities/UI/NumberPicker';\n//\nimport { getDefaultStyles } from 'components/lib/Carousel/CarouselConfig';\n\nconst { lGrey0, lGrey2, mint } = colors;\nconst togglePanelsCache = {};\n\n// we want this to have the 3 states\n// undefined\n// 1. user has changed color\n// 2. user has 'Got it'\nlet accessibilityMessageSeen: undefined | 1 | 2 = undefined;\n\nexport const DEFAULT_PREV_NEXT_BTN_COLOR = '#B2B6CA';\nexport const DEFAULT_PREV_NEXT_BTN_HOVER_COLOR = '#D1D5E7';\n\nconst EditCarousel = ({ block }: { block?: any }) => {\n //\n const carouselDefaultStyles = getDefaultStyles(block?.meta?.packageVersion);\n\n //\n const { id: blockId } = block;\n const {\n carouselColor,\n border = true,\n includeText = true,\n borderColor = lGrey2,\n borderRadius = 10,\n includeSlideIndicators = true,\n carouselTextColor,\n backGround = carouselDefaultStyles?.backGround,\n //true,\n backgroundOpacity = 100,\n prevNextBtnColor = DEFAULT_PREV_NEXT_BTN_COLOR,\n prevNextBtnHoverColor = DEFAULT_PREV_NEXT_BTN_HOVER_COLOR,\n prevNextArrowColor = '#ffffff',\n animation = 'natural',\n lockDown,\n carouselHeight = 350,\n fullHeight = false,\n } = block.props;\n\n const carouselBlock = findByKeyVal_V2(blockId, 'type', 'Carousel');\n\n const saveTogglePanelState = (panel, open) => {\n togglePanelsCache[blockId] = {\n ...togglePanelsCache[blockId],\n [panel]: open,\n };\n\n setBlockProps(block, { ...block.props });\n };\n\n const prevNextBtnColorIsNotDefault =\n prevNextBtnColor !== DEFAULT_PREV_NEXT_BTN_COLOR ||\n prevNextBtnHoverColor !== DEFAULT_PREV_NEXT_BTN_HOVER_COLOR;\n\n return (\n <_>\n interaction functions & behaviours}\n toggle={\n togglePanelsCache[blockId]\n ? togglePanelsCache[blockId]['interaction: settings']\n : true\n }\n onToggle={open => saveTogglePanelState('interaction: settings', open)}\n >\n setBlockProps(block, { lockDown: !!lockDown ? 0 : 1 })}\n />\n\n
    \n \n Slides\n \n\n \n {\n addRemoveCarouselSlide(carouselBlock);\n }}\n removeItem={index => {\n if (carouselBlock?.children?.length === 2) {\n alert('At least two slides must exist.');\n return;\n }\n\n if (\n !window.confirm('Are you sure you want to remove this slide?')\n ) {\n return;\n }\n\n addRemoveCarouselSlide(carouselBlock, index);\n }}\n getLabel={index => {\n return `Slide ${index + 1}`;\n }}\n />\n
    \n \n \n\n carousel styling}\n toggle={\n togglePanelsCache[blockId]\n ? togglePanelsCache[blockId]['carousel: styling']\n : true\n }\n onToggle={open => saveTogglePanelState('carousel: styling', open)}\n hr={false}\n >\n
    \n setBlockProps(block, { includeText: !includeText })}\n />\n
    \n\n {includeText && (\n \n setBlockProps(block, { carouselTextColor: color })\n }\n label=\"Text colour\"\n />\n )}\n\n {accessibilityMessageSeen === 1 && prevNextBtnColorIsNotDefault && (\n \n \n When updating these colours take care to ensure they follow\n accessibility guidelines.\n \n {\n accessibilityMessageSeen = 2;\n setBlockProps(block, { prevNextBtnColor });\n }}\n css={css({\n display: 'inline-flex',\n flexStretch: 0,\n justifyContent: 'center',\n alignItems: 'center',\n fontWeight: 700,\n cursor: 'pointer',\n background: '#fff',\n color: mint,\n padding: '5px 20px',\n borderRadius: 9999,\n ':hover': {\n opacity: 0.8,\n },\n })}\n >\n Got it\n \n \n )}\n\n {\n // we've changed color so set accessibilityMessageSeen to 1 if undefined\n if (accessibilityMessageSeen === undefined) {\n accessibilityMessageSeen = 1;\n }\n\n console.log(color);\n\n setBlockProps(block, {\n prevNextBtnColor: color || DEFAULT_PREV_NEXT_BTN_COLOR,\n });\n }}\n label=\"Slide navigation button: background colour\"\n />\n\n {\n if (accessibilityMessageSeen === undefined) {\n accessibilityMessageSeen = 1;\n }\n\n setBlockProps(block, {\n prevNextBtnHoverColor: color || DEFAULT_PREV_NEXT_BTN_HOVER_COLOR,\n });\n }}\n label=\"Slide navigation button: hover colour\"\n />\n\n \n setBlockProps(block, { prevNextArrowColor: color })\n }\n label=\"Slide navigation button: arrow colour\"\n />\n\n setBlockProps(block, { backGround: !backGround })}\n />\n\n {backGround && (\n <_>\n {\n setBlockProps(block, { carouselColor: color });\n }}\n label=\"Background colour\"\n />\n\n
    \n {\n setBlockProps(block, { backgroundOpacity: value });\n }}\n label=\"Background opacity\"\n />\n
    \n\n
    \n {\n setBlockProps(block, { borderRadius: value });\n }}\n label=\"Border radius\"\n />\n
    \n\n
    \n setBlockProps(block, { border: !border })}\n />\n
    \n\n {border && (\n <_>\n
    \n {\n setBlockProps(block, { borderColor: color });\n }}\n label=\"Border colour\"\n />\n
    \n \n )}\n \n )}\n\n \n {\n setBlockProps(block, { carouselHeight: value });\n }}\n label=\"Height\"\n />\n \n\n {/* \n setBlockProps(block, { fullHeight: !!fullHeight ? 0 : 1 })\n }\n /> */}\n\n
    \n \n setBlockProps(block, {\n includeSlideIndicators: !includeSlideIndicators,\n })\n }\n />\n
    \n\n
    \n \n Slide animation style\n
    \n div': {\n margin: '0 0 10px 0',\n },\n })}\n >\n setBlockProps(block, { animation: 'natural' })}\n />\n\n setBlockProps(block, { animation: 'smooth' })}\n />\n\n setBlockProps(block, { animation: 'none' })}\n />\n \n \n \n \n );\n};\n\nexport default EditCarousel;\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 = '#B2B6CA',\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 === '#B2B6CA';\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={\n current ? `Slide ${index! + 1}, active` : `Go to slide ${index! + 1}`\n }\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';\nimport {\n DEFAULT_PREV_NEXT_BTN_COLOR,\n DEFAULT_PREV_NEXT_BTN_HOVER_COLOR,\n} from 'components/Editor/EditCarousel/EditCarousel';\n\nimport { getDefaultStyles } from './CarouselConfig';\n\nconst { lGrey0, lGrey2 } = colors;\n\nenum Direction {\n Prev = 'prev',\n Next = 'next',\n}\n\nconst CarouselLayout = React.memo(({ children }: any) => {\n //\n const interactionContext = useContext(InteractionContext);\n\n const carouselDefaultStyles = getDefaultStyles(\n interactionContext?.meta?.packageVersion\n );\n\n const carouselContext = useContext(CarouselContext)!;\n const { currentIndex, animate } = carouselContext;\n\n const {\n backGround = carouselDefaultStyles?.backGround,\n // 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 = DEFAULT_PREV_NEXT_BTN_COLOR || '#494949',\n prevNextBtnHoverColor = DEFAULT_PREV_NEXT_BTN_HOVER_COLOR,\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: '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/Mid Rectangle.svg';\n// from 'assets/Wide Image.png';\n\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';\nimport longRectangle from 'assets/Long Rectangle.svg';\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 = 20,\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' : '#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","import semver from 'semver';\n\nexport const flipCardDefaultStyles = {\n base: {\n includeFlipcardBackground: true,\n flipcardFrontColor: '#fff',\n flipcardBackColor: '#282A2B',\n flipcardFrontTextColor: '#282A2B',\n flipcardBackTextColor: '#fff',\n flipcardWidth: 300,\n flipcardHeight: 300,\n flipcardBorderRadius: 10,\n alignTextTop: 0,\n },\n '1.5.0': {\n includeFlipcardBackground: true,\n flipcardFrontColor: '#fff',\n flipcardBackColor: '#fff',\n flipcardFrontTextColor: '#282A2B',\n flipcardBackTextColor: '#282A2B',\n flipcardWidth: 300,\n flipcardHeight: 300,\n flipcardBorderRadius: 10,\n alignTextTop: 0,\n },\n};\n\ntype TFlipCardDefaultStyles = {\n includeFlipcardBackground: boolean;\n flipcardFrontColor: string;\n flipcardBackColor: string;\n flipcardFrontTextColor: string;\n flipcardBackTextColor: string;\n flipcardWidth: number;\n flipcardHeight: number;\n flipcardBorderRadius: number;\n alignTextTop: 0 | 1 | boolean;\n};\n\nexport const getDefaultStyles = (blockMetaPackageVersion: string = '') => {\n if (!blockMetaPackageVersion || !semver.valid(blockMetaPackageVersion)) {\n return flipCardDefaultStyles['base'];\n }\n\n if (semver.gte(blockMetaPackageVersion, '1.5.0')) {\n return flipCardDefaultStyles['1.5.0'];\n }\n //\n\n return flipCardDefaultStyles['base'];\n};\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';\nimport { HostingContext } from 'hosting/context';\nimport { flipcardEvent } from 'hosting/events';\nimport { getDefaultStyles } from './FlipCardConfig';\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 //\n const metaPackageVersion = context?.meta?.packageVersion;\n\n const flipCardDefaultStyles = getDefaultStyles(metaPackageVersion);\n //\n\n const hostingCtx = useContext(HostingContext);\n\n const {\n includeFlipcardBackground = flipCardDefaultStyles?.includeFlipcardBackground,\n flipcardFrontColor = flipCardDefaultStyles?.flipcardFrontColor,\n flipcardBackColor = flipCardDefaultStyles?.flipcardBackColor,\n flipcardFrontTextColor = flipCardDefaultStyles?.flipcardFrontTextColor,\n flipcardBackTextColor = flipCardDefaultStyles?.flipcardBackTextColor,\n flipcardBackgroundOpacity = 100,\n focusColor,\n flipcardWidth = flipCardDefaultStyles?.flipcardWidth,\n flipcardHeight = flipCardDefaultStyles?.flipcardHeight,\n flipcardOutline = false,\n flipcardOutlineColor = '#282A2B',\n flipcardBorderRadius = flipCardDefaultStyles?.flipcardBorderRadius,\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 const frontFaceMediaIsSVG = frontFaceMedia?.props?.child === 3;\n const backFaceMediaIsSVG = backFaceMedia?.props?.child === 3;\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 return;\n }\n\n const flipcard_flip = {\n flipcardId: id,\n };\n\n hostingCtx?.data(flipcardEvent(context.id, 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';\nimport placeholderImage from 'assets/Square.svg';\nimport longRectangle from 'assets/Long Rectangle.svg';\nimport EditableBtn from 'components/lib/EditableBtn';\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 ////\n //// existing modules styled to expect centered text. will break if ! className: 'flipcard-text'\n Text: ({ children, ...props }) => {\n return (\n \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: EditableBtn,\n //\n SVG: ({ children, ...props }) => (\n /* @ts-ignore */\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","import hexToRgb from 'services/hexToRGB';\n\nexport function getFeedbackButtonHoverStyles(buttonProps: {\n backgroundColorOnHover: string;\n backgroundOpacityOnHover: number;\n textColorOnHover: string;\n}) {\n const { r: hR, g: hG, b: hB } = hexToRgb(buttonProps?.backgroundColorOnHover);\n\n let backgroundHoverColorRGBA = `rgba(${hR}, ${hG}, ${hB}, ${buttonProps?.backgroundOpacityOnHover *\n 0.01})`;\n\n //\n return {\n background: backgroundHoverColorRGBA,\n color: buttonProps?.textColorOnHover,\n };\n}\n","/** @jsx jsx */\n\nimport { cloneElement, Fragment as _ } from 'react';\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 { getFeedbackButtonHoverStyles } from 'services/feedbackButtonHoverStyles';\nimport { useFreshProps } from 'services/useFreshProps';\n\nconst maxWidth = 512;\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 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 //\n //\n Text: EditableText,\n //\n //\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 const { theme } = useSelector((state: State) => state);\n const themeButtons = theme?.buttons;\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 const buttonStylesOnHover = getFeedbackButtonHoverStyles({\n ...themeButtons?.main,\n ...button?.props,\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 CC_Multi_Choice_Media_Placeholder from 'assets/Short Rectangle.svg';\n\nimport pubSub from 'services/pubSub';\nimport { Report } from 'store/store';\n\nconst multichoiceMediaPlaceholders = [0, 1, 2, 3, 4, 5].map(\n entry => CC_Multi_Choice_Media_Placeholder\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 = {};\n\n// if we have sessionLocked we'll rehydrate with the learners selected options\nlet sessionSelected = {};\n\n// rehydrate isCorrect on return\nlet sessionIsCorrect = {};\n//\nlet attempts = {};\n\nlet randomAnswers = {};\n\npubSub.subscribe('RESET_MODULE', () => {\n console.log('multichoice resets');\n\n sessionLock = {};\n sessionSelected = {};\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 const [selected, setSelected] = useState(\n sessionSelected[interactionContextId] || []\n );\n\n const [submit, setSubmit] = useState(\n sessionLock[interactionContextId]\n ? SubmitState.Resolved\n : SubmitState.Initial\n );\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 // keeping this decoupled from the logic that sets sessionLock\n // ( could put this and the above all inside an if(logic. . . ) but\n // might be want to update the criteria for this later\n if (sessionLock[interactionContextId]) {\n sessionSelected[interactionContextId] = selected;\n }\n //\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\n const isCorrect = useRef(sessionIsCorrect[interactionContextId] || false);\n sessionIsCorrect[interactionContextId] = isCorrect.current;\n //\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 console.log({\n isMultiCorrect,\n useUniqueOptionFeedback,\n interactionContextId,\n selected,\n });\n\n const _iD_ = !isMultiCorrect\n ? !useUniqueOptionFeedback\n ? interactionContextId\n : selected[0]\n : interactionContextId;\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","import semver from 'semver';\n\ntype TMultichoiceDefaultStyles = {\n panelBackground: string;\n panelBorderRadius: number;\n multichoiceMediaPanelBorderRadius: number;\n optionTextColor: string;\n checkboxColor: string;\n mediaPanelWidth: number;\n mediaPanelHeight: number;\n hasSetWidthHeight: boolean;\n includeRadioCheckbox: boolean;\n dropShadow: boolean;\n fixedPanelHeight: boolean;\n};\n\nexport const multichoiceDefaultStyles: {\n [key: string]: TMultichoiceDefaultStyles;\n} = {\n base: {\n panelBackground: '#1A1A2B',\n panelBorderRadius: 5,\n multichoiceMediaPanelBorderRadius: 20,\n optionTextColor: '#fff',\n checkboxColor: '#fff',\n mediaPanelWidth: 320,\n mediaPanelHeight: 360,\n dropShadow: false,\n hasSetWidthHeight: false,\n includeRadioCheckbox: true,\n fixedPanelHeight: false,\n },\n '1.5.0': {\n panelBackground: '#FFFFFF',\n panelBorderRadius: 12,\n multichoiceMediaPanelBorderRadius: 20,\n optionTextColor: '#1A1A2B',\n checkboxColor: '#1A1A2B',\n mediaPanelWidth: 320,\n mediaPanelHeight: 360,\n dropShadow: true,\n hasSetWidthHeight: false,\n includeRadioCheckbox: true,\n fixedPanelHeight: false,\n },\n};\n\nexport const getDefaultStyles = (blockMetaPackageVersion: string = '') => {\n if (!blockMetaPackageVersion || !semver.valid(blockMetaPackageVersion)) {\n return multichoiceDefaultStyles['base'];\n }\n\n if (semver.gte(blockMetaPackageVersion, '1.5.0')) {\n return multichoiceDefaultStyles['1.5.0'];\n }\n //\n return multichoiceDefaultStyles['base'];\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';\nimport { getDefaultStyles } from './MultichoiceConfig';\n\nconst { lPink, lGrey0, lGrey4, lTeal0 } = colors;\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 //\n\n const multichoiceDefaultStyles = getDefaultStyles(\n interactionContext?.meta?.packageVersion\n );\n //\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 = multichoiceDefaultStyles?.mediaPanelWidth,\n mediaPanelHeight = multichoiceDefaultStyles?.mediaPanelHeight,\n fixedPanelHeight = multichoiceDefaultStyles?.fixedPanelHeight,\n selectedOutlineColor = '#000',\n includeRadioCheckbox: _includeRadioCheckbox_ = 1, // true\n focusColor = '#000',\n } = interactionContext.props;\n\n const includeRadioCheckbox = Boolean(_includeRadioCheckbox_);\n\n //\n let panelBackground = interactionContext.props?.panelBackground;\n //\n if (!panelBackground) {\n panelBackground = isMultichoiceMedia\n ? '#fff'\n : multichoiceDefaultStyles?.panelBackground;\n }\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\n ? 20\n : multichoiceDefaultStyles?.panelBorderRadius;\n }\n\n //\n let dropShadow =\n interactionContext.props.dropShadow ?? multichoiceDefaultStyles?.dropShadow;\n //\n if (isMultichoiceMedia && interactionContext.props.dropShadow === undefined) {\n dropShadow = true;\n }\n //\n\n let optionTextColor = interactionContext.props?.optionTextColor;\n //\n if (!optionTextColor) {\n optionTextColor = isMultichoiceMedia\n ? '#000'\n : multichoiceDefaultStyles?.optionTextColor;\n }\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 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/Mid Rectangle.svg';\nimport longRectangle from 'assets/Long Rectangle.svg';\n//MultiChoice_default.svg';\n// 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","/** @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 cloneElement,\n} from 'react';\nimport { css, jsx } from '@emotion/core';\nimport Modal from 'components/UI/Modal';\nimport checkReturnToInteractionEditing from 'services/checkReturnToInteractionEditing';\nimport { getFeedbackButtonHoverStyles } from 'services/feedbackButtonHoverStyles';\nimport { useFreshProps } from 'services/useFreshProps';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/store';\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 { theme } = useSelector((state: State) => state);\n const themeButtons = theme?.buttons;\n\n const targetFeedback = children.filter(child => {\n return child.props.type.replace('_Feedback', '').toLowerCase() === result;\n })[0];\n\n let [img, txt, btn] = targetFeedback?.props?.children || [];\n\n //\n\n let txtFreshProps = useFreshProps(txt?.props?.id);\n\n // need this check for when the modal closes and txt might be undefined\n if (txt) {\n txtFreshProps = {\n ...(txt?.props || {}),\n ...txtFreshProps,\n };\n\n txt = cloneElement(txt, txtFreshProps);\n }\n //\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 const buttonStylesOnHover = getFeedbackButtonHoverStyles({\n ...themeButtons?.main,\n ...btn?.props,\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","import semver from 'semver';\n\nexport type TSortationDefaultStyles = {\n baseColor: string;\n baseColorOpacity: number;\n baseOutline: 0 | 1 | boolean;\n baseOutlineColor: string;\n baseBorderRadius: number;\n score: 0 | 1 | boolean;\n showCorrectAnswer: 0 | 1 | boolean;\n panelBackground: string;\n panelBackgroundDragging: string;\n textColor: string;\n textColorDragging: string;\n optionBorderRadius: number;\n optionBackgroundOpacity: number;\n optionBackgroundOpacityDragging: number;\n optionOutline: boolean;\n optionOutlineColor: string;\n includeText: boolean;\n imagePosition: string;\n};\n\nexport const sortationDefaultStyles = {\n base: {\n baseColor: '#ECEDF0',\n baseColorOpacity: 100,\n baseOutline: false,\n baseOutlineColor: 'transparent',\n baseBorderRadius: 10,\n score: true,\n showCorrectAnswer: false,\n panelBackground: '#282A2B',\n panelBackgroundDragging: '#949595',\n textColor: '#fff',\n textColorDragging: '#000',\n optionBorderRadius: 5,\n optionBackgroundOpacity: 100,\n optionBackgroundOpacityDragging: 100,\n optionOutline: false,\n optionOutlineColor: '',\n includeText: true,\n imagePosition: 'top',\n },\n '1.5.0': {\n baseColor: '#F0F0F6',\n baseColorOpacity: 100,\n baseOutline: false,\n baseOutlineColor: 'transparent',\n baseBorderRadius: 20,\n score: true,\n showCorrectAnswer: false,\n panelBackground: '#FFFFFF',\n panelBackgroundDragging: '#B2B6CA',\n textColor: '#000000',\n textColorDragging: '#000000',\n optionBorderRadius: 12,\n optionBackgroundOpacity: 100,\n optionBackgroundOpacityDragging: 100,\n optionOutline: false,\n optionOutlineColor: '',\n includeText: true,\n imagePosition: 'top',\n },\n};\n\nexport const getDefaultStyles = (blockMetaPackageVersion: string = '') => {\n if (!blockMetaPackageVersion || !semver.valid(blockMetaPackageVersion)) {\n return sortationDefaultStyles['base'];\n }\n\n if (semver.gte(blockMetaPackageVersion, '1.5.0')) {\n return sortationDefaultStyles['1.5.0'];\n }\n //\n\n return sortationDefaultStyles['base'];\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';\nimport { getDefaultStyles } from './SortationConfig';\n\nconst { lPink, lGrey0, lGrey1, lGrey2 } = colors;\n\nconst Option = ({ option, isDragging }) => {\n const { id, children } = option;\n\n const context = useContext(interactionContext);\n //\n const metaPackageVersion = context?.meta?.packageVersion;\n\n const sortationDefaultStyles = getDefaultStyles(metaPackageVersion);\n //\n\n const optionContainer = useRef(null);\n\n const { includeImage } = context.props;\n\n const {\n panelBackground: _panelBackground = sortationDefaultStyles.panelBackground,\n panelBackgroundDragging: _panelBackgroundDragging = sortationDefaultStyles.panelBackgroundDragging,\n textColor = sortationDefaultStyles.textColor,\n textColorDragging = sortationDefaultStyles.textColorDragging,\n optionBorderRadius = sortationDefaultStyles.optionBorderRadius,\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)`;\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';\nimport { HostingContext } from 'hosting/context';\nimport { sortationUserResponseEvent } from 'hosting/events';\nimport { getDefaultStyles } from './SortationConfig';\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\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\n //\n const metaPackageVersion = context?.meta?.packageVersion;\n\n const sortationDefaultStyles = getDefaultStyles(metaPackageVersion);\n //\n\n const hostingCtx = useContext(HostingContext);\n\n const {\n baseColor: _baseColor = sortationDefaultStyles?.baseColor,\n baseColorOpacity: _baseColorOpacity = sortationDefaultStyles?.baseColorOpacity,\n baseOutline = sortationDefaultStyles?.baseOutline,\n baseOutlineColor = sortationDefaultStyles?.baseOutlineColor,\n baseBorderRadius = sortationDefaultStyles?.baseBorderRadius,\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 const [localDirection, setLocalDirection] = useState<\n 'vertical' | undefined\n >();\n\n if (localDirection) {\n direction = localDirection;\n }\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 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/Short Rectangle.svg';\n// 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';\nimport longRectangle from 'assets/Long Rectangle.svg';\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 = '#D1D5E7' || defaultColor,\n sliderTrackOpacity = 60,\n sliderHandleColor = '#B2B6CA' || defaultColor,\n showSliderStepMarkers = true,\n sliderStepMarkerColor = '#B2B6CA' || 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 = '#D1D5E7' || 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';\nimport longRectangle from 'assets/Long Rectangle.svg';\n//\n\nconst SingleColumnLayout = Row.bind({}) as any;\nSingleColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'column',\n};\n\nconst TwoColumnLayout = Row.bind({}) as any;\nTwoColumnLayout.defaultProps = {\n ...(Row as any).defaultProps,\n flexDirection: 'row',\n};\n\nconst Components = {\n Row,\n Column,\n 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/Long Rectangle.svg';\n//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 = 300,\n panelHeight = 280,\n panelOutline = false,\n panelOutlineColor = '',\n panelBorderRadius = 12,\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 = '#D1D5E7' || lGrey1,\n panelWidth = 300,\n panelHeight = 280,\n panelBorderRadius = 12,\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.svg';\n// .png';\nimport PDF from 'components/lib/PDF';\nimport { OpenPDF } from 'components/lib/PDF/OpenPDF';\nimport { ImageContext } from 'components/lib/Image';\nimport Long_Rectangle from 'assets/Long Rectangle.svg';\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/Mid Rectangle.svg';\nimport longRectangle from 'assets/Long Rectangle.svg';\n// 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 // key={Math.random()}\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\n// const MultiMediaDisplay = memo((props: any) => {\nconst MultiMediaDisplay = (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 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 = '#D1D5E7',\n hotSpotSize = 75,\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/Long Rectangle.svg';\n// Widest Image.png';\n// import hotSpotBaseImgPlaceholder from 'assets/Long Rectangle.svg';\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 = '#D1D5E7',\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 imagePlaceholder from 'assets/Long Rectangle.svg';\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',\n // || '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 {/* with the label included screenreader reads the placeholder content twice !?!?\nwe NEED the placeholder. so let's preference that */}\n {/* */}\n\n {\n setHasFocus(true);\n }}\n onBlur={() => {\n setHasFocus(false);\n }}\n onChange={e => {\n onUpdate(e.currentTarget.value);\n }}\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 = 20,\n reference = '',\n collectionKey = '',\n textColor,\n isTextEntry,\n messageTextColor = '#000',\n messageBorderColor = '#B2B6CA',\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 = '#B2B6CA', shape = 'star' } = useContext(\n interactionContext\n ).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 = `${shapesRootDefaultPadding *\n scaleFactor}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 console.log('sending rating data to :', ratingEndpoint);\n //\n if (ratingEndpoint === 'scorm') {\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 type = message ? 'fill-in' : 'likert';\n const reportable = message ? 'fillin' : 'likert';\n\n let response;\n const normalizedRating =\n rating !== null ? Number(rating) + 1 : null;\n\n if (type === 'likert') {\n response = normalizedRating;\n } else {\n response = normalizedRating\n ? `Rating: ${normalizedRating}, Message: ${message}`\n : message || '';\n }\n\n const action = {\n id: context.id,\n type,\n question,\n reportable,\n response,\n correct: response,\n result: 1,\n };\n\n dispatch(addScormResponseAction(action as any));\n\n onSubmit(true);\n submitted(1);\n //\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 //\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';\nimport Correct_default from 'assets/Feedback - Correct.svg';\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 = '#1A1A2B',\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';\nimport longRectangle from 'assets/Long Rectangle.svg';\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","import semver from 'semver';\n\ntype TClickAndRevealDefaultStyles = {\n includePanelBackground: boolean;\n panelBackgroundOpacity: number;\n backgroundColor: string;\n clickAndRevealPanelTextColor: string;\n includeLabel: boolean;\n clickAndRevealLabelTextColor: string;\n showSeenState: boolean;\n clickAndRevealShowSeenStateBackgroundColor: string;\n clickAndRevealShowSeenStateTickColor: string;\n width: number;\n height: number;\n panelOutline: boolean;\n panelOutlineColor: string;\n borderRadius: number;\n focusColor: string;\n layout:\n | 'One column reversed'\n | 'Two column reversed'\n | 'One column'\n | 'Two column';\n useGlobalNavigation: boolean;\n globalNavigation: {};\n includeShadow: boolean;\n};\n\nexport const clickAndRevealDefaultStyles: {\n [key: string]: TClickAndRevealDefaultStyles;\n} = {\n base: {\n includePanelBackground: true,\n panelBackgroundOpacity: 100,\n backgroundColor: '#ffffff',\n clickAndRevealPanelTextColor: '#282A2B',\n includeLabel: true,\n clickAndRevealLabelTextColor: '#282A2B',\n showSeenState: true,\n clickAndRevealShowSeenStateBackgroundColor: '#282A2B',\n clickAndRevealShowSeenStateTickColor: '#ffffff',\n width: 260,\n height: 210,\n panelOutline: false,\n panelOutlineColor: '#ffffff',\n borderRadius: 10,\n // borderColor,\n focusColor: '#ffffff',\n layout: 'One column reversed',\n useGlobalNavigation: false,\n globalNavigation: {},\n includeShadow: false,\n },\n '1.5.0': {\n includePanelBackground: true,\n panelBackgroundOpacity: 100,\n backgroundColor: '#ffffff',\n clickAndRevealPanelTextColor: '#282A2B',\n includeLabel: true,\n clickAndRevealLabelTextColor: '#282A2B',\n showSeenState: true,\n clickAndRevealShowSeenStateBackgroundColor: '#282A2B',\n clickAndRevealShowSeenStateTickColor: '#ffffff',\n width: 260,\n height: 210,\n panelOutline: false,\n panelOutlineColor: '#ffffff',\n borderRadius: 10,\n // borderColor,\n focusColor: '#ffffff',\n layout: 'One column reversed',\n useGlobalNavigation: false,\n globalNavigation: {},\n includeShadow: true,\n },\n};\n\nexport const getDefaultStyles = (blockMetaPackageVersion: string = '') => {\n if (!blockMetaPackageVersion || !semver.valid(blockMetaPackageVersion)) {\n return clickAndRevealDefaultStyles['base'];\n }\n\n if (semver.gte(blockMetaPackageVersion, '1.5.0')) {\n return clickAndRevealDefaultStyles['1.5.0'];\n }\n //\n\n return clickAndRevealDefaultStyles['base'];\n};\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';\nimport { HostingContext } from 'hosting/context';\nimport { clickRevealEvent } from 'hosting/events';\nimport { getDefaultStyles } from 'components/lib/ClickAndReveal/clickAndRevealConfig';\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'}\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\n const clickAndRevealDefaultStyles = getDefaultStyles(\n context?.meta?.packageVersion\n );\n\n const hostingCtx = useContext(HostingContext);\n\n const { id, updateClickAndRevealSeen } = context;\n\n const interactionSId = context.props.sId || id;\n\n if (context?.props?.useGlobalNavigation !== undefined) {\n if (context?.props?.includePanelBackground === undefined) {\n clickAndRevealDefaultStyles.includePanelBackground = false;\n }\n\n if (context?.props?.includeShadow === undefined) {\n clickAndRevealDefaultStyles.includeShadow = false;\n }\n }\n\n const {\n sId,\n includePanelBackground = clickAndRevealDefaultStyles.includePanelBackground,\n panelBackgroundOpacity = clickAndRevealDefaultStyles.panelBackgroundOpacity,\n backgroundColor = clickAndRevealDefaultStyles.backgroundColor,\n clickAndRevealPanelTextColor = clickAndRevealDefaultStyles.clickAndRevealPanelTextColor,\n includeLabel = clickAndRevealDefaultStyles.includeLabel,\n clickAndRevealLabelTextColor = clickAndRevealDefaultStyles.clickAndRevealLabelTextColor,\n showSeenState = clickAndRevealDefaultStyles.showSeenState,\n clickAndRevealShowSeenStateBackgroundColor = clickAndRevealDefaultStyles.clickAndRevealShowSeenStateBackgroundColor,\n clickAndRevealShowSeenStateTickColor = clickAndRevealDefaultStyles.clickAndRevealShowSeenStateTickColor,\n panelOutline = clickAndRevealDefaultStyles.panelOutline,\n panelOutlineColor = clickAndRevealDefaultStyles.panelOutlineColor,\n useGlobalNavigation = clickAndRevealDefaultStyles.useGlobalNavigation,\n globalNavigation = clickAndRevealDefaultStyles.globalNavigation,\n borderRadius = clickAndRevealDefaultStyles.borderRadius,\n width = clickAndRevealDefaultStyles.width,\n height = clickAndRevealDefaultStyles.height,\n layout = clickAndRevealDefaultStyles.layout,\n lockDown,\n focusColor = clickAndRevealDefaultStyles.focusColor,\n includeShadow = clickAndRevealDefaultStyles.includeShadow,\n } = context.props;\n\n //\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 ${includeShadow && 'box-shadow: 0 8px 24px 5px rgba(0, 0, 0, 0.2)'};\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 as _interactionContext_ } from './interactionContext';\nimport { MediaContext } from 'components/lib/Media/Media';\nimport { getDefaultStyles } from 'components/lib/ClickAndReveal/clickAndRevealConfig';\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 interactionContext = useContext(_interactionContext_);\n\n const clickAndRevealDefaultStyles = getDefaultStyles(\n interactionContext?.meta?.packageVersion\n );\n\n const {\n layout = clickAndRevealDefaultStyles.layout,\n } = interactionContext?.props;\n\n const { onClose, children } = props;\n const [columnA, columnB, btn] = children;\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 clickToRevealPanelPlaceholder from 'assets/Square.svg';\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 longRectangle from 'assets/Long Rectangle.svg';\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/Long Rectangle.svg';\nimport Mid_Rectangle from 'assets/Mid Rectangle.svg';\nimport Short_Rectangle from 'assets/Short Rectangle.svg';\n// '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 const interactionContext = useContext(InteractionContext);\n\n const { isLandingPage } = interactionContext?.props;\n\n // Mid_Rectangle\n\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, useState, 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\nimport { MediaContext } from 'components/lib/Media';\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 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 [mediaIndex, setMediaChanged] = useState(media?.props?.child);\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 text: '10px',\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 // useEffect(() => {\r\n // if (mediaIndex !== mediaChanged) {\r\n // setMediaChanged(mediaIndex);\r\n // }\r\n // }, [mediaIndex]);\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 \r\n {imagePosition === 'left' && (\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 === '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 === '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 === '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 === '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\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 cardPlaceholderImg from 'assets/Short Rectangle.svg';\r\nimport { ImageContext } from 'components/lib/Image';\r\nimport longRectangle from 'assets/Long Rectangle.svg';\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 = '#B2B6CA' || mint,\n dropDownBorderColor = '#D1D5E7' || '#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 = '#D1D5E7' || '#19D1CF',\n dropDownBorderRadius = 12,\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 Dropdown_default from 'assets/Short Rectangle.svg';\nimport longRectangle from 'assets/Long Rectangle.svg';\n// 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/Topic Portal Icon.svg';\n// 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 = 75,\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 = '#B2B6CA',\n cardColor = '#fff',\n textColor = '#1e2533',\n navigateToTopic = true,\n addImage = true,\n // iconSize,\n cardWidth = 240,\n cardHeight = 160,\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\ntype TopicSidId = {\n topicSId: number;\n topicId: string;\n};\n\nconst addTopicPortalMedia = (topicPortalContainerBlock, index, props) => {\n const [newBlock, newTree] = _addTopicPortalMedia_(\n topicPortalContainerBlock,\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 // console.warn('removeTopicPortalMedia ???');\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 as TopicSidId;\n }\n );\n };\n\n const addMedia = () => {\n const topicPortalContainerBlockChildrenData = getTopicPortalContainerBlockChildrenData();\n\n topics.forEach((t, index) => {\n if (\n !topicPortalContainerBlockChildrenData.some(entry => {\n const { topicSId, topicId } = entry;\n\n return topicSId === t?.props?.sId || topicId === t?.id;\n })\n ) {\n //\n console.log('ADDING TOPIC PORTAL MEDIA :', {\n topicId: t?.id,\n topicSId: t?.props?.sId,\n });\n\n addTopicPortalMedia(getTopicPortalContainerBlock(), index, {\n topicId: t?.id,\n topicSId: t?.props?.sId,\n });\n }\n });\n };\n\n const removeMedia = () => {\n getTopicPortalContainerBlockChildrenData().forEach((props: any, index) => {\n const { topicSId, topicId } = props;\n\n const topicIdentifiers = topics.map(t => {\n return t?.props?.sId || t?.id;\n });\n\n if (!topicIdentifiers?.includes(topicSId || topicId)) {\n //\n console.log(\n 'REMOVING TOPIC PORTAL MEDIA :',\n topicIdentifiers,\n { topicSId, topicId },\n\n topicSId\n );\n\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\ntype Timeout = ReturnType;\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 delayTopicChildrenLengthCheck = useRef();\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 itemsSeen.current(id);\n };\n\n useEffect(() => {\n if (!window.dev()) {\n return;\n }\n\n console.log('if these are out of sync. we do the thing. add / remove', {\n 'topics.length': topics.length,\n 'children.length': children.length,\n });\n\n // the intent here is to. . .\n // maybe there's a chance that as the blocks settle into place topic.length and children.length\n // would be out of sync on initial load ?\n // this ' should ' not happen. ' should ' not. but. . .\n //\n clearTimeout(delayTopicChildrenLengthCheck.current as Timeout);\n //\n delayTopicChildrenLengthCheck.current = setTimeout(() => {\n //\n console.log(\n 'running topic.length children.length comparison after 300ms delay'\n );\n\n if (topics.length > children.length) {\n addMedia();\n return;\n }\n\n if (topics.length < children.length) {\n removeMedia();\n }\n }, 300);\n\n return () => {};\n }, [topics.length]);\n //\n\n return (\n \n \n {displayedTopics.map((t: any, index: number) => {\n const topicMedia = children.find(media => {\n // in ye olden times we were checking for an id match. now we're comparing to sId\n return media?.props?.topicSId === t?.props?.sId;\n });\n\n if (window.dev() && topicMedia) {\n //\n console.log(t?.id, t?.props?.sId, topicMedia?.props);\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';\nimport Topic_Portal_Background from 'assets/Topic Portal Background.svg';\nimport longRectangle from 'assets/Long Rectangle.svg';\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 const { isAdditionalMedia } = mediaContext;\n // longRectangle\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 {\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 [_submitBtn_, feedbackNonScoring, feedbackScoring] = children;\n\n const targetFeedback = score ? feedbackScoring : feedbackNonScoring;\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\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 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\n const action = {\n id,\n type: 'long-fill-in',\n question,\n reportable: 'longfillin',\n // ,\n response: message?.current,\n correct: correctAnswer,\n result: isCorrect ? 1 : 0,\n } as Report;\n\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 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 = '#B2B6CA' || '#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';\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 const {\n messageTextColor = '#000',\n messageBorderColor = '#B2B6CA',\n // legacy > || '#d2dff9',\n fontFamily = 'inherit',\n messageFontSize = 16,\n messagePlaceholder = 'Type your answer here…',\n score,\n correctAnswer = '',\n useMediaInColumn = true,\n lockDown = 0,\n numberOfAttempts = 1,\n showAttemptNumber = true,\n useMediaInFeedback = true,\n showCorrectAnswer = true,\n navigationBehaviour = {\n correct: false,\n incorrect: false,\n },\n includeFeedback = true,\n includeQuestionTextPlusImage,\n correctAnswerRequirement = 'any',\n } = interactionContext.props;\n\n const { children } = props;\n\n let [txt, submitBtn, feedback] = children;\n\n const [textAreaStyle, setTextAreaStyle] = useState<{\n height?: number;\n overflow?: string;\n }>({});\n\n const [attempt, setAttempt] = useState(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={'transparent'}\n messageBorderRadius={0}\n messageBorderColor={messageBorderColor}\n messageFontFamily={fontFamily}\n messageFontSize={messageFontSize}\n textAlign={'left'}\n maxLinesBeforeScrolling={4}\n placeholderText={messagePlaceholder}\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/Short Rectangle.svg';\n// 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","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport 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 const width = _imgWidth_;\n const maxHeight = `${50 + imgContainerHeight}vh`;\n const aspectRatio = `${(_imgWidth_ - imgContainerHeight * 4) / _imgHeight_}`;\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/Mid Rectangle.svg';\n// 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","/** @jsx jsx */\n\nimport { css, jsx } from '@emotion/core';\nimport { 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 = '#D1D5E7' || '#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 const width = _imgWidth_;\n const maxHeight = `${50 + imgContainerHeight}vh`;\n const aspectRatio = `${(_imgWidth_ - imgContainerHeight * 4) / _imgHeight_}`;\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 = 12,\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/Long Rectangle.svg';\n// 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