{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/Hotspot_Done.svg","webpack:///./actions/addHeaderBlocksToStateAction.ts","webpack:///./actions/rehydrate.ts","webpack:///./actions/setAPIErrorAction.ts","webpack:///./store/theme.ts","webpack:///./store/store.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:///./styles/updateGlobalFontStylesFromTheme.ts","webpack:///./services/preprocessTypeSettings.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:///./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:///./services/useModuleVersionOnCreation.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:///./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:///./components/Editor/EditorUtilities/UI/CheckBox.tsx","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/checkDocumentHeightChanges.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/CC Logos - Logo wide.svg","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:////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_mint.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:////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:///./assets/Short Rectangle.svg","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__","findHeaderElementByType","blocks","type","values","find","block","addHeaderBlocksToStateAction","dispatch","getState","header","standardHeader","graphicHeader","children","map","child","id","standardHeaderLogo","graphicHeaderBackground","graphicHeaderLogo","rehydrateAction","setAPIErrorAction","err","TrackerState","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","getDefaultLinkStyles","versionOnCreation","isModernVersion","links","link","visited","hover","focus","active","linksSecondary","getDefaultMenuStyles","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","mirrorActive","idToSIdMap","sIdToIdMap","topicsIdSIdMapping","idToSId","sIdToId","assessmentQuestionIdSIdMapping","nextInteractionMap","projectId","rootBlockId","scormSettings","passMark","setCompleteFromScore","setCompleteOnExit","setCompleteWhenAllPagesViewed","sendOnlySuccessStatus","lessonStatus","theme","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","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","elementInitialFontsizeOffsets","h1","h2","h3","h4","h5","h6","elementResponsiveFontsizePXValueFns","fS","elementInitialLineHeightOffsets","elementResponsiveLineHeightPXValueFns","updateGlobalFontStylesFromTheme","parsedTextColor","typeSettings","headingsStyles","italic","isNaN","elementStyles","index","currentElementStyle","round","replace","innerWidth","preprocessTypeSettings","updatedLineHeight","getElementInitialFontSize","h","getElementInitialLineheight","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","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","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","random","clearInterval","percentLoaded","display","createPortal","motion","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","isFixedHeaderHeight","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","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","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","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","elementsFromPoint","clientX","clientY","el","aNext","sectionInViewSubscriber","overideStyleBackground","paddingTop","updatedGlobalFontStylesFromTheme","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","nodes","childNodes","serialize","data-type","fontSizeNumber","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","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","useModuleVersionOnCreation","CHAMELEON_COPIED_TEXT","isBoldHotkey","isKeyHotkey","isItalicHotkey","isUnderlinedHotkey","schema","isVoid","EditableText","placeholderText","textBackgroundOpacity","enableCustomLinkColors","enableSecondaryLinkColors","customLinkColors","defaultLinkStyles","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","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","clientSrc","dropShadow","includeAspectRatio","encodeURIComponent","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","Tick","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","ul","listStyleType","ol","listStylePosition","CarouselSlide","slideRef","ar","imageZoomContextValue","slideTextStyles","wordBreak","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","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","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","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","showCorrectAnswerIconColor","selectGroupIndex","menuIsOpen","nameId","isSearchable","control","textOverflow","components","innerProps","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","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","navToQuizResultsTimedOut","locationTimeOut","documentHeightIsStableOrUserHasInteracted","stabilityTimer","mutationObserver","stableTimeStart","interval","stabilityTime","lastHeight","documentElement","checkHeight","currentHeight","disconnect","startObserving","MutationObserver","childList","subtree","characterData","checkDocumentHeightChanges","quizResultsElement","handleUserInteraction","lockResultsScrollPositionUntilContentSettles","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","fontsFromElementStylesOnTheme","elementStyle","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","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","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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EAAI,IAAI,GAAK,IAAI,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,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,EAAE,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,IAAI,EAAI,CAAC,OAAO,GAAK,IAAI,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,OAAO,OAAO,GAAG,GAAK,EAAE,EAAI,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,OAAO,MAAM,GAAG,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I,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,GAAG,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,IAAI,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,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,EAA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AAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,C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,CAAC,MAAO,EAAI,CAAC,IAAI,GAAK,MAAM,EAAI,CAAC,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,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,MAAM,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,MAAM,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,MAAM,CAAC,EAAI,eAAe,EAAI,CAAC,OAAO,GAAK,IAAI,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,GAAK,MAAM,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,GAAK,MAAM,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,KAAM,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,MAAM,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,MAAM,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,QAAQ,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,QAAQ,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,QAAQ,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,QAAQ,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,OAAO,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,QAAQ,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,QAAQ,EAAI,CAAC,QAAQ,MAAM,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,CAAC,EAAI,KAAM,EAAI,GAAG,EAAI,QAAQ,EAAI,CAAC,QAAQ,OAAO,GAAG,GAAK,CAAC,EAAE,EAAE,GAAG,GAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAI,eAAe,EAAI,CAAC,QAAQ,MAAM,KAAK,GAAK,EAAE,EAAI,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,OAAO,MAAM,GAAG,GAAK,EAAE,EAAI,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,IAAI,IAAI,KAAK,GAAK,EAAE,EAAI,IAAI,GAAK,EAAE,OAAS,CAAC,CAAC,GAAK,KAAK,GAAK,CAAC,CAAC,IAAM,EAAE,GAAK,KAAK,GAAK,EAAE,GAAK,CAAC,EAAI,EAAE,EAAI,CAAC,EAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAI,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,SAAS,GAAI,GAAM,GAAK,GAAG,GAAK,SAAS,GAAK,4BAA4B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,cAAe,cAAe,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,EAAI,EAAE,GAAK,EAAE,GAAK,SAAS,GAAK,6BAA6B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,MAAM,QAAQ,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,IAAI,KAAK,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,cAAc,GAAK,UAAU,GAAK,EAAE,IAAM,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,oBAAoB,IAAK,GAAO,CAAC,GAAK,KAAK,GAAK,CAAC,CAAC,IAAM,EAAE,GAAK,KAAK,GAAK,EAAE,GAAK,CAAC,EAAI,EAAE,EAAI,CAAC,EAAI,CAAC,CAAC,MAAM,OAAO,EAAE,MAAM,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,QAAQ,EAAI,CAAC,EAAE,OAAO,OAAO,CAAC,OAAO,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,QAAQ,EAAI,CAAC,EAAE,MAAM,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,OAAO,CAAC,MAAM,QAAQ,GAAI,GAAM,GAAK,GAAG,GAAK,SAAS,GAAK,4BAA4B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,cAAe,cAAe,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,EAAI,EAAE,GAAK,EAAE,GAAK,SAAS,GAAK,6BAA6B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,OAAO,QAAQ,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,IAAI,KAAK,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,cAAc,GAAK,UAAU,GAAK,EAAE,IAAM,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,oBAAoB,IAAK,GAAO,CAAC,GAAK,KAAK,GAAK,CAAC,CAAC,IAAM,EAAE,GAAK,KAAK,GAAK,EAAE,GAAK,CAAC,EAAI,EAAE,EAAI,CAAC,EAAI,CAAC,CAAC,KAAM,OAAO,EAAE,MAAM,MAAO,EAAE,MAAO,OAAO,CAAC,OAAO,OAAQ,EAAI,CAAC,EAAE,MAAO,OAAO,CAAC,OAAO,MAAO,CAAC,KAAM,OAAO,EAAE,MAAM,OAAQ,EAAI,CAAC,EAAE,MAAM,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,OAAO,CAAC,MAAM,QAAQ,GAAI,GAAM,GAAK,GAAG,GAAK,SAAS,GAAK,4BAA4B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,EAAI,EAAE,GAAK,EAAE,GAAK,SAAS,GAAK,6BAA6B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,OAAO,QAAQ,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,IAAI,KAAK,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,cAAc,GAAK,UAAU,GAAK,EAAE,IAAM,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,oBAAoB,IAAK,GAAO,CAAC,GAAK,KAAK,GAAK,CAAC,CAAC,IAAM,EAAE,GAAK,KAAK,GAAK,EAAE,GAAK,CAAC,EAAI,EAAE,EAAI,CAAC,EAAI,CAAC,CAAC,MAAO,MAAM,EAAE,MAAM,OAAO,EAAE,MAAO,MAAO,EAAE,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,QAAQ,EAAI,CAAC,CAAC,EAAE,GAAG,CAAC,KAAM,MAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,OAAO,EAAE,KAAM,QAAQ,EAAI,CAAC,EAAE,QAAQ,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,OAAO,OAAO,EAAE,OAAO,QAAQ,GAAI,GAAM,GAAK,GAAG,GAAK,SAAS,GAAK,4BAA4B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,EAAI,EAAE,GAAK,EAAE,GAAK,SAAS,GAAK,6BAA6B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,OAAO,QAAQ,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,IAAI,KAAK,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,cAAc,GAAK,UAAU,GAAK,EAAE,IAAM,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,oBAAoB,IAAK,GAAO,CAAC,GAAK,KAAK,GAAK,CAAC,CAAC,IAAM,EAAE,GAAK,KAAK,GAAK,EAAE,GAAK,CAAC,EAAI,EAAE,EAAI,CAAC,EAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,OAAO,EAAE,MAAM,MAAO,EAAE,IAAK,MAAO,EAAE,OAAO,KAAM,EAAE,MAAM,OAAO,EAAE,KAAM,MAAO,CAAC,EAAE,GAAG,EAAE,KAAM,MAAO,CAAC,MAAM,QAAQ,EAAI,CAAC,CAAC,EAAE,MAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,MAAO,MAAO,CAAC,KAAM,MAAO,CAAC,IAAI,MAAO,CAAC,MAAO,MAAO,CAAC,EAAE,GAAG,CAAC,MAAO,MAAO,CAAC,OAAO,OAAO,EAAE,QAAQ,SAAS,EAAI,CAAC,EAAE,OAAO,MAAM,EAAE,OAAO,OAAO,EAAE,OAAO,MAAM,EAAE,OAAO,QAAQ,EAAE,MAAM,OAAO,EAAE,MAAM,QAAQ,EAAE,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,QAAQ,QAAQ,GAAI,GAAM,GAAK,GAAG,GAAK,SAAS,GAAK,4BAA4B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,cAAe,cAAe,cAAe,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,EAAI,EAAE,GAAK,EAAE,GAAK,SAAS,GAAK,6BAA6B,IAAK,GAAO,CAAC,GAAK,KAAK,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,OAAO,QAAQ,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAE,GAAG,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,IAAI,KAAK,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,CAAC,EAAI,EAAE,EAAI,EAAE,GAAK,GAAG,GAAK,cAAc,GAAK,UAAU,GAAK,EAAE,IAAM,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,oBAAoB,IAAK,IAAQ,IAAM,GAAG,GAAK,IAAI,IAAM,EAAE,GAAK,GAAG,CAAC,IAAM,EAAE,IAAM,GAAG,GAAK,EAAE,GAAK,OAAO,OAAS,GAAG,GAAK,EAAE,GAAK,CAAC,EAAI,CAAC,EAAI,EAAE,EAAI,IAAI,GAAK,IAAI,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,GAAK,MAAM,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,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,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,OAAO,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,MAAM,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,CAAC,IAAI,CAAC,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,CAAC,EAAI,CAAC,MAAO,EAAI,CAAC,IAAI,EAAI,QAAQ,EAAI,EAAE,MAAM,CAAC,EAAI,CAAC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ACA,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,kBCz5CE33E,GAAQ,CACV,OACA,gBACA,OACA,YACA,QACA,iBACA,QACA,OACA,OACA,YACA,SACA,SACA,aACA,QACA,QACA,YACA,SACA,YACA,cACA,eACA,iBACA,SACA,QACA,cACA,MACA,QACA,YACA,sBACA,aACA,eACA,oBACA,QACA,OACA,eACA,gBACA,cACA,eACA,QACA,eACA,QACA,QACA,OACA,oBACA,iBACA,UACA,OACA,YACA,eACA,oBACA,aACA,QACA,OACA,eACA,aACA,eACA,YACA,eACA,eACA,eACA,aACA,SACA,cACA,YACA,sBACA,SACA,WACA,SACA,UACA,iBACA,WACA,WACA,mBACA,OACA,mBACA,UACA,YACA,YACA,WACA,UACA,YACA,SACA,mBACA,cACA,cACA,UACA,YACA,QACA,qBACA,UACA,aACA,kBACA,kBACA,mBACA,OACA,gBACA,SACA,mBACA,eACA,WACA,YACA,qBAGFA,GAAQ59B,MAAMgW,KAAK,IAAIC,IAAJ,cAAY2nB,IAAZ,IAAsB23E,OAAkBhmC,OAE3D,IAiBe3xC,MC7GA43E,GAhBM,SAAA7lF,GACnB,IAAM8lF,EAAS9lF,EAAI3c,WAAWsL,MAAM,OADV,EAEQm3F,EAAOA,EAAOvjH,OAAS,GAAGosB,MAAM,MAFxC,WAEnBo3F,EAFmB,KAETC,EAFS,KAS1B,MAAO,CACLD,WACAC,gBACAC,WARiB,CACjBC,IAAK,WACLC,IAAK,YACLH,K,4BCDJ,I,SAAMI,GAAa,G,qkBCInB,IAAMryG,GAAQD,KACNxN,GAAayN,GAAbzN,S,GACiBA,KAAWgG,MAA5BiB,gB,OAAU,G,OAEhB,WAAAjH,KAAWgG,aAAX,iBAAkBsO,eAAgB,G,MAD5BpS,mB,OAAa,G,SAAIwE,qB,OAAe,G,GAGlCq5G,GAAyB7jH,OAAOyD,OACpCsH,IACiC5G,KAAI,SAAAm0D,GACr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AAOD,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,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,IAA0B,gC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,gC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,gC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,gC,oBCA3C9B,EAAOD,QAAU+B,IAA0B,oC,o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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.7.10/\";\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([588,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"images/Hotspot_Done.svg\";","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\nexport const getDefaultLinkStyles = versionOnCreation => {\n const isModernVersion =\n semver.valid(versionOnCreation) && semver.gte(versionOnCreation, '1.5.0');\n\n return {\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 };\n};\n\nexport const getDefaultMenuStyles = versionOnCreation => {\n const isModernVersion =\n semver.valid(versionOnCreation) && semver.gte(versionOnCreation, '1.5.0');\n\n return {\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};\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 Element = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';\n\nexport type ElementStyle = {\n fontFamily: string;\n fontSize: number;\n color: string;\n bold?: boolean;\n italic?: boolean;\n lineHeight: number;\n};\n\nexport type ElementStyles = {\n [key in Element]?: ElementStyle;\n};\n\nexport type TypeSettings = {\n type: 'basic' | 'advanced';\n fontFamily: string;\n fontFamilies: string[];\n fontSize: number;\n color: string;\n lineHeight: number;\n links: {};\n bold?: boolean;\n italic?: boolean;\n elementStyles: ElementStyles;\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 typeSettings?: TypeSettings;\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 || '<1.5.0');\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\n menu: getDefaultMenuStyles(versionOnCreation),\n //\n headings: {\n // h1: 1,\n // h2: 1,\n // h3: 1,\n // h4: 1,\n // h5: 1,\n // h6: 1,\n } as any,\n //\n //\n // links: {},\n // linksSecondary: {},\n ...getDefaultLinkStyles(versionOnCreation),\n\n // typeSettings: {} as TypeSettings,\n } as TTheme;\n};\n","import { Block, Blocks } from '@chameleoncreator/creator-app';\nimport { getTheme, TTheme } from './theme';\n\n// export const versions = {\n// theme: 1.0,\n// button: 1,\n// };\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\n// export type Element = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';\n\n// export type ElementStyle = {\n// fontFamily: string;\n// fontSize: number;\n// color: string;\n// bold?: boolean;\n// italic?: boolean;\n// lineHeight: number;\n// };\n\n// export type ElementStyles = {\n// [key in Element]?: ElementStyle;\n// };\n\n// export type TypeSettings = {\n// type: 'basic' | 'advanced';\n// fontFamily: string;\n// fontFamilies: string[];\n// fontSize: number;\n// color: string;\n// lineHeight: number;\n// links: {};\n// bold?: boolean;\n// italic?: boolean;\n// elementStyles: ElementStyles;\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 * 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 { Element, ElementStyle } from 'store/theme';\n\ninterface IUpdateGlobalFontStylesFromTheme {\n theme;\n parsedTextColor?: string;\n headingsStyles?: () => string;\n}\n\ntype Headings = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nconst defaultTextSize = 16;\nconst defaultLineHeight = 24; // 1.5;\n\nlet globalResponsiveFontSizeOffset;\nconst contentContainerWidth = 1100;\n\nexport const elementInitialFontsizeOffsets = {\n h1: 3.5,\n h2: 2.5,\n h3: 2,\n h4: 1.7,\n h5: 1.2,\n h6: 1,\n p: 1,\n};\n\nfunction halfwayBetween2Numbers(a: number, b: number) {\n return (a + b) / 2;\n}\n\nexport const elementResponsiveFontsizePXValues = {\n h1: [56, 40, 32],\n h2: [40, 32, 24],\n h3: [32, 28, 20],\n h4: [27, 24, 16],\n h5: [19.2, 16, 16],\n h6: [16, 16, 16],\n};\n\nexport const elementResponsiveFontsizePXValueFns = {\n h1: [fS => fS / 1, fS => fS / 1.4, fS => fS / 1.75],\n h2: [fS => fS / 1, fS => fS / 1.25, fS => fS / 1.67],\n h3: [fS => fS / 1, fS => fS / 1.14, fS => fS / 1.67],\n h4: [fS => fS / 1, fS => fS / 1.125, fS => fS / 1.6875],\n h5: [fS => fS / 1, fS => fS / 1.2, fS => fS / 1.2],\n h6: [fS => fS / 1, fS => fS / 1, fS => fS / 1],\n};\n\nexport const elementInitialLineHeightOffsets = {\n h1: 3,\n h2: 2.3,\n h3: 2,\n h4: 1.73,\n h5: 1.3,\n h6: 1.06,\n p: 1,\n};\n\nexport const elementResponsiveLineHeightPXValues = {\n h1: [72, 52, 46],\n h2: [55, 44, 36],\n h3: [48, 40, 32],\n h4: [42, 36, 28],\n h5: [31, 25, 24],\n h6: [25, 22, 24],\n};\n\nexport const elementResponsiveLineHeightPXValueFns = {\n h1: [fS => fS / 1, fS => fS / 1.384, fS => fS / 1.57 || 2.25],\n h2: [fS => fS / 1, fS => fS / 1.25, fS => fS / 1.53 || 1.71875],\n h3: [fS => fS / 1, fS => fS / 1.2, fS => fS / 1.5],\n h4: [fS => fS / 1, fS => fS / 1.1667, fS => fS / 1.5 || 1.3125],\n h5: [fS => fS / 1, fS => fS / 1.24, fS => fS / 1.29 || 1.55],\n h6: [fS => fS / 1, fS => fS / 1.136, fS => fS / 1.04 || 1.25],\n};\n\nexport function getInitialFontSize(element) {\n const elementInitialFontsizeOffset =\n elementInitialFontsizeOffsets[element] || 1;\n\n return 16 * elementInitialFontsizeOffset;\n}\n\nexport type LineHeightOffsets = keyof typeof elementInitialLineHeightOffsets;\n\nexport function getInitialLineHeight(\n element: LineHeightOffsets,\n lineHeight = 24\n) {\n return lineHeight * elementInitialLineHeightOffsets[element] || 1;\n}\n\nexport function updateGlobalFontStylesFromTheme({\n theme,\n parsedTextColor = '#000',\n headingsStyles,\n}: IUpdateGlobalFontStylesFromTheme) {\n const typeSettings = theme?.typeSettings || {};\n\n const {\n fontFamily = 'Poppins',\n fontSize = defaultTextSize,\n bold = false,\n italic = false,\n } = typeSettings || {};\n\n let lineHeight = typeSettings?.lineHeight;\n //\n // NaN is falsey. yep, but wanting to check it explicitly\n if (!lineHeight || isNaN(lineHeight)) {\n lineHeight = defaultLineHeight;\n }\n\n // console.log(\n // `%clineHeight as it cascades from 'basic' to 'advanced' :\\nglobal ? ${lineHeight ||\n // defaultLineHeight}px\\np.lineheight ? ${\n // typeSettings?.elementStyles?.p?.lineHeight\n // }`,\n // 'color: #fff000; background: #000;'\n // );\n\n const textColor = parsedTextColor;\n\n const elementStyles = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].reduce(\n (acc, curr, index) => {\n const { typeSettings = {} } = theme;\n\n const currentElementStyle =\n theme?.typeSettings?.elementStyles?.[curr] || {};\n\n let fontFamily =\n currentElementStyle?.fontFamily ||\n typeSettings?.fontFamily ||\n 'Poppins';\n\n let fontSize =\n currentElementStyle?.fontSize ||\n typeSettings?.fontSize * elementInitialFontsizeOffsets[curr];\n\n // load default\n // 'required' to load it loosely and not bake it into the typesettings on boot\n // so that changes to the high level basic fontSizes ( S M L ) will update\n //\n if (!fontSize || isNaN(fontSize)) {\n fontSize = 16 * elementInitialFontsizeOffsets[curr];\n }\n\n let lineHeight =\n currentElementStyle?.lineHeight ||\n (typeSettings?.fontSize / 16) *\n 24 *\n elementInitialLineHeightOffsets[curr];\n\n let color = currentElementStyle?.color || textColor;\n\n return `\n ${acc}\n ${curr} {\n font-family: ${fontFamily} !important;\n \n font-size: ${fontSize}px !important;\n\n line-height: ${lineHeight}px;\n\n ${currentElementStyle?.bold ? 'font-weight: 700;' : 'font-weight: 300;'}\n\n ${\n currentElementStyle?.italic\n ? 'font-style: italic;'\n : 'font-style: normal;'\n }\n \n color: ${color};\n\n @media(max-width: 767px) {\n font-size: ${elementResponsiveFontsizePXValueFns?.[curr]?.[1](\n fontSize\n )}px !important;\n \n line-height: ${Math.round(\n elementResponsiveLineHeightPXValueFns?.[curr]?.[1](lineHeight)\n )}px;\n }\n\n @media(max-width: 480px) {\n font-size: ${elementResponsiveFontsizePXValueFns?.[curr]?.[2](\n fontSize\n )}px !important;\n\n line-height: ${Math.round(\n elementResponsiveLineHeightPXValueFns?.[curr]?.[2](lineHeight)\n )}px;\n }\n }\n `.replace(/\\n/g, '');\n },\n ''\n );\n\n //\n\n const fS = window.innerWidth < 1100 ? window.innerWidth / 780 : 1;\n\n return `\n .chameleon-text {\n \n ${parsedTextColor && `color: ${parsedTextColor};`}\n\n ${elementStyles}\n\n p:not(h1 p, h2 p, h3 p, h4 p, h5 p, h6 p, .chameleon-certificate-text *) {\n\n font-family: ${typeSettings?.elementStyles?.p?.fontFamily ||\n fontFamily ||\n 'Poppins'};\n\n font-size: ${typeSettings?.elementStyles?.p?.fontSize || fontSize}px;\n\n line-height: ${typeSettings?.elementStyles?.p?.lineHeight ||\n lineHeight ||\n 24}px;\n\n font-weight: ${typeSettings?.elementStyles?.p?.bold || bold ? 700 : ''};\n font-style: ${\n typeSettings?.elementStyles?.p?.italic || italic ? 'italic' : 'normal'\n };\n\n color: ${typeSettings?.elementStyles?.p?.color || parsedTextColor};\n }\n\n li:not(h1 li, h2 li, h3 li, h4 li, h5 li, h6 li) {\n font-family: ${typeSettings?.elementStyles?.p?.fontFamily ||\n fontFamily ||\n 'Poppins'};\n font-size: ${typeSettings?.elementStyles?.p?.fontSize || fontSize}px;\n line-height: ${typeSettings?.elementStyles?.p?.lineHeight ||\n lineHeight}px;\n\n font-weight: ${typeSettings?.elementStyles?.p?.bold || bold ? 700 : ''};\n font-style: ${\n typeSettings?.elementStyles?.p?.italic || italic ? 'italic' : 'normal'\n };\n }\n\n }\n\n li > span {\n ${parsedTextColor && `color: ${parsedTextColor};`}\n }\n \n `;\n}\n","import {\n elementInitialFontsizeOffsets,\n elementInitialLineHeightOffsets,\n} from 'styles/updateGlobalFontStylesFromTheme';\n\nexport const preprocessTypeSettings = theme => {\n const {\n fontFamily,\n fontFamilies,\n fontSize,\n textColor,\n lineHeight,\n links,\n } = theme;\n\n let type;\n\n if (!lineHeight || !fontSize) {\n type = 'basic';\n } else {\n type =\n fontSize !== 16 || (lineHeight !== undefined && lineHeight !== 1.5)\n ? 'advanced'\n : 'basic';\n }\n\n const updatedLineHeight = Math.round((lineHeight || 1.5) * fontSize);\n\n const getElementInitialFontSize = h => ({\n fontSize: 16 * elementInitialFontsizeOffsets[h],\n });\n\n const getElementInitialLineheight = h => {\n const value = (lineHeight || 1.5) * 16 * elementInitialLineHeightOffsets[h];\n\n return {\n lineHeight: value,\n };\n };\n\n const typeSettings = {\n type: theme?.typeSettings?.type || type,\n fontFamily: theme?.typeSettings?.fontFamily || fontFamily,\n fontFamilies: theme?.typeSettings?.fontFamilies || fontFamilies,\n fontSize: theme?.typeSettings?.fontSize || fontSize,\n color: theme?.typeSettings?.color || textColor,\n lineHeight: theme?.typeSettings?.lineHeight || updatedLineHeight,\n links: theme?.typeSettings?.links || links,\n elementStyles: theme?.typeSettings?.elementStyles || {\n ...(type === 'advanced'\n ? {\n p: {\n fontSize,\n lineHeight: updatedLineHeight,\n },\n h1: {\n ...getElementInitialFontSize('h1'),\n ...getElementInitialLineheight('h1'),\n },\n h2: {\n ...getElementInitialFontSize('h2'),\n ...getElementInitialLineheight('h2'),\n },\n h3: {\n ...getElementInitialFontSize('h3'),\n ...getElementInitialLineheight('h3'),\n },\n h4: {\n ...getElementInitialFontSize('h4'),\n ...getElementInitialLineheight('h4'),\n },\n h5: {\n ...getElementInitialFontSize('h5'),\n ...getElementInitialLineheight('h5'),\n bold: true,\n },\n h6: {\n ...getElementInitialFontSize('h6'),\n ...getElementInitialLineheight('h6'),\n bold: true,\n },\n }\n : {\n h5: {\n bold: true,\n },\n h6: {\n bold: true,\n },\n }),\n },\n };\n\n console.log({ typeSettings });\n\n return typeSettings;\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 oldStylesToNewMap,\n oldDataToNewMap,\n} from 'factories/interactions/continueBtn';\n\nimport { preprocessTypeSettings } from 'services/preprocessTypeSettings';\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 const { theme } = state;\n const typeSettings = preprocessTypeSettings(theme);\n\n const newState = {\n ...state,\n ...data,\n interactionsOpen,\n interactionsLocked,\n ...{ nextInteractionMap },\n ...{ idToSIdMap },\n ...{ sIdToIdMap },\n topicsIdSIdMapping,\n assessmentQuestionIdSIdMapping,\n\n theme: {\n ...state.theme,\n\n ...(typeSettings && {\n typeSettings: {\n ...typeSettings,\n },\n }),\n },\n\n ...(mainButton && {\n theme: {\n ...state.theme,\n buttons: {\n ...state.theme.buttons,\n main: mainButton,\n },\n },\n }),\n };\n\n return newState;\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 = (\n state: State = initialState,\n { data }: Action\n) => {\n //\n // console.log(data.key, data);\n\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';\n\nimport { HeaderBackground } from './HeaderBackground';\nimport { HeaderLayout } from 'components/Header_v2/HeaderLayout';\nimport { Burger } from 'components/Header/Header';\n\ninterface IHeader {\n currentTopicIndex: number;\n topics: any[];\n theme: any;\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 {\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 isFixedHeaderHeight,\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) {\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 (isFixedHeaderHeight) {\n return;\n }\n\n if (currentTopicIndex > 0 && !isFixedHeaderHeight) {\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 || isFixedHeaderHeight) {\n return;\n }\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={`${\n isFixedHeaderHeight\n ? headerHeight\n : !isFirstInteraction\n ? 70\n : headerHeight\n }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 { Fragment as _ } 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 { 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 { isFixedHeaderHeight } = currentHeader?.props;\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 let height;\n\n if (!headerStyle || headerStyle === 'standard') {\n height = 60 + editWrapperMargin;\n } else {\n height =\n (!isFirstInteraction && !isFixedHeaderHeight\n ? defaultHeaderHeight\n : headerHeight) -\n editWrapperMargin * 2;\n }\n\n return (\n <_>\n {headerStyle === 'standard' ? (\n // @ts-ignore\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 \n 0 && {\n transformOrigin: 'center',\n transform: 'scale(1.1)',\n }),\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\nexport const getLineHeight = (heading: keyof typeof headingsTable, index) => {\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","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 useMemo,\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 const { backButton, topicMenu } = header[headerStyle].props;\n\n let { headerHeight, isFixedHeaderHeight } = header[headerStyle].props;\n\n if (window.dev()) {\n headerHeight = isFixedHeaderHeight\n ? headerHeight\n : !isFirstInteraction\n ? 70\n : headerHeight;\n }\n\n const currentTopic = getCurrentTopic();\n\n const parsedTextColor =\n textColor ||\n (currentTopic && getBlockById(currentTopic.id)?.props?.textColor) ||\n theme?.typeSettings?.color ||\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 const elementsUnderClick = Array.from(\n document.elementsFromPoint(e.clientX, e.clientY)\n );\n\n const a = elementsUnderClick.find(el => el.tagName.toLowerCase() === 'a');\n\n const href = a?.getAttribute('href');\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 (\n !isFirstInteraction &&\n !isFixedHeaderHeight &&\n headerStyle === 'graphic'\n ) {\n paddingTop = 70;\n }\n\n if (screen.availWidth <= 480) {\n paddingTop = 50;\n }\n\n // need to memoize this in output\n const updatedGlobalFontStylesFromTheme = updateGlobalFontStylesFromTheme({\n theme,\n parsedTextColor,\n headingsStyles() {\n return headingsStyles({ h1, h2, h3, h4, h5, h6 });\n },\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 maxWidth?: string | number;\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 maxWidth = 1024,\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 theme = useSelector((state: State) => {\n return state.theme || {};\n });\n\n const { fontSize = 16, lineHeight = 1.5, headings } = theme;\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 theme,\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::marker': {\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","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 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';\nimport { useModuleVersionOnCreation } from 'services/useModuleVersionOnCreation';\nimport { getDefaultLinkStyles } from 'store/theme';\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 moduleVersionOnCreation = useModuleVersionOnCreation();\n const defaultLinkStyles = getDefaultLinkStyles(moduleVersionOnCreation);\n\n const linkColors = useSelector((state: State) => {\n //\n // a spread of defaults / legacy links / and updated theme\n return {\n ...defaultLinkStyles.links,\n ...state.theme.links,\n ...state.theme?.typeSettings?.links,\n // ...(enableSecondaryLinkColors && {\n // ...state.theme?.typeSettings?,\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 console.log(links);\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","/** @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} !important`,\n },\n }\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, { Fragment as _, useState, useEffect } from 'react';\nimport { keyframes } from 'emotion';\nimport { css, jsx } from '@emotion/core';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { colors } from 'styles/variables';\nimport { 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 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: clientSrc = 'https://www.chameleoncreator.com',\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 const src =\n (window as any).source !== 'scorm'\n ? `https://chameleoncreatorembed.com/?target=${encodeURIComponent(\n clientSrc\n )}`\n : clientSrc;\n\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\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 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',\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","/** @jsx jsx */\n\nimport React, { useState } from 'react';\nimport { css, jsx } from '@emotion/core';\n\nexport const Tick = ({ width = 7, height = 6 }) => {\n return (\n \n \n \n \n
    \n );\n};\n\nconst CheckBox = ({\n label = '',\n width = 17,\n height = 17,\n on,\n onClick,\n style = {},\n ...props\n}) => {\n const checkBox = (\n \n \n \n );\n\n return label ? (\n \n {checkBox}\n \n {label}\n \n \n ) : (\n checkBox\n );\n};\n\nexport default CheckBox;\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 = {\n ul: {\n listStyleType: 'disc',\n ul: {\n listStyleType: 'circle',\n ul: {\n listStyleType: 'square',\n },\n },\n },\n ol: {\n ul: {\n listStyleType: 'circle',\n ul: {\n listStyleType: 'square',\n },\n },\n },\n '& .chameleon-text > div': {\n 'ul, ol': {\n listStylePosition: 'inside',\n },\n '> ul, > ol': {\n display: 'inline-block',\n marginLeft: '0px',\n },\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\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 } else {\n slideRef.current.removeAttribute('inert');\n }\n }, [currentIndex]);\n\n const slideTextStyles = {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: currentIndex === index ? 'auto' : 0,\n padding: '13px 7px',\n overflow: 'hidden',\n wordBreak: 'break-word',\n textAlign: 'center',\n transition: 'height 0.2s',\n ...defaultBulletFormatting,\n ...(window.dev() && currentIndex === index ? { padding: '3px 5px' } : {}),\n ...(currentIndex === index ? { transition: 'height 0.2s' } : {}),\n ...(carouselTextColor\n ? {\n '& .chameleon-text *:not(span[data-type=\"color\"])': {\n color: carouselTextColor,\n },\n '& .chameleon-text span[data-type=\"color\"] *': {\n color: 'inherit',\n },\n }\n : {}),\n } as any;\n\n // isiOS()\n const applesToApples = isAppleComputerInc();\n\n return applesToApples ? (\n \n \n \n {img}\n \n \n\n {includeText && (\n
    \n {text}\n
    \n )}\n \n ) : (\n // @ts-ignore\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 >\n \n \n {img}\n \n \n\n {includeText &&
    {text}
    }\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'\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\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 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, li, li > span': {\n color: `${optionTextColor} !important`,\n },\n\n 'li, li > span': {\n color: optionTextColor,\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 span': {\n color: `${optionTextColor}`,\n },\n },\n })}\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 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 const submitted = unlockInteraction(context.id, 1);\n\n let enabled = includeMessageText === false || message !== '';\n\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 if (ratingEndpoint === 'hosting') {\n onSubmit();\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 { Tick } from 'components/Editor/EditorUtilities/UI/CheckBox';\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 let { showCorrectAnswerIconColor } = iContext.props;\n if (showCorrectAnswerIconColor === undefined) {\n showCorrectAnswerIconColor = dropDownBorderColor;\n }\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 \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 )}\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 className,\n children,\n}: {\n color: string;\n textColor: string;\n hidden?: boolean;\n borderColor?: string;\n buttonBorderRadius?: number;\n onClick?: () => void;\n className?: string;\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