{"version":3,"sources":["static/images/superhero-dog.png","static/images/iconsAnimated/logo-desktop.svg","static/images/dog2.png","static/images/anonymous-dog.png","static/images/dog.png","static/images/iconsAnimated/hint-dog.svg","static/images/gril-with-barbell.png","static/images/quote.png","static/images/dog-with-balls.png","static/images/people-with-dog.png","static/images/chatting-people.png","static/images/dog4.png","static/images/people-celebrating.png","static/images/termsAndConditionsPlaceholder-milg31nitn13oi93-700x525-png.png.png","static/images/iconsAnimated/hint-message.svg","static/images/iconsAnimated/arrows.svg","static/images/iconsAnimated/figures.svg","static/images/icons/lock.svg","static/images/icons/dark-lock.svg","static/images/degrees37/congratulations.png","static/images/degrees37/empty-search-image.png","static/images/degrees37/product-login.png","static/images/dog-mirror.png","static/images/ellipse.png","static/images/girl-with-menu.png","static/images/masks/brain.png","static/images/masks/brain2/advanced-brain.png","static/images/masks/brain2/brain_stem_mask.png","static/images/masks/brain2/cerebellum_mask.png","static/images/masks/brain2/hypothalamus_mask.png","static/images/masks/brain2/medulla_oblongata_mask.png","static/images/masks/brain2/mesencephalon_mask.png","static/images/masks/brain2/pons_mask.png","static/images/masks/brain2/thalamus_mask.png","static/images/masks/cerebral_cortex_mask.png","static/images/masks/motor_cortex_mask.png","static/images/masks/primary_sensory_cortex_mask.png","static/images/riktig/congratulations.png","static/images/riktig/empty-search-image.png","static/images/riktig/product-login.png","static/images/storybook/image-articleHero-2000x3000-png.png","static/images/storybook/image-cardThemeBasicExample-2000x3000-png.png","static/images/storybook/image-choiceListTestExample-2000x3000-png.png","static/images/storybook/image-dashboardSections-2000x3000-png.png","static/images/storybook/image-fullBody-2000x3000-png.png","static/images/storybook/image-halfSkeleton-2000x3000-png.png","static/images/storybook/image-previousExam-2000x3000-png.png","static/images/storybook/image-skeleton-2000x3000-png.png","static/images/storybook/image-trainingResults-2000x3000-png.png","static/images/storybook/image-videoThumbnailExample-2000x3000-png.png","static/images lazy /^/.//.*$/ groupOptions: {} namespace object","react-mvvm/src/routing/RouteBinding.tsx","react-mvvm/src/routing/RouteDefinition.tsx","react-mvvm/src/routing/HomeRouteDefinition.tsx","react-mvvm/src/routing/index.tsx","react-mvvm/src/forms/formField.ts","react-mvvm/src/forms/form.ts","react-mvvm/src/forms/bindableForm.ts","react-mvvm/src/commands/ContextualCommand.ts","react-mvvm/src/commands/Command.ts","react-mvvm/src/commands/index.ts","react-mvvm/src/ContentView.tsx","react-mvvm/src/Page.ts","react-mvvm/src/navigation/index.ts","react-mvvm/src/lists/List.ts","react-mvvm/src/lists/PaginatedList.ts","react-mvvm/src/index.ts","shared/components/popup/Popup.ts","layout/cookiesConsent/CookiesConsentViewModel.ts","shared/typeUtils.ts","layout/footer/FooterViewModel.ts","types/platform/infrastructure/RouteConfiguration.ts","pages/authorsForProduct/authorInfo/AuthorInfo.ts","shared/components/authorsSlider/AuthorsSliderViewModel.ts","shared/services/errors/HttpError.ts","pages/TranslatedPage.ts","pages/BasePage.ts","pages/GtmBasePage.ts","pages/aboutUs/AboutUsViewModel.ts","pages/articles/article/ArticleViewModel.ts","pages/articles/article/articleBuySection/ArticleBuySectionViewModel.ts","shared/components/select/SelectViewModel.ts","pages/articles/articleList/ArticleListViewModel.ts","pages/articles/article/articleLoginSection/ArticleLoginSectionViewModel.ts","pages/authorsForProduct/AuthorsForProductViewModel.ts","pages/bookmarks/BookmarkListApi.ts","pages/bookmarks/BookmarkListStore.ts","shared/components/thumbnails/stepThumbnail/TaskThumbnailViewModel.ts","shared/components/thumbnails/stepThumbnail/TextBlockThumbnailViewModel.ts","shared/components/image/Image.mock.ts","shared/components/thumbnails/stepThumbnail/VideoThumbnailViewModel.ts","shared/components/thumbnails/stepThumbnail/createStepThumbnailViewModel.ts","pages/bookmarks/bookmarkList/bookmark/BookmarkViewModel.ts","pages/bookmarks/bookmarkList/BookmarkListViewModel.ts","pages/buyRedirect/BuyRedirectViewModel.ts","shared/stores/Bookmark.ts","shared/stores/BookmarkStore.ts","shared/stepTypeUtils.ts","shared/components/progressByType/shared/calculateProgressByType.tsx","shared/formatProgress.ts","types/search/dto/SearchContentTypeDto.ts","shared/progressStructure/LessonProgress.ts","shared/progressStructure/ThemeProgress.ts","shared/progressStructure/CourseProgress.ts","shared/stores/ProgressStore.ts","shared/components/card/cardThemeBasic/CardThemeBasicViewModel.ts","shared/components/basicThemesSection/ThemeItem.ts","pages/shared/courseLevel/CourseLevel.ts","pages/dashboard/components/dashboardSections/DashboardSection.ts","pages/dashboard/DashboardViewModel.ts","shared/models/Search.ts","shared/components/thumbnails/searchThumbnail/articleThumbnail/ArticleThumbnailViewModel.ts","types/shared/dto/StepThumbnailTypeDto.ts","shared/components/thumbnails/searchThumbnail/testThumbnail/TestThumbnailViewModel.ts","shared/components/thumbnails/searchThumbnail/themeThumbnail/ThemeThumbnailViewModel.ts","shared/components/thumbnails/shared/BookmarkToggleViewModel.ts","pages/search/searchItem/SearchItemViewModel.ts","pages/search/siteSearch/SiteSearchViewModel.ts","shared/listUtils.ts","pages/shared/courseNavigator/CourseNavigator.ts","pages/course/CourseViewModel.ts","shared/services/errors/PaymentError.ts","pages/error/addErrorsRoutes.ts","pages/lessons/StepApi.ts","pages/lessons/StepStore.ts","pages/lessons/lesson/bookmarkDialog/addBookmarkDialog/AddBookmarkDialogViewModel.ts","pages/lessons/lesson/bookmarkDialog/removeBookmarkDialog/RemoveBookmarkDialogViewModel.ts","pages/lessons/lesson/congratulationPopup/CongratulationPopupViewModel.ts","pages/lessons/lesson/levelSidePanel/LevelSidePanelViewModel.ts","pages/lessons/lesson/stepsList/StepListItem.ts","pages/lessons/lesson/LessonViewModel.ts","shared/components/tasks/TaskService.ts","shared/components/tasks/choiceListTask/ChoiceListTaskViewModel.ts","shared/components/tasks/choiceTask/OptionWithStatus.ts","shared/components/tasks/choiceTask/ChoiceTaskViewModel.ts","shared/components/portableTextContent/inlineChoiceGapTest/utils.ts","shared/components/tasks/gapTask/GapTestsViewModel.ts","shared/components/tasks/gapTask/GapTaskViewModel.ts","shared/components/tasks/inputTask/InputTaskViewModel.ts","shared/utils.ts","shared/stateMembers.ts","shared/components/tasks/maskTask/MaskViewModel.ts","shared/components/tasks/maskTask/maskStrategy/MultipleChoiceMaskStrategy.ts","shared/components/tasks/maskTask/maskStrategy/SingleChoiceMaskStrategy.ts","shared/components/tasks/maskTask/MaskTaskViewModel.ts","shared/components/tasks/matchTask/MatchTaskViewModel.ts","shared/components/tasks/TaskFactory.ts","shared/components/taskHint/hintRelatedStep/HintRelatedStepViewModel.ts","shared/components/taskHint/TaskHintViewModel.ts","pages/lessons/lesson/steps/Step.ts","types/dto/tasks/TaskTypeDto.ts","types/shared/dto/StepTypeDto.ts","pages/lessons/lesson/steps/LessonTask.ts","shared/components/tasks/taskUtils.ts","pages/lessons/lesson/steps/soundStep/SoundStep.ts","pages/lessons/lesson/steps/taskGroupStep/TaskGroupFactory.ts","pages/lessons/lesson/steps/taskGroupStep/TaskGroupStep.ts","pages/lessons/lesson/steps/textBlockStep/TextBlockStep.ts","pages/lessons/lesson/steps/videoStep/VideoStep.ts","pages/lessons/lesson/steps/StepFactory.ts","pages/login/LoginViewModel.ts","pages/previousExams/PreviousExamsViewModel.ts","pages/product/productHero/betaNewsletterPopup/BetaNewsletterPopupViewModel.ts","pages/product/productHero/ProductHeroViewModel.ts","pages/product/ProductViewModel.ts","pages/product/addProductRouting.ts","shared/setQueryParamsToStorage.ts","pages/purchaseConfirmation/PurchaseConfirmationViewModel.ts","shared/stores/mock/BookmarkStore.mock.ts","shared/stores/mock/ProgressStore.mock.ts","pages/trainingGrounds/trainingGround/training/testTask/TrainingTask.ts","pages/stepPreview/StepPreviewViewModel.ts","pages/termsAndConditions/TermsAndConditionsViewModel.ts","pages/tests/TestApi.ts","pages/tests/TestPageViewModel.ts","shared/api/StepService.ts","shared/resultUtils.ts","pages/tests/TestResultCalculator.ts","pages/tests/shared/testTask/TestTask.ts","pages/tests/TestStore.ts","pages/themes/themeList/ThemeListItemViewModel.ts","pages/themes/themeList/ThemeListViewModel.ts","pages/shared/lessonList/LessonListItemViewModel.ts","shared/components/thumbnails/domainThumbnail/ThemeTestDomainThumbnailViewModel.ts","pages/themes/theme/themeTrainingSection/ThemeTrainingSectionViewModel.ts","pages/themes/theme/ThemeViewModel.ts","pages/trainingGrounds/trainingGround/finishConfirmationModal/FinishConfirmationModalViewModel.ts","pages/trainingGrounds/trainingGround/training/TrainingViewModel.ts","pages/trainingGrounds/trainingGround/trainingResult/trainingResultUtils.ts","pages/trainingGrounds/trainingGround/trainingResult/TrainingResultViewModel.ts","shared/components/link/Link.tsx","pages/trainingGrounds/trainingGround/TrainingGroundViewModel.ts","shared/api/AxiosClient.ts","shared/api/BackendApi.ts","shared/api/TibetClient.ts","shared/services/GtmService.ts","shared/services/LanguageService.ts","shared/services/NavigationService.ts","shared/contentStructure/StepStructure.ts","shared/contentStructure/LessonStructure.ts","shared/contentStructure/TestStructure.ts","shared/contentStructure/ThemeStructure.ts","shared/contentStructure/PreviousExamsStructure.ts","shared/contentStructure/CourseStructure.ts","shared/stores/Product.ts","shared/stores/ProductStore.ts","shared/stores/UserStore.ts","routes.ts","pages/buyRedirect/addBuyRedirectRouting.ts","pages/purchaseConfirmation/addPurchaseConfirmationRouting.ts","pages/aboutUs/addAboutUsRouting.ts","pages/articles/addArticlesRoutes.ts","pages/login/addLoginRouting.ts","pages/stepPreview/addStepPreviewRouting.ts","pages/termsAndConditions/addTermsAndConditionsRouting.ts","pages/articles/addProductArticleListRouting.ts","pages/articles/addProductArticleRouting.ts","pages/authorsForProduct/addAuthorsForProductRouting.ts","pages/course/addCourseRouting.ts","pages/themes/addThemeListRouting.ts","pages/themes/addThemesRoutes.ts","pages/tests/addTestsRoutes.ts","pages/lessons/addLessonsRoutes.ts","pages/bookmarks/addBookmarksRoutes.ts","pages/dashboard/addDashboardRouting.ts","pages/search/siteSearch/addSiteSearchRouting.ts","pages/articles/addCourseArticleRouting.ts","pages/trainingGrounds/addTrainingGroundsRouting.ts","pages/previousExams/addPreviousExamsRouting.ts","shared/models/Url.ts","pages/shared/buyCourse/BuyCourseViewModel.ts","pages/shared/paymentDialog/PaymentSidePanelViewModel.ts","useRouter.tsx","shared/components/link/helpers/getLinkClassNames.ts","shared/components/link/helpers/getHostName.ts","shared/components/link/helpers/isExternal.ts","shared/components/link/helpers/isModifiedEvent.ts","layout/header/hamburgerMenu/HamburgerMenuLinks.ts","layout/header/headerHamburger/HeaderHamburgerViewModel.ts","layout/header/HeaderViewModel.ts","pages/productNest/ProductNestViewModel.ts","pages/shared/AppMotif.ts","pages/App.ts","shared/components/button/Button.tsx","shared/components/list/List.tsx","pages/shared/scrollLock/ScrollLock.tsx","shared/contexts/StaticTranslationContext.ts","shared/hooks/useDelayedDisplay.ts","shared/components/popup/usePopup.tsx","shared/contexts/MotifContext.tsx","shared/components/svgIcon/SvgIcon.tsx","shared/components/svgIcon/getBuildHash.ts","shared/components/modal/Modal.tsx","shared/components/switch/Switch.tsx","shared/components/title/Title.tsx","layout/cookiesConsent/CookiesConsent.tsx","shared/components/collapse/Collapse.tsx","shared/components/accordion/AccordionView.tsx","shared/components/tooltip/Tooltip.tsx","shared/components/image/ImageBuilder.ts","shared/components/image/Image.tsx","shared/components/logoSection/LogoSection.tsx","types/courses/dto/CourseColorVersionDto.ts","shared/components/productCopyright/ProductCopyright.tsx","layout/footer/FooterView.tsx","shared/components/radio/RadioGroupContext.tsx","shared/components/radio/RadioGroup.tsx","shared/components/sidePanel/SidePanel.tsx","shared/textUtils.ts","shared/components/radio/Radio.tsx","pages/shared/buyCourse/buyCourseItem/BuyCourseItem.tsx","pages/shared/paymentDialog/PaymentSidePanel.tsx","shared/components/coursesLoginSelector/CoursesPicker.tsx","shared/components/link/NavLink.tsx","shared/components/link/helpers/getIsLinkActive.ts","shared/hooks/useIsVisible.ts","shared/components/input/Input.tsx","layout/header/hamburgerMenu/HamburgerMenu.tsx","layout/header/headerHamburger/HeaderHamburgerView.tsx","shared/components/dialog/DialogView.tsx","layout/header/userLinks/UserLinks.tsx","layout/header/userLinksDialog/UserLinksDialog.tsx","shared/components/bottomSheet/BottomSheet.tsx","shared/hooks/useVerticalSwipeThreshold.ts","layout/header/userLinksSheet/UserLinksSheet.tsx","layout/header/HeaderView.tsx","layout/skipNavigationLink/SkipNavigationLink.tsx","shared/contexts/notification/NotificationContext.tsx","shared/components/pageTitle/PageTitle.tsx","pages/error/ErrorMessages.ts","pages/error/ErrorView.tsx","pages/productNest/infoElement/InfoElement.tsx","pages/productNest/productCard/ProductCard.tsx","pages/productNest/ProductNestView.tsx","pages/AppView.tsx","shared/components/activityIndicator/ActivityIndicator.tsx","shared/components/thumbnails/shared/stepIcon/StepIcon.tsx","shared/components/thumbnails/shared/thumbnailImage/ThumbnailImage.tsx","shared/components/blocks/SectionArticleListBlock/SectionArticleItem/SectionArticleItem.tsx","shared/components/geoGebraApplet/loadScript/loadScript.ts","shared/components/geoGebraApplet/GeoGebraApplet.tsx","shared/components/rettsdataReference/RettsdataPortableText.tsx","shared/components/rettsdataReference/RettsdataReferenceContent.tsx","shared/components/rettsdataReference/RettsdataReference.tsx","shared/contexts/gapTask/GapTaskContext.tsx","shared/components/select/Select.tsx","shared/components/tasks/choiceListTask/choiceListOptionStatus/ChoiceListOptionStatus.tsx","types/articles/dto/DateTypeDto.ts","shared/components/tasks/gapTask/GapTaskGap.tsx","shared/components/videoPlayer/vimeoPlayer/VimeoPlayer.tsx","shared/components/videoPlayer/youtubePlayer/YoutubePlayer.tsx","shared/components/videoPlayer/VideoPlayer.tsx","shared/components/portableTextContent/embeddedBlock/EmbeddedBlock.tsx","shared/components/portableTextContent/imageCollection/ImageCollection.tsx","shared/components/textContentWithPlaceholder/TextContentWithPlaceholder.tsx","shared/components/portableTextContent/inlineGap/InlineGap.tsx","shared/components/portableTextContent/katex/Katex.tsx","shared/components/portableTextContent/portableTextUtils.ts","shared/components/portableTextContent/quote/Quote.tsx","shared/components/portableTextContent/table/Table.tsx","shared/components/portableTextContent/text/Text.tsx","shared/components/portableTextContent/tileCollection/TileCollection.tsx","shared/components/portableTextContent/PortableTextContent.tsx","pages/authorsForProduct/authorDetails/AuthorDetails.tsx","pages/authorsForProduct/authorDetailsSidePanel/AuthorDetailsSidePanel.tsx","shared/components/authorSlide/AuthorSlide.tsx","shared/components/authorsSlider/AuthorsSlider.tsx","shared/components/personCard/PersonCard.tsx","shared/components/personsList/PersonsList.tsx","shared/components/quoteSlide/QuoteSlide.tsx","shared/components/quotesSlider/QuotesSlider.tsx","pages/aboutUs/AboutUsView.tsx","shared/components/sectionHeading/SectionHeading.tsx","shared/components/blocks/SectionArticleListBlock/SectionArticleListBlock.tsx","pages/product/ProductParamsContext.tsx","pages/articles/article/articleBuySection/ArticleBuySection.tsx","shared/components/avatar/Avatar.tsx","shared/components/authorInfo/AuthorInfo.tsx","shared/components/navigationLink/NavigationLink.tsx","pages/articles/article/articleDate/ArticleDate.tsx","types/shared/dto/LinkTypeDto.ts","pages/articles/article/articleHero/ArticleHero.tsx","pages/articles/article/articleLoginSection/ArticleLoginSection.tsx","pages/articles/article/articleSummary/ArticleSummary.tsx","pages/articles/article/ArticleView.tsx","pages/articles/articleList/ArticleListView.tsx","pages/authorsForProduct/authorThumbnail/AuthorThumbnail.tsx","pages/authorsForProduct/AuthorsForProductView.tsx","shared/components/popover/Popover.tsx","shared/components/thumbnails/highlightedThumbnail/HighlightedThumbnail.tsx","shared/components/thumbnails/hooks/useOverlayProps.ts","shared/components/thumbnails/hooks/useSubtitle.ts","shared/components/thumbnails/hooks/useThumbnailImage.ts","shared/components/thumbnails/hooks/useVideoData.ts","shared/components/thumbnails/horizontalThumbnail/HorizontalThumbnail.tsx","shared/components/progressBar/ProgressBar.tsx","shared/components/thumbnails/rectangleThumbnail/RectangleThumbnail.tsx","shared/contexts/UserProvider.tsx","shared/components/thumbnails/shared/bookmarkLayer/BookmarkLayer.tsx","shared/components/statusTag/StatusTag.tsx","shared/components/thumbnails/shared/freeInfoLayer/FreeInfoLayer.tsx","shared/components/thumbnails/shared/lockedLayer/LockedLayer.tsx","shared/components/thumbnails/shared/statusLayer/StatusLayer.tsx","shared/components/thumbnails/shared/ThumbnailOverlay.tsx","shared/components/thumbnails/tileThumbnail/TileThumbnail.tsx","shared/components/thumbnails/domainThumbnail/DomainThumbnail.tsx","shared/components/textarea/Textarea.tsx","pages/bookmarks/bookmarkList/bookmarkMessageEditor/BookmarkMessageEditor.tsx","pages/bookmarks/bookmarkList/bookmark/BookmarkView.tsx","pages/bookmarks/bookmarkList/BookmarkListView.tsx","pages/buyRedirect/BuyRedirect.tsx","useCourseColor.tsx","pages/course/CourseView.tsx","shared/components/progressByType/ProgressByType.tsx","shared/components/progressRing/ProgressRing.tsx","pages/dashboard/components/dashboardHero/DashboardHero.tsx","pages/dashboard/hooks/useDashboardProgressTexts.tsx","shared/components/detailedProgressBar/DetailedProgressBar.tsx","shared/components/card/themeContentByType/ThemeContentByType.tsx","shared/components/card/utils.ts","shared/components/card/cardThemeBasic/CardThemeBasic.tsx","shared/components/basicThemesSection/BasicThemesSection.tsx","shared/components/CourseButton/CourseButton.tsx","shared/components/courseThumbnail/CourseThumbnail.tsx","shared/components/coursesSection/CoursesSection.tsx","pages/previousExams/components/examThemeCard/ExamThemeCard.tsx","shared/components/card/cardThemeDetailed/CardThemeDetailed.tsx","pages/dashboard/components/dashboardSections/sections/inProgressThemesSection/InProgressThemesSection.tsx","pages/dashboard/components/dashboardSections/sections/previousExamsSection/PreviousExamsSection.tsx","pages/dashboard/components/dashboardSections/sections/themesWithFreeStepsSection/ThemesWithFreeStepsSection.tsx","shared/components/card/horizontalCard/HorizontalCard.tsx","shared/components/thumbnails/verticalThumbnail/VerticalThumbnail.tsx","shared/components/thumbnails/domainThumbnail/trainingGroundDomainThumbnail/TrainingGroundDomainThumbnail.tsx","pages/dashboard/components/dashboardSections/sections/trainingGroundSection/TrainingGroundSection.tsx","pages/dashboard/components/dashboardSections/DashboardSections.tsx","pages/dashboard/components/infoBanner/InfoBanner.tsx","pages/dashboard/DashboardView.tsx","layout/footer/FooterListItem/FooterListItem.tsx","pages/error/errorFooter/ErrorFooter.tsx","pages/error/errorHeader/ErrorHeader.tsx","pages/shared/lessonList/lessonSection/LessonSection.tsx","pages/shared/buyCourse/BuyCourse.tsx","pages/lessons/lesson/congratulationPopup/CongratulationPopup.tsx","pages/lessons/lesson/lessonHeading/LessonHeading.tsx","pages/lessons/lesson/levelSidePanel/animatedLevel/AnimatedLevel.tsx","pages/lessons/lesson/levelSidePanel/LevelSidePanel.tsx","pages/lessons/lesson/bookmarkDialog/addBookmarkDialog/AddBookmarkDialog.tsx","pages/lessons/lesson/bookmarkDialog/removeBookmarkDialog/RemoveBookmarkDialog.tsx","pages/lessons/lesson/shared/bookmarkButton/BookmarkButton.tsx","pages/lessons/lesson/shared/completeSwitch/CompleteSwitch.tsx","pages/lessons/lesson/steps/soundStep/SoundStepView.tsx","shared/components/orderIndicator/OrderIndicator.tsx","shared/components/tasks/choiceListTask/choiceListOption/ChoiceListOption.tsx","shared/components/sketchfabViewer/SketchfabViewer.tsx","shared/components/tasks/choiceListTask/choiceListTestViewer/ChoiceListTestViewer.tsx","shared/components/tasks/choiceListTask/ChoiceListTaskView.tsx","shared/components/checkbox/CheckboxGroupContext.tsx","shared/components/checkbox/CheckboxGroup.tsx","shared/components/checkbox/useCheckbox.tsx","types/shared/dto/SectionBlockTypeDto.ts","shared/components/checkbox/Checkbox.tsx","shared/components/tasks/shared/choiceTestOptionStatus/ChoiceTestOptionStatus.tsx","shared/components/tasks/choiceTask/ChoiceTaskView.tsx","shared/components/tasks/gapTask/GapTaskView.tsx","shared/components/mathInput/MathInput.tsx","shared/components/tasks/inputTask/InputTaskView.tsx","shared/components/tasks/maskTask/maskTaskContent/MaskTaskContent.tsx","shared/components/tasks/maskTask/maskTaskFeedback/MaskTaskFeedback.tsx","shared/components/konva/layer/Layer.tsx","shared/components/konva/responsiveStage/ResponsiveStage.tsx","shared/components/tasks/maskTask/maskTaskError/MaskTaskError.tsx","shared/components/tasks/maskTask/useKonvaImageCash.ts","shared/components/tasks/maskTask/MaskFilters.ts","shared/components/tasks/maskTask/maskTaskStage/Mask.tsx","shared/components/tasks/maskTask/maskTaskStage/MaskTaskStage.tsx","shared/hooks/useScrollThreshold.ts","shared/components/tasks/shared/OptionStatus.ts","shared/components/tasks/matchTask/matchTaskUtil.tsx","shared/components/tasks/matchTask/list/MatchTaskList.tsx","shared/components/tasks/matchTask/table/MatchTaskTable.tsx","shared/components/tasks/matchTask/result/MatchTaskResult.tsx","shared/components/tasks/matchTask/task/MatchTask.tsx","shared/components/tasks/textTask/TextTask.tsx","shared/components/tasks/TaskView.tsx","pages/lessons/lesson/screenSizeAwareButton/ScreenSizeAwareButton.tsx","shared/components/taskHint/hintRelatedStep/HintRelatedStep.tsx","shared/components/taskHint/TaskHint.tsx","pages/lessons/lesson/shared/lessonTaskHint/LessonTaskHint.tsx","shared/components/panel/Panel.tsx","pages/lessons/lesson/shared/taskSolution/TaskSolution.tsx","pages/lessons/lesson/shared/taskActions/TaskActions.tsx","pages/lessons/lesson/shared/taskStatusImage/TaskStatusImage.tsx","pages/lessons/lesson/steps/taskStep/stateButton/StateButton.tsx","pages/lessons/lesson/steps/taskStep/TaskStepView.tsx","pages/lessons/lesson/steps/taskGroupStep/TaskGroupStepView.tsx","pages/lessons/lesson/steps/textBlockStep/TextBlockStepView.tsx","shared/components/tabs/tab/Tab.tsx","pages/lessons/lesson/shared/video/anchors/Anchors.tsx","pages/lessons/lesson/shared/video/videoTab/VideoTab.tsx","pages/lessons/lesson/shared/video/Video.tsx","pages/lessons/lesson/steps/videoStep/VideoStepView.tsx","pages/lessons/lesson/steps/StepView.tsx","pages/lessons/lesson/sliderThumbnail/SliderThumbnail.tsx","pages/lessons/lesson/stepsList/useStepList.tsx","pages/lessons/lesson/stepsList/StepsListProvider.tsx","pages/lessons/lesson/stepsList/stepsList/StepsList.tsx","pages/lessons/lesson/stepsList/stepsListPanel/StepsListPanel.tsx","pages/lessons/lesson/LessonView.tsx","pages/login/LoginView.tsx","shared/components/emptySearch/EmptySearch.tsx","shared/components/requiredMark/RequiredMark.tsx","shared/components/label/Label.tsx","pages/previousExams/PreviousExamsView.tsx","shared/components/blocks/SectionIconBlock/SectionIconBlock.tsx","shared/components/blocks/SectionIconListBlock/SectionIconListBlock.tsx","shared/components/blocks/SectionImageBlock/SectionImageBlock.tsx","shared/components/blocks/SectionMultiQuoteBlock/SectionMultiQuoteBlock.tsx","shared/components/blocks/SectionQuoteBlock/SectionQuoteBlock.tsx","shared/components/blocks/SectionTextBlock/SectionTextBlock.tsx","shared/components/formErrorMessage/FormErrorMessage.tsx","pages/product/productHero/betaNewsletterPopup/BetaNewsletterPopup.tsx","pages/product/productHero/ProductHero.tsx","pages/product/ProductView.tsx","pages/purchaseConfirmation/PurchaseConfirmation.tsx","shared/components/input/DebounceInput.tsx","pages/search/searchItem/SearchItemSkeletonView.tsx","shared/components/list/LoadMoreList.tsx","shared/components/thumbnails/domainThumbnail/SearchDomainThumbnail.tsx","pages/search/searchItem/SearchItemView.tsx","pages/search/searchList/SearchListView.tsx","pages/search/siteSearch/SiteSearchView.tsx","pages/stepPreview/lessonPreview/LessonPreview.tsx","pages/trainingGrounds/trainingGround/training/hintPanel/hintPanelContent/HintPanelContent.tsx","shared/components/messageBoxIcon/MessageBoxIcon.tsx","shared/hooks/useSessionStorage.ts","pages/trainingGrounds/trainingGround/training/hintPanel/hintToggleImage/HintToggleImage.tsx","pages/trainingGrounds/trainingGround/training/hintPanel/HintPanel.tsx","pages/trainingGrounds/trainingGround/training/testTask/TrainingTaskView.tsx","pages/trainingGrounds/trainingGround/training/testTask/trainingItemContainer/TrainingItemContainer.tsx","pages/stepPreview/trainingGroundPreview/TrainingGroundPreview.tsx","pages/stepPreview/StepPreviewView.tsx","pages/termsAndConditions/TermsAndConditionsView.tsx","pages/tests/confirmExitModal/ConfirmExitModal.tsx","pages/tests/test/testTaskInfo/TestTaskInfo.tsx","pages/tests/shared/testTask/TestTaskView.tsx","pages/tests/shared/testTaskList/TestTaskList.tsx","pages/tests/test/testTaskCompletionInfo/TestTaskCompletionInfo.tsx","pages/tests/test/Test.tsx","pages/tests/testHeader/TestHeader.tsx","pages/tests/testResult/testResultActionButtons/TestResultActionButtons.tsx","pages/tests/testResult/TestResult.tsx","pages/tests/useTestPageColor.tsx","pages/tests/TestPageView.tsx","pages/shared/lessonList/LessonList.tsx","pages/themes/theme/articleSection/ThemeArticleItem.tsx","pages/themes/theme/articleSection/ThemeArticleSection.tsx","pages/themes/theme/empty/EmptyTheme.tsx","shared/components/textCollapse/TextCollapse.tsx","pages/themes/theme/hero/ThemeHero.tsx","pages/themes/theme/progress/ThemeProgress.tsx","pages/themes/theme/progress/shared/useThemeProgressTexts.tsx","shared/components/thumbnails/shared/TestThumbnailOverlay.tsx","shared/components/thumbnails/shared/testThumbnail/TestThumbnailInfo.tsx","shared/components/thumbnails/domainThumbnail/ThemeTestDomainThumbnail.tsx","shared/components/thumbnails/hooks/useTestOverlayProps.ts","pages/themes/theme/themeTrainingSection/ThemeTrainingSection.tsx","pages/themes/theme/ThemeView.tsx","shared/hooks/useSelectAllCheckbox.ts","shared/components/checkbox/CheckboxButton.tsx","shared/components/singleFilter/SingleFilter.tsx","pages/themes/themeList/ThemeListFilter.tsx","pages/themes/themeList/ThemeListView.tsx","pages/trainingGrounds/trainingGround/finishConfirmationModal/FinishConfirmationModal.tsx","pages/trainingGrounds/trainingGround/themesSelector/themeItem/ThemeItem.tsx","pages/trainingGrounds/trainingGround/themesSelector/themeSelectorImage/ThemeSelectorImage.tsx","pages/trainingGrounds/trainingGround/themesSelector/ThemesSelector.tsx","pages/trainingGrounds/trainingGround/training/TrainingView.tsx","pages/trainingGrounds/trainingGround/trainingResult/themeResultItem/ThemeResultItem.tsx","pages/trainingGrounds/trainingGround/trainingResult/TrainingResultView.tsx","pages/trainingGrounds/trainingGround/TrainingGroundView.tsx","shared/contexts/TranslationProvider.tsx","shared/contexts/AppProvider.tsx","index.tsx"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","keys","Object","module","exports","RouteBinding","updateLocation","route","path","model","nextBinding","unObserveChildPage","unObserveState","this","reaction","childPage","newChildPage","transaction","destroy","undefined","bindFirstMatchingChildToModel","getModelState","newState","childLocation","getLocation","hash","remainingPath","query","tryUpdate","removeChildPage","bindFirstMatchingChildToPath","isEmptyPath","handleInvalidRoute","setModelState","startsWith","update","substring","length","RouteDefinitionBase","stateAccessor","children","modelConstructor","modelFactory","paramsSelector","RouteDefinition","push","childRoute","bindToPath","binding","bindToModel","get","state","set","qs","parse","parentRoute","pathRegExp","pathRegExpKeys","pathFactory","pathToRegexp","end","compile","params","queryParams","baseUrl","getPath","queryString","stringify","addQueryPrefix","match","exec","i","name","parentModel","matchPath","parseQuery","childBinding","constructor","HomeRouteDefinition","history","updatingLocation","updatingBindings","newLocation","location","pathname","toLowerCase","replace","search","substr","unlisten","listen","action","handleLocationChange","activate","page","FormState","observable","ref","value","validator","comparer","_needsValidation","_pristineValue","_valueHasBeenCommitted","_isPendingValidation","validate","delay","_currentValidation","areEqual","isPristine","Pending","errors","Valid","Invalid","_errors","_validate","pristineValue","result","a","b","computed","fields","getFields","every","f","reduce","s","some","isValidating","results","r","hasOwnProperty","ContextualCommand","bound","execute","canExecute","_canExecute","_execute","isAction","_isRunning","context","reject","runInAction","contextAccessor","isEnabled","Command","enabled","_enabledValueAccessor","input","enabledValue","c","asyncCommand","command","viewFactories","Map","ContentView","observer","props","content","viewFactory","toString","registerContentView","contentConstructor","Page","isActive","_childPage","beforeActivated","onActivated","beforeDeactivated","deactivate","onDeactivated","onChildPageDeactivated","newPage","createDialog","dialog","onInvalidRoute","items","selectedItem","key","item","showChildPage","getPrototypeOf","List","filter","indexOf","assign","isNew","newItems","patch","PaginatedList","load","pageSize","loadNextPage","_loadNextPage","hasNextPage","reqId","loadFirstPage","isLoadingFirstPage","untracked","_isLoadingFirstPage","_currentPageNo","loadMoreItems","autorun","_hasNextPage","_isLoadingNextPage","isLoadingNextPage","currentPageNo","currentItems","currentPage","currentReqId","skip","take","concat","property","propertyName","bindTo","onChange","Loading","LoadingError","isLoaded","Popup","onClose","onOpen","isOpen","close","show","AcceptedCookiesConsentValue","NecessaryCookieName","AnalysisCookieName","CookiesConsentViewModel","config","gtm","consentText","privacyPolicyText","privacyPolicyArticle","cookiesConsentText","cookiesConsentState","cookieNames","forEach","cookieName","Cookies","expires","pushCookieConsentChanged","selectedCookies","selectedCookie","assertUnreachable","neverValue","TypeError","isDefined","isNil","isProductWithStudiesType","product","studiesType","FooterViewModel","url","app","currentYear","Date","getFullYear","translation","href","toTermsAndConditionsPage","activeCourse","color","colorVersion","currentContext","toDashboardPage","course","urlParams","toProductPage","productParams","toProductNestPage","title","links","activeProduct","productStore","productAuthorsHero","shouldShowProductArticleList","source","toAuthorsForProductPage","toProductArticleListPage","accordion","practicalArticles","articlesLinks","article","toArticlePage","slug","toAboutUsPage","hideProductList","productLinks","products","p","sections","practicalSection","studiesSection","exploreSection","feedbackButtonLink","courseStructure","RouteConfiguration","Api","HealthCheck","Init","Ping","Logout","PostLogout","Login","ConfigScript","RobotsTxt","Sitemap","TibetUserProfile","TibetUserProfileBPN","GyldendalPage","Articles","Lessons","Themes","ProductNest","SiteSearch","Dashboard","Bookmarks","LoginPage","TrainingGroundPage","PreviousExamsPage","AuthorsForProductPage","TermsAndConditions","AboutUs","BuyRedirect","PurchaseConfirmation","AuthorInfo","backendApi","author","onBecomeObserved","setAuthorDetails","getAuthor","authorDetails","_type","articles","AuthorsSliderViewModel","authors","find","HttpError","message","uniqueId","PageNotFoundError","TranslatedPage","languageService","subscription","registerLanguageChangeHandle","lang","onLanguageChange","BasePage","errorService","loadData","catch","showErrorSplash","isLoading","GtmBasePage","pushPageViewed","AboutUsViewModel","data","authorsOfProductList","productIdsInOrder","productIds","productId","getAboutUs","ArticleViewModel","articleSlug","navigationService","actionSection","selectedAuthor","getArticle","authorInfoPopup","ArticleBuySectionViewModel","paymentSidePanelViewModel","type","SelectViewModel","initialItems","initialSelectedItems","_items","_selectedItems","label","availableItems","newSelectedItems","setValue","ArticleListViewModel","defaultFiltersValue","handleLogin","userStore","productArticleService","allCategoriesId","checkIfMobile","bind","window","addEventListener","categoryId","categoriesSelect","categories","category","_articles","Url","productSlug","pushUrlWithoutRedirect","isMobile","innerWidth","getProductArticles","uniqBy","defaultCategoryId","categorySlug","changeFilter","ArticleLoginSectionViewModel","AuthorsForProductViewModel","getAuthorsForProduct","setAuthor","decodeURI","authorInfo","authorInfoClosePopupAction","authorInfoOpenPopupAction","BookmarkListApi","bookmarkService","courseId","getUserBookmarks","res","thumbnail","subTitle","deleteUserBookmark","bookmark","updateUserBookmark","Bookmark","store","bookmarkInfo","bookmarkListApi","delete","removeBookmark","BookmarkListStore","byId","getByCourseId","bookmarkable","it","Array","from","values","TaskThumbnailViewModel","stepThumbnail","progressStore","bookmarkToggleViewModel","isHighlighted","contentRef","description","hasAccess","isCompleted","TextBlockThumbnailViewModel","imageCropMock","bottom","left","right","top","imageHotspotMock","height","width","x","y","imageParamsMock","crop","hotspot","alt","VideoThumbnailViewModel","videoService","videoDetailsDto","videoDetails","loadVideoDetails","thumbnailUrl","getVideoProgress","videoProgress","lastPosition","totalSeconds","duration","stepId","getVideoDetails","createStepThumbnailViewModel","BookmarkViewModel","activeCourseStructure","val","isInEditMode","saveChanges","Loaded","bookmarkListStore","BookmarkListViewModel","loadByCourseId","noop","BuyRedirectViewModel","tibetClient","selectedPriceOptionId","successUrl","cancelUrl","failUrl","user","accessibleCourseIds","isPurchasing","initiateBuying","Response","text","status","dto","createUserBookmark","asRequest","BookmarkStore","isAuthenticated","updateBookmarkFromServer","uuid","bookmarks","dispose","updateFromDto","stepTypeDtoToStepType","Video","TextBlock","Task","TaskGroup","Sound","getProgress","steps","filteredSteps","step","total","formatProgress","progress","progressValue","Math","ceil","clamp","unitInterval","SearchContentTypeDto","LessonProgress","lessonStructure","stepStructures","actionableStepsCount","completedStepsCount","ThemeProgress","themeStructure","lessonStructures","lesson","flatten","lessonsProgress","lessonProgress","sumBy","nextUncompletedStepId","nextUncompletedFrom","lessonId","CourseProgress","themeStructures","theme","isUnderDevelopment","previousExamsStructure","examThemes","examTheme","themesProgress","themeProgress","stepType","themeId","previousExamsThemesProgress","lessonsFromThemesProgress","lessonsFromPreviousExamsThemes","isVideoProgress","isSoundStepProgress","ProgressStore","progressService","updateProgressThrottled","throttle","seconds","mode","updateVideoProgress","videoId","lastVideoPosition","updateSoundStepProgress","soundStepId","lastTrackPosition","courseProgress","stepsProgress","v","m","loadProgress","courseProgressDto","mergedStepsProgress","stepProgress","updatedAt","soundStepProgress","sort","getTime","completedStepsIds","includes","stepIds","findLast","progressStep","updateStepCompletionStatusRequest","setStepStatus","newStep","ALL_THEME_STATUSES","CardThemeBasicViewModel","continueStep","_tags","hasStepsWithAccess","hasFullAccess","ThemeItem","firstUnfinishedStep","CourseLevel","_levels","levels","level","index","order","image","progressPercent","last","levelsCount","currentIndex","prevIndex","treshold","floor","ThemeSectionsModel","themes","t","PreviousExamsSectionModel","isStarted","examYear","examDate","previousExamsSection","DashboardViewModel","navigation","goToSearchPage","goToCourse","themeSectionsModel","searchQuery","phrase","themesWithFreeSteps","__type","activeCourseParams","section","freeContentSection","trainingGroundInfos","previousExamsSectionModel","courses","otherCourses","sectionTitle","onCourseClick","productTitle","Search","defaultFilters","PAGE_SIZE","filters","paginatedList","options","StepThumbnailTypeDto","ArticleThumbnailViewModel","TestThumbnailViewModel","ThemeThumbnailViewModel","themeThumbnail","BookmarkToggleViewModel","bookmarkStore","toggleBookmark","stepBookmark","getBookmark","newBookmark","createBookmark","save","isBookmarked","searchTaskTypeToStepThumbnailType","searchType","ChoiceTask","ChoiceListTask","TextTask","MaskTask","InputTask","GapTask","MatchTask","SearchItemViewModel","searchResultItemDto","createSearchThumbnailViewModel","Article","Theme","Test","SiteSearchViewModel","searchService","siteSearchFilter","filterNames","trim","totalCount","searchFilters","searchContent","searchResults","searchResultItems","searchResult","getPreviousElement","list","element","indexOfCurrentElement","findIndex","listElement","getNextElement","isLastElement","CourseNavigator","getPreviousStep","stepStructure","getNextStep","getFirstThemeTest","head","testStructures","getFirstUnfinishedStep","getLessonProgressById","getIsStepCompletedById","getNextLesson","getFirstStepFromTheNextLesson","nextLesson","filterOutUnderDevelopmentThemes","getPreviousTheme","coursePreviousExamsThemes","getNextTheme","getFirstStepFromTheNextTheme","nextTheme","nextThemeFirstLesson","CourseViewModel","courseNavigator","PaymentSidePanelViewModel","init","courseSlug","redirectTo","searchPhrase","isRoot","activateSearchPage","PaymentError","ErrorViewModel","StepApi","stepService","getStep","StepStore","stepApi","stepFactory","bySlug","createStep","AddBookmarkDialogViewModel","done","cancel","hide","isRunning","isVisible","RemoveBookmarkDialogViewModel","CongratulationPopupViewModel","congratulationPopupModel","relatedTrainingGround","buyCourseVm","LevelSidePanelViewModel","courseLevel","observe","newValue","oldValue","newLevel","oldLevel","StepListItem","LessonViewModel","stepSlug","stepStore","showBookmarkModal","goToNextStep","goToPreviousStep","toggleStepCompletion","goToStep","currentStepSlug","congratulationPopupViewModel","currentStep","removeBookmarkDialogViewModel","addBookmarkDialogViewModel","stepsListPanel","isLastStep","nextStep","previousStep","markStepAsCompleted","markStepAsUncompleted","structure","thumbnailViewModel","currentStepStructure","parentThemeId","getThemeProgressById","relatedContentIds","allSteps","levelSidePanelViewModel","LocalTaskService","correctAnswers","taskId","correctAnswer","userAnswers","taskResults","userAnswer","isCorrect","userAnswerToQuestion","questionId","userAnswerToQuestionValue","correctAnswerValue","numberOfQuestions","numberOfCorrectAnswers","ac","ChoiceListTaskViewModel","test","shouldDisplayOrderNumber","shouldDisplayCorrectAnswer","modelId","testOptions","createTestOptions","optionsWithStatus","choices","number","choice","option","selectedOptions","answersState","opt","resetOptionsStatus","isDisabled","optionWithStatus","answerId","answer","additionalChoices","shuffle","OptionWithStatus","optionState","ChoiceTaskViewModel","selectedChoiceIds","allowMultipleAnswers","newChoicesIds","reset","markAsCorrect","isAnswered","markAsIncorrect","markAsShouldBeChecked","shuffledOptions","gapTestChoices","nb","GapTest","selectValue","GapTestsViewModel","gapTests","newGapTest","gapTest","choosenValue","correctChoice","GapTaskViewModel","gapTestsViewModel","isSubmitted","gapTestsValues","isTestAnswered","validateTest","resetTest","showCorrectTestAnswers","InputTaskViewModel","similarityThreshold","ignoreCapitalLetters","useMathInput","stringSimilarity","findBestMatch","bestMatch","firstCorrectAnswer","rating","closestCorrectAnswer","target","isAnswerCorrect","firstAnswer","getVimeoId","vimeoUrl","videoMatch","getFormattedTime","smoothScrollToSection","document","getElementById","setTimeout","scrollIntoView","behavior","loadImages","urls","promises","Image","onload","onerror","crossOrigin","src","aggregatedPromise","images","ms","assertState","expectedTypes","MaskViewModel","mask","maskTask","imageUrl","MAX_MASK_SIZE","loadedImage","selectionStrategy","toggleSelection","removeHighlight","MultipleChoiceMaskStrategy","_mask","SingleChoiceMaskStrategy","masks","selectedMask","MaskTaskViewModel","maskDtos","baseImageDto","refresh","isSingleChoice","incorrectMasksLength","correctMasksLength","totalCorrectMasksLength","isError","selectedMasks","isPartiallyCorrect","isIncorrect","when","correctMasks","submit","highlight","MatchTaskViewModel","questions","answers","isMultipleChoice","taskService","questionsState","question","correctAnswerToQuestion","ca","questionCorrectAnswers","cav","questionState","submitResult","checkAnswers","getCorrectAnswers","TaskFactory","task","choiceListTest","correctAnswerIds","registerTask","HintRelatedStepViewModel","relatedStep","showBookmarkDialog","isRelatedStepBookmarked","TaskHintViewModel","hintRelatedStepInfoDto","TaskTypeDto","StepTypeDto","Step","LessonTask","stepBase","taskFactory","hint","solution","createTask","isActionableTask","showCorrectAnswer","fireImmediately","relatedStepInfo","SoundStep","soundCloudUrl","positionSeconds","trackProgress","secondsSinceStart","updateStepWithTimeProgress","endStepWithTimeProgressContent","pushSoundCloudEnded","TaskGroupFactory","param","createTaskHintViewModel","TaskGroupStep","taskGroupItems","shouldTaskTitlesBeDisplayed","orderIndicatorColor","tasks","lessonColor","actionableTasks","tasksStatus","taskGroupItem","TextBlockStep","VideoStep","videoUrl","pushVideoEnded","StepFactory","LoginViewModel","loginConfig","gtmService","returnUrl","PreviousExamsViewModel","yearsSelect","typesSelect","examsYears","examsYear","types","exams","exam","examTypes","groupBy","examsByYear","aNumber","Number","yearsFiltered","hasValue","examType","examTypeId","resetValue","dashboardUrl","BetaNewsletterPopupViewModel","handleNewsletterSubmit","formData","ProductHeroViewModel","coursesSectionId","handleCourseClick","getCourseBySlug","heroSection","isBeta","betaNewsletterModel","showNewsletterForm","startCourseNewsletterRegistration","ProductViewModel","submitNewsletterSignup","courseTitle","newsletter","email","fullName","profession","trySetActiveProductBySlug","addProductRouting","appRoute","addRoute","productQueryParams","utm_source","sessionStorage","setItem","setQueryParamsToStorage","handleCourseEnter","PurchaseConfirmationViewModel","productIsLoading","courseIdQueryParam","URLSearchParams","getCourseInfo","getCourseStructure","getProductsInfo","matchingProduct","flatMap","productAndCourseUrl","console","error","BookmarkServiceMock","bookmarkStoreMock","ProgressStoreMock","Proxy","obj","prop","String","JSON","TrainingTask","isLastFromTheme","visited","GtmServiceMock","StepPreviewViewModel","previewQuery","progressStoreMock","gtmServiceMock","activeCourseParamsMock","themeInfo","themeMockImageUrl","currentTrainingGroundTask","currentLessonStep","getTrainingGroundTaskPreview","isDraft","revision","getStepPreview","loadTraining","TermsAndConditionsViewModel","termsAndConditions","accordionItems","acc","TestApi","testService","getTest","testResult","submitTest","TestPageViewModel","testStructure","testStore","submitCount","unansweredTask","isReviewOpen","subtitle","tasksCount","completedTasksCount","toThemePage","loadTest","throwCreationError","mapToTask","choiceListTask","choiceTask","gapTask","inputTask","matchTask","textTask","mapToStep","textBlock","video","taskGroup","sound","getResultForScore","passThreshold","score","startRange","endRange","hasPassed","TestResultCalculator","testResults","correctTasks","totalTasks","percentagePassThreshold","TestTask","testDto","taskById","testResultCalculator","_task","disable","size","calculate","testApi","testId","totalQuestions","isPassed","TestStore","ThemeListItemViewModel","ThemeListViewModel","allThemeViewModels","inProgressThemes","notStartedThemes","finishedThemes","underDevelopmentThemes","statusFilter","LessonListItemViewModel","isBookmarkToggleVisible","stepThumbnails","ThemeTestDomainThumbnailViewModel","getTestResult","ThemeTrainingSectionViewModel","ThemeViewModel","lessonList","themeColor","relatedContentStepStructures","FinishConfirmationModalViewModel","popup","confirmPromise","TrainingSet","trainingViewModel","gotoPreviousTask","currentTaskIndex","gotoPreviousTrainingSet","isFirstTaskInTrainingSet","gotoNextTask","gotoNextTrainingSet","isLastTaskInTrainingSet","currentTask","isFirstTrainingSet","isFirstTask","isNextTrainingSetLast","isLastTask","TrainingViewModel","trainingGroundService","endTraining","trainingGroundInfo","seed","random","endTrainingWithConfirmation","endTrainingWithoutConfirmation","loadTrainingSet","current","trainingSets","nextTrainingSetState","trainingSet","visitedTasks","currentTrainingSetState","penultimateTaskIndex","nextPage","getTrainingGroundTasks","themeIds","trainingGroundId","themesWithTaskValue","isLast","getResultPerTheme","visitedTasksPerTheme","entries","totalStepsCount","visitedTask","getThemesAvailabilityForResults","progressPerThemes","tryGetThemeBySlug","isThemeAvailable","HrefType","TrainingResultViewModel","successThreshold","resetTraining","correctAnswersCount","trainingTask","progressPerTheme","TrainingGroundViewModel","initialThemeSlug","startTraining","withConfirmation","finishConfirmationModal","confirm","getVisitedTasks","selectedThemes","info","newValues","selectedThemeIds","hintToggleDogImage","hintToggleMessageImage","getTrainingGroundThemes","initialTheme","selectThemeIds","initAxiosGlobalInterceptors","language","axiosInherit","axios","interceptors","response","use","ok","err","headers","encodedReturnUrl","encodeURIComponent","goToTibetLogin","request","BackendApi","splashAxios","toastAxios","create","ensureErrorServiceConfigured","showErrorToast","statusText","_req","post","paramsSerializer","cancelToken","isCancel","TibetClient","courseService","utmSource","utmMedium","utmCampaign","getCoursePayment","paymentOptionId","pushBuyStarted","redirectUrl","GtmService","dataLayer","containerId","googleTagManagerContainerId","TagManager","initialize","gtmId","event","getCurrentLocation","eventAction","loginLabel","eventLabel","stepTitle","vimeoId","LanguageService","localStorageLanguageKey","storageLang","localStorage","getItem","NavigationService","origin","toCoursePage","toTibetLoginPage","toLoginPage","pushState","encodeURI","toSearchPage","StepStructure","LessonStructure","TestStructure","ThemeStructure","lessons","tests","orderNumber","testSlug","PreviousExamsStructure","CourseStructure","buyCourseSection","priceOptions","isLicensed","allThemeLessons","allPreviousExamsLessons","previousExamsThemeStructures","allLessons","isInfoBannerDisplayed","infoBannerTitle","infoBannerDescription","infoBannerLink","trainingGroundInfosDto","isCourseFreeOrAccessible","trainingGroundHeaderText","lessonSteps","previousExamsLessons","previousExamsSteps","themeSlug","Product","productDto","targetGroup","heroDescription","blocks","cardImage","seoTitle","seoDescription","courseInfo","isOnlyOneCourse","loadCourseStructure","cancelTokenSource","ProductStore","productService","isOnlyOneProduct","productDtos","CancelToken","token","loadProducts","UserStore","userService","getUser","loadUser","productStorePromise","configPromise","getConfig","userStorePromise","App","initErrorInterceptors","AppRoutes","_appRoute","buyRedirectRouting","buyRedirect","purchaseConfirmation","addPurchaseConfirmationRouting","aboutUsRouting","aboutUs","addAboutUsRouting","articlesRoutes","addArticlesRoutes","loginRouting","login","addLoginRouting","stepPreviewRouting","errorRouting","_","errorParams","errorType","addErrorRoutes","termsAndConditionsRouting","addTermsAndConditionsRoute","productRouting","productArticleListRouting","productViewModel","articleList","productArticleRouting","articleListViewModel","defaultCourseInfo","articlesSlugs","articleHandleLogin","authorsForProduct","productRoute","addAuthorsForProductRouting","courseRouting","courseParams","_productViewModel","trySetActiveCourseStructureBySlug","addCourseRouting","themeListRoute","coursePage","themesRoutes","themesPage","currentTheme","getThemeBySlug","testsRoutes","themeRoute","themePage","testFactory","addTestsRoutes","lessonsRoutes","courseRoute","getLessonByStepSlug","lessonViewModel","addLessonsRoutes","bookmarkRoutes","addBookmarksRoutes","dashboardRouting","dashboard","addDashboardRouting","siteSearchRouting","siteSearch","addSiteSearchRouting","courseArticleRouting","addCourseArticleRouting","trainingGroundsRouting","trainingGroundRoutes","trainingGroundSlug","trainingGroundViewModel","addTrainingGroundsRouting","previousExamsRouting","previousExamsViewModel","addPreviousExamsRouting","appRoutes","toBuyRedirectPage","toPurchaseConfirmationPage","toLogoutPage","toLessonPage","stepRef","toThemesPage","toThemeTestPage","articleRef","toProductArticlePage","toCourseArticlePage","toBookmarksPage","return_Url","toTrainingGroundPage","toPreviousExamsPage","toErrorPage","toMyProfile","toMyProfileBPN","BuyCourseViewModel","groupName","lowLevelNavigationService","buyCourseCommand","siteOrigin","priceOptionId","routerContext","React","locationContext","useRouterContext","routerCtx","useHistory","useUrl","RouterProvider","Provider","LocationProvider","setLocation","historyListenerUnregister","useLocation","locationCtx","useLocationContext","getLinkClassNames","buttonType","buttonVariant","className","classNames","getHostname","URL","hostname","isExternal","Link","to","onClick","hrefType","Autodetect","tabIndex","buttonSize","goBackText","isExternalHref","External","ariaDescribedBy","ariaLabel","targetProps","rel","Anchor","navigate","createLocation","goBackHref","createHref","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","HamburgerMenuLinks","headerViewModel","desktopHamburgerPrimaryLinks","baseHeaderLinks","hideAboutUsInMenu","HeaderHamburgerViewModel","searchLink","HeaderViewModel","availableCourses","motif","icon","paymentSidePanel","trainingGroundHeaderInfo","trainingGroundLink","goToSearch","ProductNestViewModel","productNestTitle","productNestDescription","productNestListInfo","deactivateProduct","getMotif","motifProvider","appMotif","debouncedLog","debounce","header","footer","cookiesConsent","errorToastCounter","pushUserStatusChanged","resetActiveCourseStructure","splashError","productNest","vm","headerHamburgerModel","mobileMenu","desktopMenu","cookiesDetailsModal","initProductNest","next","isSafeInteger","pushLoginStarted","userLinksSheet","Scroll","animateScroll","scrollToTop","validateNextChildOfPage","Button","variant","htmltype","disabled","style","CommandButton","stopPropagation","renderItem","empty","singleItemClassName","ScrollLock","isLocked","scrollPosition","setScrollPosition","scroll","unlockScroll","scrollPositionValue","body","classList","remove","scrollTo","scrollY","pageYOffset","add","staticTranslationContext","createContext","useTranslations","ctx","useContext","translations","useDelayedDisplay","shouldBeDisplay","useState","isDisplayed","setIsDisplayed","useEffect","usePopup","backgroundStyles","useSpring","opacity","onResolve","DEFAULT_MOTIF","motifContext","useMotif","MotifProvider","SvgIcon","iconName","buildHash","formattedBuildHash","role","xlinkHref","Modal","modalInnerStyles","active","focusTrapOptions","allowOutsideClick","div","Switch","checked","buttonProps","Title","CustomTag","CookiesConsent","acceptCookies","toggleCookie","shouldCookiesConsentBeOpen","cookiesConsentStyles","transform","stiff","cookiesConsentTitleId","cookiesConsentDescriptionId","cookies","necessaryCookiesTitle","necessaryCookiesDescription","mandatory","analysisCookiesTitle","analysisCookiesDescription","cookieNotice","editCookieSettings","cookie","itIsOkay","cookiesConsentSettings","cookiesDescription","display","flexDirection","cookieTitleId","cookieDescriptionId","submitUpdatedCookies","Collapse","onRest","Accordion","toggle","TriggerElement","setTriggerRef","ariaDescribedby","getTriggerProps","defaultProps","isString","child","Children","only","cloneElement","Tooltip","placement","controlledVisible","setControlledVisible","tooltipId","useRef","usePopperTooltip","visible","onVisibleChange","trigger","offset","getArrowProps","getTooltipProps","setTooltipRef","transitions","useTransition","enter","leave","tooltipProps","ReactDOM","createPortal","builder","imageUrlBuilder","projectId","sanityProjectId","dataset","urlFor","buildUrl","cropLeft","round","cropTop","cropValues","dpr","fit","focalPoint","rect","placementToClassNameMap","default","aspectRatioToClassNameMap","SanityImage","MotifImage","fileName","restImageProps","restProps","importedIconUrlRef","loading","setLoading","Container","aspectRatio","classnames","Credit","CourseColorVersionDto","LogoSection","link","studiesTypeLink","logoUrl","gyldendalLogoClassName","studiesTypeClassName","gyldendalLogoUrl","CURRENT_YEAR","ProductCopyright","siteName","allRightsReserved","FooterView","convertLinkBySource","Light","logoLink","Boolean","linkSections","helpUsImprove","whatDoYouThinkAboutThisService","sayYourOpinion","shouldShowGyldendalLogo","weArePartOf","goToGyldendalSite","termsAndConditionsPageLink","radioGroupContext","useRadioGroupContext","RadioGroupProvider","RadioGroup","currentValue","setCurrentValue","checkedId","SidePanel","sidePanelInnerStyles","FormattedText","template","format","splitWords","words","conjunction","lastWord","pop","formattedText","join","useSingularOrPluralForm","count","forms","singular","plural","Radio","htmlId","htmlFor","BuyCourseItem","displayName","nokPrice","regularNokPrice","isOptionSelected","isPromotional","promotionValue","priceValue","regularPriceValue","PaymentSidePanel","modal","setSelectedOption","youAreBuying","includedThemes","choosePricing","buyCourseButton","pleaseWaitItCanTakeFewSeconds","CoursesPicker","selectedCourse","setSelectedCourse","selectCourse","selectCourseDescription","logIn","NavLink","activeClassName","exact","currentUrl","getIsLinkActive","useIsVisible","setIsVisible","scrollObserver","IntersectionObserver","entry","isIntersecting","threshold","Input","forwardRef","describedBy","placeholder","required","onBlur","onEnter","htmlType","onKeyDown","HamburgerMenu","secondaryLinks","setSearchPhrase","panelStyles","translateX","onSubmit","buyAccess","renderItems","renderPrimaryLinks","HeaderHamburgerView","mobileHamburgerMenuLinks","desktopHamburgerSecondaryLinks","convertToLinkWithTitle","closeMenu","openMenu","primaryLinks","DialogView","cancelCommand","referenceElement","onShow","popperElement","setPopperElement","usePopper","modifiers","styles","attributes","dialogStyles","popper","UserLinks","UserLinksDialog","BottomSheet","setIsOpen","startPosition","touchStart","touches","clientY","touchEnd","callback","abs","changedTouches","useVerticalSwipeThreshold","sheetStyles","fadeInStyles","onTouchStart","onTouchEnd","UserLinksSheet","sheet","HeaderView","stickyHeaderRef","userLinks","userLinksDialog","pickCourseSidePanel","availableCoursesCount","buttonWrapperRef","currentPath","convertToLinkText","loginButton","buyButton","SkipNavigationLink","goToContent","notificationContext","useNotificationService","NotificationProvider","maxNumberOfNotifications","notificationService","showNotification","toastChildren","toast","position","autoClose","hideProgressBar","pauseOnHover","transition","Slide","bodyClassName","closeButton","closeToast","newestOnTop","limit","PageTitle","noIndex","fullTitle","defer","errorMessagesMap","UNEXPECTED_ERROR","FORBIDDEN","NOT_FOUND","SYSTEM_FAILURE","PAYMENT_FAILURE","HTTPStatusCodeToErrorMessageMap","ErrorView","errorMessage","messageType","getUserErrorMessage","errorMessageTranslation","pageData","pageTitle","getErrorPageData","goToProductOverview","InfoElement","ProductCard","hasMoreThanOneCourse","seeProduct","ProductNestView","listInfo","AppView","activeElement","HTMLElement","blur","toastErrorMessage","renderContent","ActivityIndicator","activityIndicatorColor","StepIcon","arrowsImgUrl","shapesImgUrl","getImageUrl","ThumbnailImage","defaultImageSrc","defaultTestImage","defaultTestImageSrc","getThumbnailImage","SectionArticleItem","navigationUrl","script","createElement","async","el","getElementsByTagName","parentNode","insertBefore","GeoGebraAppType","loadScript","GeoGebraApplet","appType","materialId","showAlgebraInput","showMenuBar","showToolBar","appletContainerClassName","loadGeoGebraApp","appName","material_id","scaleContainerClass","autoHeight","allowUpscale","GGBApplet","inject","RettsdataPortableText","formattedContentValue","useMemo","dangerouslySetInnerHTML","__html","RettsdataReferenceContent","childLaw","mainLaw","setState","loadContent","getLawContent","unexpectedErrorMessage","rettsdataLinkText","RettsdataReference","isContentVisible","setContentVisible","modalElement","gapTaskContext","GapTaskContextProvider","gapTaskViewModel","selectListItemTypeGuard","SelectIndicator","ClearIndicator","MultiValue","multiValueProps","getValue","_value","Select","isMulti","isTrainingGroundTask","menuPlacement","setMenuPlacement","selectedValue","selectRef","customMenuStyle","menu","borderRadius","selectedStyle","overflow","select","classNamePrefix","isSearchable","isArray","menuPortalTarget","components","DropdownIndicator","noOptionsMessage","noMoreOptions","onMenuOpen","controlRef","getBoundingClientRect","innerHeight","DateTypeDto","ChoiceListOptionStatus","GapTaskGap","choiceGapTest","useGapTaskContext","currentGapTest","shouldAnswerBeDisplayed","registerGapTest","VimeoPlayer","startPositionSeconds","onReady","onEnd","onVideoSeeked","onUpdateProgress","onTimeUpdate","vimeoEvent","onSeeked","showTitle","showByline","start","YoutubePlayer","youtubeId","youtubeMatch","getYoutubeId","containerClassName","VideoPlayer","isYoutubeUrl","EmbeddedBlock","iframe","ImageCollection","imageSize","imageSerializer","asset","TextContentWithPlaceholder","InlineGap","LatexPreview","node","layout","latex","isInline","html","setHtml","str","KaTeX","renderToString","displayMode","throwOnError","ParseError","BlockMath","InlineMath","isBlockEmpty","block","isTextBlock","firstChild","trimEmptyBlocks","startIndex","endIndex","Quote","Table","rows","renderBlocks","row","rowCells","cell","_key","Text","TileCollection","tileSize","tiles","shouldCenterContent","defaultImageOptions","w","auto","listItem","serializers","span","sanityDataset","renderBlockContent","localImageSerializer","imageOptions","credit","alternativeText","img","BlockContent","marks","mark","blank","rettsdataReference","inlineGap","vimeo","embeddedVideo","embeddedBlock","geoGebra","inlineChoiceGapTest","metadata","ratio","dimensions","defaults","getImageOptions","paddingTop","imageCollection","tileCollection","richTextTable","chunk","cells","columns","defaultSerializers","formattedBlocks","PortableTextContent","AuthorDetails","details","anonymousDog","contentMadeByAuthor","AuthorDetailsSidePanel","AuthorSlide","onButtonClick","placeholderImage","PrevArrow","previous","NextArrow","AuthorsSlider","sliderSettings","dots","infinite","draggable","autoplay","autoplaySpeed","speed","slidesToShow","slidesToScroll","pauseOnDotsHover","touchThreshold","prevArrow","nextArrow","centerMode","responsive","breakpoint","settings","PersonCard","PersonsList","persons","person","QuoteSlide","quote","authorImage","authorName","authorRole","productTag","QuotesSlider","quotes","q","AboutUsView","authorsSliderViewModel","pageImage","pageSubtitle","aboutProductImage","aboutProductTitle","aboutProductDescription","authorsOfProductDescription","authorsOfProductTitle","studentsQuotesList","studentsQuotesTitle","quotesImage","peopleBehindProductDescription","peopleBehindProductImage","peopleBehindProductList","peopleBehindProductTitle","bottomImage","ourCoursesTitle","ourCoursesDescription","SectionHeading","extra","SectionArticleListBlock","seeAllArticles","productParamsContext","ProductParamsContextProvider","ArticleBuySection","getFullAccessNow","fullAccessDescription","articleBuySectionUrl","AvatarImage","avatarImage","Avatar","initials","nameSplitted","split","charAt","toUpperCase","getInitials","NavigationLink","LinkTypeDto","ArticleDate","date","formattedDate","toLocaleDateString","CreationDate","published","EditDate","edited","ArticleHero","backLink","setSelectedAuthor","backgroundColor","ArticleLoginSection","tryForFreeNow","explorePlatformDescription","logInAndTry","articleLoginSectionUrl","ArticleSummary","summary","summaryItem","ArticleView","useProductParams","fallbackLink","goToArticleListPage","loginActionSection","buyActionSection","relatedArticles","youMightAlsoLike","goToX","ArticleListView","setArticles","api","isEqual","articleListDescription","heroImageUrl","allCategories","emptyListImageUrl","emptyResultsMessage","AuthorThumbnail","buttonOnClickAction","learnMore","AuthorsForProductView","SuperHeroDog","Popover","open","HighlightedThumbnail","overlay","locked","imageBackgroundColor","linkGoBackText","bottomContent","useOverlayProps","overlayState","isVideo","isStepBookmarked","bookmarkCommand","useSubtitle","quiz","TrainingGround","trainingGround","PreviousExams","previousExams","Author","useThumbnailImage","useVideoData","timeStamp","HorizontalThumbnail","ProgressBar","rounded","progressBarStyle","RectangleThumbnail","AnonymousUser","LoggedInUser","userDto","firstName","lastName","userContext","useAppUser","UserProvider","BookmarkLayer","addUserBookmark","StatusTag","FreeInfoLayer","gratis","LockedLayer","lockIcon","StatusLayer","finished","failed","getStatusText","ThumbnailOverlay","TileThumbnail","DomainThumbnail","thumbnailType","thumbnailTitleLevel","videoData","overlayProps","Textarea","BookmarkMessageEditor","defaultMessage","onSave","onCancel","setMessage","messageRef","focus","messageLength","setSelectionRange","BookmarkView","popover","setIsInEditMode","updateMessage","deleteBookmark","edit","BookmarkListView","myBookmarks","emptyBookmarksImageUrl","youHaveNoSavedBookmarks","setAndInitiateBuying","activeCourseContextVariables","CourseView","setProperty","hoverColor","textColor","removeProperty","ProgressByType","isAnyOfType","stepTypesTranslations","getProgressItem","progressItems","ProgressRing","circumference","PI","strokeStyles","strokeDashoffset","viewBox","strokeWidth","fill","cx","cy","circle","strokeDasharray","DashboardHero","heroImage","progressByType","progressDescription","formattedDescription","dashboardProgressDescriptionInProgress","mainMessage","dashboardProgressMessageNothingCompleted","dashboardProgressDescriptionNothingCompleted","dashboardProgressMessage_1_30","dashboardProgressMessage_31_50","dashboardProgressMessage_51_80","dashboardProgressMessage_81_99","dashboardProgressMessageCompleted","useDashboardProgressTexts","renderHeroImage","searchForContent","DetailedProgressBar","progressInfo","completed","ThemeContentByType","stepTypesTexts","videoSummary","videosSummary","taskSummary","tasksSummary","textSummary","textsSummary","soundSummary","soundsSummary","formatThemeNumber","padStart","CardThemeBasic","tags","tag","stepsByType","progressContinueButton","renderStatusContent","BasicThemesSection","CourseButton","courseColor","goToProduct","CourseThumbnail","CoursesSection","productName","ExamThemeCard","thumbnailImage","firstLessonStructure","firstStepStructure","goToPreviousExam","stepsProgressInfo","tryAgain","underDevelopment","CardThemeDetailed","continueStepThumbnail","InProgressThemesSection","inProgress","PreviousExamsSection","goToPreviousExams","ThemesWithFreeStepsSection","gratisContentExclamation","gratisContentDescription","themeItem","seeAllThemes","HorizontalCard","VerticalThumbnail","TrainingGroundDomainThumbnail","startNow","TrainingGroundSection","testYourself","DashboardSections","renderSection","notStarted","allThemes","startedExamThemes","startedExams","seeAllExams","InfoBannerValue","InfoBanner","userId","infoBannerCookieName","infoBannerState","setInfoBannerState","infoBannerOpened","infoBannerStyles","linkUrl","externalUrl","internalUrl","ExternalLink","InternalLink","ArticleLink","DashboardView","goToDashboard","FooterListItem","navigateTo","getUrl","ErrorFooter","ErrorHeader","LessonSection","BuyCourse","CongratulationPopup","isLastLesson","buyCourseViewModel","isAnyTrainingAvailable","unfinishedStepsCount","popupContent","firstStepFromTheNextLesson","congratulationsSingleLessonCompleted","linkText","linkTo","themeTest","congratulationsTestAfterTheme","takeTest","congratulationsWellDone","firstStepFromTheNextTheme","congratulationsFinishedTheme","goToNextTheme","missingXStepsInLesson","yesIWantToFinish","getPopupContent","secondaryLink","goToThemePage","getSecondaryLink","additionalContentHeading","themeTrainingTitle","headingId","LessonHeading","lessonTitle","goBackToThemePage","AnimatedLevel","animationConfig","mass","tension","friction","oldLevelStyles","newLevelStyles","LevelSidePanel","panelTexts","goodJob","keepGoing","youAreMakingProgress","youAreDoingGreat","wellDone","dontStopNow","sample","AddBookmarkDialog","getReferenceElementToAttach","addMessage","RemoveBookmarkDialog","removeBookmarkMessage","removeBookmarkConfirm","BookmarkButton","bookmarkRef","BookmarkButton__bookmarked","userBookmarkAdded","CompleteSwitch","markAsFinished","SoundStepView","endSoundStep","scriptId","soundCloudRef","soundCloudTimeoutRef","soundCloudWidget","SC","Widget","widgetEvents","READY","Events","PLAY_PROGRESS","FINISH","seekTo","getPosition","clearTimeout","allow","OrderIndicator","ChoiceListOption","handleValueChange","SketchfabViewer","viewerIframeRef","Sketchfab","annotation_tooltip_visible","ui_stop","ui_theme","ui_animations","ui_controls","ui_hint","ui_infos","ui_settings","ui_sound","ui_vr","ui_ar","ui_ar_help","ui_ar_qrcode","ui_watermark","ChoiceListTestViewer","selectOption","checkboxGroupContext","CheckboxGroupProvider","CheckboxGroup","singleValue","updatedValues","getUpdatedValues","Fieldset","legend","SectionBlockTypeDto","useCheckbox","checkboxButtonGroupOnChange","CheckboxButtonGroupChecked","inputChecked","onInputChange","Checkbox","rest","currentTarget","ChoiceTestOptionStatus","explanation","wrongAnswer","shouldBeCheckedAnswer","getInfoText","selectOptions","MathInput","mathfieldRef","MathfieldElement","handleOnChange","evt","handleOnBlur","onchange","onblur","mathVirtualKeyboardPolicy","infoRef","enterCorrectAnswer","inputTaskAlmostCorrectAnswer","inputTaskCorrectAnswer","displayTaskInfo","MaskTaskContent","MaskTaskFeedback","youHaveChosen","thisAndThis","Layer","layerRef","layer","getCanvas","getPixelRatio","setPixelRatio","InnerStage","baseWidth","scale","ResponsiveStage","useResizeDetector","handleHeight","refreshMode","refreshRate","newWidth","MaskTaskError","goToVideoPage","taskLoadingError","ErrorImage","useKonvaImageCash","imageRef","clearCache","isCached","cache","pixelRatio","drawHitFromCache","styleDeclaration","getComputedStyle","red","green","g","blue","getFilters","highlighted","Konva","Util","getRGB","getPropertyValue","selected","correct","incorrect","shouldBeChecked","Mask","pointerTouchStart","pointerTouchEnd","currentFilter","prevFilter","maskOpacity","Filters","RGB","onMouseDown","onMouseEnter","onMouseLeave","perfectDrawEnabled","MaskTaskStage","stage","highlightMasks","startScrollPosition","useScrollThreshold","stageContainerRef","onMouseUp","shadowBlur","shadowColor","shadowOffset","shadowOpacity","getOptionStatus","correctAnswerId","userAnswerId","userAnswerIds","getGroup","answerOption","MatchTaskList","renderAnswer","Group","MatchTaskTable","MatchTaskResult","TaskView","ScreenSizeAwareButton","toggleValue","toggleMobileValue","displayText","ariaExpanded","ariaControls","HintRelatedStep","youCanFindMoreInformationHere","bookmarked","bookmarkForLater","TaskHint","LessonTaskHint","isHintOpen","onAnimationResolve","taskHintPanelStyles","marginLeft","precision","Panel","shouldBeVisible","TaskSolution","isSolutionOpen","isMobileSolutionOpen","hideSolution","hideMobileSolution","TaskActions","additionalContent","actions","setActions","hintButtonId","solutionButtonId","handleStateChange","prevState","hideHintButton","seeHintButton","TaskStatusImage","maxWidth","StateButton","onReset","checkAnswer","Actions","TaskStepView","TaskGroupStepView","TextBlockStepView","Tab","Anchors","anchors","moveVideo","anchor","startTime","VideoTab","eventKey","tabTitle","highlights","endVideo","playerRef","isEndPanelVisible","setIsEndPanelVisible","anchorsState","setAnchorsState","player","getChapters","chapters","secondsSinceBeginning","setCurrentTime","play","onVideoEnd","replay","VideoStepView","StepView","SliderThumbnail","StepsListContext","useStepsList","StepsListContextProvider","StepsListProvider","StepsListProgress","stepsCount","StepsListItems","stepsListUniqueId","scroller","smooth","unmount","StepsListNavigation","prevStepSliderButton","nextStepSliderButton","StepsList","StepsListPanel","LessonView","relatedContentThumbnails","pushUrl","relatedContent","LoginView","dashboardDescription","EmptySearch","emptySearchMessage","RequiredMark","Label","PreviousExamsView","areFiltersApplied","resetFilters","filteredItems","noValidate","year","areAnyItemsInSelect","valueWithLabels","deselectItem","clearSelection","sorryNoSearchResults","SectionIconBlock","SectionIconListBlock","sectionIconListBlockId","listItems","sectionIcons","sectionIcon","SectionImageBlock","titleImage","imagePosition","primaryImage","secondaryImage","buttonText","isCrateVisible","isImageLeft","goToHomePage","readMoreArticle","SectionMultiQuoteBlock","adaptiveHeight","SectionQuoteBlock","SectionTextBlock","isAdditionalInfoEnabled","FormErrorMessage","defaultFormValues","BetaNewsletterPopup","handleSubmit","professionOptions","student","lecturer","other","form","useForm","resolver","yupResolver","yup","optional","formEmailRequired","formEmailNotValid","formFieldRequired","processingAgreement","formConsentRequired","oneOf","defined","defaultValues","onFormSubmit","fieldValues","signUpForNewsletter","newsletterDescription","control","render","field","fieldState","fieldErrorId","whoAreYou","_id","newsletterConsent","formState","isSubmitting","send","ProductHero","seeProducts","ProductView","productSections","productHeroVM","nextBlockType","sectionBlockType","SectionMultipleQuotesBlock","sectionTextBlock","sectionIconListBlock","sectionImageBlock","sectionQuoteBlock","sectionMultipleQuotesBlock","sectionArticleListBlock","PeopleCelebrating","DebounceInput","debounceTimeMs","tempValue","setTempValue","debouncedFunc","SearchItemSkeletonView","inline","LoadMoreList","range","showMore","showingOf","SearchDomainThumbnail","getIsCompleted","getBookmarkToggleViewModel","SearchItemView","SearchListView","isEmpty","SiteSearchView","hasSearched","filtersWithTranslation","otherContent","yourSearchReturned","LessonPreview","HintPanelContent","MessageBoxIcon","messageText","useSessionStorage","initialValue","readValue","useCallback","log","parseJSON","warn","storedValue","setStoredValue","Function","HintToggleImage","isHintMessageVisible","setIsHintMessageVisible","isHintImageLowered","setIsHintImageLowered","timer","hintToggleStyles","HintPanel","TrainingTaskView","visit","TrainingItemContainer","taskContainerRef","hintContainerId","themeTitle","isHintVisible","setIsHintVisible","isMobileHintVisible","setIsMobileHintVisible","resetTaskFocus","TrainingItemActions","finishPractising","TrainingGroundPreview","mockCommand","StepPreviewView","isTrainingPreviewAvailable","changeMode","renderPreview","TermsAndConditionsView","termsAndConditionsInfo","termsAndConditionsAccordion","alternativeImage","ConfirmExitPanel","exitLink","quitTestTitle","quitTestDescription","quitTestReturn","quitConfirm","TestTaskInfo","visuallyHidden","TestTaskView","testTask","TestTaskList","testTasks","renderTask","Item","TestTaskCompletionInfo","questionHasAnswer","youHaveNotAnsweredThisQuestion","confirmExitModal","confirmExitPanel","taskTitle","TestHeader","exitTestLinkContent","exit","finishedTasks","TestResultActionButtons","nextElementLink","toggleReview","reviewId","hideAnswers","seeAnswers","TestResult","resultInfo","testPageContextVariables","TestPageView","testColor","LessonList","lessonSectionTitleVariant","ThemeArticleItem","ThemeArticleSection","isListLengthOdd","readAlso","EmptyTheme","noLessonImageUrl","noLessonsTitle","noLessonsMessage","TextCollapse","textContentRef","isCollapseOpen","setIsCollapseOpen","isCollapseButtonVisible","setIsCollapseButtonVisible","collapseWrapperRef","onResize","scrollHeight","viewLess","viewMore","ThemeHero","hasFullCourseAccess","goToAllThemes","texts","setProgress","getThemeInProgressDescription","themeProgressDescription","themeProgressMessageNoStepCompleted","themeProgressDescriptionNoStepCompleted","themeProgressMessageOneStepLeft","themeProgressMessageCompleted","themeProgressDescriptionCompleted","themeProgressMessageOverHalfCompleted","themeProgressMessageInProgress","useThemeProgressTexts","TestThumbnailOverlay","TestThumbnailInfo","testState","ThemeTestDomainThumbnail","useTestOverlayProps","ThemeTrainingSection","testYourSkills","ThemeView","trainingSectionViewModel","previousTheme","isMainSectionEmpty","getIsFilterSelectAllChecked","availableFilterValues","selectedFilterValues","notSelectedValues","difference","getIsSelectAllChecked","useSelectAllCheckbox","availableValues","selectValues","isSelectAllChecked","CheckboxButton","propsDefaultButtonStyling","defaultButtonStyling","propsActiveButtonStyling","activeButtonStyling","buttonClassName","properties","getButtonClassName","SingleFilter","filterByWithText","allFilterText","checkboxGroupName","availableFilterValue","getFilterText","numberOfItems","ThemeListFilter","filterValueWithTranslations","started","inProgressThemeCount","notStartedThemeCount","finishedThemeCount","underDevelopmentThemeCount","filteredFilterValueWithTranslations","fromEntries","allThemeCount","ThemeListView","themeViewModels","themeOverview","themeVm","FinishConfirmationModal","accept","quitTrainingTitle","quitTrainingDescription","quitTrainingReturn","themeImage","darkLock","ThemeSelectorImage","themePickerDefaultImage","hoveredTheme","backgroundImage","srcSet","media","ThemesSelector","onConfirmThemesSelection","onSelectedThemeIdsChange","themePickerDescription","setHoveredTheme","chooseThemes","selectAll","startPractising","TrainingLoadedView","trainingGroundTitle","selectedThemesCount","currentTaskTheme","isCurrentTaskAnswered","finishedLastFromTheme","TrainingView","ThemeResultItem","TrainingResultView","trainingTitle","TrainingGroundStateView","TrainingGroundView","TranslationProvider","setTranslations","getTranslationData","getLessonsResponse","AppProvider","isAppRoute","ResizeObserver","useApp","resource","setResource","_resource","promise","suspender","read","wrapPromise","LazyApp","AppContainer","createBrowserHistory","useRouter","fallback","fallbackRender","rootContainer","createRoot"],"mappings":"oKAAA,OAAe,cAA0B,yC,2CCAzC,OAAe,cAA0B,wC,gDCAzC,OAAe,cAA0B,gC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,+B,4DCAzC,OAAe,cAA0B,oC,wECAzC,OAAe,cAA0B,6C,+BCAzC,OAAe,0tH,+BCAf,OAAe,cAA0B,0C,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,gC,+BCAzC,OAAe,cAA0B,8C,+BCAzC,OAAe,cAA0B,0F,4GCAzC,OAAe,cAA0B,wC,iCCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,mC,gCCAzC,OAAe,cAA0B,gC,+BCAzC,OAAe,cAA0B,qC,6OCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,kzZ,+BCAf,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,sC,+BCAzC,OAAe,sM,+BCAf,OAAe,cAA0B,0C,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,0C,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,6C,+BCAzC,OAAe,cAA0B,kD,+BCAzC,OAAe,cAA0B,8C,+BCAzC,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,gD,+BCAzC,OAAe,cAA0B,6C,+BCAzC,OAAe,cAA0B,uD,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,8C,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,2D,+BCAzC,OAAe,cAA0B,qE,+BCAzC,OAAe,cAA0B,qE,+BCAzC,OAAe,cAA0B,iE,+BCAzC,OAAe,cAA0B,wD,+BCAzC,OAAe,cAA0B,4D,+BCAzC,OAAe,cAA0B,4D,+BCAzC,OAAe,cAA0B,wD,+BCAzC,OAAe,cAA0B,+D,+BCAzC,OAAe,cAA0B,qE,4wFCAzC,IAAIA,EAAM,CACT,sBAAuB,CACtB,KAED,wBAAyB,CACxB,KAED,kCAAmC,CAClC,KAED,qCAAsC,CACrC,KAED,6BAA8B,CAC7B,KACA,GAED,mCAAoC,CACnC,KACA,GAED,6BAA8B,CAC7B,KACA,GAED,uCAAwC,CACvC,KACA,GAED,mCAAoC,CACnC,KACA,GAED,gDAAiD,CAChD,KACA,IAED,gEAAiE,CAChE,KACA,IAED,0DAA2D,CAC1D,KACA,IAED,8CAA+C,CAC9C,KACA,IAED,wBAAyB,CACxB,KACA,IAED,gCAAiC,CAChC,KAED,mBAAoB,CACnB,KAED,uBAAwB,CACvB,KAED,YAAa,CACZ,KAED,aAAc,CACb,KAED,aAAc,CACb,KAED,gBAAiB,CAChB,KAED,uBAAwB,CACvB,KAED,0BAA2B,CAC1B,KAED,yBAA0B,CACzB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,8BAA+B,CAC9B,KACA,IAED,gCAAiC,CAChC,KACA,IAED,2BAA4B,CAC3B,KACA,IAED,uBAAwB,CACvB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,wBAAyB,CACxB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,wBAAyB,CACxB,KAED,8BAA+B,CAC9B,KACA,IAED,uBAAwB,CACvB,KACA,IAED,uBAAwB,CACvB,KACA,IAED,0BAA2B,CAC1B,KACA,IAED,mBAAoB,CACnB,KACA,IAED,8BAA+B,CAC9B,KACA,IAED,uBAAwB,CACvB,KACA,IAED,mBAAoB,CACnB,KAED,sBAAuB,CACtB,KACA,IAED,0BAA2B,CAC1B,KACA,IAED,mBAAoB,CACnB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,4BAA6B,CAC5B,KACA,IAED,qBAAsB,CACrB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,kCAAmC,CAClC,KACA,IAED,+BAAgC,CAC/B,KACA,IAED,qBAAsB,CACrB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,uBAAwB,CACvB,KACA,IAED,6BAA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","file":"static/js/main.3fef9eab.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/superhero-dog.8930f9c1.png\";","export default __webpack_public_path__ + \"static/media/logo-desktop.865c03db.svg\";","export default __webpack_public_path__ + \"static/media/dog2.aa138cd8.png\";","export default __webpack_public_path__ + \"static/media/anonymous-dog.4d7773fa.png\";","export default __webpack_public_path__ + \"static/media/dog.b56ca6ad.png\";","export default __webpack_public_path__ + \"static/media/hint-dog.86405df9.svg\";","export default __webpack_public_path__ + \"static/media/gril-with-barbell.7441e587.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/dog-with-balls.3a1387f8.png\";","export default __webpack_public_path__ + \"static/media/people-with-dog.d9323f0f.png\";","export default __webpack_public_path__ + \"static/media/chatting-people.3d26330f.png\";","export default __webpack_public_path__ + \"static/media/dog4.4a742af8.png\";","export default __webpack_public_path__ + \"static/media/people-celebrating.903fa20c.png\";","export default __webpack_public_path__ + \"static/media/termsAndConditionsPlaceholder-milg31nitn13oi93-700x525-png.png.0dd97a75.png\";","export default __webpack_public_path__ + \"static/media/hint-message.9dfb9849.svg\";","export default __webpack_public_path__ + \"static/media/arrows.cb60a8c8.svg\";","export default __webpack_public_path__ + \"static/media/figures.c3ad0b75.svg\";","export default __webpack_public_path__ + \"static/media/lock.373c5b20.svg\";","export default __webpack_public_path__ + \"static/media/dark-lock.a80a1842.svg\";","export default __webpack_public_path__ + \"static/media/congratulations.78a460ee.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/product-login.79d2ab09.png\";","export default __webpack_public_path__ + \"static/media/dog-mirror.22f55db9.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAQSURBVHgBAQUA+v8AAAAAAAAFAAFkeJU4AAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/girl-with-menu.f001b773.png\";","export default __webpack_public_path__ + \"static/media/brain.4f1953a5.png\";","export default __webpack_public_path__ + \"static/media/advanced-brain.a75ae145.png\";","export default __webpack_public_path__ + \"static/media/brain_stem_mask.6dc9840f.png\";","export default __webpack_public_path__ + \"static/media/cerebellum_mask.43c7312b.png\";","export default __webpack_public_path__ + \"static/media/hypothalamus_mask.38fa66f3.png\";","export default __webpack_public_path__ + \"static/media/medulla_oblongata_mask.9707525e.png\";","export default __webpack_public_path__ + \"static/media/mesencephalon_mask.c3e26ac9.png\";","export default __webpack_public_path__ + \"static/media/pons_mask.4543edcb.png\";","export default __webpack_public_path__ + \"static/media/thalamus_mask.40d616fa.png\";","export default __webpack_public_path__ + \"static/media/cerebral_cortex_mask.d6963f66.png\";","export default __webpack_public_path__ + \"static/media/motor_cortex_mask.31ae8071.png\";","export default __webpack_public_path__ + \"static/media/primary_sensory_cortex_mask.2bc90695.png\";","export default __webpack_public_path__ + \"static/media/congratulations.094c70c9.png\";","export default __webpack_public_path__ + \"static/media/empty-search-image.cd8b0f47.png\";","export default __webpack_public_path__ + \"static/media/product-login.25f91b6c.png\";","export default __webpack_public_path__ + \"static/media/image-articleHero-2000x3000-png.3d226b40.png\";","export default __webpack_public_path__ + \"static/media/image-cardThemeBasicExample-2000x3000-png.084f5af0.png\";","export default __webpack_public_path__ + \"static/media/image-choiceListTestExample-2000x3000-png.275d9d06.png\";","export default __webpack_public_path__ + \"static/media/image-dashboardSections-2000x3000-png.f2e365ae.png\";","export default __webpack_public_path__ + \"static/media/image-fullBody-2000x3000-png.79b8c244.png\";","export default __webpack_public_path__ + \"static/media/image-halfSkeleton-2000x3000-png.3d7c6b79.png\";","export default __webpack_public_path__ + \"static/media/image-previousExam-2000x3000-png.2758263c.png\";","export default __webpack_public_path__ + \"static/media/image-skeleton-2000x3000-png.c6eeaae7.png\";","export default __webpack_public_path__ + \"static/media/image-trainingResults-2000x3000-png.b03482e0.png\";","export default __webpack_public_path__ + \"static/media/image-videoThumbnailExample-2000x3000-png.d1daf258.png\";","var map = {\n\t\"./anonymous-dog.png\": [\n\t\t142\n\t],\n\t\"./chatting-people.png\": [\n\t\t219\n\t],\n\t\"./degrees37/congratulations.png\": [\n\t\t429\n\t],\n\t\"./degrees37/empty-search-image.png\": [\n\t\t430\n\t],\n\t\"./degrees37/hint-image.svg\": [\n\t\t1252,\n\t\t5\n\t],\n\t\"./degrees37/icons/logo-light.svg\": [\n\t\t1253,\n\t\t6\n\t],\n\t\"./degrees37/icons/logo.svg\": [\n\t\t1254,\n\t\t7\n\t],\n\t\"./degrees37/iconsColor/error-403.svg\": [\n\t\t1255,\n\t\t8\n\t],\n\t\"./degrees37/iconsColor/error.svg\": [\n\t\t1256,\n\t\t9\n\t],\n\t\"./degrees37/iconsColor/task-correct-state.svg\": [\n\t\t1257,\n\t\t10\n\t],\n\t\"./degrees37/iconsColor/task-partially-correct-state-empty.svg\": [\n\t\t1258,\n\t\t11\n\t],\n\t\"./degrees37/iconsColor/task-partially-correct-state.svg\": [\n\t\t1259,\n\t\t12\n\t],\n\t\"./degrees37/iconsColor/task-wrong-state.svg\": [\n\t\t1260,\n\t\t13\n\t],\n\t\"./degrees37/login.svg\": [\n\t\t1261,\n\t\t14\n\t],\n\t\"./degrees37/product-login.png\": [\n\t\t431\n\t],\n\t\"./dog-mirror.png\": [\n\t\t432\n\t],\n\t\"./dog-with-balls.png\": [\n\t\t217\n\t],\n\t\"./dog.png\": [\n\t\t143\n\t],\n\t\"./dog2.png\": [\n\t\t141\n\t],\n\t\"./dog4.png\": [\n\t\t220\n\t],\n\t\"./ellipse.png\": [\n\t\t433\n\t],\n\t\"./girl-with-menu.png\": [\n\t\t434\n\t],\n\t\"./gril-with-barbell.png\": [\n\t\t215\n\t],\n\t\"./icons/apostrophe.svg\": [\n\t\t1262,\n\t\t15\n\t],\n\t\"./icons/arrow.svg\": [\n\t\t1263,\n\t\t16\n\t],\n\t\"./icons/bookmark-filled.svg\": [\n\t\t1264,\n\t\t17\n\t],\n\t\"./icons/bookmark-outlined.svg\": [\n\t\t1265,\n\t\t18\n\t],\n\t\"./icons/bookmark-pin.svg\": [\n\t\t1266,\n\t\t19\n\t],\n\t\"./icons/bookmark.svg\": [\n\t\t1267,\n\t\t20\n\t],\n\t\"./icons/check.svg\": [\n\t\t1268,\n\t\t21\n\t],\n\t\"./icons/chevron.svg\": [\n\t\t1269,\n\t\t22\n\t],\n\t\"./icons/clock.svg\": [\n\t\t1270,\n\t\t23\n\t],\n\t\"./icons/close.svg\": [\n\t\t1271,\n\t\t24\n\t],\n\t\"./icons/completed.svg\": [\n\t\t1272,\n\t\t25\n\t],\n\t\"./icons/crate.svg\": [\n\t\t1273,\n\t\t26\n\t],\n\t\"./icons/dark-lock.svg\": [\n\t\t307\n\t],\n\t\"./icons/down-arrow-line.svg\": [\n\t\t1274,\n\t\t27\n\t],\n\t\"./icons/external.svg\": [\n\t\t1275,\n\t\t28\n\t],\n\t\"./icons/facebook.svg\": [\n\t\t1276,\n\t\t29\n\t],\n\t\"./icons/help-circle.svg\": [\n\t\t1277,\n\t\t30\n\t],\n\t\"./icons/info.svg\": [\n\t\t1278,\n\t\t31\n\t],\n\t\"./icons/left-arrow-line.svg\": [\n\t\t1279,\n\t\t32\n\t],\n\t\"./icons/linkedin.svg\": [\n\t\t1280,\n\t\t33\n\t],\n\t\"./icons/lock.svg\": [\n\t\t306\n\t],\n\t\"./icons/log-out.svg\": [\n\t\t1281,\n\t\t34\n\t],\n\t\"./icons/logo-mobile.svg\": [\n\t\t1282,\n\t\t35\n\t],\n\t\"./icons/menu.svg\": [\n\t\t1283,\n\t\t36\n\t],\n\t\"./icons/minus.svg\": [\n\t\t1284,\n\t\t37\n\t],\n\t\"./icons/more-vertical.svg\": [\n\t\t1285,\n\t\t38\n\t],\n\t\"./icons/pencil.svg\": [\n\t\t1286,\n\t\t39\n\t],\n\t\"./icons/play.svg\": [\n\t\t1287,\n\t\t40\n\t],\n\t\"./icons/plus.svg\": [\n\t\t1288,\n\t\t41\n\t],\n\t\"./icons/refresh.svg\": [\n\t\t1289,\n\t\t42\n\t],\n\t\"./icons/repeat.svg\": [\n\t\t1290,\n\t\t43\n\t],\n\t\"./icons/replay-current-step.svg\": [\n\t\t1291,\n\t\t44\n\t],\n\t\"./icons/right-arrow-line.svg\": [\n\t\t1292,\n\t\t45\n\t],\n\t\"./icons/search.svg\": [\n\t\t1293,\n\t\t46\n\t],\n\t\"./icons/twitter.svg\": [\n\t\t1294,\n\t\t47\n\t],\n\t\"./icons/user.svg\": [\n\t\t1295,\n\t\t48\n\t],\n\t\"./icons/volume.svg\": [\n\t\t1296,\n\t\t49\n\t],\n\t\"./icons/zoom-in.svg\": [\n\t\t1297,\n\t\t50\n\t],\n\t\"./icons/zoom-out.svg\": [\n\t\t1298,\n\t\t51\n\t],\n\t\"./iconsAnimated/arrows.svg\": [\n\t\t303\n\t],\n\t\"./iconsAnimated/figures.svg\": [\n\t\t304\n\t],\n\t\"./iconsAnimated/hint-dog.svg\": [\n\t\t173\n\t],\n\t\"./iconsAnimated/hint-message.svg\": [\n\t\t300\n\t],\n\t\"./iconsAnimated/logo-desktop.svg\": [\n\t\t123\n\t],\n\t\"./masks/brain.png\": [\n\t\t435\n\t],\n\t\"./masks/brain2/advanced-brain.png\": [\n\t\t436\n\t],\n\t\"./masks/brain2/brain_stem_mask.png\": [\n\t\t437\n\t],\n\t\"./masks/brain2/cerebellum_mask.png\": [\n\t\t438\n\t],\n\t\"./masks/brain2/hypothalamus_mask.png\": [\n\t\t439\n\t],\n\t\"./masks/brain2/medulla_oblongata_mask.png\": [\n\t\t440\n\t],\n\t\"./masks/brain2/mesencephalon_mask.png\": [\n\t\t441\n\t],\n\t\"./masks/brain2/pons_mask.png\": [\n\t\t442\n\t],\n\t\"./masks/brain2/thalamus_mask.png\": [\n\t\t443\n\t],\n\t\"./masks/cerebral_cortex_mask.png\": [\n\t\t444\n\t],\n\t\"./masks/motor_cortex_mask.png\": [\n\t\t445\n\t],\n\t\"./masks/primary_sensory_cortex_mask.png\": [\n\t\t446\n\t],\n\t\"./people-celebrating.png\": [\n\t\t221\n\t],\n\t\"./people-with-dog.png\": [\n\t\t218\n\t],\n\t\"./quote.png\": [\n\t\t216\n\t],\n\t\"./riktig/congratulations.png\": [\n\t\t447\n\t],\n\t\"./riktig/empty-search-image.png\": [\n\t\t448\n\t],\n\t\"./riktig/hint-image.svg\": [\n\t\t1299,\n\t\t52\n\t],\n\t\"./riktig/icons/logo-light.svg\": [\n\t\t1300,\n\t\t53\n\t],\n\t\"./riktig/icons/logo.svg\": [\n\t\t1301,\n\t\t54\n\t],\n\t\"./riktig/iconsColor/error-403.svg\": [\n\t\t1302,\n\t\t55\n\t],\n\t\"./riktig/iconsColor/error-payment.svg\": [\n\t\t1303,\n\t\t56\n\t],\n\t\"./riktig/iconsColor/error.svg\": [\n\t\t1304,\n\t\t57\n\t],\n\t\"./riktig/iconsColor/task-correct-state.svg\": [\n\t\t1305,\n\t\t58\n\t],\n\t\"./riktig/iconsColor/task-partially-correct-state-empty.svg\": [\n\t\t1306,\n\t\t59\n\t],\n\t\"./riktig/iconsColor/task-partially-correct-state.svg\": [\n\t\t1307,\n\t\t60\n\t],\n\t\"./riktig/iconsColor/task-wrong-state.svg\": [\n\t\t1308,\n\t\t61\n\t],\n\t\"./riktig/login.svg\": [\n\t\t1309,\n\t\t62\n\t],\n\t\"./riktig/product-login.png\": [\n\t\t449\n\t],\n\t\"./storybook/image-articleHero-2000x3000-png.png\": [\n\t\t450\n\t],\n\t\"./storybook/image-cardThemeBasicExample-2000x3000-png.png\": [\n\t\t451\n\t],\n\t\"./storybook/image-choiceListTestExample-2000x3000-png.png\": [\n\t\t452\n\t],\n\t\"./storybook/image-dashboardSections-2000x3000-png.png\": [\n\t\t453\n\t],\n\t\"./storybook/image-fullBody-2000x3000-png.png\": [\n\t\t454\n\t],\n\t\"./storybook/image-halfSkeleton-2000x3000-png.png\": [\n\t\t455\n\t],\n\t\"./storybook/image-previousExam-2000x3000-png.png\": [\n\t\t456\n\t],\n\t\"./storybook/image-skeleton-2000x3000-png.png\": [\n\t\t457\n\t],\n\t\"./storybook/image-trainingResults-2000x3000-png.png\": [\n\t\t458\n\t],\n\t\"./storybook/image-videoThumbnailExample-2000x3000-png.png\": [\n\t\t459\n\t],\n\t\"./superhero-dog.png\": [\n\t\t110\n\t],\n\t\"./termsAndConditionsPlaceholder-milg31nitn13oi93-700x525-png.png.png\": [\n\t\t222\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 865;\nmodule.exports = webpackAsyncContext;","import { IReactionDisposer, reaction, transaction } from \"mobx\";\nimport { IRoutedPage, isEmptyPath } from \"./index\";\nimport { IRouteBinding } from \"./IRouteBinding\";\nimport { IRouteDefinition } from \"./IRouteDefinition\";\n\nexport class RouteBinding implements IRouteBinding {\n \n private readonly unObserveChildPage: IReactionDisposer;\n private readonly unObserveState: IReactionDisposer | undefined;\n \n constructor(public readonly updateLocation: () => void, public readonly route: IRouteDefinition, private path : string, private model: TModel, private nextBinding: IRouteBinding | undefined) {\n this.unObserveChildPage = reaction(() => model.childPage, newChildPage => {\n transaction(() => {\n if (this.nextBinding) {\n this.nextBinding.destroy();\n this.nextBinding = undefined;\n }\n\n if (!newChildPage)\n return;\n\n this.nextBinding = this.route.bindFirstMatchingChildToModel(updateLocation, newChildPage);\n updateLocation();\n });\n });\n\n if (!nextBinding) {\n this.unObserveState = reaction(() => this.route.getModelState(model), newState => {\n updateLocation();\n });\n }\n }\n\n getLocation(): { path: string, hash: string } {\n if (this.nextBinding) {\n const childLocation = this.nextBinding.getLocation();\n return { path: this.path + childLocation.path, hash: childLocation.hash };\n }\n return { path: this.path, hash: this.route.getModelState(this.model) };\n }\n\n destroy() {\n this.unObserveChildPage();\n \n if (this.unObserveState)\n this.unObserveState();\n \n if (this.nextBinding)\n this.nextBinding.destroy();\n }\n\n async update(remainingPath: string, query: string, hash: string) {\n if (this.nextBinding) {\n if (!await this.nextBinding.tryUpdate(remainingPath, query, hash)) {\n this.nextBinding.destroy();\n this.nextBinding = undefined;\n this.model.removeChildPage();\n }\n }\n if (!this.nextBinding) {\n this.nextBinding = await this.route.bindFirstMatchingChildToPath(this.updateLocation, this.model, remainingPath, query, hash);\n if(!this.nextBinding && !isEmptyPath(remainingPath)) {\n await this.model.handleInvalidRoute();\n }\n }\n if (!this.nextBinding)\n this.route.setModelState(this.model, hash);\n }\n\n async tryUpdate(remainingPath: string, query: string, hash: string) : Promise {\n \n if(remainingPath === this.path){\n return false;\n }\n \n if (remainingPath.startsWith(this.path)) {\n await this.update(remainingPath.substring(this.path.length), query, hash);\n return true;\n }\n \n return false;\n }\n}\n","import { compile, Key as PathToRegexpKey, PathFunction, pathToRegexp } from \"path-to-regexp\";\nimport qs from \"qs\";\nimport { ConstructorOf } from \"../ConstructorOf\";\nimport { IChildRoute } from \"./IChildRoute\";\nimport { IRoute, IRoutedPage, isEmptyPath } from \"./index\";\nimport { IParentRoute } from \"./IParentRoute\";\nimport { IRouteBinding } from \"./IRouteBinding\";\nimport { IRouteDefinition } from \"./IRouteDefinition\";\nimport { RouteBinding } from \"./RouteBinding\";\n\nexport abstract class RouteDefinitionBase implements IRoute, IRouteDefinition {\n\n children: IChildRoute[] = [];\n \n protected constructor(private stateAccessor?: { get: (page: TModel) => string, set: (page: TModel, state: string) => void }) {\n }\n\n addRoute(path: string, modelConstructor: ConstructorOf, modelFactory: (currentModel: TModel, params: TNewParams, query: Partial) => Promise | TNewModel, paramsSelector?: (page: TNewModel) => TNewParams, stateAccessor?: { get: (page: TNewModel) => string, set: (page: TNewModel, state: string) => void }): RouteDefinition {\n const route = new RouteDefinition(this, path, modelConstructor, modelFactory, paramsSelector, stateAccessor);\n this.children.push(route);\n return route;\n }\n\n abstract getPath(params: TParentParams, queryParams?: Partial): string;\n\n public async bindFirstMatchingChildToPath(updateLocation: () => void, model: TModel, remainingPath: string, query: string, hash: string) {\n for (const childRoute of this.children) {\n const binding = await childRoute.bindToPath(updateLocation, model, remainingPath, query, hash);\n if (binding) {\n return binding;\n }\n }\n return undefined;\n }\n\n public bindFirstMatchingChildToModel(updateLocation: () => void, model: IRoutedPage) {\n for (const childBindingDefinition of this.children) {\n let binding = childBindingDefinition.bindToModel(updateLocation, model);\n if (binding)\n return binding;\n }\n return undefined;\n }\n\n getModelState(model: TModel): string {\n return this.stateAccessor && this.stateAccessor.get(model) || \"\";\n }\n\n setModelState(model: TModel, state: string): void {\n this.stateAccessor && this.stateAccessor.set(model, state)\n }\n\n parseQuery(query: string) {\n const parsed = qs.parse(query);\n return parsed as unknown as Partial;\n }\n}\n\n\n\nexport class RouteDefinition extends RouteDefinitionBase implements IChildRoute {\n readonly pathRegExp: RegExp;\n readonly pathRegExpKeys: PathToRegexpKey[] = [];\n readonly pathFactory: PathFunction;\n\n constructor(public readonly parentRoute: IParentRoute, public path: string, private modelConstructor: ConstructorOf, private modelFactory: (parent: TParentModel, params: TParams, query: Partial) => (Promise | TModel), private paramsSelector?: (model: TModel) => TParams, stateAccessor?: { get: (page: TModel) => string; set: (page: TModel, state: string) => void } | undefined) {\n super(stateAccessor);\n this.pathRegExp = pathToRegexp(path, this.pathRegExpKeys, { end: false });\n this.pathFactory = compile(path);\n }\n\n getPath(params: TParentParams & TParams, queryParams?: Partial) {\n const baseUrl = this.parentRoute.getPath(params) + this.pathFactory(params);\n \n if(queryParams) {\n const queryString = qs.stringify(queryParams, { addQueryPrefix: true });\n return `${baseUrl}${queryString}`\n }\n\n return baseUrl;\n }\n\n matchPath(path: string): {\n path: string;\n remainingPath: string;\n params: TParams;\n } | undefined {\n const match = this.pathRegExp.exec(path);\n if (!match)\n return;\n const params: {\n [k: string]: string;\n } = {};\n for (let i = 1; i < match.length; i++) {\n params[this.pathRegExpKeys[i - 1].name] = match[i];\n }\n \n return {\n path: match[0],\n remainingPath: path.substring(match[0].length),\n params: params as unknown as TParams,\n };\n }\n\n async bindToPath(updateLocation: () => void, parentModel: TParentModel, remainingPath: string, query: string, hash: string): Promise {\n const match = this.matchPath(remainingPath);\n if (!match)\n return;\n \n const model = await this.modelFactory(parentModel, match.params, this.parseQuery(query));\n const childBinding = await this.bindFirstMatchingChildToPath(updateLocation, model, match.remainingPath, query, hash);\n if (!childBinding && !isEmptyPath(match.remainingPath)) {\n await model.handleInvalidRoute();\n }\n if (!childBinding)\n this.setModelState(model, hash);\n return new RouteBinding(updateLocation, this, match.path, model, childBinding);\n }\n\n bindToModel(updateLocation: () => void, model: IRoutedPage) {\n if (model.constructor !== this.modelConstructor)\n return;\n\n let childBinding: IRouteBinding | undefined;\n if (model.childPage) {\n childBinding = this.bindFirstMatchingChildToModel(updateLocation, model.childPage);\n }\n\n return new RouteBinding(updateLocation, this, this.pathFactory(this.paramsSelector?.(model as TModel) ?? {}), model, childBinding);\n }\n}\n","import { History } from \"history\";\nimport { IHomeRoute, IRoutedPage, isEmptyPath } from \"./index\";\nimport { RouteBinding } from \"./RouteBinding\";\nimport { RouteDefinitionBase } from \"./RouteDefinition\";\n\nexport class HomeRouteDefinitionvoid} & {handleLocationChange: ()=>void}, TQuery> extends RouteDefinitionBase implements IHomeRoute {\n model: TModel | null = null;\n constructor(public modelFactory: (query: Partial) => Promise | TModel) {\n super();\n }\n \n async bind(history: History) {\n \n let updatingLocation = false;\n let updatingBindings = false;\n \n const updateLocation = () => {\n if (updatingBindings)\n return;\n \n let newLocation = binding.getLocation();\n if (!newLocation.path.startsWith(\"/\"))\n newLocation.path = \"/\" + newLocation.path;\n \n if (history.location.pathname.toLowerCase() != newLocation.path.toLowerCase()) {\n updatingLocation = true;\n try {\n history.push({pathname: newLocation.path, hash: newLocation.hash});\n } finally {\n updatingLocation = false;\n }\n } else if (history.location.hash != newLocation.hash) {\n updatingLocation = true;\n try {\n history.replace({ pathname: newLocation.path, hash: newLocation.hash });\n } finally {\n updatingLocation = false;\n }\n }\n };\n\n const query = history.location.search.substr(1);\n const model = await this.modelFactory(this.parseQuery(query));\n const childBinding = await this.bindFirstMatchingChildToPath(updateLocation, model, history.location.pathname, query, history.location.hash.substr(1));\n if (!childBinding && !isEmptyPath(history.location.pathname)) {\n await model.handleInvalidRoute();\n }\n const binding = new RouteBinding(updateLocation, this, \"\", model, childBinding);\n \n const unlisten = history.listen(async (location, action) => {\n model.handleLocationChange();\n if (updatingLocation)\n return;\n updatingBindings = true;\n try {\n await binding.update(location.pathname, location.search.substr(1), location.hash.substr(1));\n } finally {\n updatingBindings = false; \n }\n });\n \n model.activate();\n \n return {\n page : model,\n destroy: () => {\n unlisten();\n binding.destroy();\n }\n };\n }\n \n getPath(params: {}) {\n return \"\";\n }\n}\n","import { History } from \"history\";\nimport { ConstructorOf } from \"../ConstructorOf\";\nimport { HomeRouteDefinition } from \"./HomeRouteDefinition\";\n\nexport interface IRoutedPage {\n readonly childPage: IRoutedPage | undefined;\n removeChildPage(): void;\n handleInvalidRoute(): Promise;\n}\n\nexport interface IRoute {\n addRoute(path: string, modelConstructor: ConstructorOf, modelFactory: (currentModel: TModel, params: TNewParams, query: Partial) => Promise | TNewModel, paramsSelector?: (page: TNewModel) => TNewParams, stateAccessor?: { get: (page: TNewModel) => string, set: (page: TNewModel, state: string) => void }): IRoute\n getPath(params: TParentParams & TParams, queryParams?: Partial): string;\n}\n\nexport interface IHomeRoute extends IRoute {\n bind(history: History): Promise<{ page: TModel, destroy(): void }>\n}\n\nexport function route void} & {handleLocationChange: ()=>void}, TQuery>(modelFactory: (query: Partial) => Promise | TModel): IHomeRoute {\n return new HomeRouteDefinition(modelFactory);\n}\n\nexport function isEmptyPath(path:string) { return !path || path === '/'; }","import { action, computed, observable, reaction } from \"mobx\";\n\nexport enum FormState {\n Pending,\n Valid,\n Invalid\n}\n\nexport interface IFormField {\n readonly isValidating: boolean;\n readonly isPristine: boolean;\n readonly state: FormState;\n\n validate(): Promise;\n commit(): Promise;\n}\n\nexport class FormField implements IFormField {\n \n @observable.ref value: T | undefined;\n\n get isValidating(): boolean {\n return !!this._currentValidation;\n }\n\n @computed get isPristine() {\n return this.areEqual(this.value, this._pristineValue);\n }\n\n get isDirty() {\n return !this.isPristine;\n }\n \n @computed get state(): FormState {\n if (this._isPendingValidation)\n return FormState.Pending;\n if (this._currentValidation)\n return FormState.Pending;\n return this.errors.length === 0 ? FormState.Valid : FormState.Invalid;\n }\n\n @observable private _isPendingValidation = true;\n @observable.ref private _errors: ReadonlyArray = [];\n\n get errors(): ReadonlyArray {\n return this._errors;\n }\n\n @observable.ref private _pristineValue: T | undefined;\n @observable private _valueHasBeenCommitted : boolean = false;\n @observable.ref private _currentValidation : Promise | undefined;\n private _needsValidation: boolean = false;\n \n constructor(value: T | undefined, private validator : FormFieldValidator, private comparer? : (a : T, b : T) => boolean) {\n this.value = value;\n this._pristineValue = value;\n \n reaction(\n () => this.value, \n value => {\n if (this._valueHasBeenCommitted || !this._isPendingValidation){\n this.validate();\n }\n }, \n {\n delay: 250\n });\n }\n\n validate(): Promise {\n this._isPendingValidation = false;\n if (!this._currentValidation) {\n this._currentValidation = this._validate();\n }\n return this._currentValidation\n }\n\n @action\n reset(pristineValue? : T) {\n if (pristineValue !== undefined){\n this._pristineValue = pristineValue;\n }\n \n this.value = this._pristineValue;\n this._isPendingValidation = true;\n this._errors = [];\n this._valueHasBeenCommitted = false;\n }\n\n async commit() {\n if (this.state !== FormState.Invalid)\n await this.validate();\n this._valueHasBeenCommitted = true;\n }\n\n private async _validate() {\n try {\n do {\n this._needsValidation = false;\n const result = await this.validator(this.value);\n if (result !== true) {\n this._errors = result;\n return result;\n }\n } while (this._needsValidation)\n\n this._errors = [];\n return true;\n \n } finally {\n this._currentValidation = undefined;\n }\n }\n \n private areEqual(a : T | undefined, b : T | undefined) {\n if (a === b)\n return true;\n if (a === undefined || b === undefined)\n return false;\n if (this.comparer)\n return this.comparer(a, b);\n return false;\n }\n}\n\nexport type FormFieldValidator = (value : T | undefined) => (true | string[]) | PromiseLike;\n\n\nexport const NullValidator = (value : any) : true => true;\n\nfunction isEmpty(value : {} | string | number | undefined | null) {\n if (!value)\n return true;\n \n if (Array.isArray(value))\n return value.length === 0;\n \n return value.toString().length === 0\n}\n\nexport function RequiredFieldValidator(value: any | undefined) : true | string[] {\n if (!isEmpty(value)) {\n return true;\n } else {\n return [\"Field is required\"];\n }\n}\n","import { FormField, FormState, IFormField } from \"./formField\";\nimport { computed } from \"mobx\";\n\nexport type FormFields = { [P in keyof T]: FormField }\n\nexport class Form {\n\n @computed get isPristine() {\n return this.getFields().every(f => f.isPristine);\n }\n\n get isDirty() { return !this.isPristine; }\n\n @computed get state() {\n return this.getFields().reduce((s, f) => { switch (f.state) {\n case FormState.Pending:\n return s !== FormState.Invalid ? FormState.Pending : s;\n case FormState.Valid:\n return s;\n case FormState.Invalid:\n return FormState.Invalid;\n }}, FormState.Valid);\n }\n \n @computed get isValidating() {\n return this.getFields().some(f => f.isValidating);\n }\n \n readonly fields: FormFields;\n\n constructor(fields: FormFields) {\n this.fields = fields;\n }\n\n validate() {\n return Promise\n .all(this.getFields().map(f => f.validate()))\n .then(results => results.every(r => r === true));\n }\n \n private getFields() : readonly IFormField[] {\n const fields : IFormField[] = [];\n \n for(const f in this.fields) {\n if(!this.fields.hasOwnProperty(f))\n continue;\n fields.push(this.fields[f]);\n }\n return fields;\n }\n}","import { FormField } from \"./formField\";\nimport { Form } from \"./form\";\nimport { BindableFormFieldDefinition } from \"./bindableFormFieldDefinition\";\nimport { isLoaded } from \"../index\";\nimport { reaction } from \"mobx\";\nimport { BindableFormBuilder } from \"./bindableFormBuilder\";\n\nexport function bindableForm(metadata?: { [P in keyof TDto] : { required? : boolean }}) : BindableFormBuilder {\n return new BindableFormBuilder({}, metadata);\n}\n\nexport class BindableForm {\n \n get isPristine() { return this.inner.isPristine; }\n get isDirty() { return this.inner.isDirty; }\n \n readonly fields: { [P in keyof TSchema]: FormField };\n\n private readonly inner: Form;\n private readonly fieldBindings: [FormField, BindableFormFieldDefinition][] = [];\n\n constructor(private fieldDefinitions: { [P in keyof TSchema]: BindableFormFieldDefinition }, private dtoAccessor: () => Partial) {\n const fields: any = {};\n for (const p in fieldDefinitions) {\n if (!fieldDefinitions.hasOwnProperty(p))\n continue;\n\n const fieldDefinition = fieldDefinitions[p];\n const field = new FormField(undefined, fieldDefinition.validator);\n\n fields[p] = field;\n this.fieldBindings.push([field, fieldDefinition])\n }\n this.fields = fields;\n this.inner = new Form(fields);\n \n this.reset();\n reaction(dtoAccessor, dto => {\n this._reset(dto);\n });\n }\n\n reset() {\n return this._reset(this.dtoAccessor());\n }\n\n validate() {\n return this.inner.validate();\n }\n\n commit() {\n const dto = this.dtoAccessor();\n if (isLoaded(dto))\n this._commit(dto)\n }\n\n async validateAndCommit() {\n if (!await this.validate())\n return false;\n await this.commit();\n return true;\n }\n \n private async _reset(dto: Partial) {\n if (!dto) \n return;\n await Promise.all(this.fieldBindings.map(b => {\n return b[1].getValueFromDto(dto).then(v => {\n b[0].reset(v);\n });\n }));\n }\n\n private _commit(dto : Partial) {\n for (const binding of this.fieldBindings) {\n binding[1].updateDto(dto, binding[0].value);\n }\n }\n}","import { action, computed, isAction, observable, runInAction } from \"mobx\";\nimport { Command } from \"./Command\";\n\nexport function contextualCommand(execute : (context : TContext) => void, enabled? : (context : TContext) => boolean){\n return new ContextualCommand(execute, enabled);\n} \n\nexport class ContextualCommand {\n\n private readonly _canExecute: ((context: TContext) => boolean) | null;\n private readonly _execute: ((context: TContext) => Promise) | ((context: TContext) => TResult);\n\n @computed get isRunning() {\n return this._isRunning;\n }\n\n @observable private _isRunning: boolean = false;\n\n constructor(execute: ((context: TContext) => Promise) | ((context: TContext) => TResult), canExecute?: (context: TContext) => boolean) {\n this._execute = isAction(execute) ? execute : action(execute);\n this._canExecute = canExecute || null;\n }\n\n canExecute(context: TContext) {\n return !this._canExecute || this._canExecute(context);\n }\n\n @action.bound\n async execute(context: TContext): Promise {\n if (!this.canExecute(context))\n return Promise.reject();\n \n this._isRunning = true;\n try {\n return await this._execute(context);\n }\n finally {\n runInAction(() => this._isRunning = false);\n }\n }\n \n asCommand(contextAccessor: () => TContext, isEnabled: () => boolean) {\n return new Command(() => this.execute(contextAccessor()), () => isEnabled() && this.canExecute(contextAccessor()));\n }\n}\n","import { action, computed, isAction, observable } from \"mobx\";\nimport { ContextualCommand } from \"./ContextualCommand\";\n\nexport interface ICommand {\n readonly isEnabled : boolean;\n readonly isRunning : boolean;\n execute() : Promise\n}\n\nexport class Command {\n\n @computed get isEnabled() : boolean {\n return (!this._enabledValueAccessor || !!this._enabledValueAccessor()) && !this._isRunning;\n }\n\n @observable private _isRunning: boolean = false;\n @computed get isRunning() {\n return this._isRunning;\n }\n \n private readonly _enabledValueAccessor?: () => boolean;\n private readonly _execute: ((input:TIn) => Promise) | ((input:TIn) => TOut);\n \n constructor(execute: ((input:TIn) => Promise) | ((input:TIn) => TOut), enabled?: () => boolean) {\n this._execute = isAction(execute) ? execute : action(execute);\n this._enabledValueAccessor = enabled;\n }\n\n @action.bound async execute(input: TIn): Promise {\n const enabledValue = this._enabledValueAccessor && this._enabledValueAccessor();\n if (this._enabledValueAccessor && !enabledValue)\n return Promise.reject();\n\n this._isRunning = true;\n try {\n return await this._execute(input);\n } \n finally {\n this._isRunning = false;\n }\n }\n\n asContextualCommand() {\n return new ContextualCommand(c => this.execute(c), () => this.isEnabled);\n }\n}\n","import { MouseEvent } from \"react\";\nimport { Command } from \"./Command\";\nimport { ContextualCommand } from \"./ContextualCommand\";\n\nexport * from \"./Command\";\nexport * from \"./ContextualCommand\";\n\nexport function asyncCommand(execute : (input:TIn) => Promise, enabled? : () => boolean){\n return new Command(execute, enabled)\n}\n\nexport function command(execute : (input:TIn) => TOut, enabled? : () => boolean) {\n return new Command(execute, enabled);\n}\n\nexport function bindToCommand(command : Command) {\n return {\n onClick: (e : MouseEvent) => { e.preventDefault(); e.stopPropagation(); return command.execute() },\n disabled: !command.isEnabled\n }\n}\n\nexport function bindToContextualCommand(command : ContextualCommand, context : T) {\n return {\n onClick: (e : MouseEvent) => { e.preventDefault(); e.stopPropagation(); return command.execute(context) },\n disabled: !command.canExecute(context)\n }\n}","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { ReactElement, ReactNode } from 'react';\nimport { ConstructorOf } from \"./ConstructorOf\";\n\nconst viewFactories = new Map();\n\nexport const ContentView = observer((props: { content: object | null | undefined, children? : ReactNode }) => {\n\n if (!props.content) return props.children;\n\n let viewFactory = viewFactories.get(props.content.constructor);\n\n if (props.content && viewFactory) return viewFactory(props.content);\n else return
Please register view for {props.content.constructor.toString()}
\n})\n\nexport function registerContentView(contentConstructor: ConstructorOf, viewFactory: (content: T) => ReactElement) {\n viewFactories.set(contentConstructor, viewFactory);\n}\n\nexport const contentViewFor = (content: object) => ;","import { computed, observable } from \"mobx\";\nimport { IRoutedPage } from \"./routing\";\n\nexport interface IPage extends IRoutedPage {\n activate() : Promise;\n deactivate() : Promise\n}\n\nexport abstract class Page implements IPage {\n\n @observable.ref dialog : TDialog | undefined;\n\n @computed get childPage(): IPage | undefined {\n return this._childPage;\n }\n \n @observable.ref private _childPage: IPage | undefined = undefined;\n\n private isActive: boolean = false;\n\n async activate() {\n await this.beforeActivated();\n this.isActive = true;\n if (this._childPage)\n await this._childPage.activate();\n await this.onActivated();\n }\n\n async deactivate() {\n await this.beforeDeactivated();\n if (this._childPage)\n await this._childPage.deactivate();\n this.isActive = false;\n await this.onDeactivated();\n }\n\n async removeChildPage() {\n if (this._childPage && this.isActive)\n await this._childPage.deactivate();\n this._childPage = undefined;\n await this.onChildPageDeactivated();\n }\n\n async showChildPage(newPage: T) {\n if (this._childPage && this.isActive)\n await this._childPage.deactivate();\n this._childPage = newPage;\n if (this._childPage && this.isActive)\n await this._childPage.activate();\n return newPage;\n }\n\n async showModal(createDialog : (close : (result : TResult) => void) => TDialog) {\n return new Promise(r => {\n this.dialog = createDialog(result => {\n this.dialog = undefined;\n r(result);\n });\n });\n }\n\n async handleInvalidRoute() {\n await this.onInvalidRoute();\n }\n\n protected async onInvalidRoute() {\n }\n \n protected async beforeActivated() {\n }\n\n protected async onActivated() {\n }\n\n protected async beforeDeactivated() {\n }\n\n protected async onDeactivated() {\n }\n\n protected async onChildPageDeactivated() {\n \n }\n}\n","import { computed } from \"mobx\";\nimport { IRoutedPage } from \"../routing\";\n\nclass Navigation {\n\n @computed get selectedItem() {\n for (const i in this.items){\n if (!this.items.hasOwnProperty(i))\n continue;\n if (this.items[i].isActive)\n return this.items[i];\n }\n return undefined;\n }\n\n @computed get selectedItems() {\n return this.selectedItem ? [this.selectedItem] : [];\n }\n\n constructor(public readonly items : { [P in keyof T] : NavigationItem }) {\n\n }\n\n}\n\ntype NavigationPage = {\n readonly childPage: IRoutedPage | undefined;\n showChildPage(newPage: any) : void;\n removeChildPage() : void;\n};\n\nclass NavigationItem {\n\n @computed get isActive() {\n return (this.page.childPage && Object.getPrototypeOf(this.page.childPage).constructor === this.item) ||\n (this.page.childPage === undefined && this.item === undefined);\n }\n\n constructor(public readonly key : string, private page: NavigationPage, private item: (new () => IRoutedPage) | undefined) {\n }\n\n activate = () => {\n if (this.item)\n this.page.showChildPage(new this.item());\n else\n this.page.removeChildPage();\n }\n}\n\nexport function navigation IRoutedPage) | undefined}>(page : NavigationPage, items : T ) : Navigation {\n\n const navItems : { [P in keyof T]? : NavigationItem } = { };\n\n for (const i in items){\n if (!items.hasOwnProperty(i))\n continue;\n\n navItems[i] = new NavigationItem(i, page, items[i])\n }\n\n return new Navigation(navItems as any);\n}\n","import { observable } from \"mobx\";\n\nexport class List {\n \n @observable.ref selection: ReadonlyArray = [];\n @observable.ref items: ReadonlyArray = [];\n @observable.ref sortOrder : { readonly field : keyof T, readonly direction : \"descend\" | \"ascend\" } | undefined;\n \n get length() { return this.items.length; }\n\n push(item : T) {\n this.items = [...this.items, item];\n }\n\n removeItems(items: ReadonlyArray) {\n this.items = this.items.filter(i => items.indexOf(i) < 0);\n }\n\n prependNewItem(item: T) {\n this.items = [Object.assign(item, { isNew: true }), ...this.items];\n }\n\n prependNewItems(items: T[]) {\n const newItems = items.map(i => (Object.assign(i, { isNew: true })));\n this.items = [...newItems, ...this.items];\n }\n\n patchItem(item : T, patch : Partial){\n this.items = this.items.map((i : any) => i === item ? {...i, ...patch as any} : i)\n }\n \n field

(key : P) : keyof T {\n return key;\n }\n}\n","import { autorun, observable, runInAction, untracked } from \"mobx\";\nimport { asyncCommand } from \"../commands\";\nimport { List } from \"./List\";\n\nconst PAGE_SIZE: number = 50;\n\nexport class PaginatedList extends List {\n\n @observable private _currentPageNo: number = 1;\n get currentPageNo() {\n return this._currentPageNo;\n }\n\n @observable private _hasNextPage: boolean = false;\n get hasNextPage() {\n return this._hasNextPage;\n }\n\n @observable private _isLoadingFirstPage = 0;\n get isLoadingFirstPage() {\n return this._isLoadingFirstPage > 0;\n }\n\n @observable private _isLoadingNextPage = 0;\n get isLoadingNextPage() {\n return this._isLoadingNextPage > 0;\n }\n\n get isLoading() {\n return this.isLoadingFirstPage || this.isLoadingNextPage;\n }\n\n readonly loadNextPage = asyncCommand(() => this._loadNextPage(), () => this.hasNextPage);\n\n private reqId = 0;\n\n constructor(private load: (options: { skip: number, take: number }) => Promise>, public readonly pageSize = PAGE_SIZE) {\n super();\n autorun(this.loadFirstPage, { delay: 500 });\n }\n\n loadFirstPage = async (): Promise => {\n\n const isLoadingFirstPage = untracked(() => this._isLoadingFirstPage);\n\n this._isLoadingFirstPage = isLoadingFirstPage + 1;\n try {\n this._currentPageNo = 1;\n await this.loadMoreItems([], 1);\n } finally {\n this._isLoadingFirstPage--;\n }\n };\n\n private async _loadNextPage(): Promise {\n\n const isLoadingNextPage = untracked(() => this._isLoadingNextPage);\n\n this._isLoadingNextPage = isLoadingNextPage + 1;\n try {\n this._currentPageNo++;\n await this.loadMoreItems(this.items, this.currentPageNo);\n } finally {\n this._isLoadingNextPage--;\n }\n };\n\n private async loadMoreItems(currentItems: ReadonlyArray, currentPage: number): Promise {\n\n const currentReqId = ++this.reqId;\n\n let newItems = await this.load({\n skip: (currentPage - 1) * this.pageSize,\n take: this.pageSize + 1\n });\n\n if (currentReqId !== this.reqId)\n return;\n\n runInAction(() => {\n if (newItems.length > this.pageSize) {\n this._hasNextPage = true;\n newItems = newItems.slice(0, this.pageSize);\n } else {\n this._hasNextPage = false;\n }\n this.items = currentItems.concat(newItems)\n });\n }\n}","import { autorun, reaction } from \"mobx\";\n\nexport * from \"./routing\";\nexport * from \"./forms\";\nexport * from \"./commands\";\nexport * from \"./dialogs\";\nexport * from \"./ContentView\";\nexport * from \"./Page\";\nexport * from \"./navigation\";\nexport * from \"./lists\";\n\nexport interface IProperty {\n get: () => T;\n set: (v: T) => void;\n}\n\nexport function property(model: T, propertyName: K) {\n return {\n get: () => model[propertyName],\n set: (value: T[K]) => (model[propertyName] = value)\n };\n}\n\nexport function bindTo(property: {\n get: () => T;\n set: (value: T) => void;\n}) {\n return {\n value: property.get(),\n onChange: (value: T) =>\n property.set(value)\n };\n}\n\ntype LoadingType = \"Loading\";\ntype LoadingErrorType = \"LoadingError\";\n\nexport const Loading : LoadingType = \"Loading\";\nexport const LoadingError : LoadingErrorType = \"LoadingError\";\n\nexport type Deferred = T | LoadingType | LoadingErrorType;\n\nexport function bindToApi(\n p: IProperty>,\n api: () => Promise,\n delay?: number\n) {\n let reqId = 0;\n\n return autorun(\n async () => {\n reqId++;\n const currentReqId = reqId;\n\n p.set(\"Loading\");\n\n try {\n const v = await api();\n\n if (currentReqId == reqId) {\n p.set(v);\n }\n } catch (e) {\n p.set(LoadingError);\n }\n },\n {\n delay: delay || 250\n }\n );\n}\n\nexport function loadedOrUndefined(model: Deferred): T | undefined {\n if (model == Loading || model == LoadingError) return undefined;\n return model;\n}\n\nexport function ensureLoaded(expr: () => Deferred): Promise {\n return new Promise((resolve, reject) => {\n let value = expr();\n if (isLoaded(value)) {\n resolve(value);\n return;\n }\n\n let dispose = reaction(expr, model => {\n if (model == LoadingError) reject(model);\n else if (isLoaded(model)) resolve(model);\n dispose();\n });\n });\n}\n\nexport function isLoaded(model: Deferred): model is T {\n return !(model == Loading || model === LoadingError);\n}\n\nexport function bindToDataSource(dataSource : Deferred){\n return {\n loading: dataSource == \"Loading\",\n dataSource: isLoaded(dataSource) ? dataSource : undefined\n }\n}","import { action, observable } from \"mobx\";\n\nexport class Popup {\n @observable isOpen = false;\n\n constructor(private onClose?: () => void, private onOpen?: () => void) {}\n\n @action.bound\n show() {\n this.isOpen = true;\n this.onOpen && this.onOpen();\n }\n\n @action.bound\n close() {\n this.isOpen = false;\n this.onClose && this.onClose();\n }\n\n @action.bound\n toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.show();\n }\n }\n\n @action.bound\n setIsOpen(isOpen: boolean) {\n if (isOpen) {\n this.show();\n } else {\n this.close();\n }\n }\n}\n","import Cookies from \"js-cookie\";\nimport { computed, observable, action } from \"mobx\";\nimport { Popup } from \"../../shared/components/popup/Popup\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ArticleReferenceDto } from \"../../types/config/dto/ArticleReferenceDto\";\nimport { ConfigDto } from \"../../types/config/dto/ConfigDto\";\n\nexport const AcceptedCookiesConsentValue = \"true\";\n\nexport const NecessaryCookieName = \"ga_necessary_consent\";\nexport const AnalysisCookieName = \"ga_analysis_consent\";\n\nexport class CookiesConsentViewModel {\n consentText?: string;\n\n privacyPolicyText?: string;\n\n privacyPolicyArticle?: ArticleReferenceDto;\n\n @observable public cookiesDetailsModal = new Popup();\n\n @observable public cookiesConsentState = Cookies.get(NecessaryCookieName);\n\n @observable public selectedCookies = [NecessaryCookieName];\n\n @computed get shouldCookiesConsentBeOpen() {\n return this.cookiesConsentState !== AcceptedCookiesConsentValue;\n }\n\n constructor(private config: ConfigDto, private gtm: IGtmService) {\n this.consentText = this.config.cookiesConsentText;\n this.privacyPolicyText = this.config.privacyPolicyText;\n this.privacyPolicyArticle = this.config.privacyPolicyArticle;\n }\n\n @action.bound\n acceptCookies(cookieNames: string[]) {\n cookieNames.forEach(cookieName => {\n Cookies.set(cookieName, AcceptedCookiesConsentValue, { expires: 150 });\n });\n\n this.gtm.pushCookieConsentChanged();\n this.cookiesConsentState = AcceptedCookiesConsentValue;\n }\n\n @action.bound\n toggleCookie(cookieName: string, value: boolean) {\n if (value) {\n this.selectedCookies.push(cookieName);\n } else {\n this.selectedCookies = this.selectedCookies.filter(selectedCookie => selectedCookie !== cookieName);\n }\n }\n}\n","import isNil from \"lodash/isNil\";\n\nexport const unsafe_cast = {\n ElementToHTMLElement: (node: Element) => node as HTMLElement,\n};\n\nexport const assertUnreachable = (neverValue?: never) => {\n throw new TypeError(`Didn't expect to get here (exhaustiveness-check), Unexpected value: ${neverValue}`);\n};\n\nexport const isDefined = (o: T | undefined | null): o is T => {\n return !isNil(o);\n};\n\ntype Flavoring = { _type?: FlavorT };\nexport type Flavor = T & Flavoring;\n\ntype Branding = { _type: BrandT };\nexport type Brand = T & Branding;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type Nominal = T extends object ? Flavor : Brand;\n","import { computed } from \"mobx\";\nimport { Popup } from \"../../shared/components/popup/Popup\";\nimport { CourseStructure } from \"../../shared/contentStructure/CourseStructure\";\nimport { IUrl } from \"../../shared/models/Url\";\nimport { Product } from \"../../shared/stores/Product\";\nimport { ProductStore } from \"../../shared/stores/ProductStore\";\nimport { isDefined } from \"../../shared/typeUtils\";\nimport { ConfigDto } from \"../../types/config/dto/ConfigDto\";\nimport { TranslationsDto } from \"../../types/translations/dto/TranslationsDto\";\nimport { DynamicLink, SourceLink, StaticLink } from \"../header/HeaderViewModel\";\n\ntype FooterContext =\n | { context: \"productNest\"; productStore: ProductStore; config: ConfigDto }\n | { context: \"product\"; product: Product }\n | { context: \"course\"; product: Product; course: CourseStructure };\n\ntype LinksSection = {\n id: string;\n translation: keyof TranslationsDto;\n links: SourceLink[];\n accordion: Popup;\n};\n\nconst isProductWithStudiesType = (product: Product): product is Product & { studiesType: string } => {\n if (!product.studiesType) {\n return false;\n }\n\n return true;\n};\n\nexport class FooterViewModel {\n readonly currentYear = new Date().getFullYear();\n\n @computed get termsAndConditionsPageLink(): StaticLink | undefined {\n return {\n translation: \"termsAndConditions\",\n id: \"termsAndConditions\",\n href: this.url.toTermsAndConditionsPage(),\n };\n }\n\n @computed get colorVersion() {\n return this.activeCourse?.color?.colorVersion;\n }\n\n @computed get shouldShowGyldendalLogo() {\n return this.currentContext.context !== \"productNest\";\n }\n\n @computed get logoLink(): StaticLink {\n if (this.currentContext.context === \"course\") {\n return {\n id: \"toDashboard\",\n href: this.url.toDashboardPage(this.currentContext.course.urlParams),\n translation: \"goToDashboard\",\n };\n }\n\n if (this.currentContext.context === \"product\") {\n return {\n id: \"toProductPage\",\n href: this.url.toProductPage(this.currentContext.product.productParams),\n translation: \"goToHomePage\",\n };\n }\n\n return {\n id: \"toProductNest\",\n href: this.url.toProductNestPage(),\n translation: \"goToProductOverview\",\n };\n }\n\n @computed private get studiesType() {\n if (this.currentContext.context === \"productNest\") {\n return undefined;\n }\n\n return this.currentContext.product.studiesType;\n }\n\n @computed get studiesTypeLink(): DynamicLink | undefined {\n if (!this.studiesType || this.currentContext.context === \"productNest\") {\n return;\n }\n\n return {\n title: this.studiesType,\n href: this.url.toProductPage(this.currentContext.product.productParams),\n id: \"toProductPage\",\n };\n }\n\n @computed private get exploreSection(): LinksSection | undefined {\n const links: SourceLink[] = [];\n const activeProduct = this.app.productStore.activeProduct;\n\n if (!activeProduct) {\n return;\n }\n\n const { productAuthorsHero, shouldShowProductArticleList, productParams } = activeProduct;\n\n if (productAuthorsHero) {\n links.push({\n source: \"static\",\n href: this.url.toAuthorsForProductPage(productParams),\n translation: \"meetTheAuthors\",\n id: \"Meet the authors\",\n });\n }\n\n if (shouldShowProductArticleList) {\n links.push({\n source: \"static\",\n href: this.url.toProductArticleListPage(productParams),\n translation: \"articles\",\n id: \"Articles\",\n });\n }\n\n if (links.length === 0) {\n return;\n }\n\n return {\n id: \"Explore\",\n translation: \"explore\",\n links,\n accordion: new Popup(),\n };\n }\n\n @computed private get practicalSection(): LinksSection | undefined {\n const { practicalArticles } = this.app.config;\n if (!practicalArticles) {\n return undefined;\n }\n\n const articlesLinks: SourceLink[] = practicalArticles.map(article => ({\n source: \"dynamic\",\n title: article.title,\n href: this.url.toArticlePage({ id: article.id, slug: article.slug }),\n id: article.id,\n }));\n\n const aboutUsLink: SourceLink[] = [\n {\n source: \"static\",\n href: this.url.toAboutUsPage(),\n translation: \"aboutUs\",\n id: \"aboutUs\",\n },\n ];\n\n const links: SourceLink[] = aboutUsLink.concat(articlesLinks);\n\n if (links.length === 0) {\n return;\n }\n\n return {\n id: \"Practical\",\n translation: \"practical\",\n links,\n accordion: new Popup(),\n };\n }\n\n @computed private get studiesSection(): LinksSection | undefined {\n if (this.hideProductList) {\n return;\n }\n\n const productLinks: SourceLink[] = this.app.productStore.products.filter(isProductWithStudiesType).map(p => ({\n source: \"dynamic\",\n title: p.studiesType,\n href: this.url.toProductPage(p.productParams),\n id: p.id,\n }));\n\n if (productLinks.length === 0) {\n return;\n }\n\n return {\n id: \"Studies\",\n translation: \"studies\",\n links: productLinks,\n accordion: new Popup(),\n };\n }\n\n @computed get linkSections(): LinksSection[] {\n const sections: (LinksSection | undefined)[] = [];\n\n if (this.currentContext.context === \"productNest\") {\n sections.push(this.practicalSection);\n sections.push(this.studiesSection);\n } else {\n sections.push(this.exploreSection);\n sections.push(this.practicalSection);\n sections.push(this.studiesSection);\n }\n\n return sections.filter(isDefined);\n }\n\n @computed get feedbackButtonLink() {\n return this.activeCourse?.feedbackButtonLink;\n }\n\n @computed get currentContext(): FooterContext {\n if (!this.activeProduct) {\n return { context: \"productNest\", config: this.app.config, productStore: this.app.productStore };\n }\n\n if (!this.activeCourse) {\n return { context: \"product\", product: this.activeProduct };\n }\n\n return { context: \"course\", course: this.activeCourse, product: this.activeProduct };\n }\n\n @computed private get activeProduct() {\n return this.app.productStore.activeProduct;\n }\n\n @computed private get activeCourse() {\n return this.activeProduct?.courseStructure;\n }\n\n @computed private get hideProductList() {\n return this.app.config.hideProductList;\n }\n\n constructor(private url: IUrl, private app: { productStore: ProductStore; config: ConfigDto }) {}\n}\n","// This code was generated by a Reinforced.Typings tool. \n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport abstract class RouteConfiguration\n{\n\tpublic static Api: string = `/api`;\n\tpublic static HealthCheck: string = `/api/health`;\n\tpublic static Init: string = `/api/init`;\n\tpublic static Ping: string = `/api/ping`;\n\tpublic static Logout: string = `/logout`;\n\tpublic static PostLogout: string = `/post-logout`;\n\tpublic static Login: string = `/login`;\n\tpublic static ConfigScript: string = `/config.js`;\n\tpublic static RobotsTxt: string = `/robots.txt`;\n\tpublic static Sitemap: string = `/sitemap.xml`;\n\tpublic static TibetUserProfile: string = `https://tibet.gyldendal.no/user/edit?site=ga_riktig`;\n\tpublic static TibetUserProfileBPN: string = `https://tibet.gyldendal.no/user/edit?site=37grader`;\n\tpublic static GyldendalPage: string = `https://www.gyldendal.no`;\n\tpublic static Articles: string = `/artikler`;\n\tpublic static Lessons: string = `/steg`;\n\tpublic static Themes: string = `/temaer`;\n\tpublic static ProductNest: string = `/`;\n\tpublic static SiteSearch: string = `/sok`;\n\tpublic static Dashboard: string = `/forside`;\n\tpublic static Bookmarks: string = `/bokmerker`;\n\tpublic static LoginPage: string = `/loggInn`;\n\tpublic static TrainingGroundPage: string = `/overom`;\n\tpublic static PreviousExamsPage: string = `/eksamener`;\n\tpublic static AuthorsForProductPage: string = `/motForfatterne`;\n\tpublic static TermsAndConditions: string = `/plattform/vilkar-og-betingelser`;\n\tpublic static AboutUs: string = `/plattform/om-oss`;\n\tpublic static BuyRedirect: string = `/redirecting-to-purchase`;\n\tpublic static PurchaseConfirmation: string = `/purchase-confirmation`;\n}\n","import { action, observable, onBecomeObserved } from \"mobx\";\nimport { BackendApi } from \"../../../shared/api/BackendApi\";\nimport { ArticleListItemDto } from \"../../../types/articles/dto/ArticleListItemDto\";\nimport { AuthorDto } from \"../../../types/shared/dto/AuthorDto\";\n\nexport type AuthorArticles = { _type: \"unloaded\" } | { _type: \"loaded\"; articles?: ArticleListItemDto[] };\n\nexport class AuthorInfo {\n @observable authorDetails: AuthorArticles = {\n _type: \"unloaded\",\n };\n\n constructor(private backendApi: BackendApi, public author: AuthorDto) {\n onBecomeObserved(this, \"authorDetails\", async () => {\n await this.setAuthorDetails(author.slug);\n });\n }\n\n @action.bound\n private async setAuthorDetails(slug: string) {\n const authorDetails = await this.backendApi.getAuthor({ slug });\n this.authorDetails = { _type: \"loaded\", articles: authorDetails.articles };\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { AuthorInfo } from \"../../../pages/authorsForProduct/authorInfo/AuthorInfo\";\nimport { AuthorDto } from \"../../../types/shared/dto/AuthorDto\";\nimport { BackendApi } from \"../../api/BackendApi\";\nimport { Popup } from \"../popup/Popup\";\n\nexport class AuthorsSliderViewModel {\n @observable authors?: AuthorDto[] = [];\n\n @observable authorInfoPopup = new Popup();\n\n @observable private author?: AuthorDto;\n\n @computed get authorInfo() {\n if (!this.author) {\n return;\n }\n\n return new AuthorInfo(this.backendApi, this.author);\n }\n\n constructor(private backendApi: BackendApi, authors?: AuthorDto[]) {\n this.authors = authors;\n }\n\n @action.bound\n setAuthor(slug: string) {\n if (this.authors) {\n this.author = this.authors.find(author => author.slug === slug);\n }\n }\n}\n","import uniqueId from \"lodash/uniqueId\";\n\nexport class HttpError extends Error {\n public id = uniqueId();\n\n constructor(public code: number, public message: string) {\n super(message);\n }\n}\n\nexport class PageNotFoundError extends HttpError {\n constructor(message: string) {\n super(404, message);\n }\n}\n\nexport const isHttpError = (error: unknown): error is HttpError => error instanceof HttpError;\n","import { IReactionDisposer, reaction, observable } from \"mobx\";\nimport { Page } from \"react-mvvm\";\nimport { ILanguageService } from \"../shared/services/LanguageService\";\n\nexport abstract class TranslatedPage extends Page {\n subscription?: IReactionDisposer;\n\n @observable public languageService: ILanguageService;\n\n constructor(languageService: ILanguageService) {\n super();\n this.languageService = languageService;\n this.registerLanguageChangeHandle();\n }\n\n abstract onLanguageChange(): Promise;\n\n registerLanguageChangeHandle() {\n this.subscription = reaction(\n () => this.languageService.lang,\n () => this.onLanguageChange()\n );\n }\n\n async onDeactivated() {\n this.subscription && this.subscription();\n }\n}\n","import { observable } from \"mobx\";\nimport { IErrorService } from \"../shared/services/ErrorService\";\nimport { ILanguageService } from \"../shared/services/LanguageService\";\nimport { PageNotFoundError } from \"../shared/services/errors/HttpError\";\nimport { TranslatedPage } from \"./TranslatedPage\";\n\n// This is a base page for all the views that are children of the app that do not report to GTM on activation.\nexport abstract class BasePage extends TranslatedPage {\n constructor(languageService: ILanguageService, public errorService: IErrorService) {\n super(languageService);\n }\n\n @observable isLoading = true;\n\n protected abstract loadData(): Promise;\n\n async onLanguageChange() {\n await this.loadData();\n }\n\n // Loading data happens in beforeActivated, so that data is first loaded in parent view model, then child, etc.\n async beforeActivated() {\n await this.loadData().catch(e => this.errorService.showErrorSplash(e));\n await super.beforeActivated();\n }\n\n async onActivated() {\n this.isLoading = false;\n await super.onActivated();\n }\n\n async onInvalidRoute() {\n this.errorService.showErrorSplash(new PageNotFoundError(\"Page Not Found\"));\n }\n}\n","import { IErrorService } from \"../shared/services/ErrorService\";\nimport { IGtmService } from \"../shared/services/GtmService\";\nimport { ILanguageService } from \"../shared/services/LanguageService\";\nimport { BasePage } from \"./BasePage\";\n\n// This is a base page for all the views that are children of the app that do report to GTM on activation.\nexport abstract class GtmBasePage extends BasePage {\n constructor(languageService: ILanguageService, protected gtm: IGtmService, public errorService: IErrorService) {\n super(languageService, errorService);\n }\n\n async onActivated() {\n this.gtm.pushPageViewed();\n await super.onActivated();\n }\n}\n","import { computed, observable } from \"mobx\";\nimport { BackendApi } from \"../../shared/api/BackendApi\";\nimport { AuthorsSliderViewModel } from \"../../shared/components/authorsSlider/AuthorsSliderViewModel\";\nimport { isDefined } from \"../../shared/typeUtils\";\nimport { AboutUsDto } from \"../../types/aboutus/dto/AboutUsDto\";\nimport { App } from \"../App\";\nimport { GtmBasePage } from \"../GtmBasePage\";\n\nexport class AboutUsViewModel extends GtmBasePage {\n @observable data?: AboutUsDto;\n\n @computed get authorsSliderViewModel() {\n return new AuthorsSliderViewModel(this.backendApi, this.data?.authorsOfProductList);\n }\n\n @computed get products() {\n const productIdsInOrder = this.app.config.products.productIds;\n const { products } = this.app.productStore;\n\n return productIdsInOrder.map(productId => products.find(product => product.id === productId)).filter(isDefined);\n }\n\n constructor(private app: App, private backendApi: BackendApi) {\n super(app.languageService, app.gtm, app);\n }\n\n protected async loadData() {\n this.data = await this.app.backendApi.getAboutUs({});\n this.isLoading = false;\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { BackendApi } from \"../../../shared/api/BackendApi\";\nimport { Popup } from \"../../../shared/components/popup/Popup\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../../shared/services/NavigationService\";\nimport { ArticleDto } from \"../../../types/articles/dto/ArticleDto\";\nimport { AuthorDto } from \"../../../types/shared/dto/AuthorDto\";\nimport { GtmBasePage } from \"../../GtmBasePage\";\nimport { AuthorInfo } from \"../../authorsForProduct/authorInfo/AuthorInfo\";\nimport { ArticleBuySectionViewModel } from \"./articleBuySection/ArticleBuySectionViewModel\";\nimport { ArticleLoginSectionViewModel } from \"./articleLoginSection/ArticleLoginSectionViewModel\";\n\nexport class ArticleViewModel extends GtmBasePage {\n @observable authorInfoPopup = new Popup();\n\n @observable article?: ArticleDto;\n\n @observable private selectedAuthor?: AuthorDto;\n\n @computed get authorInfo() {\n if (!this.selectedAuthor) {\n return;\n }\n\n return new AuthorInfo(this.backendApi, this.selectedAuthor);\n }\n\n constructor(\n public articleSlug: string,\n public languageService: ILanguageService,\n public errorService: IErrorService,\n private backendApi: BackendApi,\n public navigationService: ILowLevelNavigationService,\n gtm: IGtmService,\n public actionSection?: ArticleLoginSectionViewModel | ArticleBuySectionViewModel\n ) {\n super(languageService, gtm, errorService);\n }\n\n protected async loadData() {\n this.article = await this.backendApi.getArticle({ slug: this.articleSlug });\n this.isLoading = false;\n }\n\n @action.bound\n setSelectedAuthor(author: AuthorDto) {\n this.selectedAuthor = author;\n this.authorInfoPopup.show();\n }\n}\n","import { PaymentSidePanelViewModel } from \"../../../shared/paymentDialog/PaymentSidePanelViewModel\";\n\nexport class ArticleBuySectionViewModel {\n readonly type = \"BUY\";\n\n constructor(public paymentSidePanelViewModel: PaymentSidePanelViewModel) {}\n}\n","import { action, computed, observable } from \"mobx\";\nimport { isDefined } from \"../../typeUtils\";\nimport { SelectListItem } from \"./Select\";\n\nexport class SelectViewModel {\n @observable private _items: SelectListItem[];\n\n @observable private _selectedItems: T[];\n\n get placeholder() {\n if (this._items.length === 0) {\n return;\n }\n\n return this._items[0].label;\n }\n\n // Source: https://stackoverflow.com/questions/35929369/mobx-observable-array-does-not-display-correctly\n @computed get value() {\n return this._selectedItems.slice();\n }\n\n @computed get valueWithLabels() {\n return this.value\n .map(selectedItem => this.availableItems.find(item => item.value === selectedItem))\n .filter(isDefined);\n }\n\n @computed get availableItems() {\n return this._items.slice();\n }\n\n @computed get hasValue() {\n return this.value.length > 0;\n }\n\n @computed get areAnyItemsInSelect() {\n return this.availableItems.length > 0;\n }\n\n @action.bound\n setValue(newSelectedItems: T[]) {\n this._selectedItems = newSelectedItems;\n this.onChange && this.onChange(newSelectedItems);\n }\n\n @action.bound\n resetValue() {\n this.setValue([]);\n }\n\n @action.bound\n deselectItem(item: T) {\n this.setValue(this._selectedItems.filter(selectedItem => selectedItem !== item));\n }\n\n constructor(\n private initialItems: SelectListItem[],\n private initialSelectedItems?: T[],\n private onChange?: (value: T[]) => void\n ) {\n this._items = this.initialItems;\n this._selectedItems = this.initialSelectedItems || [];\n }\n}\n","import uniqBy from \"lodash/uniqBy\";\nimport { action, computed, observable } from \"mobx\";\nimport { BackendApi, IProductArticleService } from \"../../../shared/api/BackendApi\";\nimport { SelectViewModel } from \"../../../shared/components/select/SelectViewModel\";\nimport { Url } from \"../../../shared/models/Url\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../../shared/services/NavigationService\";\nimport { Product } from \"../../../shared/stores/Product\";\nimport { UserStore } from \"../../../shared/stores/UserStore\";\nimport { isDefined } from \"../../../shared/typeUtils\";\nimport { ArticleListItemDto } from \"../../../types/articles/dto/ArticleListItemDto\";\nimport { CategoryDto } from \"../../../types/category/dto/CategoryDto\";\nimport { GtmBasePage } from \"../../GtmBasePage\";\n\nexport class ArticleListViewModel extends GtmBasePage {\n allCategoriesId = \"all-categories\";\n\n @observable private _articles: ArticleListItemDto[] = [];\n\n @observable private categories: CategoryDto[] = [];\n\n @observable categoriesSelect?: SelectViewModel;\n\n @observable isMobile = false;\n\n @computed get category() {\n const categoryId = this.categoriesSelect?.value[0];\n return this.categories.find(category => category.id === categoryId);\n }\n\n @computed get articles() {\n if (!this.category) {\n return this._articles;\n }\n\n if (this.category.id === this.allCategoriesId) {\n return this._articles;\n }\n\n return this._articles.filter(article => article.category?.id === this.category?.id);\n }\n\n @action.bound\n changeFilter() {\n const url = Url.toProductArticleListPage(\n { productSlug: this.product.slug },\n this.category && { category: this.category.name }\n );\n this.navigationService.pushUrlWithoutRedirect(url);\n }\n\n constructor(\n private defaultFiltersValue: {\n categorySlug?: string;\n },\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public navigationService: ILowLevelNavigationService,\n public gtm: IGtmService,\n public handleLogin: (slug?: string) => Promise,\n public userStore: UserStore,\n public product: Product,\n public backendApi: BackendApi,\n private productArticleService: IProductArticleService\n ) {\n super(languageService, gtm, errorService);\n this.checkIfMobile = this.checkIfMobile.bind(this);\n window.addEventListener(\"resize\", this.checkIfMobile);\n this.checkIfMobile();\n }\n\n @action.bound\n checkIfMobile() {\n this.isMobile = window.innerWidth <= 768;\n }\n\n protected async loadData() {\n if (this.childPage) {\n return;\n }\n\n // TODO: After adding pagination we should make a separate query after category filter change, and use it for the query\n this._articles = await this.productArticleService.getProductArticles({\n productId: this.product.id,\n });\n this.categories = uniqBy(\n this._articles.map(article => article.category).filter(isDefined),\n category => category.id\n );\n\n const defaultCategoryId = this.defaultFiltersValue.categorySlug\n ? this.categories.find(category => category.name === this.defaultFiltersValue.categorySlug)\n : undefined;\n\n this.categoriesSelect = new SelectViewModel(\n this.categories.map(category => ({ value: category.id, label: category.name })),\n defaultCategoryId ? [defaultCategoryId.id] : [this.allCategoriesId],\n this.changeFilter\n );\n }\n}\n","import { Command } from \"../../../../react-mvvm/src\";\n\nexport class ArticleLoginSectionViewModel {\n readonly type = \"LOGIN\";\n\n constructor(public handleLogin: Command) {}\n}\n","import { action, computed, observable } from \"mobx\";\nimport { BackendApi } from \"../../shared/api/BackendApi\";\nimport { Popup } from \"../../shared/components/popup/Popup\";\nimport { Url } from \"../../shared/models/Url\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../shared/services/NavigationService\";\nimport { UserStore } from \"../../shared/stores/UserStore\";\nimport { ProductAuthorsHeroDto } from \"../../types/product/dto/ProductAuthorsHeroDto\";\nimport { AuthorDto } from \"../../types/shared/dto/AuthorDto\";\nimport { GtmBasePage } from \"../GtmBasePage\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { AuthorInfo } from \"./authorInfo/AuthorInfo\";\n\nexport class AuthorsForProductViewModel extends GtmBasePage {\n @observable authors: AuthorDto[] = [];\n\n @observable author?: AuthorDto;\n\n @observable authorInfoPopup = new Popup(this.authorInfoClosePopupAction, this.authorInfoOpenPopupAction);\n\n @computed get authorInfo() {\n if (!this.author) {\n return;\n }\n\n return new AuthorInfo(this.backendApi, this.author);\n }\n\n constructor(\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public navigationService: ILowLevelNavigationService,\n public gtm: IGtmService,\n public userStore: UserStore,\n public productParams: ProductParams,\n private backendApi: BackendApi,\n public productAuthorsHero?: ProductAuthorsHeroDto,\n public queryParams?: { author?: string }\n ) {\n super(languageService, gtm, errorService);\n }\n\n @action.bound\n private authorInfoOpenPopupAction() {\n if (this.author) {\n const url = Url.toAuthorsForProductPage(\n { productSlug: this.productParams.productSlug },\n { author: this.author.slug }\n );\n this.navigationService.pushUrlWithoutRedirect(url);\n }\n }\n\n @action.bound\n private authorInfoClosePopupAction() {\n if (this.author) {\n const url = Url.toAuthorsForProductPage({ productSlug: this.productParams.productSlug });\n this.navigationService.pushUrlWithoutRedirect(url);\n }\n }\n\n @action.bound\n setAuthor(slug: string) {\n this.author = this.authors.find(author => author.slug === slug);\n }\n\n protected async loadData() {\n this.authors = await this.backendApi.getAuthorsForProduct({ slug: this.productParams.productSlug });\n\n if (this.queryParams?.author) {\n this.setAuthor(decodeURI(this.queryParams.author));\n }\n\n if (this.author && this.authorInfo) {\n this.authorInfoPopup.show();\n }\n }\n}\n","import { IBookmarkService } from \"../../shared/api/BackendApi\";\nimport { BookmarkInfo } from \"./BookmarkListStore\";\n\nexport class BookmarkListApi {\n constructor(private bookmarkService: IBookmarkService) {}\n\n async getByCourseId(courseId: string) {\n const res = await this.bookmarkService.getUserBookmarks({ courseId });\n return res.map(o => ({\n id: o.id,\n thumbnail: o.thumbnail,\n message: o.message,\n subTitle: o.subTitle,\n title: o.title,\n }));\n }\n\n async delete(id: string) {\n await this.bookmarkService.deleteUserBookmark({ id });\n }\n\n async update(bookmark: BookmarkInfo) {\n await this.bookmarkService.updateUserBookmark({ id: bookmark.id, message: bookmark.message });\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { StepThumbnailDto } from \"../../types/shared/dto/StepThumbnailDto\";\nimport { BookmarkListApi } from \"./BookmarkListApi\";\n\ntype BookmarkThumbnail = StepThumbnailDto;\n\nexport interface BookmarkInfo {\n id: string;\n thumbnail: BookmarkThumbnail;\n title: string;\n subTitle?: string;\n message?: string;\n}\n\nexport class Bookmark implements BookmarkInfo {\n readonly id: string;\n\n readonly thumbnail: BookmarkThumbnail;\n\n readonly title: string;\n\n readonly subTitle?: string;\n\n @observable message?: string;\n\n constructor(private store: BookmarkListStore, bookmarkInfo: BookmarkInfo) {\n this.id = bookmarkInfo.id;\n this.thumbnail = bookmarkInfo.thumbnail;\n this.title = bookmarkInfo.title;\n this.subTitle = bookmarkInfo.subTitle;\n this.message = bookmarkInfo.message;\n }\n\n async saveChanges() {\n await this.store.bookmarkListApi.update(this);\n }\n\n async delete() {\n await this.store.bookmarkListApi.delete(this.id);\n this.store.removeBookmark(this);\n }\n}\n\nexport class BookmarkListStore {\n byId = observable.map();\n\n constructor(public bookmarkListApi: BookmarkListApi) {}\n\n async loadByCourseId(courseId: string) {\n this.load(await this.bookmarkListApi.getByCourseId(courseId));\n }\n\n @action\n private load(bookmarkable: BookmarkInfo[]) {\n bookmarkable.forEach(it => this.byId.set(it.id, new Bookmark(this, it)));\n }\n\n removeBookmark(bookmark: Bookmark) {\n this.byId.delete(bookmark.id);\n }\n\n @computed get all() {\n return Array.from(this.byId.values());\n }\n}\n","import { computed } from \"mobx\";\nimport { StepThumbnailDto } from \"../../../../types/shared/dto/StepThumbnailDto\";\nimport { ContentReference } from \"../../../models/Url\";\nimport { IProgressStore } from \"../../../stores/ProgressStore\";\nimport { BookmarkToggleViewModel } from \"../shared/BookmarkToggleViewModel\";\nimport { StepThumbnailType } from \"./StepThumbnailType\";\n\ntype TaskType = Exclude;\n\nexport interface ITaskThumbnail {\n id: string;\n contentRef: ContentReference;\n title: string;\n hasAccess: boolean;\n isHighlighted?: boolean;\n description?: string;\n color?: string;\n isCompleted: boolean;\n type: TaskType;\n slug: string;\n bookmarkToggleViewModel?: BookmarkToggleViewModel;\n}\n\nexport class TaskThumbnailViewModel implements ITaskThumbnail {\n protected progressStore: IProgressStore;\n\n id: string;\n\n slug: string;\n\n title: string;\n\n contentRef: ContentReference;\n\n description?: string | undefined;\n\n type: TaskType;\n\n color?: string;\n\n hasAccess: boolean;\n\n isHighlighted?: boolean;\n\n @computed get isCompleted() {\n return this.progressStore.isCompleted(this.id);\n }\n\n constructor(\n stepThumbnail: StepThumbnailDto,\n progressStore: IProgressStore,\n public bookmarkToggleViewModel?: BookmarkToggleViewModel,\n isHighlighted?: boolean\n ) {\n this.progressStore = progressStore;\n this.id = stepThumbnail.id;\n this.contentRef = stepThumbnail;\n this.title = stepThumbnail.title;\n this.color = stepThumbnail.color;\n this.hasAccess = stepThumbnail.hasAccess;\n this.description = stepThumbnail.description;\n this.isHighlighted = isHighlighted;\n this.slug = stepThumbnail.slug;\n\n // TODO: task thumbnail vm creation shouldn't base on dto\n if (stepThumbnail.type === \"Video\" || stepThumbnail.type === \"TextBlock\") {\n throw new Error(\"Not allowed step type\");\n }\n\n this.type = stepThumbnail.type;\n }\n}\n","import { computed } from \"mobx\";\nimport { ContentReference } from \"../../../models/Url\";\nimport { IProgressStore } from \"../../../stores/ProgressStore\";\nimport { BookmarkToggleViewModel } from \"../shared/BookmarkToggleViewModel\";\n\nexport interface ITextBlockThumbnail {\n id: string;\n contentRef: ContentReference;\n title: string;\n description?: string;\n color?: string;\n isCompleted: boolean;\n hasAccess: boolean;\n isHighlighted?: boolean;\n category?: string;\n type: \"TextBlock\";\n bookmarkToggleViewModel?: BookmarkToggleViewModel;\n slug: string;\n}\n\nexport class TextBlockThumbnailViewModel implements ITextBlockThumbnail {\n protected progressStore: IProgressStore;\n\n id: string;\n\n slug: string;\n\n contentRef: ContentReference;\n\n title: string;\n\n description?: string;\n\n readonly type = \"TextBlock\";\n\n color?: string;\n\n hasAccess: boolean;\n\n isHighlighted?: boolean;\n\n @computed get isCompleted() {\n return this.progressStore.isCompleted(this.id);\n }\n\n constructor(\n stepThumbnail: {\n id: string;\n title: string;\n color?: string;\n description?: string;\n hasAccess: boolean;\n slug: string;\n },\n progressStore: IProgressStore,\n public bookmarkToggleViewModel?: BookmarkToggleViewModel,\n isHighlighted?: boolean\n ) {\n this.progressStore = progressStore;\n this.id = stepThumbnail.id;\n this.contentRef = stepThumbnail;\n this.title = stepThumbnail.title;\n this.color = stepThumbnail.color;\n this.hasAccess = stepThumbnail.hasAccess;\n this.isHighlighted = isHighlighted;\n this.description = stepThumbnail.description;\n this.slug = stepThumbnail.slug;\n }\n}\n","import { ImageCropDto } from \"../../../types/shared/dto/ImageCropDto\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { ImageHotspotDto } from \"../../../types/shared/dto/ImageHotspotDto\";\n\nexport const imageCropMock: ImageCropDto = {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n};\n\nexport const imageHotspotMock: ImageHotspotDto = {\n height: 0,\n width: 0,\n x: 0,\n y: 0,\n};\n\nexport const imageParamsMock: Pick = {\n width: 0,\n height: 0,\n crop: imageCropMock,\n hotspot: imageHotspotMock,\n alt: \"\",\n};\n","import { autorun, computed, observable } from \"mobx\";\nimport { ImageDto } from \"../../../../types/shared/dto/ImageDto\";\nimport { StepThumbnailDto } from \"../../../../types/shared/dto/StepThumbnailDto\";\nimport { VideoDetailsDto } from \"../../../../types/video/dto/VideoDetailsDto\";\nimport { IVideoService } from \"../../../api/BackendApi\";\nimport { ContentReference } from \"../../../models/Url\";\nimport { IProgressStore } from \"../../../stores/ProgressStore\";\nimport { imageCropMock, imageHotspotMock } from \"../../image/Image.mock\";\nimport { BookmarkToggleViewModel } from \"../shared/BookmarkToggleViewModel\";\n\nexport interface IVideoThumbnail {\n id: string;\n contentRef: ContentReference;\n title: string;\n description?: string;\n color?: string;\n hasAccess: boolean;\n isHighlighted?: boolean;\n isCompleted: boolean;\n progress?: number;\n image: ImageDto;\n videoDetails?: VideoDetailsDto;\n type: \"Video\";\n slug: string;\n bookmarkToggleViewModel?: BookmarkToggleViewModel;\n}\n\nexport class VideoThumbnailViewModel implements IVideoThumbnail {\n id: string;\n\n slug: string;\n\n title: string;\n\n contentRef: ContentReference;\n\n description?: string;\n\n color?: string;\n\n hasAccess: boolean;\n\n isHighlighted?: boolean;\n\n readonly type = \"Video\";\n\n @computed get image() {\n // Adding mocks here since the thumbnail comes from vimeo, not sanity\n if (!this.videoDetails) {\n return { url: \"\", alt: this.title, width: 400, height: 264, crop: imageCropMock, hotspot: imageHotspotMock };\n }\n\n return {\n url: this.videoDetails.thumbnailUrl,\n alt: this.title,\n width: 400,\n height: 264,\n crop: imageCropMock,\n hotspot: imageHotspotMock,\n };\n }\n\n @observable videoDetails?: VideoDetailsDto;\n\n @computed get videoProgress() {\n return this.progressStore.getVideoProgress(this.id);\n }\n\n @computed get progress() {\n if (!this.videoProgress || !this.videoDetails) {\n return undefined;\n }\n\n return this.videoProgress.lastPosition.totalSeconds / this.videoDetails.duration.totalSeconds;\n }\n\n @computed get isCompleted() {\n return this.progressStore.isCompleted(this.id);\n }\n\n constructor(\n stepThumbnail: StepThumbnailDto,\n protected progressStore: IProgressStore,\n private videoService: IVideoService,\n public bookmarkToggleViewModel?: BookmarkToggleViewModel,\n videoDetailsDto?: VideoDetailsDto,\n isHighlighted?: boolean\n ) {\n this.id = stepThumbnail.id;\n this.contentRef = stepThumbnail;\n this.title = stepThumbnail.title;\n this.color = stepThumbnail.color;\n this.hasAccess = stepThumbnail.hasAccess;\n this.description = stepThumbnail.description;\n this.isHighlighted = isHighlighted;\n this.slug = stepThumbnail.slug;\n\n autorun(async () => {\n if (videoDetailsDto) {\n this.videoDetails = videoDetailsDto;\n } else {\n await this.loadVideoDetails(this.id);\n }\n });\n }\n\n private async loadVideoDetails(stepId: string) {\n this.videoDetails = await this.videoService.getVideoDetails({ stepId });\n }\n}\n","import { StepThumbnailDto } from \"../../../../types/shared/dto/StepThumbnailDto\";\nimport { IVideoService } from \"../../../api/BackendApi\";\nimport { IProgressStore } from \"../../../stores/ProgressStore\";\nimport { assertUnreachable } from \"../../../typeUtils\";\nimport { BookmarkToggleViewModel } from \"../shared/BookmarkToggleViewModel\";\nimport { StepThumbnailType } from \"./StepThumbnailType\";\nimport { ITaskThumbnail, TaskThumbnailViewModel } from \"./TaskThumbnailViewModel\";\nimport { TextBlockThumbnailViewModel, ITextBlockThumbnail } from \"./TextBlockThumbnailViewModel\";\nimport { IVideoThumbnail, VideoThumbnailViewModel } from \"./VideoThumbnailViewModel\";\n\nexport type IStepThumbnail = IVideoThumbnail | ITextBlockThumbnail | ITaskThumbnail;\n\nexport const createStepThumbnailViewModel = (\n stepThumbnail: StepThumbnailDto,\n progressStore: IProgressStore,\n videoService: IVideoService,\n bookmarkToggleViewModel?: BookmarkToggleViewModel,\n isHighlighted?: boolean\n): IStepThumbnail => {\n const type: StepThumbnailType = stepThumbnail.type;\n\n switch (type) {\n case \"Video\":\n return new VideoThumbnailViewModel(\n stepThumbnail,\n progressStore,\n videoService,\n bookmarkToggleViewModel,\n undefined,\n isHighlighted\n );\n case \"TextBlock\":\n return new TextBlockThumbnailViewModel(stepThumbnail, progressStore, bookmarkToggleViewModel, isHighlighted);\n case \"TextTask\":\n case \"ChoiceTask\":\n case \"ChoiceListTask\":\n case \"TaskGroup\":\n case \"MaskTask\":\n case \"InputTask\":\n case \"GapTask\":\n case \"MatchTask\":\n case \"Sound\":\n return new TaskThumbnailViewModel(stepThumbnail, progressStore, bookmarkToggleViewModel, isHighlighted);\n default:\n return assertUnreachable(type);\n }\n};\n","import { action, computed, observable } from \"mobx\";\nimport { IVideoService } from \"../../../../shared/api/BackendApi\";\nimport { Popup } from \"../../../../shared/components/popup/Popup\";\nimport {\n createStepThumbnailViewModel,\n IStepThumbnail,\n} from \"../../../../shared/components/thumbnails/stepThumbnail/createStepThumbnailViewModel\";\nimport { CourseStructure } from \"../../../../shared/contentStructure/CourseStructure\";\nimport { IProgressStore } from \"../../../../shared/stores/ProgressStore\";\nimport { PaymentSidePanelViewModel } from \"../../../shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { Bookmark } from \"../../BookmarkListStore\";\n\nexport class BookmarkViewModel {\n @observable isInEditMode = false;\n\n @observable popover = new Popup();\n\n get id() {\n return this.bookmark.id;\n }\n\n @computed get thumbnail(): IStepThumbnail {\n return createStepThumbnailViewModel(this.bookmark.thumbnail, this.progressStore, this.videoService);\n }\n\n constructor(\n public bookmark: Bookmark,\n public paymentSidePanelViewModel: PaymentSidePanelViewModel,\n public activeCourseStructure: CourseStructure,\n private progressStore: IProgressStore,\n private videoService: IVideoService\n ) {}\n\n @action.bound\n setIsInEditMode(val: boolean) {\n this.isInEditMode = val;\n }\n\n @action.bound\n deleteBookmark() {\n this.bookmark.delete();\n }\n\n @action.bound\n updateMessage(message?: string) {\n if (message === this.bookmark.message) {\n return;\n }\n this.bookmark.message = message;\n this.bookmark.saveChanges();\n }\n}\n","import noop from \"lodash/noop\";\nimport { computed, observable, onBecomeObserved } from \"mobx\";\nimport { Deferred } from \"react-mvvm\";\nimport { IVideoService } from \"../../../shared/api/BackendApi\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../../shared/services/LanguageService\";\nimport { IProgressStore } from \"../../../shared/stores/ProgressStore\";\nimport { GtmBasePage } from \"../../GtmBasePage\";\nimport { PaymentSidePanelViewModel } from \"../../shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { BookmarkListStore } from \"../BookmarkListStore\";\nimport { BookmarkViewModel } from \"./bookmark/BookmarkViewModel\";\n\nclass Loaded {\n @computed get bookmarks() {\n const bookmarks = this.bookmarkListStore.all;\n return bookmarks.map(\n bookmark =>\n new BookmarkViewModel(\n bookmark,\n this.paymentSidePanelViewModel,\n this.activeCourseStructure,\n this.progressStore,\n this.videoService\n )\n );\n }\n\n constructor(\n private activeCourseStructure: CourseStructure,\n private bookmarkListStore: BookmarkListStore,\n private progressStore: IProgressStore,\n private videoService: IVideoService,\n private paymentSidePanelViewModel: PaymentSidePanelViewModel\n ) {}\n}\n\nexport class BookmarkListViewModel extends GtmBasePage {\n @observable state: Deferred = \"Loading\";\n\n constructor(\n activeCourseStructure: CourseStructure,\n languageService: ILanguageService,\n errorService: IErrorService,\n bookmarkListStore: BookmarkListStore,\n progressStore: IProgressStore,\n videoService: IVideoService,\n paymentSidePanelViewModel: PaymentSidePanelViewModel,\n gtm: IGtmService\n ) {\n super(languageService, gtm, errorService);\n\n onBecomeObserved(this, \"state\", async () => {\n await bookmarkListStore.loadByCourseId(activeCourseStructure.id);\n\n this.state = new Loaded(\n activeCourseStructure,\n bookmarkListStore,\n progressStore,\n videoService,\n paymentSidePanelViewModel\n );\n this.isLoading = false;\n });\n }\n\n protected async loadData() {\n noop();\n }\n}\n","import { action, observable } from \"mobx\";\nimport { ITibetClient } from \"../../shared/api/TibetClient\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { HttpError } from \"../../shared/services/errors/HttpError\";\nimport { UserStore } from \"../../shared/stores/UserStore\";\nimport { GtmBasePage } from \"../GtmBasePage\";\n\nexport class BuyRedirectViewModel extends GtmBasePage {\n @observable courseId = \"\";\n\n @observable selectedPriceOptionId = \"\";\n\n @observable successUrl = \"\";\n\n @observable cancelUrl = \"\";\n\n @observable failUrl = \"\";\n\n @observable isPurchasing = true;\n\n constructor(\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public gtm: IGtmService,\n private tibetClient: ITibetClient,\n private userStore: UserStore\n ) {\n super(languageService, gtm, errorService);\n }\n\n @action.bound\n public async setAndInitiateBuying(\n courseId: string,\n selectedPriceOptionId: string,\n successUrl: string,\n cancelUrl: string,\n failUrl: string\n ) {\n this.courseId = courseId;\n this.selectedPriceOptionId = selectedPriceOptionId;\n this.successUrl = successUrl;\n this.cancelUrl = cancelUrl;\n this.failUrl = failUrl;\n\n if (this.userStore.user?.accessibleCourseIds.some(id => id === courseId)) {\n this.isPurchasing = false;\n window.location.href = cancelUrl;\n }\n\n try {\n await this.tibetClient.initiateBuying(courseId, selectedPriceOptionId, successUrl, cancelUrl, failUrl);\n } catch (e) {\n if (e instanceof Response) {\n const message = await e.text();\n this.errorService.showErrorSplash(new HttpError(e.status, message));\n throw message;\n }\n throw e;\n }\n }\n\n protected async loadData() {\n this.isLoading = false;\n }\n}\n","import { computed, observable } from \"mobx\";\nimport { CreateUserBookmarkRequest } from \"../../types/api/bookmarks/CreateUserBookmarkRequest\";\nimport { UserBookmarkDto } from \"../../types/bookmarks/dto/UserBookmarkDto\";\nimport { IBookmarkStore } from \"./BookmarkStore\";\n\nexport class Bookmark {\n @observable message?: string;\n\n constructor(private store: IBookmarkStore, public stepId: string, public courseId: string, public id: string) {}\n\n updateFromDto(dto: UserBookmarkDto) {\n this.message = dto.message;\n }\n\n async save() {\n await this.store.bookmarkService.createUserBookmark(this.asRequest);\n }\n\n async delete() {\n await this.store.bookmarkService.deleteUserBookmark({ id: this.id });\n this.store.removeBookmark(this);\n }\n\n dispose() {\n // NOP, no subscriptions to clear\n }\n\n @computed get asRequest(): CreateUserBookmarkRequest {\n return {\n id: this.id,\n message: this.message,\n stepId: this.stepId,\n courseId: this.courseId,\n };\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport { action, observable } from \"mobx\";\nimport { v4 as uuid } from \"uuid\";\nimport { UserBookmarkDto } from \"../../types/bookmarks/dto/UserBookmarkDto\";\nimport { IBookmarkService } from \"../api/BackendApi\";\nimport { CourseStructure } from \"../contentStructure/CourseStructure\";\nimport { Bookmark } from \"./Bookmark\";\nimport { IUserStore } from \"./UserStore\";\n\nexport interface IBookmarkStore {\n isBookmarked: (stepId: string) => boolean;\n removeBookmark: (bookmark: Bookmark) => void;\n createBookmark: (stepId: string, id?: string) => Bookmark;\n getBookmark: (stepId: string) => Bookmark | undefined;\n bookmarkService: IBookmarkService;\n bookmarks: Bookmark[];\n}\n\nexport class BookmarkStore implements IBookmarkStore {\n @observable bookmarks: Bookmark[] = [];\n\n public constructor(\n public bookmarkService: IBookmarkService,\n private userStore: IUserStore,\n private activeCourseStructure: CourseStructure\n ) {}\n\n @action.bound\n async init() {\n if (this.userStore.isAuthenticated && this.activeCourseStructure) {\n const fetchedDtos = await this.bookmarkService.getUserBookmarks({\n courseId: this.activeCourseStructure.id,\n });\n fetchedDtos.forEach(dto => this.updateBookmarkFromServer(dto));\n }\n }\n\n // Does not create bookmark on the server. See bookmark.Save\n @action.bound\n createBookmark(stepId: string, id: string = uuid()): Bookmark {\n const bookmark = new Bookmark(this, stepId, this.activeCourseStructure.id, id);\n this.bookmarks.push(bookmark);\n return bookmark;\n }\n\n // Does not delete bookmark from the server. See bookmark.Delete\n @action.bound\n removeBookmark(bookmark: Bookmark) {\n this.bookmarks = this.bookmarks.filter(b => b.id !== bookmark.id);\n bookmark.dispose();\n }\n\n private updateBookmarkFromServer(dto: UserBookmarkDto) {\n let bookmark = this.bookmarks.find(b => b.id === dto.id);\n if (!bookmark) {\n bookmark = new Bookmark(this, dto.thumbnail.id, dto.courseId, dto.id);\n this.bookmarks.push(bookmark);\n }\n bookmark.updateFromDto(dto);\n }\n\n getBookmark(stepId: string) {\n return this.bookmarks.find(b => b.stepId === stepId);\n }\n\n isBookmarked(stepId: string) {\n return !!this.bookmarks.some(x => x.stepId === stepId);\n }\n}\n","import { StepTypeDto } from \"../types/shared/dto/StepTypeDto\";\n\nexport type HighLevelStepType = \"Video\" | \"Task\" | \"TextBlock\" | \"Sound\";\nexport type StepType = `${StepTypeDto}`;\n\nexport const stepTypeDtoToStepType: { [key in StepType]: HighLevelStepType } = {\n Video: \"Video\",\n TextBlock: \"TextBlock\",\n Task: \"Task\",\n TaskGroup: \"Task\",\n Sound: \"Sound\",\n};\n","import { StepType, HighLevelStepType, stepTypeDtoToStepType } from \"../../../stepTypeUtils\";\n\nexport interface StepWithCompleted {\n type: StepType;\n isCompleted: boolean;\n}\n\nconst getProgress = (type: HighLevelStepType, steps: StepWithCompleted[]) => {\n const filteredSteps = steps.filter(step => stepTypeDtoToStepType[step.type] === type);\n const total = filteredSteps.length;\n\n if (total > 0) {\n const completed = filteredSteps.filter(step => step.isCompleted).length;\n return completed / total;\n }\n\n return 0;\n};\n\nexport const getProgressByType = (steps: StepWithCompleted[]) => {\n const stepsByTypeProgress: { [key in HighLevelStepType]: number } = {\n Video: getProgress(\"Video\", steps),\n Task: getProgress(\"Task\", steps),\n TextBlock: getProgress(\"TextBlock\", steps),\n Sound: getProgress(\"Sound\", steps),\n };\n\n return stepsByTypeProgress;\n};\n","import clamp from \"lodash/clamp\";\n\nexport type Percentage = number;\n\nexport function formatProgress(progress: number) {\n // value between 0 - 100;\n const progressValue: Percentage = Math.ceil(clamp(progress * 100, 0, 100));\n // value between 0 - 1;\n const unitInterval = progressValue / 100;\n\n const isCompleted = progressValue === 100;\n\n return { progressValue, unitInterval, isCompleted };\n}\n","// This code was generated by a Reinforced.Typings tool. \n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport const enum SearchContentTypeDto { \n\tTextTask = \"TextTask\", \n\tChoiceTask = \"ChoiceTask\", \n\tChoiceListTask = \"ChoiceListTask\", \n\tTaskGroup = \"TaskGroup\", \n\tMaskTask = \"MaskTask\", \n\tInputTask = \"InputTask\", \n\tVideo = \"Video\", \n\tTextBlock = \"TextBlock\", \n\tArticle = \"Article\", \n\tTheme = \"Theme\", \n\tTest = \"Test\", \n\tGapTask = \"GapTask\", \n\tMatchTask = \"MatchTask\"\n}\n","import { computed } from \"mobx\";\nimport { LessonStructure } from \"../contentStructure/LessonStructure\";\nimport { IProgressStore } from \"../stores/ProgressStore\";\n\nexport class LessonProgress {\n @computed get steps() {\n return this.lessonStructure.stepStructures.map(step => ({\n id: step.id,\n type: step.type,\n isCompleted: this.progressStore.isCompleted(step.id),\n }));\n }\n\n @computed get actionableStepsCount() {\n return this.steps.length;\n }\n\n @computed get completedStepsCount() {\n return this.steps.filter(step => step.isCompleted).length;\n }\n\n @computed get progress() {\n if (this.actionableStepsCount === 0) {\n return 0;\n }\n return this.completedStepsCount / this.actionableStepsCount;\n }\n\n @computed get isCompleted() {\n return this.actionableStepsCount === this.completedStepsCount;\n }\n\n @computed get id() {\n return this.lessonStructure.id;\n }\n\n constructor(private progressStore: IProgressStore, private lessonStructure: LessonStructure) {}\n\n getIsStepCompletedById(id: string) {\n return this.steps.find(s => s.id === id)?.isCompleted;\n }\n}\n","import flatten from \"lodash/flatten\";\nimport sumBy from \"lodash/sumBy\";\nimport { computed } from \"mobx\";\nimport { ThemeStructure } from \"../contentStructure/ThemeStructure\";\nimport { IProgressStore } from \"../stores/ProgressStore\";\nimport { LessonProgress } from \"./LessonProgress\";\n\nexport class ThemeProgress {\n @computed get lessonsProgress() {\n return this.themeStructure.lessonStructures.map(lesson => new LessonProgress(this.progressStore, lesson));\n }\n\n @computed get steps() {\n return flatten(this.lessonsProgress.map(lessonProgress => lessonProgress.steps));\n }\n\n @computed get actionableStepsCount() {\n return sumBy(this.lessonsProgress, lessonProgress => lessonProgress.actionableStepsCount);\n }\n\n @computed get completedStepsCount() {\n return sumBy(this.lessonsProgress, lessonProgress => lessonProgress.completedStepsCount);\n }\n\n @computed get progress() {\n if (this.actionableStepsCount === 0) {\n return 0;\n }\n return this.completedStepsCount / this.actionableStepsCount;\n }\n\n @computed get id() {\n return this.themeStructure.id;\n }\n\n @computed get continueStep() {\n const steps = this.themeStructure.steps.filter(step => step.hasAccess);\n const nextUncompletedStepId = this.progressStore.nextUncompletedFrom(steps.map(step => step.id));\n return steps.find(f => f.id === nextUncompletedStepId);\n }\n\n @computed get isStarted() {\n return this.completedStepsCount > 0;\n }\n\n constructor(private progressStore: IProgressStore, private themeStructure: ThemeStructure) {}\n\n getLessonProgressById(lessonId: string) {\n const lessonProgress = this.lessonsProgress.find(lesson => lesson.id === lessonId);\n\n if (!lessonProgress) {\n throw new Error(`Lesson with id: ${lessonId} not found.`);\n }\n\n return lessonProgress;\n }\n}\n","import flatten from \"lodash/flatten\";\nimport { computed, action } from \"mobx\";\nimport { getProgressByType } from \"../components/progressByType/shared/calculateProgressByType\";\nimport { CourseStructure } from \"../contentStructure/CourseStructure\";\nimport { formatProgress } from \"../formatProgress\";\nimport { HighLevelStepType, stepTypeDtoToStepType } from \"../stepTypeUtils\";\nimport { IProgressStore } from \"../stores/ProgressStore\";\nimport { assertUnreachable } from \"../typeUtils\";\nimport { ThemeProgress } from \"./ThemeProgress\";\n\nexport class CourseProgress {\n @computed get themesProgress() {\n return this.courseStructure.themeStructures\n .filter(theme => theme.isUnderDevelopment === false)\n .map(theme => new ThemeProgress(this.progressStore, theme));\n }\n\n @computed get previousExamsThemesProgress() {\n return (\n this.courseStructure.previousExamsStructure?.examThemes.map(\n examTheme => new ThemeProgress(this.progressStore, examTheme.theme)\n ) || []\n );\n }\n\n @computed get steps() {\n return flatten(this.themesProgress.map(themeProgress => themeProgress.steps));\n }\n\n @computed get actionableStepsCount() {\n return this.steps.length;\n }\n\n @computed get completedStepsCount() {\n return this.steps.filter(step => step.isCompleted).length;\n }\n\n @computed get progress() {\n if (this.actionableStepsCount === 0) {\n return 0;\n }\n return this.completedStepsCount / this.actionableStepsCount;\n }\n\n @computed get progressPercent() {\n const { progressValue } = formatProgress(this.progress);\n return progressValue;\n }\n\n @computed get progressByType() {\n return getProgressByType(this.steps);\n }\n\n @action.bound\n isAnyOfType(stepType: HighLevelStepType) {\n switch (stepType) {\n case \"Video\":\n case \"TextBlock\":\n case \"Sound\": {\n return this.steps.filter(s => s.type === stepType).length > 0;\n }\n case \"Task\": {\n return (\n this.steps.filter(\n s =>\n s.type !== stepTypeDtoToStepType.Video &&\n s.type !== stepTypeDtoToStepType.TextBlock &&\n s.type !== stepTypeDtoToStepType.Sound\n ).length > 0\n );\n }\n default: {\n return assertUnreachable(stepType);\n }\n }\n }\n\n constructor(private progressStore: IProgressStore, private courseStructure: CourseStructure) {}\n\n getThemeProgressById(themeId: string) {\n const allThemesProgress = this.themesProgress.concat(this.previousExamsThemesProgress);\n const themeProgress = allThemesProgress.find(theme => theme.id === themeId);\n\n if (!themeProgress) {\n throw new Error(`Theme with id: ${themeId} not found.`);\n }\n\n return themeProgress;\n }\n\n getLessonProgressById(lessonId: string) {\n const lessonsFromThemesProgress = flatten(this.themesProgress.map(theme => theme.lessonsProgress));\n const lessonsFromPreviousExamsThemes = flatten(\n this.previousExamsThemesProgress.map(theme => theme.lessonsProgress)\n );\n\n const lessonsProgress = lessonsFromThemesProgress.concat(lessonsFromPreviousExamsThemes);\n\n const lessonProgress = lessonsProgress.find(lesson => lesson.id === lessonId);\n\n if (!lessonProgress) {\n throw new Error(`Lesson with id: ${lessonId} not found.`);\n }\n\n return lessonProgress;\n }\n}\n","import findLast from \"lodash/findLast\";\nimport throttle from \"lodash/throttle\";\nimport { action, computed, observable } from \"mobx\";\nimport { TimeSpanDto } from \"../../types/shared/dto/TimeSpanDto\";\nimport { IProgressService } from \"../api/BackendApi\";\nimport { CourseStructure } from \"../contentStructure/CourseStructure\";\nimport { CourseProgress } from \"../progressStructure/CourseProgress\";\nimport { IUserStore } from \"./UserStore\";\n\ntype TimeProgressStep = \"Video\" | \"Sound\";\ninterface TaskProgress {\n id: string;\n isCompleted: boolean;\n}\n\ninterface VideoProgress {\n id: string;\n isCompleted: boolean;\n lastPosition: TimeSpanDto;\n}\n\ninterface SoundStepProgress {\n id: string;\n isCompleted: boolean;\n lastPosition: TimeSpanDto;\n}\n\nexport type StepProgress = VideoProgress | TaskProgress | SoundStepProgress;\n\nconst isVideoProgress = (step: StepProgress): step is VideoProgress => {\n return (step as VideoProgress).lastPosition !== undefined;\n};\n\nconst isSoundStepProgress = (step: StepProgress): step is SoundStepProgress => {\n return (step as SoundStepProgress).lastPosition !== undefined;\n};\n\nexport interface IProgressStore {\n init(): Promise;\n completedStepsIds: string[];\n readonly courseProgress: CourseProgress;\n isCompleted(stepId: string): boolean;\n getVideoProgress(stepId: string): VideoProgress | undefined;\n getSoundStepProgress(stepId: string): SoundStepProgress | undefined;\n lastUpdatedFrom(stepIds: string[]): string | undefined;\n nextUncompletedFrom(stepIds: string[]): string | undefined;\n markStepAsCompleted(stepId: string): Promise;\n markStepAsUncompleted(stepId: string): Promise;\n updateStepWithTimeProgress(stepId: string, seconds: number, type: TimeProgressStep): Promise;\n endStepWithTimeProgressContent(stepId: string, seconds: number, type: TimeProgressStep): Promise;\n}\n\nexport class ProgressStore implements IProgressStore {\n @observable private stepsProgress: StepProgress[] = [];\n\n @observable public courseProgress: CourseProgress;\n\n @computed get completedStepsIds() {\n return this.stepsProgress.filter(v => v.isCompleted).map(m => m.id);\n }\n\n public constructor(\n public progressService: IProgressService,\n private userStore: IUserStore,\n private activeCourseStructure: CourseStructure\n ) {\n this.courseProgress = new CourseProgress(this, this.activeCourseStructure);\n }\n\n public async init() {\n if (this.userStore.isAuthenticated) {\n await this.loadProgress();\n }\n }\n\n private async loadProgress() {\n const courseProgressDto = await this.progressService.getProgress({\n courseId: this.activeCourseStructure.id,\n });\n\n const mergedStepsProgress = [\n ...courseProgressDto.stepProgress.map(progress => {\n return {\n id: progress.stepId,\n isCompleted: progress.isCompleted,\n updatedAt: new Date(progress.updatedAt),\n };\n }),\n ...courseProgressDto.videoProgress.map(progress => {\n return {\n id: progress.videoId,\n isCompleted: progress.isCompleted,\n updatedAt: new Date(progress.updatedAt),\n lastPosition: progress.lastPosition,\n };\n }),\n ...courseProgressDto.soundStepProgress.map(progress => {\n return {\n id: progress.soundStepId,\n isCompleted: progress.isCompleted,\n updatedAt: new Date(progress.updatedAt),\n lastPosition: progress.lastPosition,\n };\n }),\n ];\n\n mergedStepsProgress.sort((a, b) => {\n return a.updatedAt.getTime() - b.updatedAt.getTime();\n });\n\n this.stepsProgress = mergedStepsProgress.map(progress => {\n if (isVideoProgress(progress)) {\n return { id: progress.id, isCompleted: progress.isCompleted, lastPosition: progress.lastPosition };\n }\n if (isSoundStepProgress(progress)) {\n return { id: progress.id, isCompleted: progress.isCompleted, lastPosition: progress.lastPosition };\n }\n return { id: progress.id, isCompleted: progress.isCompleted };\n });\n }\n\n public isCompleted(stepId: string) {\n return this.completedStepsIds.includes(stepId);\n }\n\n public getVideoProgress(stepId: string) {\n return this.stepsProgress.filter(isVideoProgress).find(f => f.id === stepId);\n }\n\n public getSoundStepProgress(stepId: string) {\n return this.stepsProgress.filter(isSoundStepProgress).find(f => f.id === stepId);\n }\n\n public lastUpdatedFrom(stepIds: string[]) {\n return findLast(this.stepsProgress, progressStep => stepIds.includes(progressStep.id))?.id;\n }\n\n public nextUncompletedFrom(stepIds: string[]) {\n return stepIds.find(f => !this.isCompleted(f));\n }\n\n @action\n async markStepAsCompleted(stepId: string) {\n if (!this.userStore.isAuthenticated) {\n return;\n }\n await this.progressService.updateStepCompletionStatusRequest({\n stepId,\n isCompleted: true,\n courseId: this.activeCourseStructure.id,\n });\n\n this.setStepStatus(stepId, true);\n }\n\n @action\n async markStepAsUncompleted(stepId: string) {\n if (!this.userStore.isAuthenticated) {\n return;\n }\n await this.progressService.updateStepCompletionStatusRequest({\n stepId,\n isCompleted: false,\n courseId: this.activeCourseStructure.id,\n });\n\n this.setStepStatus(stepId, false);\n }\n\n @action\n async updateStepWithTimeProgress(stepId: string, seconds: number, type: TimeProgressStep) {\n if (!this.userStore.isAuthenticated) {\n return;\n }\n await this.updateProgressThrottled(stepId, seconds, type);\n\n const step = this.stepsProgress\n .filter(type === \"Video\" ? isVideoProgress : isSoundStepProgress)\n .find(v => v.id === stepId);\n if (!step) {\n const newStep = {\n id: stepId,\n isCompleted: false,\n lastPosition: { totalSeconds: seconds },\n };\n this.stepsProgress.push(newStep);\n return;\n }\n step.lastPosition = { totalSeconds: seconds };\n }\n\n @action\n async endStepWithTimeProgressContent(stepId: string, seconds: number, type: TimeProgressStep) {\n if (!this.userStore.isAuthenticated) {\n return;\n }\n await this.updateProgressThrottled(stepId, seconds, type);\n await this.progressService.updateStepCompletionStatusRequest({\n stepId,\n isCompleted: true,\n courseId: this.activeCourseStructure.id,\n });\n\n const step = this.stepsProgress\n .filter(type === \"Video\" ? isVideoProgress : isSoundStepProgress)\n .find(v => v.id === stepId);\n if (!step) {\n const newStep = {\n id: stepId,\n isCompleted: true,\n lastPosition: { totalSeconds: seconds },\n };\n this.stepsProgress.push(newStep);\n return;\n }\n step.lastPosition = { totalSeconds: seconds };\n step.isCompleted = true;\n }\n\n private updateProgressThrottled = throttle(\n (stepId, seconds, mode: TimeProgressStep) =>\n mode === \"Video\"\n ? this.progressService.updateVideoProgress({\n videoId: stepId,\n lastVideoPosition: { totalSeconds: seconds },\n courseId: this.activeCourseStructure.id,\n })\n : this.progressService.updateSoundStepProgress({\n soundStepId: stepId,\n lastTrackPosition: { totalSeconds: seconds },\n courseId: this.activeCourseStructure.id,\n }),\n 4000\n );\n\n private setStepStatus(stepId: string, isCompleted: boolean) {\n const step = this.stepsProgress.find(v => v.id === stepId);\n if (step) {\n step.isCompleted = isCompleted;\n } else {\n this.stepsProgress.push({ id: stepId, isCompleted });\n }\n }\n}\n","import { computed, observable } from \"mobx\";\nimport { TranslationsDto } from \"../../../../types/translations/dto/TranslationsDto\";\nimport { Status } from \"../../../Status\";\nimport { ThemeStructure } from \"../../../contentStructure/ThemeStructure\";\nimport { ThemeProgress } from \"../../../progressStructure/ThemeProgress\";\nimport { IProgressStore } from \"../../../stores/ProgressStore\";\n\nconst _ALL_THEME_STATUSES = [\"notStarted\", \"inProgress\", \"finished\", \"underDevelopment\"] as const;\ntype ThemeStatusTuple = typeof _ALL_THEME_STATUSES;\nexport type ThemeStatus = ThemeStatusTuple[number];\nexport const ALL_THEME_STATUSES = _ALL_THEME_STATUSES as unknown as ThemeStatus[];\n\nexport type CardTag = { id: string; translation: keyof TranslationsDto; status: Status };\nexport abstract class CardThemeBasicViewModel {\n @observable id: string;\n\n @observable themeProgress: ThemeProgress;\n\n @computed get actionableStepsCount() {\n return this.themeProgress.actionableStepsCount;\n }\n\n @computed get completedStepsCount() {\n return this.themeProgress.completedStepsCount;\n }\n\n @computed get status(): ThemeStatus {\n if (this.themeStructure.isUnderDevelopment) {\n return \"underDevelopment\";\n }\n\n switch (this.progress) {\n case 1:\n return \"finished\";\n case 0:\n return \"notStarted\";\n default:\n return \"inProgress\";\n }\n }\n\n @computed get progress() {\n return this.themeProgress.progress;\n }\n\n @computed get firstUnfinishedStep() {\n return this.themeProgress.continueStep;\n }\n\n @computed get tags() {\n const _tags: CardTag[] = [];\n\n if (this.themeStructure.isUnderDevelopment) {\n _tags.push({ id: \"comingSoon\", status: \"error\", translation: \"comingSoon\" });\n }\n\n if (this.themeStructure.hasStepsWithAccess && !this.themeStructure.courseStructure.hasFullAccess) {\n _tags.push({ id: \"all\", status: \"success\", translation: \"gratisContent\" });\n }\n\n if (_tags.length === 0) {\n return undefined;\n }\n\n return _tags;\n }\n\n constructor(public themeStructure: ThemeStructure, protected progressStore: IProgressStore) {\n this.id = themeStructure.id;\n this.themeProgress = new ThemeProgress(this.progressStore, this.themeStructure);\n }\n}\n","import { computed } from \"mobx\";\nimport { IVideoService } from \"../../api/BackendApi\";\nimport { ThemeStructure } from \"../../contentStructure/ThemeStructure\";\nimport { IProgressStore } from \"../../stores/ProgressStore\";\nimport { CardThemeBasicViewModel } from \"../card/cardThemeBasic/CardThemeBasicViewModel\";\nimport { createStepThumbnailViewModel } from \"../thumbnails/stepThumbnail/createStepThumbnailViewModel\";\n\nexport class ThemeItem extends CardThemeBasicViewModel {\n @computed get continueStepThumbnail() {\n if (this.status !== \"inProgress\") {\n return;\n }\n\n if (!this.firstUnfinishedStep) {\n return;\n }\n\n return createStepThumbnailViewModel(this.firstUnfinishedStep.thumbnail, this.progressStore, this.videoService);\n }\n\n constructor(\n public themeStructure: ThemeStructure,\n progressStore: IProgressStore,\n private videoService: IVideoService\n ) {\n super(themeStructure, progressStore);\n this.id = themeStructure.id;\n }\n}\n","import last from \"lodash/last\";\nimport { computed } from \"mobx\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\n\ninterface CourseLevelProgress {\n courseProgress: {\n progressPercent: number;\n };\n}\n\nexport interface Level {\n order: number;\n image: ImageDto;\n}\n\nexport class CourseLevel {\n levels: Level[];\n\n constructor(private progress: CourseLevelProgress, private _levels: ImageDto[]) {\n this.levels = _levels.map((level, index) => ({ order: index, image: level }));\n }\n\n @computed get progressPercent() {\n return this.progress.courseProgress.progressPercent;\n }\n\n @computed get level() {\n if (this.levels.length === 0) {\n return;\n }\n\n if (this.progressPercent === 100) {\n return last(this.levels);\n }\n\n if (this.levelsCount === 0) {\n return this.levels[0];\n }\n\n return this.levels[this.currentIndex(this.levelsCount)];\n }\n\n @computed get previousLevel() {\n if (this.levelsCount === 1) {\n return;\n }\n\n const prevIndex = this.currentIndex(this.levelsCount) - 1;\n\n return prevIndex > 0 ? this.levels[prevIndex] : undefined;\n }\n\n @computed get levelsCount() {\n return this.levels.length - 1; // - 1 because of the one image for 100% progress\n }\n\n private currentIndex(levelsCount: number) {\n const treshold = 100 / levelsCount;\n return Math.floor(this.progressPercent / treshold);\n }\n}\n","import { computed } from \"mobx\";\nimport { IVideoService } from \"../../../../shared/api/BackendApi\";\nimport { ThemeItem } from \"../../../../shared/components/basicThemesSection/ThemeItem\";\nimport { PreviousExamsStructure } from \"../../../../shared/contentStructure/PreviousExamsStructure\";\nimport { ActiveCourseParams } from \"../../../../shared/models/Url\";\nimport { CourseInfo } from \"../../../../shared/stores/Product\";\nimport { IProgressStore } from \"../../../../shared/stores/ProgressStore\";\nimport { FreeContentSectionDto } from \"../../../../types/courses/dto/FreeContentSectionDto\";\nimport { TrainingGroundInfoDto } from \"../../../../types/courses/dto/TrainingGroundInfoDto\";\nimport { TranslationsDto } from \"../../../../types/translations/dto/TranslationsDto\";\n\nexport interface FinishedThemesSection {\n __type: \"FinishedThemesSection\";\n themeSectionsModel: Pick;\n}\n\nexport interface InProgressThemesSection {\n __type: \"InProgressThemesSection\";\n themeSectionsModel: Pick;\n}\n\nexport interface NotStartedThemesSection {\n __type: \"NotStartedThemesSection\";\n themeSectionsModel: Pick;\n}\n\nexport interface ThemesWithFreeStepsSectionProperties {\n __type: \"ThemesWithFreeStepsSection\";\n themeSectionsModel: Pick;\n activeCourseParams: ActiveCourseParams;\n section: FreeContentSectionDto;\n}\n\nexport interface TrainingGroundSection {\n __type: \"TrainingGroundSection\";\n activeCourseParams: ActiveCourseParams;\n trainingGroundInfos: TrainingGroundInfoDto[];\n}\n\nexport interface PreviousExamsSection {\n __type: \"PreviousExamsSection\";\n model: PreviousExamsSectionModel;\n}\n\nexport interface OtherCoursesSection {\n __type: \"OtherCoursesSection\";\n courses: CourseInfo[];\n sectionTitle: keyof TranslationsDto;\n onCourseClick: (slug: string) => void;\n productTitle: string;\n}\n\nexport type DashboardSection =\n | FinishedThemesSection\n | InProgressThemesSection\n | NotStartedThemesSection\n | TrainingGroundSection\n | PreviousExamsSection\n | ThemesWithFreeStepsSectionProperties\n | OtherCoursesSection;\n\nexport class ThemeSectionsModel {\n @computed get finishedThemes() {\n return this.themes.filter(t => t.status === \"finished\");\n }\n\n @computed get inProgressThemes() {\n return this.themes.filter(t => t.status === \"inProgress\");\n }\n\n @computed get notStartedThemes() {\n return this.themes.filter(t => t.status === \"notStarted\" || t.status === \"underDevelopment\");\n }\n\n @computed get themesWithFreeSteps() {\n return this.themes.filter(t => t.themeStructure.hasStepsWithAccess);\n }\n\n constructor(private themes: ThemeItem[]) {}\n}\n\nexport class PreviousExamsSectionModel {\n @computed private get courseProgress() {\n return this.progressStore.courseProgress;\n }\n\n @computed get startedExamThemes() {\n const themesProgress = this.courseProgress.previousExamsThemesProgress.filter(\n themeProgress => themeProgress.isStarted\n );\n\n return themesProgress.map(themeProgress => {\n const examTheme = this.previousExamsStructure.examThemes.find(theme => theme.id === themeProgress.id);\n\n if (examTheme === undefined) {\n throw new Error(\"Exam theme with progress should be stored in PreviousExamsStructure\");\n }\n\n return {\n ...examTheme,\n examYear: new Date(examTheme.examDate).getFullYear().toString(),\n theme: new ThemeItem(examTheme.theme, this.progressStore, this.videoService),\n };\n });\n }\n\n @computed get previousExamsSection() {\n return this.previousExamsStructure.previousExamsSection;\n }\n\n constructor(\n private previousExamsStructure: PreviousExamsStructure,\n public urlParams: ActiveCourseParams,\n private progressStore: IProgressStore,\n private videoService: IVideoService\n ) {}\n}\n","import { action, computed, observable } from \"mobx\";\nimport { IVideoService } from \"../../shared/api/BackendApi\";\nimport { ITibetClient } from \"../../shared/api/TibetClient\";\nimport { ThemeItem } from \"../../shared/components/basicThemesSection/ThemeItem\";\nimport { CourseStructure } from \"../../shared/contentStructure/CourseStructure\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../shared/services/NavigationService\";\nimport { IProgressStore } from \"../../shared/stores/ProgressStore\";\nimport { UserStore } from \"../../shared/stores/UserStore\";\nimport { GtmBasePage } from \"../GtmBasePage\";\nimport { SearchQuery } from \"../search/siteSearch/addSiteSearchRouting\";\nimport { CourseLevel } from \"../shared/courseLevel/CourseLevel\";\nimport { PaymentSidePanelViewModel } from \"../shared/paymentDialog/PaymentSidePanelViewModel\";\nimport {\n DashboardSection,\n PreviousExamsSectionModel,\n ThemeSectionsModel,\n} from \"./components/dashboardSections/DashboardSection\";\n\nexport class DashboardViewModel extends GtmBasePage {\n @observable public sections: DashboardSection[] = [];\n\n @observable public themes: ThemeItem[] = [];\n\n @observable public searchQuery: SearchQuery;\n\n @computed get user() {\n return this.userStore.user;\n }\n\n @computed get courseProgress() {\n return this.progressStore.courseProgress;\n }\n\n @computed get heroImage() {\n if (this.courseStructure.levels) {\n const courseLevel = new CourseLevel(this.progressStore, this.courseStructure.levels);\n return courseLevel.level?.image;\n }\n\n return this.courseStructure.image;\n }\n\n @action.bound\n toSearchPage() {\n this.goToSearchPage(this.searchQuery.phrase);\n }\n\n constructor(\n public courseStructure: CourseStructure,\n public userStore: UserStore,\n public videoService: IVideoService,\n public progressStore: IProgressStore,\n public languageService: ILanguageService,\n public tibetClient: ITibetClient,\n public errorService: IErrorService,\n public paymentSidePanelViewModel: PaymentSidePanelViewModel,\n public navigation: ILowLevelNavigationService,\n public gtm: IGtmService,\n public goToSearchPage: (searchPhrase: string) => void,\n public goToCourse: (courseSlug: string) => void\n ) {\n super(languageService, gtm, errorService);\n this.themes = courseStructure.themeStructures.map(\n theme => new ThemeItem(theme, this.progressStore, this.videoService)\n );\n const themeSectionsModel = new ThemeSectionsModel(this.themes);\n\n this.searchQuery = { phrase: \"\" };\n\n if (!courseStructure.hasFullAccess && themeSectionsModel.themesWithFreeSteps.length > 0) {\n this.sections.push({\n __type: \"ThemesWithFreeStepsSection\",\n themeSectionsModel,\n activeCourseParams: this.courseStructure.urlParams,\n section: this.courseStructure.freeContentSection,\n });\n }\n\n if (courseStructure.hasFullAccess) {\n this.sections.push({\n __type: \"InProgressThemesSection\",\n themeSectionsModel,\n });\n this.sections.push({\n __type: \"NotStartedThemesSection\",\n themeSectionsModel,\n });\n }\n\n if (this.courseStructure.trainingGroundInfos && this.courseStructure.trainingGroundInfos.length > 0) {\n this.sections.push({\n __type: \"TrainingGroundSection\",\n trainingGroundInfos: this.courseStructure.trainingGroundInfos,\n activeCourseParams: this.courseStructure.urlParams,\n });\n }\n\n if (courseStructure.hasFullAccess) {\n this.sections.push({ __type: \"FinishedThemesSection\", themeSectionsModel });\n }\n\n if (this.courseStructure.previousExamsStructure) {\n const previousExamsSectionModel = new PreviousExamsSectionModel(\n this.courseStructure.previousExamsStructure,\n this.courseStructure.urlParams,\n this.progressStore,\n this.videoService\n );\n\n this.sections.push({\n __type: \"PreviousExamsSection\",\n model: previousExamsSectionModel,\n });\n }\n\n if (!userStore.isAuthenticated && !courseStructure.hasFullAccess) {\n this.sections.push({\n __type: \"OtherCoursesSection\",\n courses: this.courseStructure.otherCourses,\n sectionTitle: \"tryOtherCourses\",\n onCourseClick: goToCourse,\n productTitle: this.courseStructure.productTitle,\n });\n }\n }\n\n protected async loadData() {\n this.isLoading = false;\n }\n}\n","import { observable } from \"mobx\";\nimport { PaginatedList } from \"react-mvvm\";\n\nexport class Search {\n @observable public filters: TFilters;\n\n @observable public paginatedList: PaginatedList;\n\n private readonly PAGE_SIZE = 6;\n\n constructor(\n load: (options: { skip: number; take: number; filters: TFilters }) => Promise>,\n defaultFilters: TFilters,\n pageSize?: number\n ) {\n this.filters = defaultFilters;\n\n this.paginatedList = new PaginatedList(\n options => load({ ...options, filters: this.filters }),\n pageSize || this.PAGE_SIZE\n );\n }\n}\n","import { ImageDto } from \"../../../../../types/shared/dto/ImageDto\";\nimport { ContentReference } from \"../../../../models/Url\";\n\nexport interface IArticleThumbnail {\n id: string;\n contentRef: ContentReference;\n title: string;\n description?: string;\n color?: string;\n hasAccess: boolean;\n category?: string;\n isCompleted: false;\n image?: ImageDto;\n type: \"Article\";\n}\n\nexport class ArticleThumbnailViewModel implements IArticleThumbnail {\n id: string;\n\n contentRef: ContentReference;\n\n title: string;\n\n description?: string;\n\n image?: ImageDto;\n\n category?: string;\n\n readonly type = \"Article\";\n\n readonly isCompleted = false;\n\n color?: string;\n\n hasAccess: boolean;\n\n constructor(stepThumbnail: {\n id: string;\n title: string;\n image?: ImageDto;\n color?: string;\n category?: string;\n hasAccess: boolean;\n description?: string;\n slug: string;\n }) {\n this.id = stepThumbnail.id;\n this.contentRef = stepThumbnail;\n this.title = stepThumbnail.title;\n this.image = stepThumbnail.image;\n this.category = stepThumbnail.category;\n this.color = stepThumbnail.color;\n this.hasAccess = stepThumbnail.hasAccess;\n this.description = stepThumbnail.description;\n }\n}\n","// This code was generated by a Reinforced.Typings tool. \n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport const enum StepThumbnailTypeDto { \n\tVideo = \"Video\", \n\tTextBlock = \"TextBlock\", \n\tTaskGroup = \"TaskGroup\", \n\tTextTask = \"TextTask\", \n\tChoiceListTask = \"ChoiceListTask\", \n\tChoiceTask = \"ChoiceTask\", \n\tMaskTask = \"MaskTask\", \n\tInputTask = \"InputTask\", \n\tGapTask = \"GapTask\", \n\tMatchTask = \"MatchTask\", \n\tSound = \"Sound\"\n}\n","import { ImageDto } from \"../../../../../types/shared/dto/ImageDto\";\nimport { ContentReference } from \"../../../../models/Url\";\n\nexport interface ITestThumbnail {\n id: string;\n contentRef: ContentReference;\n title: string;\n description?: string;\n color?: string;\n image?: ImageDto;\n hasAccess: boolean;\n type: \"Test\";\n}\n\nexport class TestThumbnailViewModel implements ITestThumbnail {\n id: string;\n\n contentRef: ContentReference;\n\n title: string;\n\n description?: string;\n\n image?: ImageDto;\n\n color?: string;\n\n hasAccess: boolean;\n\n readonly type = \"Test\";\n\n constructor(stepThumbnail: {\n id: string;\n title: string;\n image?: ImageDto;\n color?: string;\n description?: string;\n hasAccess: boolean;\n slug: string;\n }) {\n this.id = stepThumbnail.id;\n this.contentRef = stepThumbnail;\n this.title = stepThumbnail.title;\n this.description = stepThumbnail.description;\n this.color = stepThumbnail.color;\n this.hasAccess = true;\n this.image = stepThumbnail.image;\n }\n}\n","import { ImageDto } from \"../../../../../types/shared/dto/ImageDto\";\nimport { ContentReference } from \"../../../../models/Url\";\n\nexport interface IThemeThumbnail {\n id: string;\n contentRef: ContentReference;\n title: string;\n description?: string;\n color?: string;\n image?: ImageDto;\n hasAccess: boolean;\n type: \"Theme\";\n}\n\nexport class ThemeThumbnailViewModel implements IThemeThumbnail {\n id: string;\n\n contentRef: ContentReference;\n\n title: string;\n\n description?: string;\n\n image?: ImageDto;\n\n color?: string;\n\n hasAccess: boolean;\n\n readonly type = \"Theme\";\n\n constructor(themeThumbnail: {\n id: string;\n title: string;\n image?: ImageDto;\n color?: string;\n description?: string;\n hasAccess: boolean;\n slug: string;\n }) {\n this.id = themeThumbnail.id;\n this.contentRef = themeThumbnail;\n this.title = themeThumbnail.title;\n this.description = themeThumbnail.description;\n this.color = themeThumbnail.color;\n this.hasAccess = true;\n this.image = themeThumbnail.image;\n }\n}\n","import { computed, observable } from \"mobx\";\nimport { asyncCommand, Command } from \"react-mvvm\";\nimport { IBookmarkStore } from \"../../../stores/BookmarkStore\";\nimport { IUserStore } from \"../../../stores/UserStore\";\n\nexport class BookmarkToggleViewModel {\n toggleBookmark: Command;\n\n @observable stepId: string;\n\n @observable private isLoading = false;\n\n @computed get isVisible() {\n return this.userStore.isAuthenticated;\n }\n\n @computed get isStepBookmarked() {\n return this.bookmarkStore.isBookmarked(this.stepId);\n }\n\n constructor(stepId: string, private bookmarkStore: IBookmarkStore, private userStore: IUserStore) {\n this.stepId = stepId;\n\n this.toggleBookmark = asyncCommand(\n async () => {\n this.isLoading = true;\n const stepBookmark = this.bookmarkStore.getBookmark(stepId);\n\n if (stepBookmark) {\n this.bookmarkStore.removeBookmark(stepBookmark);\n await stepBookmark.delete();\n this.isLoading = false;\n return;\n }\n\n const newBookmark = this.bookmarkStore.createBookmark(stepId);\n await newBookmark.save();\n this.isLoading = false;\n },\n () => !this.isLoading\n );\n }\n}\n","import { observable } from \"mobx\";\nimport { IVideoService } from \"../../../shared/api/BackendApi\";\nimport {\n ArticleThumbnailViewModel,\n IArticleThumbnail,\n} from \"../../../shared/components/thumbnails/searchThumbnail/articleThumbnail/ArticleThumbnailViewModel\";\nimport {\n ITestThumbnail,\n TestThumbnailViewModel,\n} from \"../../../shared/components/thumbnails/searchThumbnail/testThumbnail/TestThumbnailViewModel\";\nimport {\n IThemeThumbnail,\n ThemeThumbnailViewModel,\n} from \"../../../shared/components/thumbnails/searchThumbnail/themeThumbnail/ThemeThumbnailViewModel\";\nimport { BookmarkToggleViewModel } from \"../../../shared/components/thumbnails/shared/BookmarkToggleViewModel\";\nimport {\n ITaskThumbnail,\n TaskThumbnailViewModel,\n} from \"../../../shared/components/thumbnails/stepThumbnail/TaskThumbnailViewModel\";\nimport {\n ITextBlockThumbnail,\n TextBlockThumbnailViewModel,\n} from \"../../../shared/components/thumbnails/stepThumbnail/TextBlockThumbnailViewModel\";\nimport {\n IVideoThumbnail,\n VideoThumbnailViewModel,\n} from \"../../../shared/components/thumbnails/stepThumbnail/VideoThumbnailViewModel\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { BookmarkStore } from \"../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../shared/stores/ProgressStore\";\nimport { UserStore } from \"../../../shared/stores/UserStore\";\nimport { assertUnreachable } from \"../../../shared/typeUtils\";\nimport { SearchContentTypeDto } from \"../../../types/search/dto/SearchContentTypeDto\";\nimport { SearchResultItemDto } from \"../../../types/search/dto/SearchResultItemDto\";\nimport { StepThumbnailTypeDto } from \"../../../types/shared/dto/StepThumbnailTypeDto\";\nimport { PaymentSidePanelViewModel } from \"../../shared/paymentDialog/PaymentSidePanelViewModel\";\n\nexport type ISearchThumbnail =\n | IVideoThumbnail\n | ITaskThumbnail\n | ITextBlockThumbnail\n | IArticleThumbnail\n | IThemeThumbnail\n | ITestThumbnail;\n\n// this should be removed\nexport const searchTaskTypeToStepThumbnailType = (\n searchType:\n | SearchContentTypeDto.ChoiceTask\n | SearchContentTypeDto.ChoiceListTask\n | SearchContentTypeDto.TextTask\n | SearchContentTypeDto.TaskGroup\n | SearchContentTypeDto.MaskTask\n | SearchContentTypeDto.InputTask\n | SearchContentTypeDto.GapTask\n | SearchContentTypeDto.MatchTask\n) => {\n switch (searchType) {\n case SearchContentTypeDto.ChoiceTask:\n return StepThumbnailTypeDto.ChoiceTask;\n case SearchContentTypeDto.ChoiceListTask:\n return StepThumbnailTypeDto.ChoiceListTask;\n case SearchContentTypeDto.TextTask:\n return StepThumbnailTypeDto.TextTask;\n case SearchContentTypeDto.TaskGroup:\n return StepThumbnailTypeDto.TaskGroup;\n case SearchContentTypeDto.MaskTask:\n return StepThumbnailTypeDto.MaskTask;\n case SearchContentTypeDto.InputTask:\n return StepThumbnailTypeDto.InputTask;\n case SearchContentTypeDto.GapTask:\n return StepThumbnailTypeDto.GapTask;\n case SearchContentTypeDto.MatchTask:\n return StepThumbnailTypeDto.MatchTask;\n default: {\n return assertUnreachable(searchType);\n }\n }\n};\n\nexport class SearchItemViewModel {\n @observable thumbnail: ISearchThumbnail;\n\n @observable id: string;\n\n constructor(\n public activeCourseStructure: CourseStructure,\n public searchResultItemDto: SearchResultItemDto,\n progressStore: IProgressStore,\n videoService: IVideoService,\n public paymentSidePanelViewModel: PaymentSidePanelViewModel,\n bookmarkStore: BookmarkStore,\n userStore: UserStore\n ) {\n this.thumbnail = this.createSearchThumbnailViewModel(progressStore, videoService, bookmarkStore, userStore);\n this.id = searchResultItemDto.id;\n }\n\n private createSearchThumbnailViewModel(\n progressStore: IProgressStore,\n videoService: IVideoService,\n bookmarkStore: BookmarkStore,\n userStore: UserStore\n ) {\n switch (this.searchResultItemDto.type) {\n case SearchContentTypeDto.Video:\n return new VideoThumbnailViewModel(\n { ...this.searchResultItemDto, type: StepThumbnailTypeDto.Video },\n progressStore,\n videoService,\n new BookmarkToggleViewModel(this.searchResultItemDto.id, bookmarkStore, userStore)\n );\n case SearchContentTypeDto.ChoiceTask:\n case SearchContentTypeDto.ChoiceListTask:\n case SearchContentTypeDto.TextTask:\n case SearchContentTypeDto.TaskGroup:\n case SearchContentTypeDto.MaskTask:\n case SearchContentTypeDto.InputTask:\n case SearchContentTypeDto.GapTask:\n case SearchContentTypeDto.MatchTask:\n return new TaskThumbnailViewModel(\n { ...this.searchResultItemDto, type: searchTaskTypeToStepThumbnailType(this.searchResultItemDto.type) },\n progressStore,\n new BookmarkToggleViewModel(this.searchResultItemDto.id, bookmarkStore, userStore)\n );\n case SearchContentTypeDto.Article:\n return new ArticleThumbnailViewModel({ ...this.searchResultItemDto });\n case SearchContentTypeDto.TextBlock:\n return new TextBlockThumbnailViewModel({ ...this.searchResultItemDto }, progressStore);\n case SearchContentTypeDto.Theme:\n return new ThemeThumbnailViewModel({ ...this.searchResultItemDto });\n case SearchContentTypeDto.Test:\n return new TestThumbnailViewModel({ ...this.searchResultItemDto });\n\n default:\n return assertUnreachable(this.searchResultItemDto.type);\n }\n }\n}\n","import { observable } from \"mobx\";\nimport { ISearchService, IVideoService } from \"../../../shared/api/BackendApi\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { Search } from \"../../../shared/models/Search\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../../shared/services/LanguageService\";\nimport { BookmarkStore } from \"../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../shared/stores/ProgressStore\";\nimport { UserStore } from \"../../../shared/stores/UserStore\";\nimport { SearchContentTypeDto } from \"../../../types/search/dto/SearchContentTypeDto\";\nimport { GtmBasePage } from \"../../GtmBasePage\";\nimport { PaymentSidePanelViewModel } from \"../../shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { SearchItemViewModel } from \"../searchItem/SearchItemViewModel\";\n\nexport type FiltersType = \"video\" | \"tasks\" | \"theme\" | \"otherContent\";\n\ninterface SiteSearchFilters {\n phrase: string;\n filterNames: string[];\n}\n\nexport class SiteSearchViewModel extends GtmBasePage {\n private readonly defaultFilters: SiteSearchFilters = {\n phrase: \"\",\n filterNames: [],\n };\n\n @observable public totalCount?: number;\n\n @observable public search: Search;\n\n @observable public isLoading = false;\n\n constructor(\n public activeCourseStructure: CourseStructure,\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public progressStore: IProgressStore,\n public searchService: ISearchService,\n public videoService: IVideoService,\n private paymentSidePanelViewModel: PaymentSidePanelViewModel,\n private bookmarkStore: BookmarkStore,\n private userStore: UserStore,\n gtm: IGtmService,\n siteSearchFilter: Partial\n ) {\n super(languageService, gtm, errorService);\n this.search = new Search(options => this.load(options), { ...this.defaultFilters, ...siteSearchFilter });\n }\n\n private async load(options: {\n skip: number;\n take: number;\n filters: SiteSearchFilters;\n }): Promise> {\n const { skip, take, filters } = options;\n\n if (filters.phrase.trim() === \"\") {\n this.totalCount = undefined;\n return [];\n }\n\n this.isLoading = true;\n\n const searchFilters: SearchContentTypeDto[] = [];\n if (filters.filterNames.includes(\"video\")) {\n searchFilters.push(SearchContentTypeDto.Video);\n }\n\n if (filters.filterNames.includes(\"tasks\")) {\n searchFilters.push(SearchContentTypeDto.TextTask);\n searchFilters.push(SearchContentTypeDto.ChoiceTask);\n searchFilters.push(SearchContentTypeDto.ChoiceListTask);\n searchFilters.push(SearchContentTypeDto.MaskTask);\n searchFilters.push(SearchContentTypeDto.TaskGroup);\n searchFilters.push(SearchContentTypeDto.Test);\n }\n\n if (filters.filterNames.includes(\"theme\")) {\n searchFilters.push(SearchContentTypeDto.Theme);\n }\n\n if (filters.filterNames.includes(\"otherContent\")) {\n searchFilters.push(SearchContentTypeDto.Article, SearchContentTypeDto.TextBlock);\n }\n\n const searchResults = await this.searchService.searchContent({\n skip,\n take,\n courseId: this.activeCourseStructure.id,\n phrase: filters.phrase,\n searchFilters,\n });\n\n this.totalCount = searchResults.totalCount;\n this.isLoading = false;\n return searchResults.searchResultItems.map(\n searchResult =>\n new SearchItemViewModel(\n this.activeCourseStructure,\n searchResult,\n this.progressStore,\n this.videoService,\n this.paymentSidePanelViewModel,\n this.bookmarkStore,\n this.userStore\n )\n );\n }\n\n // eslint-disable-next-line class-methods-use-this\n protected async loadData() {\n this.isLoading = false;\n }\n}\n","export const getPreviousElement = (list: T[], element: T) => {\n const indexOfCurrentElement = list.findIndex(listElement => listElement.id === element.id);\n\n if (indexOfCurrentElement < 1) {\n return;\n }\n\n return list[indexOfCurrentElement - 1];\n};\n\nexport const getNextElement = (list: T[], element: T) => {\n const indexOfCurrentElement = list.findIndex(listElement => listElement.id === element.id);\n\n if (indexOfCurrentElement === -1 || indexOfCurrentElement === list.length - 1) {\n return;\n }\n\n return list[indexOfCurrentElement + 1];\n};\n\nexport const isLastElement = (list: T[], element: T) => {\n if (list.length === 0) {\n return false;\n }\n\n const indexOfCurrentElement = list.findIndex(listElement => listElement.id === element.id);\n\n return indexOfCurrentElement === list.length - 1;\n};\n","import head from \"lodash/head\";\nimport { LessonStructure } from \"../../../shared/contentStructure/LessonStructure\";\nimport { StepStructure } from \"../../../shared/contentStructure/StepStructure\";\nimport { ThemeStructure } from \"../../../shared/contentStructure/ThemeStructure\";\nimport { getNextElement, getPreviousElement } from \"../../../shared/listUtils\";\nimport { CourseProgress } from \"../../../shared/progressStructure/CourseProgress\";\nimport { assertUnreachable } from \"../../../shared/typeUtils\";\n\nexport class CourseNavigator {\n constructor(private courseProgress: CourseProgress) {}\n\n getPreviousStep = (stepStructure: StepStructure) => {\n const { lessonStructure } = stepStructure;\n return getPreviousElement(lessonStructure.stepStructures, stepStructure);\n };\n\n getNextStep = (stepStructure: StepStructure) => {\n const { lessonStructure } = stepStructure;\n return getNextElement(lessonStructure.stepStructures, stepStructure);\n };\n\n getFirstThemeTest = (lessonStructure: LessonStructure) => {\n const { themeStructure } = lessonStructure;\n return head(themeStructure.testStructures);\n };\n\n getFirstUnfinishedStep = (lessonStructure: LessonStructure) => {\n const { id, stepStructures } = lessonStructure;\n const lessonProgress = this.courseProgress.getLessonProgressById(id);\n\n return stepStructures.find(stepStructure => lessonProgress.getIsStepCompletedById(stepStructure.id) === false);\n };\n\n private getNextLesson = (lessonStructure: LessonStructure) => {\n const { themeStructure } = lessonStructure;\n return getNextElement(themeStructure.lessonStructures, lessonStructure);\n };\n\n getFirstStepFromTheNextLesson = (lessonStructure: LessonStructure) => {\n const nextLesson = this.getNextLesson(lessonStructure);\n\n if (!nextLesson) {\n return;\n }\n\n return head(nextLesson.stepStructures);\n };\n\n private filterOutUnderDevelopmentThemes = (themeStructures: ThemeStructure[]) => {\n return themeStructures.filter(themeStructure => !themeStructure.isUnderDevelopment);\n };\n\n getPreviousTheme = (themeStructure: ThemeStructure) => {\n const { courseStructure, source } = themeStructure;\n\n switch (source) {\n case \"course\":\n return getPreviousElement(\n this.filterOutUnderDevelopmentThemes(courseStructure.themeStructures),\n themeStructure\n );\n case \"previousExams\":\n if (!courseStructure.coursePreviousExamsThemes) {\n return;\n }\n\n return getPreviousElement(\n this.filterOutUnderDevelopmentThemes(courseStructure.coursePreviousExamsThemes),\n themeStructure\n );\n default:\n return assertUnreachable(source);\n }\n };\n\n getNextTheme = (themeStructure: ThemeStructure) => {\n const { courseStructure, source } = themeStructure;\n\n switch (source) {\n case \"course\":\n return getNextElement(this.filterOutUnderDevelopmentThemes(courseStructure.themeStructures), themeStructure);\n case \"previousExams\":\n if (!courseStructure.coursePreviousExamsThemes) {\n return;\n }\n\n return getNextElement(\n this.filterOutUnderDevelopmentThemes(courseStructure.coursePreviousExamsThemes),\n themeStructure\n );\n default:\n return assertUnreachable(source);\n }\n };\n\n getFirstStepFromTheNextTheme = (lessonStructure: LessonStructure) => {\n const nextTheme = this.getNextTheme(lessonStructure.themeStructure);\n\n if (!nextTheme) {\n return;\n }\n\n const nextThemeFirstLesson = head(nextTheme.lessonStructures);\n\n if (!nextThemeFirstLesson) {\n return;\n }\n\n return head(nextThemeFirstLesson.stepStructures);\n };\n}\n","import { action, computed, observable } from \"mobx\";\nimport { BackendApi } from \"../../shared/api/BackendApi\";\nimport { ITibetClient } from \"../../shared/api/TibetClient\";\nimport { CourseStructure } from \"../../shared/contentStructure/CourseStructure\";\nimport { Url } from \"../../shared/models/Url\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../shared/services/NavigationService\";\nimport { BookmarkStore } from \"../../shared/stores/BookmarkStore\";\nimport { Product } from \"../../shared/stores/Product\";\nimport { IProgressStore, ProgressStore } from \"../../shared/stores/ProgressStore\";\nimport { UserStore } from \"../../shared/stores/UserStore\";\nimport { ConfigDto } from \"../../types/config/dto/ConfigDto\";\nimport { BasePage } from \"../BasePage\";\nimport { DashboardViewModel } from \"../dashboard/DashboardViewModel\";\nimport { SiteSearchViewModel } from \"../search/siteSearch/SiteSearchViewModel\";\nimport { CourseNavigator } from \"../shared/courseNavigator/CourseNavigator\";\nimport { PaymentSidePanelViewModel } from \"../shared/paymentDialog/PaymentSidePanelViewModel\";\n\nexport class CourseViewModel extends BasePage {\n @observable public bookmarkStore: BookmarkStore;\n\n @observable public progressStore: IProgressStore;\n\n @observable public courseNavigator: CourseNavigator;\n\n @observable public paymentSidePanelViewModel: PaymentSidePanelViewModel;\n\n @computed get courseSlug() {\n return this.courseStructure.slug;\n }\n\n constructor(\n public config: ConfigDto,\n public languageService: ILanguageService,\n public product: Product,\n public userStore: UserStore,\n public tibetClient: ITibetClient,\n public navigation: ILowLevelNavigationService,\n public backendApi: BackendApi,\n public gtm: IGtmService,\n public errorService: IErrorService,\n public courseStructure: CourseStructure\n ) {\n super(languageService, errorService);\n this.bookmarkStore = new BookmarkStore(backendApi, userStore, this.courseStructure);\n this.progressStore = new ProgressStore(backendApi, userStore, this.courseStructure);\n this.courseNavigator = new CourseNavigator(this.progressStore.courseProgress);\n this.paymentSidePanelViewModel = new PaymentSidePanelViewModel(\n tibetClient,\n this.courseStructure,\n this.errorService,\n this.navigation\n );\n }\n\n protected async loadData() {\n await Promise.all([this.bookmarkStore.init(), this.progressStore.init()]);\n this.isLoading = false;\n }\n\n @action.bound\n goToCourse(courseSlug: string) {\n this.navigation.redirectTo(Url.toDashboardPage({ ...this.product.productParams, courseSlug }));\n }\n\n @action.bound\n activateSearchPage(searchPhrase: string) {\n this.showChildPage(\n new SiteSearchViewModel(\n this.courseStructure,\n this.languageService,\n this.errorService,\n this.progressStore,\n this.backendApi,\n this.backendApi,\n this.paymentSidePanelViewModel,\n this.bookmarkStore,\n this.userStore,\n this.gtm,\n { phrase: searchPhrase, filterNames: [] }\n )\n );\n }\n\n async onActivated() {\n if (this.userStore.isAuthenticated && this.navigation.isRoot(this.product.slug, this.courseSlug)) {\n this.showChildPage(\n new DashboardViewModel(\n this.courseStructure,\n this.userStore,\n this.backendApi,\n this.progressStore,\n this.languageService,\n this.tibetClient,\n this.errorService,\n this.paymentSidePanelViewModel,\n this.navigation,\n this.gtm,\n this.activateSearchPage,\n this.goToCourse\n )\n );\n }\n }\n}\n","import uniqueId from \"lodash/uniqueId\";\n\nexport class PaymentError extends Error {\n public id = uniqueId();\n\n constructor(public message: string) {\n super(message);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IRoute } from \"react-mvvm\";\nimport { PaymentError } from \"../../shared/services/errors/PaymentError\";\nimport { assertUnreachable } from \"../../shared/typeUtils\";\nimport { App } from \"../App\";\n\nclass ErrorViewModel {}\n\nexport type ErrorParams = {\n errorType: \"payment\";\n};\n\nexport const addErrorRoutes = (appRoute: IRoute) => {\n const productRoute = appRoute.addRoute(\"/error/:errorType\", ErrorViewModel, (_, errorParams) => {\n switch (errorParams.errorType) {\n case \"payment\": {\n throw new PaymentError(errorParams.errorType);\n }\n default:\n return assertUnreachable(errorParams.errorType);\n }\n });\n return productRoute;\n};\n","import { IStepService, Step } from \"../../shared/api/StepService\";\n\nexport class StepApi {\n constructor(private courseId: string, private stepService: IStepService) {}\n\n find(slug: string): Promise {\n return this.stepService.getStep({ slug, courseId: this.courseId });\n }\n}\n","import { action, observable } from \"mobx\";\nimport { StepApi } from \"./StepApi\";\nimport { LessonTask } from \"./lesson/steps/LessonTask\";\nimport { StepFactory } from \"./lesson/steps/StepFactory\";\nimport { SoundStep } from \"./lesson/steps/soundStep/SoundStep\";\nimport { TaskGroupStep } from \"./lesson/steps/taskGroupStep/TaskGroupStep\";\nimport { TextBlockStep } from \"./lesson/steps/textBlockStep/TextBlockStep\";\nimport { VideoStep } from \"./lesson/steps/videoStep/VideoStep\";\n\nexport type StepViewModel = LessonTask | VideoStep | TextBlockStep | TaskGroupStep | SoundStep;\n\nexport class StepStore {\n bySlug = observable.map();\n\n constructor(private stepApi: StepApi, private stepFactory: StepFactory) {}\n\n @action\n async load(slug: string) {\n const step = await this.stepApi.find(slug);\n\n this.bySlug.set(slug, this.stepFactory.createStep(step));\n }\n}\n","import { action, observable } from \"mobx\";\nimport { asyncCommand, Command, command } from \"react-mvvm\";\nimport { IBookmarkStore } from \"../../../../../shared/stores/BookmarkStore\";\n\nexport class AddBookmarkDialogViewModel {\n @observable message = \"\";\n\n done: Command;\n\n cancel: Command;\n\n @observable isVisible = false;\n\n @action.bound\n public show() {\n this.message = \"\";\n this.isVisible = true;\n }\n\n @action.bound\n public hide() {\n this.isVisible = false;\n }\n\n constructor(private stepId: string, private bookmarkStore: IBookmarkStore) {\n this.done = asyncCommand(async () => {\n const bookmark = this.bookmarkStore.createBookmark(this.stepId);\n bookmark.message = this.message;\n await bookmark.save();\n this.hide();\n });\n this.cancel = command(\n () => {\n this.hide();\n },\n () => !this.done.isRunning\n );\n }\n}\n","import { action, observable } from \"mobx\";\nimport { Command, command } from \"react-mvvm\";\nimport { IBookmarkStore } from \"../../../../../shared/stores/BookmarkStore\";\n\nexport class RemoveBookmarkDialogViewModel {\n done: Command;\n\n cancel: Command;\n\n @observable isVisible = false;\n\n @action.bound\n public show() {\n this.isVisible = true;\n }\n\n @action.bound\n public hide() {\n this.isVisible = false;\n }\n\n constructor(private stepId: string, private bookmarkStore: IBookmarkStore) {\n this.done = command(() => {\n const bookmark = this.bookmarkStore.bookmarks.find(b => b.stepId === this.stepId);\n bookmark && bookmark.delete();\n this.hide();\n });\n this.cancel = command(\n () => {\n this.hide();\n },\n () => !this.done.isRunning\n );\n }\n}\n","import { computed } from \"mobx\";\nimport { IVideoService } from \"../../../../shared/api/BackendApi\";\nimport { Popup } from \"../../../../shared/components/popup/Popup\";\nimport { CourseStructure } from \"../../../../shared/contentStructure/CourseStructure\";\nimport { LessonStructure } from \"../../../../shared/contentStructure/LessonStructure\";\nimport { isLastElement } from \"../../../../shared/listUtils\";\nimport { LessonProgress } from \"../../../../shared/progressStructure/LessonProgress\";\nimport { IBookmarkStore } from \"../../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../../shared/stores/ProgressStore\";\nimport { IUserStore } from \"../../../../shared/stores/UserStore\";\nimport { CourseNavigator } from \"../../../shared/courseNavigator/CourseNavigator\";\nimport { PaymentSidePanelViewModel } from \"../../../shared/paymentDialog/PaymentSidePanelViewModel\";\n\ninterface CongratulationPopupModel {\n courseStructure: CourseStructure;\n lesson: LessonStructure;\n progressStore: IProgressStore;\n lessonProgress: LessonProgress;\n videoService: IVideoService;\n bookmarkStore: IBookmarkStore;\n userStore: IUserStore;\n paymentSidePanelViewModel: PaymentSidePanelViewModel;\n courseNavigator: CourseNavigator;\n}\n\nexport class CongratulationPopupViewModel extends Popup {\n @computed get relatedTrainingGround() {\n const { lesson } = this.congratulationPopupModel;\n const { themeStructure } = lesson;\n\n return themeStructure.relatedTrainingGround;\n }\n\n @computed get previousExamsStructure() {\n const { courseStructure } = this.congratulationPopupModel;\n\n return courseStructure.previousExamsStructure;\n }\n\n @computed get isAnyTrainingAvailable() {\n return !!this.relatedTrainingGround || !!this.previousExamsStructure;\n }\n\n @computed get isLastLesson() {\n const { lesson } = this.congratulationPopupModel;\n const { themeStructure } = lesson;\n\n return isLastElement(themeStructure.lessonStructures, lesson);\n }\n\n @computed get isLastElement() {\n const { lesson } = this.congratulationPopupModel;\n const { themeStructure } = lesson;\n const { courseStructure } = themeStructure;\n return isLastElement(courseStructure.themeStructures, themeStructure);\n }\n\n @computed get buyCourseViewModel() {\n return this.congratulationPopupModel.paymentSidePanelViewModel.buyCourseVm;\n }\n\n constructor(public congratulationPopupModel: CongratulationPopupModel) {\n super();\n }\n}\n","import { computed, observable, observe } from \"mobx\";\nimport { Popup } from \"../../../../shared/components/popup/Popup\";\nimport { CourseLevel, Level } from \"../../../shared/courseLevel/CourseLevel\";\n\ninterface LevelSidePanelCourseProgress {\n progress: number;\n}\n\nexport class LevelSidePanelViewModel extends Popup {\n @observable newLevel = this.courseLevel.level;\n\n @observable oldLevel?: Level;\n\n @computed get progressValue() {\n return this.courseProgress.progress;\n }\n\n constructor(private courseProgress: LevelSidePanelCourseProgress, private courseLevel: CourseLevel) {\n super();\n\n observe(courseLevel, \"level\", ({ newValue, oldValue }) => {\n this.newLevel = newValue;\n this.oldLevel = oldValue;\n });\n }\n}\n","import { IStepThumbnail } from \"../../../../shared/components/thumbnails/stepThumbnail/createStepThumbnailViewModel\";\n\nexport class StepListItem {\n readonly id: string;\n\n readonly title: string;\n\n readonly slug: string;\n\n readonly color?: string;\n\n constructor(\n step: { id: string; title: string; slug: string; color?: string },\n public readonly thumbnail: IStepThumbnail\n ) {\n this.id = step.id;\n this.title = step.title;\n this.slug = step.slug;\n this.color = step.color;\n }\n}\n","import head from \"lodash/head\";\nimport last from \"lodash/last\";\nimport { computed, observable, observe, reaction } from \"mobx\";\nimport { asyncCommand, command, Command } from \"react-mvvm\";\nimport { IVideoService } from \"../../../shared/api/BackendApi\";\nimport { Popup } from \"../../../shared/components/popup/Popup\";\nimport { BookmarkToggleViewModel } from \"../../../shared/components/thumbnails/shared/BookmarkToggleViewModel\";\nimport { createStepThumbnailViewModel } from \"../../../shared/components/thumbnails/stepThumbnail/createStepThumbnailViewModel\";\nimport { LessonStructure } from \"../../../shared/contentStructure/LessonStructure\";\nimport { StepStructure } from \"../../../shared/contentStructure/StepStructure\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../../shared/services/NavigationService\";\nimport { BookmarkStore } from \"../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../shared/stores/ProgressStore\";\nimport { IUserStore } from \"../../../shared/stores/UserStore\";\nimport { BasePage } from \"../../BasePage\";\nimport { IAppMotifProvider } from \"../../shared/AppMotif\";\nimport { CourseLevel } from \"../../shared/courseLevel/CourseLevel\";\nimport { CourseNavigator } from \"../../shared/courseNavigator/CourseNavigator\";\nimport { PaymentSidePanelViewModel } from \"../../shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { StepStore } from \"../StepStore\";\nimport { AddBookmarkDialogViewModel } from \"./bookmarkDialog/addBookmarkDialog/AddBookmarkDialogViewModel\";\nimport { RemoveBookmarkDialogViewModel } from \"./bookmarkDialog/removeBookmarkDialog/RemoveBookmarkDialogViewModel\";\nimport { CongratulationPopupViewModel } from \"./congratulationPopup/CongratulationPopupViewModel\";\nimport { LevelSidePanelViewModel } from \"./levelSidePanel/LevelSidePanelViewModel\";\nimport { StepListItem } from \"./stepsList/StepListItem\";\n\nexport interface StepNavigationItem {\n slug: string;\n hasAccess: boolean;\n}\n\nexport class LessonViewModel extends BasePage implements IAppMotifProvider {\n @observable currentStepSlug: string;\n\n @observable congratulationPopupViewModel: CongratulationPopupViewModel;\n\n @observable levelSidePanelViewModel?: LevelSidePanelViewModel;\n\n @observable stepsListPanel: Popup;\n\n showBookmarkModal: Command;\n\n goToNextStep: Command;\n\n goToPreviousStep: Command;\n\n toggleStepCompletion: Command;\n\n goToStep: Command;\n\n @computed get currentStep() {\n return this.stepStore.bySlug.get(this.currentStepSlug);\n }\n\n @computed get currentStepStructure() {\n const stepStructure = this.lesson.stepStructures.find(structure => structure.slug === this.currentStepSlug);\n\n if (!stepStructure) {\n throw new Error(\"All steps should have StepStructure\");\n }\n\n return stepStructure;\n }\n\n @computed get steps() {\n return this.lesson.stepStructures.map(step => {\n const { id, slug, title, thumbnail } = step;\n const thumbnailViewModel = createStepThumbnailViewModel(thumbnail, this.progressStore, this.videoService);\n return new StepListItem({ id, slug, title }, thumbnailViewModel);\n });\n }\n\n @computed get stepList() {\n return this.lesson.stepStructures;\n }\n\n @computed get stepsCount() {\n return this.steps.length;\n }\n\n @computed get completedStepsCount() {\n return this.lessonProgress.completedStepsCount;\n }\n\n @computed get isLessonCompleted() {\n return this.lessonProgress.isCompleted;\n }\n\n @computed get isLastStep() {\n return this.currentStep?.id === last(this.steps)?.id;\n }\n\n @computed get isFirstStep() {\n return this.currentStep?.id === head(this.steps)?.id;\n }\n\n @computed get nextStep() {\n return this.courseNavigator.getNextStep(this.currentStepStructure);\n }\n\n @computed get previousStep() {\n return this.courseNavigator.getPreviousStep(this.currentStepStructure);\n }\n\n @computed get appMotif() {\n return { color: this.lesson.color };\n }\n\n @computed get lessonProgress() {\n const parentThemeId = this.lesson.themeStructure.id;\n return this.progressStore.courseProgress.getThemeProgressById(parentThemeId).getLessonProgressById(this.lesson.id);\n }\n\n @computed get relatedContentThumbnails() {\n if (this.currentStep?.relatedContentIds === undefined) {\n return [];\n }\n\n return this.currentStep.relatedContentIds\n .map(id => this.courseStructure.allSteps.find(step => step.id === id))\n .filter((stepStructure): stepStructure is StepStructure => !!stepStructure)\n .map(stepStructure =>\n createStepThumbnailViewModel(\n stepStructure.thumbnail,\n this.progressStore,\n this.videoService,\n new BookmarkToggleViewModel(stepStructure.id, this.bookmarkStore, this.userStore)\n )\n );\n }\n\n @computed get isAuthenticated() {\n return this.userStore.isAuthenticated;\n }\n\n @computed get themeSlug() {\n return this.lesson.themeStructure.slug;\n }\n\n @computed get courseStructure() {\n return this.lesson.themeStructure.courseStructure;\n }\n\n @computed get addBookmarkDialogViewModel() {\n return new AddBookmarkDialogViewModel(this.currentStepStructure.id, this.bookmarkStore);\n }\n\n @computed get removeBookmarkDialogViewModel() {\n return new RemoveBookmarkDialogViewModel(this.currentStepStructure.id, this.bookmarkStore);\n }\n\n constructor(\n stepSlug: string,\n public lesson: LessonStructure,\n public stepStore: StepStore,\n public videoService: IVideoService,\n public progressStore: IProgressStore,\n public bookmarkStore: BookmarkStore,\n public userStore: IUserStore,\n languageService: ILanguageService,\n errorService: IErrorService,\n public paymentSidePanelViewModel: PaymentSidePanelViewModel,\n public navigationService: ILowLevelNavigationService,\n public gtm: IGtmService,\n public courseNavigator: CourseNavigator\n ) {\n super(languageService, errorService);\n\n reaction(\n () => this.currentStepSlug,\n async () => {\n this.isLoading = true;\n await stepStore.load(this.currentStepSlug);\n this.isLoading = false;\n }\n );\n\n this.currentStepSlug = stepSlug;\n this.congratulationPopupViewModel = new CongratulationPopupViewModel(this);\n\n this.showBookmarkModal = command(() =>\n !this.currentStep?.isBookmarked\n ? this.addBookmarkDialogViewModel.show()\n : this.removeBookmarkDialogViewModel.show()\n );\n this.goToStep = asyncCommand(async (newStep: StepNavigationItem) => {\n if (!newStep.hasAccess) {\n this.paymentSidePanelViewModel.show();\n return;\n }\n\n this.currentStepSlug = newStep.slug;\n this.stepsListPanel.close();\n this.addBookmarkDialogViewModel.hide();\n this.removeBookmarkDialogViewModel.hide();\n this.paymentSidePanelViewModel.close();\n });\n this.goToNextStep = command(\n () => {\n if (this.isLastStep) {\n this.congratulationPopupViewModel.show();\n return;\n }\n\n if (this.nextStep === undefined) {\n return;\n }\n\n this.goToStep.execute(this.nextStep);\n },\n () => !this.congratulationPopupViewModel.isOpen && (this.isLastStep || this.nextStep !== undefined)\n );\n this.goToPreviousStep = command(\n () => {\n if (this.previousStep === undefined) {\n return;\n }\n\n this.goToStep.execute(this.previousStep);\n },\n () => !!this.previousStep\n );\n\n this.toggleStepCompletion = asyncCommand(\n async (done: boolean) => {\n if (!this.currentStep) {\n return;\n }\n\n if (done) {\n await this.currentStep.markStepAsCompleted();\n } else {\n await this.currentStep.markStepAsUncompleted();\n }\n },\n () => this.currentStep !== undefined\n );\n\n this.stepsListPanel = new Popup();\n }\n\n protected async loadData() {\n this.isLoading = false;\n }\n\n async onActivated() {\n if (this.courseStructure.levels) {\n const courseLevel = new CourseLevel(this.progressStore, this.courseStructure.levels);\n\n this.levelSidePanelViewModel = new LevelSidePanelViewModel(this.progressStore.courseProgress, courseLevel);\n\n observe(courseLevel, \"level\", ({ newValue, oldValue }) => {\n if (oldValue && newValue && newValue.order > oldValue.order) {\n this.levelSidePanelViewModel?.show();\n }\n });\n }\n super.onActivated();\n }\n}\n","import { TaskId, AnswerQuestions } from \"./taskUtils\";\n\nexport type UserAnswer = { taskId: TaskId; value: AnswerQuestions };\n\ntype CorrectAnswers = {\n [taskId: TaskId]: AnswerQuestions;\n};\n\ninterface TaskResult {\n taskId: TaskId;\n correctAnswers: AnswerQuestions;\n isCorrect: boolean;\n}\n\nexport interface CheckAnswersResult {\n numberOfCorrectAnswers: number;\n numberOfQuestions: number;\n taskResults: TaskResult[];\n}\n\nexport interface TaskService {\n checkAnswers(userAnswers: UserAnswer[]): CheckAnswersResult;\n getCorrectAnswers(id: TaskId): Promise;\n}\n\nexport class LocalTaskService implements TaskService {\n private correctAnswers: CorrectAnswers = {};\n\n registerTask(taskId: TaskId, correctAnswer: AnswerQuestions) {\n this.correctAnswers[taskId] = correctAnswer;\n }\n\n checkAnswers(userAnswers: UserAnswer[]): CheckAnswersResult {\n const taskResults = userAnswers.map(userAnswer => {\n const correctAnswers = this.correctAnswers[userAnswer.taskId];\n if (!correctAnswers) {\n throw new Error(`Unregistered task with id: ${userAnswer.taskId}`);\n }\n\n const isCorrect = correctAnswers.every(correctAnswer => {\n const userAnswerToQuestion = userAnswer.value.find(v => v.questionId === correctAnswer.questionId);\n if (userAnswerToQuestion === undefined) {\n return false;\n }\n if (userAnswerToQuestion._type !== correctAnswer._type) {\n throw new Error(\n `User answer(${userAnswerToQuestion._type}) and correct answer(${correctAnswer._type}) type do not match`\n );\n }\n\n if (userAnswerToQuestion._type === \"inputAnswerQuestion\" && correctAnswer._type === \"inputAnswerQuestion\") {\n return userAnswerToQuestion.value === correctAnswer.value;\n }\n\n if (userAnswerToQuestion._type === \"singleAnswerQuestion\" && correctAnswer._type === \"singleAnswerQuestion\") {\n return userAnswerToQuestion.value === correctAnswer.value;\n }\n\n if (\n userAnswerToQuestion._type === \"multipleAnswerQuestion\" &&\n correctAnswer._type === \"multipleAnswerQuestion\"\n ) {\n return correctAnswer.value.every(\n userAnswerToQuestionValue =>\n userAnswerToQuestion.value.find(\n correctAnswerValue => correctAnswerValue === userAnswerToQuestionValue\n ) !== undefined\n );\n }\n\n throw new Error(`Didn't expect to get here`);\n });\n\n return {\n taskId: userAnswer.taskId,\n correctAnswers: correctAnswers,\n isCorrect: isCorrect,\n };\n });\n\n return {\n taskResults,\n numberOfQuestions: userAnswers.length,\n numberOfCorrectAnswers: taskResults.filter(ac => ac.isCorrect).length,\n };\n }\n\n async getCorrectAnswers(id: TaskId): Promise {\n return this.correctAnswers[id];\n }\n}\n","import shuffle from \"lodash/shuffle\";\nimport { action, computed, observable } from \"mobx\";\nimport { ImageDto } from \"../../../../types/shared/dto/ImageDto\";\nimport { PortableTextDto } from \"../../../../types/shared/dto/PortableTextDto\";\nimport { TestChoiceListCollectionDto } from \"../../../../types/tasks/testchoices/TestChoiceListCollectionDto\";\nimport { TestChoiceListOptionDto } from \"../../../../types/tasks/testchoices/TestChoiceListOptionDto\";\nimport { AnswersState } from \"../AnswersState\";\nimport { InteractiveTask } from \"../InteractiveTask\";\nimport { OptionStatus } from \"../shared/OptionStatus\";\n\nexport type DataValuesType = {\n [key: string]: string;\n};\n\nexport type TestOption = {\n value: string;\n label: string;\n};\n\nexport class ChoiceListTaskViewModel implements InteractiveTask {\n @observable testOptions: TestOption[];\n\n @observable selectedOptions: DataValuesType = {};\n\n @observable readonly optionsWithStatus: { id: string; option: TestChoiceListOptionDto; status: OptionStatus }[];\n\n @observable isDisabled = false;\n\n @computed get isAnswered() {\n const selectedOptionsValues = Object.values(this.selectedOptions);\n return selectedOptionsValues.length === this.optionsWithStatus.length;\n }\n\n @computed get isSubmitted() {\n return this.answersState !== \"default\";\n }\n\n @computed get answersState(): AnswersState {\n if (this.optionsWithStatus.some(opt => opt.status === \"incorrect\")) {\n return \"wrong\";\n }\n\n if (this.optionsWithStatus.some(opt => opt.status === \"shouldBeChecked\")) {\n return \"partiallyCorrect\";\n }\n\n if (this.optionsWithStatus.some(opt => opt.status === \"correct\")) {\n return \"correct\";\n }\n\n return \"default\";\n }\n\n constructor(\n public id: string,\n public title: string,\n test: TestChoiceListCollectionDto,\n public readonly content: PortableTextDto,\n public readonly shouldDisplayOrderNumber: boolean,\n public readonly shouldDisplayCorrectAnswer: boolean,\n public readonly image?: ImageDto,\n public readonly modelId?: string,\n public description?: string\n ) {\n this.testOptions = this.createTestOptions(test);\n this.optionsWithStatus = test.choices\n .slice()\n .sort((a, b) => a.number - b.number)\n .map(choice => ({ id: choice.id, option: choice, status: \"default\" }));\n }\n\n @action.bound\n reset() {\n this.resetOptionsStatus();\n\n this.selectedOptions = {};\n this.isDisabled = false;\n }\n\n @computed get isTrainingGroundTask() {\n return window.location.href.includes(\"/ov-pa-anatomien\");\n }\n\n @action.bound\n resetOptionsStatus() {\n this.optionsWithStatus.forEach(optionWithStatus => {\n // eslint-disable-next-line no-param-reassign\n optionWithStatus.status = \"default\";\n });\n }\n\n @action.bound\n showCorrectAnswer() {\n this.optionsWithStatus.forEach(optionWithStatus => {\n this.selectedOptions[optionWithStatus.option.id] = optionWithStatus.option.content;\n // eslint-disable-next-line no-param-reassign\n optionWithStatus.status = \"correct\";\n });\n }\n\n @action.bound\n selectOption(answerId: string, newValue: string) {\n this.selectedOptions[answerId] = newValue;\n\n if (this.answersState !== \"default\") {\n this.resetOptionsStatus();\n }\n }\n\n @action.bound\n submit() {\n this.optionsWithStatus.forEach(answer => {\n this.selectedOptions?.[answer.option.id] === answer.option.content\n ? // eslint-disable-next-line no-param-reassign\n (answer.status = \"correct\")\n : // eslint-disable-next-line no-param-reassign\n (answer.status = \"incorrect\");\n });\n }\n\n private createTestOptions(test: TestChoiceListCollectionDto) {\n const choices = test.choices.map(choice => ({ value: choice.content, label: choice.content }));\n const additionalChoices = test.additionalChoices.map(choice => ({\n value: choice.content,\n label: choice.content,\n }));\n return shuffle([...choices, ...additionalChoices]);\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { OptionStatus } from \"../shared/OptionStatus\";\n\ntype BaseOptionType = {\n id: string;\n};\n\nexport class OptionWithStatus {\n @observable id: string;\n\n @observable state: OptionStatus = \"default\";\n\n @computed get isDisabled() {\n const optionState = this.state;\n\n return optionState === \"incorrect\" || optionState === \"correct\" || optionState === \"shouldBeChecked\";\n }\n\n constructor(public option: TOption) {\n this.id = option.id;\n }\n\n @action.bound\n markAsCorrect() {\n this.state = \"correct\";\n }\n\n @action.bound\n markAsIncorrect() {\n this.state = \"incorrect\";\n }\n\n @action.bound\n markAsShouldBeChecked() {\n this.state = \"shouldBeChecked\";\n }\n\n @action.bound\n reset() {\n this.state = \"default\";\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { PortableTextDto } from \"../../../../types/shared/dto/PortableTextDto\";\nimport { TestChoiceCollectionDto } from \"../../../../types/tasks/testchoices/TestChoiceCollectionDto\";\nimport { TestChoiceDto } from \"../../../../types/tasks/testchoices/TestChoiceDto\";\nimport { AnswersState } from \"../AnswersState\";\nimport { InteractiveTask } from \"../InteractiveTask\";\nimport { OptionWithStatus } from \"./OptionWithStatus\";\n\nexport type BaseOptionType = {\n id: string;\n};\n\nexport type TestBaseType = {\n id: string;\n choices: TOption[];\n};\n\nexport class ChoiceTaskViewModel implements InteractiveTask {\n @observable id: string;\n\n @observable optionsWithStatus: OptionWithStatus[];\n\n @observable isDisabled = false;\n\n @computed get answersState(): AnswersState {\n if (this.optionsWithStatus.some(opt => opt.state === \"incorrect\")) {\n return \"wrong\";\n }\n\n if (this.optionsWithStatus.some(opt => opt.state === \"shouldBeChecked\")) {\n return \"partiallyCorrect\";\n }\n\n if (this.optionsWithStatus.some(opt => opt.state === \"correct\")) {\n return \"correct\";\n }\n\n return \"default\";\n }\n\n @computed get isAnswered() {\n return this.selectedChoiceIds.length > 0;\n }\n\n @computed get isSubmitted() {\n return this.answersState !== \"default\";\n }\n\n @observable selectedChoiceIds: string[] = [];\n\n get isMultipleChoice() {\n return this.test.allowMultipleAnswers;\n }\n\n constructor(\n private test: TestChoiceCollectionDto,\n public title: string,\n public readonly content: PortableTextDto,\n public description?: string\n ) {\n this.optionsWithStatus = test.choices.map(choice => new OptionWithStatus(choice));\n this.id = test.id;\n }\n\n @action.bound\n selectOptions(newChoicesIds: string[]) {\n this.optionsWithStatus.forEach(opt => opt.reset());\n this.selectedChoiceIds = newChoicesIds;\n }\n\n @action.bound\n showCorrectAnswer() {\n const correctAnswers = this.optionsWithStatus.filter(opt => opt.option.isCorrect);\n correctAnswers.forEach(opt => opt.markAsCorrect());\n this.selectedChoiceIds = correctAnswers.map(opt => opt.id);\n }\n\n @action.bound\n submit() {\n if (!this.isAnswered) {\n return;\n }\n\n this.optionsWithStatus.forEach(optionWithStatus => {\n const { isCorrect } = optionWithStatus.option;\n if (this.selectedChoiceIds.includes(optionWithStatus.id)) {\n isCorrect ? optionWithStatus.markAsCorrect() : optionWithStatus.markAsIncorrect();\n return;\n }\n\n if (!this.selectedChoiceIds.includes(optionWithStatus.id) && optionWithStatus.state === \"default\") {\n isCorrect && optionWithStatus.markAsShouldBeChecked();\n }\n });\n }\n\n @action.bound\n reset() {\n this.optionsWithStatus.forEach(answer => {\n answer.reset();\n });\n\n this.selectedChoiceIds = [];\n this.isDisabled = false;\n }\n}\n","import shuffle from \"lodash/shuffle\";\n\ntype GapTaskOption = { content: { nb: string } };\n\nexport const shuffledOptions = (choices: GapTaskOption[], additionalChoices: GapTaskOption[] = []) => {\n const gapTestChoices = additionalChoices\n .concat(choices)\n .map(option => ({ value: option.content.nb, label: option.content.nb }));\n return shuffle(gapTestChoices);\n};\n\nexport const isAnswerCorrect = (choosenValue: string, correctChoices: string[]) => {\n return correctChoices.map(correctChoice => choosenValue === correctChoice).includes(true);\n};\n","/* eslint-disable no-param-reassign */\nimport { action, computed, observable } from \"mobx\";\nimport { isAnswerCorrect } from \"../../portableTextContent/inlineChoiceGapTest/utils\";\nimport { OptionStatus } from \"../shared/OptionStatus\";\n\ntype Choices = { content: { nb: string } }[];\nexport class GapTest {\n @observable private selectValue = \"\";\n\n @observable state: OptionStatus = \"default\";\n\n @computed get value() {\n return this.selectValue;\n }\n\n constructor(public choices: Choices, public additionalChoices: Choices = []) {}\n\n @action.bound\n setValue(newValue: string) {\n this.selectValue = newValue;\n }\n}\n\nexport class GapTestsViewModel {\n @observable gapTests: Map = new Map();\n\n @computed get isTestAnswered() {\n return Array.from(this.gapTests.values()).every(test => test.value !== \"\");\n }\n\n @action.bound\n registerGapTest(key: string, newGapTest: GapTest) {\n const gapTest = this.gapTests.get(key);\n if (!gapTest) {\n this.gapTests.set(key, newGapTest);\n return;\n }\n return null;\n }\n\n @action.bound\n validateTest() {\n this.gapTests.forEach(gapTest => {\n if (\n isAnswerCorrect(\n gapTest.value,\n gapTest.choices.map(choice => choice.content.nb)\n )\n ) {\n gapTest.state = \"correct\";\n } else {\n gapTest.state = \"incorrect\";\n }\n });\n }\n\n @action.bound\n showCorrectTestAnswers() {\n this.gapTests.forEach(gapTest => {\n const [correctChoice] = gapTest.choices.map(choice => choice.content.nb);\n gapTest.setValue(correctChoice);\n gapTest.state = \"correct\";\n });\n }\n\n @action.bound\n resetTest() {\n this.gapTests.forEach(gapTest => {\n gapTest.state = \"default\";\n gapTest.setValue(\"\");\n });\n }\n}\n","import { action, computed, observable, reaction } from \"mobx\";\nimport { PortableTextDto } from \"../../../../types/shared/dto/PortableTextDto\";\nimport { AnswersState } from \"../AnswersState\";\nimport { GapTestsViewModel } from \"./GapTestsViewModel\";\n\nexport class GapTaskViewModel {\n @observable gapTestsViewModel = new GapTestsViewModel();\n\n @observable isDisabled = false;\n\n @observable isCompleted = false;\n\n @computed get answersState(): AnswersState {\n const { gapTests } = this.gapTestsViewModel;\n const gapTestsValues = Array.from(gapTests.values());\n\n if (gapTestsValues.some(value => value.state === \"incorrect\")) {\n return \"wrong\";\n }\n\n if (gapTestsValues.some(value => value.state === \"shouldBeChecked\")) {\n return \"partiallyCorrect\";\n }\n\n if (gapTestsValues.some(value => value.state === \"correct\")) {\n return \"correct\";\n }\n\n return \"default\";\n }\n\n @computed get isAnswered() {\n return this.gapTestsViewModel.isTestAnswered;\n }\n\n @computed get isSubmitted() {\n return this.answersState !== \"default\";\n }\n\n @computed get isSubmittedSuccessfully() {\n return this.answersState === \"correct\";\n }\n\n constructor(\n public id: string,\n public title: string,\n public readonly content: PortableTextDto,\n public readonly shouldDisplayCorrectAnswer: boolean,\n public description?: string\n ) {\n reaction(\n () => this.gapTestsViewModel.gapTests,\n () => {\n if (this.isSubmitted) {\n this.reset();\n }\n }\n );\n }\n\n @action.bound\n submit() {\n if (!this.isAnswered) {\n return;\n }\n\n this.gapTestsViewModel.validateTest();\n this.isDisabled = true;\n }\n\n @action.bound\n reset() {\n this.isDisabled = false;\n this.gapTestsViewModel.resetTest();\n }\n\n @action.bound\n showCorrectAnswer() {\n this.gapTestsViewModel.showCorrectTestAnswers();\n this.isDisabled = true;\n this.isCompleted = true;\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport stringSimilarity from \"string-similarity\";\nimport { PortableTextDto } from \"../../../../types/shared/dto/PortableTextDto\";\nimport { Percentage } from \"../../../formatProgress\";\nimport { assertUnreachable } from \"../../../typeUtils\";\nimport { ExactAnswersState } from \"../AnswersState\";\nimport { InteractiveTask } from \"../InteractiveTask\";\n\nexport type InputTaskInfo =\n | { _type: \"correct\" }\n | { _type: \"almostCorrect\"; closestCorrectAnswer: string }\n | { _type: \"wrong\"; firstCorrectAnswer: string };\n\nexport class InputTaskViewModel implements InteractiveTask {\n @observable value = \"\";\n\n @observable correctAnswers: string[];\n\n @observable answersState: ExactAnswersState = \"default\";\n\n @observable isDisabled = false;\n\n @computed get isAnswered() {\n return !!this.value;\n }\n\n @computed get isSubmitted() {\n return this.answersState === \"correct\" || this.answersState === \"wrong\";\n }\n\n @computed private get bestMatch() {\n const answer = this.ignoreCapitalLetters ? this.value.toLowerCase() : this.value;\n const result = stringSimilarity.findBestMatch(answer, this.correctAnswers);\n return result.bestMatch;\n }\n\n @computed get info(): InputTaskInfo | undefined {\n switch (this.answersState) {\n case \"default\":\n return;\n case \"wrong\":\n const [firstAnswer] = this.correctAnswers;\n return { _type: \"wrong\", firstCorrectAnswer: firstAnswer };\n case \"correct\": {\n if (this.bestMatch.rating === 1) {\n return { _type: \"correct\" };\n }\n\n return { _type: \"almostCorrect\", closestCorrectAnswer: this.bestMatch.target };\n }\n default:\n return assertUnreachable(this.answersState);\n }\n }\n\n @action.bound\n setValue(value: string) {\n this.value = value;\n }\n\n @action.bound\n submit() {\n this.answersState = this.isAnswerCorrect(this.bestMatch.rating) ? \"correct\" : \"wrong\";\n }\n\n @action.bound\n reset() {\n this.answersState = \"default\";\n this.value = \"\";\n this.isDisabled = false;\n }\n\n @action.bound\n showCorrectAnswer() {\n const [firstAnswer] = this.correctAnswers;\n this.value = this.isAnswerCorrect(this.bestMatch.rating) ? this.bestMatch.target : firstAnswer;\n this.answersState = \"correct\";\n }\n\n private isAnswerCorrect(rating: number) {\n return rating * 100 >= this.similarityThreshold;\n }\n\n constructor(\n public id: string,\n public title: string,\n private similarityThreshold: Percentage,\n private ignoreCapitalLetters: boolean,\n public useMathInput: boolean,\n correctAnswers: string[],\n public readonly content: PortableTextDto,\n public description?: string\n ) {\n this.correctAnswers = this.ignoreCapitalLetters\n ? correctAnswers.map(correctAnswer => correctAnswer.toLowerCase())\n : correctAnswers;\n }\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nexport const asProxy = (t: Partial) => {\n const proxy = new Proxy(t, {\n get(obj, prop) {\n if (!(prop in obj)) {\n throw new Error(`Trying to access non-existent property \"${String(prop)}\" on object ${JSON.stringify(obj)}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (obj as any)[prop];\n },\n });\n return proxy as TAsserted;\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const asObjectWithDefaultKeyAsValue = (\n t: Partial\n) => {\n const proxy = new Proxy(t, {\n get(obj, prop) {\n if (!(prop in obj)) {\n // eslint-disable-next-line no-param-reassign, @typescript-eslint/no-explicit-any\n (obj as any)[prop] = prop;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (obj as any)[prop];\n },\n });\n return proxy as TExpected;\n};\n\nexport const getVimeoId = (vimeoUrl: string) => {\n const videoMatch = vimeoUrl.match(/vimeo.*(?:\\/|clip_id=)([0-9a-z]*)/i);\n\n if (!videoMatch) {\n return null;\n }\n\n return videoMatch[1];\n};\n\nexport const getFormattedTime = (seconds: number): string => {\n const m = Math.floor(seconds / 60);\n const s = Math.floor(seconds % 60);\n\n return `${m < 10 ? `0${m}` : m}:${s < 10 ? `0${s}` : s}`;\n};\n\nexport const smoothScrollToSection = (id: string) => {\n const section = document.getElementById(id);\n if (section) {\n setTimeout(\n () =>\n section.scrollIntoView({\n behavior: \"smooth\",\n }),\n 0\n );\n }\n};\n\nexport const loadImages = async (urls: Array) => {\n if (urls.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = urls.map(\n url =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject();\n image.crossOrigin = \"Anonymous\";\n image.src = url;\n })\n );\n\n const aggregatedPromise = Promise.all(promises);\n const images = await aggregatedPromise;\n\n return images;\n};\n\nexport const delay = (ms: number) => {\n return new Promise(res => {\n setTimeout(res, ms);\n });\n};\n\nexport const wrapPromise = (promise: Promise) => {\n let status: \"pending\" | \"success\" | \"error\" = \"pending\";\n let result: T;\n const suspender = promise.then(\n r => {\n status = \"success\";\n result = r;\n },\n e => {\n status = \"error\";\n result = e;\n }\n );\n return {\n read() {\n if (status === \"pending\") {\n throw suspender;\n } else if (status === \"error\") {\n throw result;\n } else if (status === \"success\") {\n return result;\n }\n\n throw new Error(\"Invalid status\");\n },\n };\n};\n","export type StateMember = {\n type: TType;\n};\n\nexport function matchesState(\n state: { type: string },\n expectedType: TType\n): state is StateMember {\n return state.type === expectedType;\n}\n\nexport function assertState(\n state: { type: string },\n ...expectedTypes: TType[]\n): asserts state is StateMember {\n if (!expectedTypes.includes(state.type as TType)) {\n throw new Error(`Invalid state ${state.type} (expected one of: ${expectedTypes})`);\n }\n}\n","import { observable, onBecomeObserved, action, computed } from \"mobx\";\nimport { MaskDto } from \"../../../../types/shared/dto/MaskDto\";\nimport { assertState } from \"../../../stateMembers\";\nimport { assertUnreachable } from \"../../../typeUtils\";\nimport { loadImages } from \"../../../utils\";\nimport { ImageType, MaskTaskViewModel, MAX_MASK_SIZE } from \"./MaskTaskViewModel\";\n\ntype MaskState =\n | { type: \"loading\" }\n | { type: \"error\" }\n | { type: \"notSelected\"; image: ImageType }\n | { type: \"selected\"; image: ImageType }\n | { type: \"highlighted\"; image: ImageType; removeHighlight: () => void }\n | { type: \"correct\"; image: ImageType }\n | { type: \"incorrect\"; image: ImageType }\n | { type: \"shouldBeChecked\"; image: ImageType };\n\nexport class MaskViewModel {\n readonly isCorrect: boolean;\n\n readonly id: string;\n\n readonly name: string;\n\n readonly imageUrl: string;\n\n @observable state: MaskState = { type: \"loading\" };\n\n @computed get isDisabled() {\n return this.maskTask.isDisabled;\n }\n\n constructor(mask: MaskDto, private maskTask: MaskTaskViewModel) {\n if (!mask.image.url) {\n throw new Error(`Not defined image for mask with id: ${mask.id}`);\n }\n this.isCorrect = mask.isCorrect;\n this.id = mask.id;\n this.name = mask.name;\n\n this.imageUrl = `${mask.image.url}?w=${MAX_MASK_SIZE}`;\n\n onBecomeObserved(this, \"state\", this.load);\n }\n\n @action.bound\n async load() {\n if (this.state.type !== \"loading\" && this.state.type !== \"error\") {\n return;\n }\n\n assertState(this.state, \"loading\", \"error\");\n this.state = { type: \"loading\" };\n const [loadedImage] = await loadImages([this.imageUrl]).catch(e => {\n this.state = { type: \"error\" };\n throw e;\n });\n this.state = { type: \"notSelected\", image: loadedImage };\n }\n\n @action.bound\n toggleSelection() {\n if (this.isDisabled) {\n return;\n }\n\n const stateType = this.state.type;\n\n switch (stateType) {\n case \"notSelected\":\n case \"selected\":\n case \"highlighted\":\n return this.maskTask.selectionStrategy.toggleSelection(this);\n }\n }\n\n @action.bound\n highlight() {\n if (this.isDisabled) {\n return;\n }\n\n const stateType = this.state.type;\n\n if (stateType !== \"notSelected\") {\n return;\n }\n\n assertState(this.state, \"notSelected\");\n\n this.state = { type: \"highlighted\", image: this.state.image, removeHighlight: this.removeHighlight };\n }\n\n @action.bound\n private removeHighlight() {\n if (this.isDisabled || this.state.type !== \"highlighted\") {\n return;\n }\n\n assertState(this.state, \"highlighted\");\n this.state = { type: \"notSelected\", image: this.state.image };\n }\n\n @action.bound\n submit() {\n assertState(this.state, \"selected\", \"notSelected\");\n\n switch (this.state.type) {\n case \"selected\":\n this.state = this.isCorrect\n ? { type: \"correct\", image: this.state.image }\n : { type: \"incorrect\", image: this.state.image };\n return;\n case \"notSelected\":\n if (this.isCorrect) {\n this.state = { type: \"shouldBeChecked\", image: this.state.image };\n }\n return;\n default:\n assertUnreachable(this.state);\n }\n }\n\n @action.bound\n reset() {\n assertState(this.state, \"selected\", \"incorrect\", \"correct\", \"highlighted\", \"notSelected\", \"shouldBeChecked\");\n\n this.state = { type: \"notSelected\", image: this.state.image };\n }\n}\n","import { action } from \"mobx\";\nimport { assertState } from \"../../../../stateMembers\";\nimport { MaskViewModel } from \"../MaskViewModel\";\nimport { MaskSelectionStrategy } from \"./MaskSelectionStrategy\";\n\nexport class MultipleChoiceMaskStrategy implements MaskSelectionStrategy {\n @action.bound\n toggleSelection(_mask: MaskViewModel) {\n const mask = _mask;\n assertState(mask.state, \"notSelected\", \"selected\", \"highlighted\");\n\n if (mask.state.type === \"selected\") {\n mask.state = { type: \"notSelected\", image: mask.state.image };\n return;\n }\n\n mask.state = { type: \"selected\", image: mask.state.image };\n }\n}\n","import { action, computed } from \"mobx\";\nimport { assertState } from \"../../../../stateMembers\";\nimport { MaskTaskViewModel } from \"../MaskTaskViewModel\";\nimport { MaskViewModel } from \"../MaskViewModel\";\nimport { MaskSelectionStrategy } from \"./MaskSelectionStrategy\";\n\nexport class SingleChoiceMaskStrategy implements MaskSelectionStrategy {\n @computed private get selectedMask() {\n return this.maskTask.masks.find(mask => mask.state.type === \"selected\");\n }\n\n constructor(private maskTask: MaskTaskViewModel) {}\n\n @action.bound\n toggleSelection(_mask: MaskViewModel) {\n const mask = _mask;\n assertState(mask.state, \"notSelected\", \"selected\", \"highlighted\");\n\n if (mask.state.type === \"selected\") {\n mask.state = { type: \"notSelected\", image: mask.state.image };\n return;\n }\n\n if (this.selectedMask) {\n this.selectedMask.toggleSelection();\n }\n\n mask.state = { type: \"selected\", image: mask.state.image };\n }\n}\n","import { computed, observable, action, when } from \"mobx\";\nimport { command, Command, Deferred, isLoaded } from \"react-mvvm\";\nimport { ImageDto } from \"../../../../types/shared/dto/ImageDto\";\nimport { MaskDto } from \"../../../../types/shared/dto/MaskDto\";\nimport { PortableTextDto } from \"../../../../types/shared/dto/PortableTextDto\";\nimport { delay, loadImages } from \"../../../utils\";\nimport { AnswersState } from \"../AnswersState\";\nimport { InteractiveTask } from \"../InteractiveTask\";\nimport { MaskViewModel } from \"./MaskViewModel\";\nimport { MaskSelectionStrategy } from \"./maskStrategy/MaskSelectionStrategy\";\nimport { MultipleChoiceMaskStrategy } from \"./maskStrategy/MultipleChoiceMaskStrategy\";\nimport { SingleChoiceMaskStrategy } from \"./maskStrategy/SingleChoiceMaskStrategy\";\n\nexport type ImageType = HTMLImageElement;\n\nexport const MAX_MASK_SIZE = 1500;\n\nexport type MaskTaskState =\n | { type: \"loading\" }\n | { type: \"error\" }\n | { type: \"selectMasks\"; image: ImageType; masks: MaskViewModel[] }\n | { type: \"correct\"; image: ImageType; masks: MaskViewModel[]; selectedMasks: MaskViewModel[] }\n | { type: \"partiallyCorrect\"; image: ImageType; masks: MaskViewModel[]; selectedMasks: MaskViewModel[] }\n | { type: \"incorrect\"; image: ImageType; masks: MaskViewModel[]; selectedMasks: MaskViewModel[] };\n\nexport class MaskTaskViewModel implements InteractiveTask {\n get stage() {\n if (isLoaded(this.image)) {\n return { width: this.image.width, height: this.image.height };\n }\n\n return { width: this.baseImageDto.width ?? 0, height: this.baseImageDto.height ?? 0 };\n }\n\n @observable private image: Deferred = \"Loading\";\n\n @observable isDisabled = false;\n\n @observable masks: MaskViewModel[];\n\n @computed get selectionStrategy(): MaskSelectionStrategy {\n return this.isSingleChoice ? new SingleChoiceMaskStrategy(this) : new MultipleChoiceMaskStrategy();\n }\n\n @computed private get isLoading() {\n return this.masks.some(mask => mask.state.type === \"loading\") || this.image === \"Loading\";\n }\n\n @computed private get isError() {\n return this.masks.some(mask => mask.state.type === \"error\") || this.image === \"LoadingError\";\n }\n\n @computed private get isCorrect() {\n return (\n this.masks.filter(mask => mask.isCorrect).every(mask => mask.state.type === \"correct\") &&\n this.masks.filter(mask => !mask.isCorrect && mask.state.type === \"incorrect\").length === 0\n );\n }\n\n @computed private get isPartiallyCorrect() {\n const isAnyCorrect = this.masks.some(mask => mask.state.type === \"correct\");\n\n if (!isAnyCorrect) {\n return false;\n }\n\n const incorrectMasksLength = this.masks.filter(mask => mask.state.type === \"incorrect\").length;\n const correctMasksLength = this.masks.filter(mask => mask.state.type === \"correct\").length;\n const totalCorrectMasksLength = this.masks.filter(mask => mask.isCorrect).length;\n\n return incorrectMasksLength > 0 || correctMasksLength < totalCorrectMasksLength;\n }\n\n @computed private get isIncorrect() {\n return this.masks.some(mask => mask.state.type === \"incorrect\");\n }\n\n @computed get isAnswered() {\n return this.masks.some(\n mask => mask.state.type === \"selected\" || mask.state.type === \"incorrect\" || mask.state.type === \"correct\"\n );\n }\n\n private get isSingleChoice() {\n const correctMasks = this.maskDtos.filter(mask => mask.isCorrect);\n return correctMasks.length === 1;\n }\n\n @observable selectedMasks: MaskViewModel[] = [];\n\n @computed get state(): MaskTaskState {\n if (this.isError) {\n return { type: \"error\" };\n }\n\n if (this.isLoading || !isLoaded(this.image)) {\n return { type: \"loading\" };\n }\n\n if (this.isCorrect) {\n return { type: \"correct\", image: this.image, masks: this.masks, selectedMasks: this.selectedMasks };\n }\n\n if (this.isPartiallyCorrect) {\n return { type: \"partiallyCorrect\", image: this.image, masks: this.masks, selectedMasks: this.selectedMasks };\n }\n\n if (this.isIncorrect) {\n return { type: \"incorrect\", image: this.image, masks: this.masks, selectedMasks: this.selectedMasks };\n }\n\n return { type: \"selectMasks\", image: this.image, masks: this.masks };\n }\n\n @computed get answersState(): AnswersState {\n if (this.state.type === \"correct\") return \"correct\";\n if (this.state.type === \"partiallyCorrect\") return \"partiallyCorrect\";\n if (this.state.type === \"incorrect\") return \"wrong\";\n return \"default\";\n }\n\n @computed get isSubmitted() {\n return this.answersState !== \"default\";\n }\n\n @action.bound\n async showCorrectAnswer() {\n await when(() => this.isLoading === false);\n this.isDisabled = false;\n const correctMasks = this.masks.filter(mask => mask.isCorrect);\n this.masks.forEach(mask => mask.reset());\n correctMasks.forEach(mask => mask.toggleSelection());\n correctMasks.forEach(mask => mask.submit());\n this.selectedMasks = correctMasks;\n this.isDisabled = true;\n }\n\n refresh: Command;\n\n readonly imageUrl: string;\n\n constructor(\n public id: string,\n public title: string,\n private maskDtos: MaskDto[],\n private baseImageDto: ImageDto,\n public readonly content: PortableTextDto,\n public description?: string\n ) {\n this.masks = this.maskDtos.map(mask => new MaskViewModel(mask, this));\n\n this.refresh = command(\n () => {\n this.image === \"LoadingError\" && this.load();\n this.masks.forEach(mask => mask.state.type === \"error\" && mask.load());\n },\n () => this.state.type === \"error\"\n );\n\n if (!baseImageDto.url) {\n throw new Error(\"Not defined image (Mask Task)\");\n }\n\n this.imageUrl = `${baseImageDto.url}?w=${MAX_MASK_SIZE}`;\n }\n\n @action.bound\n async reset() {\n await when(() => this.isLoading === false);\n this.masks.forEach(mask => mask.reset());\n this.selectedMasks = [];\n this.isDisabled = false;\n }\n\n @action.bound\n submit() {\n const selectedMasks = this.masks.filter(mask => mask.state.type === \"selected\");\n this.selectedMasks = selectedMasks;\n selectedMasks.forEach(mask => mask.submit());\n\n const shouldBeCheckedMasks = this.masks.filter(mask => mask.isCorrect && mask.state.type === \"notSelected\");\n shouldBeCheckedMasks.map(mask => mask.submit());\n }\n\n @action.bound\n async highlightMasks() {\n const notSelectedMasks = this.masks.filter(mask => mask.state.type === \"notSelected\");\n notSelectedMasks.forEach(mask => mask.highlight());\n\n await delay(800);\n\n const highlightedMasks = this.masks.filter(mask => mask.state.type === \"highlighted\");\n highlightedMasks.forEach(mask => mask.reset());\n }\n\n @action.bound\n public async load() {\n if (this.image !== \"Loading\" && this.image !== \"LoadingError\") {\n return;\n }\n\n try {\n this.image = \"Loading\";\n const [loadedImage] = await loadImages([this.imageUrl]);\n this.image = loadedImage;\n } catch {\n this.image = \"LoadingError\";\n }\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { PortableTextDto } from \"../../../../types/shared/dto/PortableTextDto\";\nimport { AnswersState } from \"../AnswersState\";\nimport { InteractiveTask } from \"../InteractiveTask\";\nimport { TaskService } from \"../TaskService\";\nimport { AnswerId, MultipleAnswerQuestion, QuestionId, SingleAnswerQuestion, TaskId } from \"../taskUtils\";\n\nexport type Answer = { id: AnswerId; content: PortableTextDto };\nexport type Question = { id: QuestionId; content: PortableTextDto };\n\nexport type Answers = Answer[];\nexport type Questions = Question[];\n\nexport type MatchTaskValue = (SingleAnswerQuestion | MultipleAnswerQuestion)[];\n\nexport type MatchTaskState =\n | { _type: \"task\"; value: MatchTaskValue }\n | { _type: \"taskResult\"; value: MatchTaskValue; correctAnswers: MatchTaskValue };\n\nexport class MatchTaskViewModel implements InteractiveTask {\n @observable state: MatchTaskState = {\n _type: \"task\",\n value: [],\n };\n\n @observable isDisabled = false;\n\n @computed get answersState(): AnswersState {\n if (this.state._type === \"task\") {\n return \"default\";\n }\n\n const correctAnswer = this.state.correctAnswers;\n const value = this.state.value;\n\n const questionsState = this.questions.map(question => {\n const correctAnswerToQuestion = correctAnswer.find(ca => ca.questionId === question.id);\n const userAnswerToQuestion = value.find(v => v.questionId === question.id);\n\n if (!correctAnswerToQuestion || !userAnswerToQuestion) {\n return \"incorrect\";\n }\n\n if (\n userAnswerToQuestion._type === \"singleAnswerQuestion\" &&\n correctAnswerToQuestion._type === \"singleAnswerQuestion\"\n ) {\n return userAnswerToQuestion.value === correctAnswerToQuestion.value ? \"correct\" : \"incorrect\";\n }\n\n if (\n userAnswerToQuestion._type === \"multipleAnswerQuestion\" &&\n correctAnswerToQuestion._type === \"multipleAnswerQuestion\"\n ) {\n return correctAnswerToQuestion.value.every(\n questionCorrectAnswers => userAnswerToQuestion.value.find(cav => cav === questionCorrectAnswers) !== undefined\n )\n ? \"correct\"\n : \"incorrect\";\n }\n\n return \"incorrect\";\n });\n\n if (questionsState.every(questionState => questionState === \"correct\")) {\n return \"correct\";\n }\n\n if (questionsState.every(questionState => questionState === \"incorrect\")) {\n return \"wrong\";\n }\n\n return \"partiallyCorrect\";\n }\n\n @computed get isSubmitted() {\n return this.answersState !== \"default\";\n }\n\n @computed get isAnswered() {\n const { value } = this.state;\n\n return this.questions.every(question => value.find(v => v.questionId === question.id) !== undefined);\n }\n\n constructor(\n public id: TaskId,\n public title: string,\n public content: PortableTextDto,\n public questions: Questions,\n public answers: Answers,\n public isMultipleChoice: boolean,\n private taskService: TaskService,\n public description?: string\n ) {}\n\n @action.bound\n submit() {\n const userAnswer = { taskId: this.id, value: this.state.value };\n const submitResult = this.taskService.checkAnswers([userAnswer]);\n\n this.state = {\n _type: \"taskResult\",\n value: this.state.value,\n correctAnswers: submitResult.taskResults[0].correctAnswers as MatchTaskValue,\n };\n }\n\n @action.bound\n reset() {\n this.state = {\n _type: \"task\",\n value: [],\n };\n\n this.isDisabled = false;\n }\n\n @action.bound\n async showCorrectAnswer() {\n const correctAnswers = await this.taskService.getCorrectAnswers(this.id);\n this.state = {\n _type: \"taskResult\",\n value: correctAnswers as MatchTaskValue,\n correctAnswers: correctAnswers as MatchTaskValue,\n };\n }\n}\n","import { Task } from \"../../api/StepService\";\nimport { assertUnreachable } from \"../../typeUtils\";\nimport { LocalTaskService } from \"./TaskService\";\nimport { TaskViewModel } from \"./TaskView\";\nimport { ChoiceListTaskViewModel } from \"./choiceListTask/ChoiceListTaskViewModel\";\nimport { ChoiceTaskViewModel } from \"./choiceTask/ChoiceTaskViewModel\";\nimport { GapTaskViewModel } from \"./gapTask/GapTaskViewModel\";\nimport { InputTaskViewModel } from \"./inputTask/InputTaskViewModel\";\nimport { MaskTaskViewModel } from \"./maskTask/MaskTaskViewModel\";\nimport { MatchTaskViewModel } from \"./matchTask/MatchTaskViewModel\";\nimport { AnswerQuestions } from \"./taskUtils\";\n\nexport class TaskFactory {\n private taskService = new LocalTaskService();\n\n createTask(task: Task): TaskViewModel {\n switch (task._type) {\n case \"ChoiceTask\":\n return {\n _type: task._type,\n model: new ChoiceTaskViewModel(task.test, task.title, task.content, task.description),\n };\n case \"ChoiceListTask\":\n return {\n _type: task._type,\n model: new ChoiceListTaskViewModel(\n task.id,\n task.title,\n task.choiceListTest,\n task.content,\n task.shouldDisplayOrderNumber,\n task.shouldDisplayCorrectAnswer,\n task.image,\n task.modelId,\n task.description\n ),\n };\n case \"InputTask\":\n return {\n _type: task._type,\n model: new InputTaskViewModel(\n task.id,\n task.title,\n task.similarityThreshold,\n task.ignoreCapitalLetters,\n task.useMathInput,\n task.correctAnswers,\n task.content,\n task.description\n ),\n };\n case \"TextTask\":\n return {\n _type: task._type,\n model: { id: task.id, content: task.content },\n };\n\n case \"MaskTask\":\n return {\n _type: task._type,\n model: new MaskTaskViewModel(task.id, task.title, task.masks, task.image, task.content, task.description),\n };\n\n case \"GapTask\":\n return {\n _type: task._type,\n model: new GapTaskViewModel(\n task.id,\n task.title,\n task.content,\n task.shouldDisplayCorrectAnswer,\n task.description\n ),\n };\n case \"MatchTask\":\n const correctAnswers: AnswerQuestions = task.isMultipleChoice\n ? task.questions.map(question => ({\n questionId: question.id,\n _type: \"multipleAnswerQuestion\",\n value: question.correctAnswerIds,\n }))\n : task.questions.map(question => ({\n questionId: question.id,\n _type: \"singleAnswerQuestion\",\n value: question.correctAnswerIds[0],\n }));\n\n this.taskService.registerTask(task.id, correctAnswers);\n\n return {\n _type: task._type,\n model: new MatchTaskViewModel(\n task.id,\n task.title,\n task.content,\n task.questions,\n task.answers,\n task.isMultipleChoice,\n this.taskService,\n task.description\n ),\n };\n default:\n return assertUnreachable(task);\n }\n }\n}\n","import { observable } from \"mobx\";\nimport { AddBookmarkDialogViewModel } from \"../../../../pages/lessons/lesson/bookmarkDialog/addBookmarkDialog/AddBookmarkDialogViewModel\";\nimport { RemoveBookmarkDialogViewModel } from \"../../../../pages/lessons/lesson/bookmarkDialog/removeBookmarkDialog/RemoveBookmarkDialogViewModel\";\nimport { command, Command } from \"../../../../react-mvvm/src\";\nimport { HintRelatedStepInfoDto } from \"../../../../types/shared/dto/HintRelatedStepInfoDto\";\nimport { ActiveCourseParams } from \"../../../models/Url\";\nimport { IBookmarkStore } from \"../../../stores/BookmarkStore\";\n\nexport class HintRelatedStepViewModel {\n @observable addBookmarkDialogViewModel: AddBookmarkDialogViewModel;\n\n @observable removeBookmarkDialogViewModel: RemoveBookmarkDialogViewModel;\n\n showBookmarkDialog: Command;\n\n get isRelatedStepBookmarked() {\n return this.bookmarkStore.isBookmarked(this.relatedStep.id);\n }\n\n constructor(\n public relatedStep: HintRelatedStepInfoDto,\n public activeCourseParams: ActiveCourseParams,\n private bookmarkStore: IBookmarkStore\n ) {\n this.addBookmarkDialogViewModel = new AddBookmarkDialogViewModel(this.relatedStep.id, this.bookmarkStore);\n this.removeBookmarkDialogViewModel = new RemoveBookmarkDialogViewModel(this.relatedStep.id, this.bookmarkStore);\n this.showBookmarkDialog = command(() => {\n if (this.isRelatedStepBookmarked) {\n this.removeBookmarkDialogViewModel.show();\n } else {\n this.addBookmarkDialogViewModel.show();\n }\n });\n }\n}\n","import { observable } from \"mobx\";\nimport { HintRelatedStepInfoDto } from \"../../../types/shared/dto/HintRelatedStepInfoDto\";\nimport { PortableTextDto } from \"../../../types/shared/dto/PortableTextDto\";\nimport { ActiveCourseParams } from \"../../models/Url\";\nimport { IBookmarkStore } from \"../../stores/BookmarkStore\";\nimport { HintRelatedStepViewModel } from \"./hintRelatedStep/HintRelatedStepViewModel\";\n\nexport class TaskHintViewModel {\n @observable relatedStep?: HintRelatedStepViewModel;\n\n constructor(\n public activeCourseParams: ActiveCourseParams,\n private bookmarkStore: IBookmarkStore,\n public content?: PortableTextDto,\n private hintRelatedStepInfoDto?: HintRelatedStepInfoDto\n ) {\n if (this.hintRelatedStepInfoDto) {\n this.relatedStep = new HintRelatedStepViewModel(\n this.hintRelatedStepInfoDto,\n this.activeCourseParams,\n this.bookmarkStore\n );\n }\n }\n}\n","import { action, computed } from \"mobx\";\nimport { IBookmarkStore } from \"../../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../../shared/stores/ProgressStore\";\nimport { TaskHintDto } from \"../../../../types/dto/tasks/TaskHintDto\";\nimport { StepTypeDto } from \"../../../../types/shared/dto/StepTypeDto\";\n\nexport type StepType = `${StepTypeDto}`;\n\nexport interface StepBase {\n id: string;\n title: string;\n slug: string;\n description?: string;\n relatedContentIds?: string[];\n hint?: TaskHintDto;\n}\n\nexport abstract class Step {\n readonly description?: string;\n\n get id() {\n return this.step.id;\n }\n\n get title() {\n return this.step.title;\n }\n\n get slug() {\n return this.step.slug;\n }\n\n get relatedContentIds() {\n return this.step.relatedContentIds ?? [];\n }\n\n @computed get isCompleted() {\n return this.progressStore.isCompleted(this.id);\n }\n\n @computed get isBookmarked() {\n return this.bookmarkStore.isBookmarked(this.id);\n }\n\n @action.bound\n async markStepAsCompleted() {\n await this.progressStore.markStepAsCompleted(this.id);\n }\n\n @action.bound\n async markStepAsUncompleted() {\n await this.progressStore.markStepAsUncompleted(this.id);\n }\n\n constructor(\n private step: StepBase,\n protected progressStore: IProgressStore,\n protected bookmarkStore: IBookmarkStore\n ) {\n this.description = step.description;\n }\n}\n","// This code was generated by a Reinforced.Typings tool. \n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport const enum TaskTypeDto { \n\tTextTask = \"TextTask\", \n\tChoiceListTask = \"ChoiceListTask\", \n\tChoiceTask = \"ChoiceTask\", \n\tMaskTask = \"MaskTask\", \n\tInputTask = \"InputTask\", \n\tGapTask = \"GapTask\", \n\tMatchTask = \"MatchTask\"\n}\n","// This code was generated by a Reinforced.Typings tool. \n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport const enum StepTypeDto { \n\tVideo = \"Video\", \n\tTextBlock = \"TextBlock\", \n\tTaskGroup = \"TaskGroup\", \n\tTask = \"Task\", \n\tSound = \"Sound\"\n}\n","import { observe, reaction } from \"mobx\";\nimport { Task } from \"../../../../shared/api/StepService\";\nimport { TaskHintViewModel } from \"../../../../shared/components/taskHint/TaskHintViewModel\";\nimport { TaskFactory } from \"../../../../shared/components/tasks/TaskFactory\";\nimport { TaskViewModel } from \"../../../../shared/components/tasks/TaskView\";\nimport { isActionableTask } from \"../../../../shared/components/tasks/taskUtils\";\nimport { ActiveCourseParams } from \"../../../../shared/models/Url\";\nimport { IBookmarkStore } from \"../../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../../shared/stores/ProgressStore\";\nimport { PortableTextDto } from \"../../../../types/shared/dto/PortableTextDto\";\nimport { Step, StepBase } from \"./Step\";\n\nexport class LessonTask extends Step {\n readonly task: TaskViewModel;\n\n readonly _type = \"Task\";\n\n readonly hint?: TaskHintViewModel;\n\n readonly solution?: PortableTextDto;\n\n constructor(\n stepBase: StepBase,\n activeCourseParams: ActiveCourseParams,\n taskFactory: TaskFactory,\n task: Task,\n progressStore: IProgressStore,\n bookmarkStore: IBookmarkStore\n ) {\n super(stepBase, progressStore, bookmarkStore);\n\n this.task = taskFactory.createTask(task);\n\n if (isActionableTask(this.task)) {\n const { model } = this.task;\n observe(model, \"answersState\", ({ newValue }) => {\n if (newValue === \"correct\") {\n this.markStepAsCompleted();\n }\n });\n\n reaction(\n () => this.isCompleted,\n async isCompleted => {\n if (isCompleted) {\n await model.showCorrectAnswer();\n return;\n }\n\n await model.reset();\n },\n { fireImmediately: true }\n );\n }\n\n this.solution = task.solution;\n this.hint =\n task?.hint &&\n new TaskHintViewModel(activeCourseParams, bookmarkStore, task.hint.content, task.hint.relatedStepInfo);\n }\n}\n","import { assertUnreachable, Brand, Flavor } from \"../../typeUtils\";\nimport { TaskViewModel, ActionableTask } from \"./TaskView\";\n\nexport type TaskId = Flavor;\nexport type QuestionId = Flavor;\nexport type AnswerId = Flavor;\n\nexport type InputValue = Brand;\n\nexport function isActionableTask(task: TaskViewModel): task is ActionableTask {\n const { _type } = task;\n switch (_type) {\n case \"ChoiceListTask\":\n case \"ChoiceTask\":\n case \"GapTask\":\n case \"InputTask\":\n case \"MaskTask\":\n case \"MatchTask\":\n return true;\n case \"TextTask\":\n return false;\n default:\n return assertUnreachable(_type);\n }\n}\n\nexport type SingleAnswerQuestion = { questionId: QuestionId } & Brand<{ value: AnswerId }, \"singleAnswerQuestion\">;\nexport type MultipleAnswerQuestion = { questionId: QuestionId } & Brand<\n { value: AnswerId[] },\n \"multipleAnswerQuestion\"\n>;\nexport type InputAnswerQuestion = { questionId: QuestionId } & Brand<{ value: InputValue }, \"inputAnswerQuestion\">;\n\nexport type AnswerQuestions = (SingleAnswerQuestion | MultipleAnswerQuestion | InputAnswerQuestion)[];\n","import { action, computed } from \"mobx\";\nimport { IGtmService } from \"../../../../../shared/services/GtmService\";\nimport { IBookmarkStore } from \"../../../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../../../shared/stores/ProgressStore\";\nimport { Step } from \"../Step\";\nimport { SoundStepProperties } from \"./CreateSoundStepProperties\";\n\nexport class SoundStep extends Step {\n readonly _type = \"Sound\";\n\n readonly soundCloudUrl: string;\n\n @computed get trackProgress() {\n return this.progressStore.getVideoProgress(this.id);\n }\n\n @computed get startPositionSeconds() {\n return this.positionSeconds;\n }\n\n @computed private get positionSeconds() {\n return this.trackProgress?.lastPosition.totalSeconds ?? 0;\n }\n\n constructor(\n step: SoundStepProperties,\n protected progressStore: IProgressStore,\n private gtm: IGtmService,\n bookmarkStore: IBookmarkStore\n ) {\n super(step, progressStore, bookmarkStore);\n this.soundCloudUrl = step.soundCloudUrl;\n }\n\n @action.bound\n async updateSoundStepProgress(secondsSinceStart: number) {\n await this.progressStore.updateStepWithTimeProgress(this.id, secondsSinceStart, this._type);\n }\n\n @action.bound\n async endSoundStep(secondsSinceStart: number) {\n await this.progressStore.endStepWithTimeProgressContent(this.id, secondsSinceStart, this._type);\n this.gtm.pushSoundCloudEnded(this.id, this.title, this.soundCloudUrl);\n }\n}\n","import uniqueId from \"lodash/uniqueId\";\nimport { Task } from \"../../../../../shared/api/StepService\";\nimport { TaskHintViewModel } from \"../../../../../shared/components/taskHint/TaskHintViewModel\";\nimport { TaskFactory } from \"../../../../../shared/components/tasks/TaskFactory\";\nimport { TaskViewModel } from \"../../../../../shared/components/tasks/TaskView\";\nimport { ActiveCourseParams } from \"../../../../../shared/models/Url\";\nimport { IBookmarkStore } from \"../../../../../shared/stores/BookmarkStore\";\nimport { TaskHintDto } from \"../../../../../types/dto/tasks/TaskHintDto\";\nimport { PortableTextDto } from \"../../../../../types/shared/dto/PortableTextDto\";\n\nexport type TaskGroupItem = {\n id: string;\n title: string;\n description?: string;\n task: TaskViewModel;\n hint?: TaskHintViewModel;\n solution?: PortableTextDto;\n};\n\nexport class TaskGroupFactory {\n private taskFactory = new TaskFactory();\n\n constructor(public bookmarkStore: IBookmarkStore, public activeCourseParams: ActiveCourseParams) {}\n\n private createTaskHintViewModel(hint?: TaskHintDto) {\n return (\n hint && new TaskHintViewModel(this.activeCourseParams, this.bookmarkStore, hint.content, hint.relatedStepInfo)\n );\n }\n\n createTask(param: Task): TaskGroupItem {\n const task = this.taskFactory.createTask(param);\n\n return {\n id: uniqueId(),\n task,\n title: param.title,\n description: param.description,\n hint: this.createTaskHintViewModel(param.hint),\n solution: param.solution,\n };\n }\n}\n","import { computed, reaction } from \"mobx\";\nimport { ActiveCourseParams } from \"../../../../../shared/models/Url\";\nimport { IBookmarkStore } from \"../../../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../../../shared/stores/ProgressStore\";\nimport { isDefined } from \"../../../../../shared/typeUtils\";\nimport { PortableTextDto } from \"../../../../../types/shared/dto/PortableTextDto\";\nimport { Step } from \"../Step\";\nimport { TaskGroupStepProperties } from \"./CreateTaskGroupStepProperties\";\nimport { TaskGroupFactory, TaskGroupItem } from \"./TaskGroupFactory\";\n\nexport class TaskGroupStep extends Step {\n readonly _type = \"TaskGroupTask\";\n\n readonly taskGroupItems: TaskGroupItem[];\n\n readonly content?: PortableTextDto;\n\n readonly shouldTaskTitlesBeDisplayed: boolean;\n\n readonly orderIndicatorColor: string;\n\n @computed private get tasks() {\n return this.taskGroupItems.map(taskGroupItem => taskGroupItem.task);\n }\n\n private get actionableTasks() {\n return this.tasks\n .map(task => {\n if (task._type === \"TextTask\") {\n return;\n }\n return task;\n })\n .filter(isDefined);\n }\n\n constructor(\n step: TaskGroupStepProperties,\n progressStore: IProgressStore,\n bookmarkStore: IBookmarkStore,\n public activeCourseParams: ActiveCourseParams\n ) {\n super(step, progressStore, bookmarkStore);\n\n const taskFactory = new TaskGroupFactory(bookmarkStore, activeCourseParams);\n\n this.taskGroupItems = step.tasks.map(task => taskFactory.createTask(task));\n this.content = step.content;\n this.shouldTaskTitlesBeDisplayed = step.shouldTaskTitlesBeDisplayed;\n this.orderIndicatorColor = step.lessonColor;\n\n reaction(\n () => this.actionableTasks.map(task => task && task.model.answersState),\n tasksStatus => {\n if (tasksStatus.every(status => status === \"correct\")) {\n this.markStepAsCompleted();\n }\n }\n );\n\n reaction(\n () => this.isCompleted,\n async isCompleted => {\n if (isCompleted) {\n await Promise.all(this.actionableTasks.map(task => task && task.model.showCorrectAnswer()));\n return;\n }\n\n await Promise.all(this.actionableTasks.map(task => task.model.reset()));\n },\n { fireImmediately: true }\n );\n }\n}\n","import { IBookmarkStore } from \"../../../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../../../shared/stores/ProgressStore\";\nimport { PortableTextDto } from \"../../../../../types/shared/dto/PortableTextDto\";\nimport { Step } from \"../Step\";\nimport { TextStepProperties } from \"./CreateTextStepProperties\";\n\nexport class TextBlockStep extends Step {\n readonly _type = \"TextBlock\";\n\n content: PortableTextDto;\n\n constructor(step: TextStepProperties, progressStore: IProgressStore, bookmarkStore: IBookmarkStore) {\n super(step, progressStore, bookmarkStore);\n\n this.content = step.content;\n }\n}\n","import { observable, computed, onBecomeObserved, action } from \"mobx\";\nimport { BackendApi } from \"../../../../../shared/api/BackendApi\";\nimport { Popup } from \"../../../../../shared/components/popup/Popup\";\nimport { IGtmService } from \"../../../../../shared/services/GtmService\";\nimport { ILowLevelNavigationService } from \"../../../../../shared/services/NavigationService\";\nimport { IBookmarkStore } from \"../../../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../../../shared/stores/ProgressStore\";\nimport { AuthorDto } from \"../../../../../types/shared/dto/AuthorDto\";\nimport { VideoDetailsDto } from \"../../../../../types/video/dto/VideoDetailsDto\";\nimport { AuthorInfo } from \"../../../../authorsForProduct/authorInfo/AuthorInfo\";\nimport { ProductParams } from \"../../../../product/addProductRouting\";\nimport { Step } from \"../Step\";\nimport { VideoStepProperties } from \"./CreateVideoStepProperties\";\n\nexport class VideoStep extends Step {\n readonly _type = \"Video\";\n\n readonly videoUrl: string;\n\n @observable videoDetails?: VideoDetailsDto;\n\n @observable author?: AuthorDto;\n\n @observable authorInfoPopup = new Popup();\n\n @computed get authorInfo() {\n if (!this.author) {\n return;\n }\n\n return new AuthorInfo(this.backendApi, this.author);\n }\n\n @computed get videoProgress() {\n return this.progressStore.getVideoProgress(this.id);\n }\n\n @computed get positionSeconds() {\n return this.videoProgress?.lastPosition.totalSeconds ?? 0;\n }\n\n @computed get startPositionSeconds() {\n return this.positionSeconds;\n }\n\n constructor(\n step: VideoStepProperties,\n protected progressStore: IProgressStore,\n private backendApi: BackendApi,\n private gtm: IGtmService,\n bookmarkStore: IBookmarkStore,\n private navigationService: ILowLevelNavigationService,\n private productParams: ProductParams,\n videoDetails?: VideoDetailsDto\n ) {\n super(step, progressStore, bookmarkStore);\n this.videoUrl = step.videoUrl;\n this.author = step.author;\n\n onBecomeObserved(this, \"videoDetails\", async () => {\n this.videoDetails = videoDetails ?? (await backendApi.getVideoDetails({ stepId: step.id }));\n });\n }\n\n @action.bound\n async updateVideoProgress(secondsSinceStart: number) {\n await this.progressStore.updateStepWithTimeProgress(this.id, secondsSinceStart, this._type);\n }\n\n @action.bound\n async endVideo(secondsSinceStart: number) {\n await this.progressStore.endStepWithTimeProgressContent(this.id, secondsSinceStart, this._type);\n this.gtm.pushVideoEnded(this.id, this.title, this.videoUrl);\n }\n}\n","import { BackendApi } from \"../../../../shared/api/BackendApi\";\nimport { Step } from \"../../../../shared/api/StepService\";\nimport { TaskFactory } from \"../../../../shared/components/tasks/TaskFactory\";\nimport { ActiveCourseParams } from \"../../../../shared/models/Url\";\nimport { IGtmService } from \"../../../../shared/services/GtmService\";\nimport { ILowLevelNavigationService } from \"../../../../shared/services/NavigationService\";\nimport { IBookmarkStore } from \"../../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../../shared/stores/ProgressStore\";\nimport { assertUnreachable } from \"../../../../shared/typeUtils\";\nimport { LessonTask } from \"./LessonTask\";\nimport { SoundStep } from \"./soundStep/SoundStep\";\nimport { TaskGroupStep } from \"./taskGroupStep/TaskGroupStep\";\nimport { TextBlockStep } from \"./textBlockStep/TextBlockStep\";\nimport { VideoStep } from \"./videoStep/VideoStep\";\n\nexport class StepFactory {\n private taskFactory = new TaskFactory();\n\n createStep(param: Step) {\n switch (param._type) {\n case \"Task\":\n return new LessonTask(\n param,\n this.activeCourseParams,\n this.taskFactory,\n param.task,\n this.progressStore,\n this.bookmarkStore\n );\n case \"TaskGroup\":\n return new TaskGroupStep(\n { ...param, lessonColor: this.lessonColor },\n this.progressStore,\n this.bookmarkStore,\n this.activeCourseParams\n );\n\n case \"TextBlock\":\n return new TextBlockStep(param, this.progressStore, this.bookmarkStore);\n case \"Video\":\n return new VideoStep(\n param,\n this.progressStore,\n this.backendApi,\n this.gtm,\n this.bookmarkStore,\n this.navigationService,\n { productSlug: this.activeCourseParams.productSlug }\n );\n case \"Sound\":\n return new SoundStep(param, this.progressStore, this.gtm, this.bookmarkStore);\n default:\n return assertUnreachable(param);\n }\n }\n\n constructor(\n private lessonColor: string,\n private progressStore: IProgressStore,\n private bookmarkStore: IBookmarkStore,\n private backendApi: BackendApi,\n private gtm: IGtmService,\n private activeCourseParams: ActiveCourseParams,\n private navigationService: ILowLevelNavigationService\n ) {}\n}\n","import noop from \"lodash/noop\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { INavigationService } from \"../../shared/services/NavigationService\";\nimport { LoginConfigDto } from \"../../types/config/dto/LoginConfigDto\";\nimport { GtmBasePage } from \"../GtmBasePage\";\n\nexport class LoginViewModel extends GtmBasePage {\n constructor(\n public loginConfig: LoginConfigDto,\n public languageService: ILanguageService,\n public navigation: INavigationService,\n public gtmService: IGtmService,\n errorService: IErrorService,\n public returnUrl?: string\n ) {\n super(languageService, gtmService, errorService);\n }\n\n // eslint-disable-next-line class-methods-use-this\n protected async loadData() {\n noop();\n }\n}\n","import flatten from \"lodash/flatten\";\nimport groupBy from \"lodash/groupBy\";\nimport uniqBy from \"lodash/uniqBy\";\nimport { action, computed } from \"mobx\";\nimport { IVideoService } from \"../../shared/api/BackendApi\";\nimport { ThemeItem } from \"../../shared/components/basicThemesSection/ThemeItem\";\nimport { SelectViewModel } from \"../../shared/components/select/SelectViewModel\";\nimport { CourseStructure } from \"../../shared/contentStructure/CourseStructure\";\nimport { Url } from \"../../shared/models/Url\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../shared/services/NavigationService\";\nimport { IProgressStore } from \"../../shared/stores/ProgressStore\";\nimport { PreviousExamTypeDto } from \"../../types/courses/dto/PreviousExamTypeDto\";\nimport { ImageDto } from \"../../types/shared/dto/ImageDto\";\nimport { GtmBasePage } from \"../GtmBasePage\";\n\nexport interface ExamTheme {\n id: string;\n theme: ThemeItem;\n examDate: string;\n examYear: string;\n examTypes: PreviousExamTypeDto[];\n thumbnailImage?: ImageDto;\n}\n\nexport class PreviousExamsViewModel extends GtmBasePage {\n yearsSelect: SelectViewModel;\n\n typesSelect: SelectViewModel;\n\n @computed get previousExamsStructure() {\n if (!this.courseStructure.previousExamsStructure) {\n throw new Error(\"Previous exams structure should be specified in the Course Structure\");\n }\n\n return this.courseStructure.previousExamsStructure;\n }\n\n @computed get courseParams() {\n return this.courseStructure.urlParams;\n }\n\n @computed get exams(): ExamTheme[] {\n return this.previousExamsStructure.examThemes.map(examTheme => ({\n ...examTheme,\n examYear: new Date(examTheme.examDate).getFullYear().toString(),\n theme: new ThemeItem(examTheme.theme, this.progressStore, this.videoService),\n }));\n }\n\n @computed get examsByYear() {\n return groupBy(this.exams, exam => exam.examYear);\n }\n\n @computed get examsYears() {\n /*\n Descending sorting because object keys are sorted in ascending order by default\n (and we want the latest year to be at the top)\n */\n return Object.keys(this.examsByYear).sort((a, b) => {\n const aNumber = Number(a) || 0;\n const bNumber = Number(b) || 0;\n\n return bNumber - aNumber;\n });\n }\n\n @computed get areFiltersApplied() {\n return this.yearsSelect.value.concat(this.typesSelect.value).length > 0;\n }\n\n @computed get filteredItems() {\n const yearsFiltered = this.yearsSelect.hasValue\n ? this.exams.filter(exam => this.yearsSelect.value.includes(exam.examYear))\n : this.exams;\n\n const typesFiltered = this.typesSelect.hasValue\n ? yearsFiltered.filter(exam =>\n exam.examTypes.map(examType => examType.id).some(examTypeId => this.typesSelect.value.includes(examTypeId))\n )\n : yearsFiltered;\n\n return typesFiltered;\n }\n\n @action.bound\n resetFilters() {\n this.yearsSelect.resetValue();\n this.typesSelect.resetValue();\n }\n\n constructor(\n public languageService: ILanguageService,\n public gtm: IGtmService,\n public errorService: IErrorService,\n private courseStructure: CourseStructure,\n private navigation: ILowLevelNavigationService,\n private progressStore: IProgressStore,\n private videoService: IVideoService\n ) {\n super(languageService, gtm, errorService);\n\n this.yearsSelect = new SelectViewModel(\n this.examsYears.map(examsYear => ({ value: examsYear, label: examsYear }))\n );\n\n const types = uniqBy(flatten(this.exams.map(exam => exam.examTypes)), type => type.id);\n this.typesSelect = new SelectViewModel(types.map(type => ({ value: type.id, label: type.name })));\n }\n\n protected async loadData() {\n if (!this.courseStructure.previousExamsStructure) {\n const dashboardUrl = Url.toDashboardPage(this.courseStructure.urlParams);\n this.navigation.redirectTo(dashboardUrl);\n }\n }\n}\n","import { action, observable } from \"mobx\";\nimport { Popup } from \"../../../../shared/components/popup/Popup\";\nimport { CourseInfo } from \"../../../../shared/stores/Product\";\n\nexport interface NewsletterData {\n fullName?: string;\n email: string;\n profession: string;\n}\n\nexport class BetaNewsletterPopupViewModel extends Popup {\n @observable course: CourseInfo | undefined;\n\n @action.bound\n showNewsletterForm(course: CourseInfo) {\n this.course = course;\n this.show();\n }\n\n @action.bound\n handleSubmit(formData: NewsletterData) {\n if (!this.course) {\n throw new Error(\"Course not specified?\");\n }\n\n this.handleNewsletterSubmit(this.course, formData);\n this.close();\n }\n\n constructor(private handleNewsletterSubmit: (course: CourseInfo, formData: NewsletterData) => void) {\n super();\n }\n}\n","import { computed, observable, action } from \"mobx\";\nimport { CourseInfo, Product } from \"../../../shared/stores/Product\";\nimport { BetaNewsletterPopupViewModel, NewsletterData } from \"./betaNewsletterPopup/BetaNewsletterPopupViewModel\";\n\nexport class ProductHeroViewModel {\n @observable betaNewsletterModel = new BetaNewsletterPopupViewModel(this.handleNewsletterSubmit);\n\n @computed get courses() {\n return this.product.courses;\n }\n\n @computed get title() {\n return this.product.heroSection.title;\n }\n\n @computed get description() {\n return this.product.heroSection.description;\n }\n\n @computed get image() {\n return this.product.image;\n }\n\n @computed get isBeta() {\n return this.product.isBeta;\n }\n\n @action.bound\n private startCourseNewsletterRegistration(course: CourseInfo) {\n this.betaNewsletterModel.showNewsletterForm(course);\n }\n\n @action.bound\n onCourseClick(slug: string) {\n const course = this.getCourseBySlug(slug);\n\n if (course.isBeta) {\n this.startCourseNewsletterRegistration(course);\n } else {\n this.handleCourseClick(slug);\n }\n }\n\n constructor(\n public coursesSectionId: string,\n private product: Product,\n private handleCourseClick: (slug: string) => void,\n private handleNewsletterSubmit: (course: CourseInfo, formData: NewsletterData) => void\n ) {}\n\n getCourseBySlug = (courseSlug: string) => {\n const course = this.product.courses.find(c => c.slug === courseSlug);\n\n if (!course) {\n throw new Error(\"Cannot find course in the product\");\n }\n\n return course;\n };\n}\n","import noop from \"lodash/noop\";\nimport { action, computed, observable } from \"mobx\";\nimport { BackendApi } from \"../../shared/api/BackendApi\";\nimport { ITibetClient } from \"../../shared/api/TibetClient\";\nimport { Url } from \"../../shared/models/Url\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../shared/services/NavigationService\";\nimport { CourseInfo } from \"../../shared/stores/Product\";\nimport { ProductStore } from \"../../shared/stores/ProductStore\";\nimport { UserStore } from \"../../shared/stores/UserStore\";\nimport { ConfigDto } from \"../../types/config/dto/ConfigDto\";\nimport { BasePage } from \"../BasePage\";\nimport { ProductParams } from \"./addProductRouting\";\nimport { ProductHeroViewModel } from \"./productHero/ProductHeroViewModel\";\nimport { NewsletterData } from \"./productHero/betaNewsletterPopup/BetaNewsletterPopupViewModel\";\n\nexport class ProductViewModel extends BasePage {\n public coursesSectionId = \"coursesSection\";\n\n @observable pathname;\n\n @computed get product() {\n if (!this.productStore.activeProduct) {\n throw new Error(\"Active product have to be specified before creating ProductViewModel\");\n }\n return this.productStore.activeProduct;\n }\n\n @computed get productHeroVM() {\n return new ProductHeroViewModel(\n this.coursesSectionId,\n this.product,\n this.handleCourseClick,\n this.handleNewsletterSubmit\n );\n }\n\n @computed get productSections() {\n return this.product.sections;\n }\n\n @computed get courses() {\n return this.product.courses;\n }\n\n @computed get isBeta() {\n return this.product.isBeta;\n }\n\n constructor(\n public productParams: ProductParams,\n public config: ConfigDto,\n public productStore: ProductStore,\n public userStore: UserStore,\n public navigation: ILowLevelNavigationService,\n public gtm: IGtmService,\n public tibetClient: ITibetClient,\n public backendApi: BackendApi,\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public handleCourseClick: (slug?: string) => Promise,\n public handleLogin: (slug?: string) => Promise\n ) {\n super(languageService, errorService);\n this.pathname = window.location.pathname;\n }\n\n protected async loadData() {\n noop();\n }\n\n handleNewsletterSubmit = async (course: CourseInfo, formData: NewsletterData) => {\n this.backendApi.submitNewsletterSignup({\n courseTitle: course.title,\n newsletter: { email: formData.email, fullName: formData.fullName, profession: formData.profession },\n });\n };\n\n public async beforeActivated() {\n this.productStore.trySetActiveProductBySlug(this.productParams.productSlug);\n super.beforeActivated();\n }\n\n @action.bound\n goToCourse(courseSlug: string) {\n this.navigation.redirectTo(Url.toDashboardPage({ ...this.productParams, courseSlug }));\n }\n}\n","import { IRoute } from \"react-mvvm\";\nimport { setQueryParamsToStorage } from \"../../shared/setQueryParamsToStorage\";\nimport { App } from \"../App\";\nimport { ProductViewModel } from \"./ProductViewModel\";\n\nexport type ProductParams = {\n productSlug: string;\n};\n\nexport type ProductQueryParams = {\n utm_source: string;\n utm_medium: string;\n utm_term: string;\n utm_campaign: string;\n utm_content: string;\n};\n\nexport const addProductRouting = (appRoute: IRoute) => {\n const productRoute = appRoute.addRoute(\n \"/:productSlug\",\n ProductViewModel,\n (app, productParams, productQueryParams) => {\n if (!app.productStore.trySetActiveProductBySlug(productParams.productSlug)) {\n app.handleInvalidRoute();\n throw new TypeError(\"Invalid product slug\");\n }\n\n if (productQueryParams) {\n if (productQueryParams.utm_source?.toLowerCase() === \"akademika\") {\n setQueryParamsToStorage(productQueryParams as ProductQueryParams);\n }\n }\n\n const product = new ProductViewModel(\n productParams,\n app.config,\n app.productStore,\n app.userStore,\n app.navigation,\n app.gtm,\n app.tibetClient,\n app.backendApi,\n app.languageService,\n app,\n app.handleCourseEnter,\n app.handleLogin\n );\n return app.showChildPage(product);\n },\n page => ({ ...page.productParams })\n );\n return productRoute;\n};\n","import { ProductQueryParams } from \"../pages/product/addProductRouting\";\n\nexport const setQueryParamsToStorage = (productQueryParams: ProductQueryParams) => {\n if (Object.keys(productQueryParams).length > 0) {\n Object.keys(productQueryParams).forEach(key => {\n const value = productQueryParams[key as keyof ProductQueryParams];\n window.sessionStorage.setItem(key, value);\n });\n }\n};\n","import { action, observable } from \"mobx\";\nimport { BackendApi } from \"../../shared/api/BackendApi\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { UserStore } from \"../../shared/stores/UserStore\";\nimport { GtmBasePage } from \"../GtmBasePage\";\n\nexport class PurchaseConfirmationViewModel extends GtmBasePage {\n @observable courseId = \"\";\n\n @observable courseTitle = \"\";\n\n @observable courseSlug = \"\";\n\n @observable productAndCourseUrl = \"\";\n\n @observable productIsLoading = true;\n\n @observable productIsLoaded = false;\n\n @observable courseIdQueryParam;\n\n constructor(\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public gtm: IGtmService,\n private backendApi: BackendApi,\n private userStore: UserStore\n ) {\n super(languageService, gtm, errorService);\n this.courseIdQueryParam = new URLSearchParams(window.location.search).get(\"courseId\");\n\n if (this.courseIdQueryParam) {\n this.getCourseInfo(this.courseIdQueryParam);\n }\n }\n\n @action.bound\n public async getCourseInfo(courseId: string) {\n this.courseId = courseId;\n const course = await this.backendApi.getCourseStructure({ id: courseId });\n const products = await this.backendApi.getProductsInfo({});\n const matchingProduct = products.flatMap(product =>\n product.courses.find(c => c.id === courseId) ? [product] : []\n );\n\n if (course && matchingProduct) {\n this.courseTitle = course.title;\n this.courseSlug = course.slug;\n this.productAndCourseUrl = `/${matchingProduct[0].slug}/${course.slug}/forside`;\n } else {\n console.error(\"Could not find course or product\");\n }\n }\n\n protected loadData = async () => {\n setTimeout(() => {\n this.isLoading = false;\n this.productIsLoading = false;\n }, 6000);\n };\n}\n","import noop from \"lodash/noop\";\nimport { UserBookmarkDto } from \"../../../types/bookmarks/dto/UserBookmarkDto\";\nimport { IBookmarkService } from \"../../api/BackendApi\";\nimport { Bookmark } from \"../Bookmark\";\nimport { IBookmarkStore } from \"../BookmarkStore\";\n\nclass BookmarkServiceMock implements IBookmarkService {\n async createUserBookmark() {\n noop();\n }\n\n async getUserBookmarks() {\n return [] as UserBookmarkDto[];\n }\n\n async deleteUserBookmark() {\n noop();\n }\n\n async updateUserBookmark() {\n noop();\n }\n}\n\nclass BookmarkStoreMock implements IBookmarkStore {\n bookmarkService = new BookmarkServiceMock();\n\n bookmarks: Bookmark[] = [];\n\n isBookmarked() {\n return false;\n }\n\n removeBookmark() {\n noop();\n }\n\n createBookmark(stepId: string, id?: string | undefined): Bookmark {\n const bookmark = new Bookmark(this, stepId, \"activeCourseId\", id || \"fallbackID\");\n return bookmark;\n }\n\n getBookmark() {\n return undefined;\n }\n}\n\nexport const bookmarkStoreMock = new BookmarkStoreMock();\n","import noop from \"lodash/noop\";\nimport { CourseProgress } from \"../../progressStructure/CourseProgress\";\nimport { asProxy } from \"../../utils\";\nimport { IProgressStore } from \"../ProgressStore\";\n\nexport class ProgressStoreMock implements IProgressStore {\n async init() {\n noop();\n }\n\n completedStepsIds = [];\n\n courseProgress = asProxy({});\n\n isCompleted() {\n return false;\n }\n\n getVideoProgress() {\n return undefined;\n }\n\n getSoundStepProgress() {\n return undefined;\n }\n\n lastUpdatedFrom() {\n return undefined;\n }\n\n nextUncompletedFrom() {\n return undefined;\n }\n\n async markStepAsCompleted() {\n noop();\n }\n\n async markStepAsUncompleted() {\n noop();\n }\n\n async updateStepWithTimeProgress() {\n noop();\n }\n\n async endStepWithTimeProgressContent() {\n noop();\n }\n}\n","import { action, observable } from \"mobx\";\nimport { Task } from \"../../../../../shared/api/StepService\";\nimport { TaskHintViewModel } from \"../../../../../shared/components/taskHint/TaskHintViewModel\";\nimport { TaskFactory } from \"../../../../../shared/components/tasks/TaskFactory\";\nimport { ActionableTask } from \"../../../../../shared/components/tasks/TaskView\";\nimport { ActiveCourseParams } from \"../../../../../shared/models/Url\";\nimport { IBookmarkStore } from \"../../../../../shared/stores/BookmarkStore\";\nimport { ThemeInfoDto } from \"../../../../../types/trainingground/dto/ThemeInfoDto\";\n\nexport class TrainingTask {\n readonly task: ActionableTask;\n\n readonly hint?: TaskHintViewModel;\n\n @observable public visited = false;\n\n @action.bound\n visit() {\n this.visited = true;\n }\n\n constructor(\n activeCourseParams: ActiveCourseParams,\n taskFactory: TaskFactory,\n task: Task,\n public readonly isLastFromTheme: boolean,\n public theme: ThemeInfoDto,\n bookmarkStore: IBookmarkStore\n ) {\n if (task._type === \"TextTask\") {\n throw new Error(`${task._type} is invalid task type in Training Ground`);\n }\n\n this.task = taskFactory.createTask(task) as ActionableTask;\n this.hint =\n task?.hint &&\n new TaskHintViewModel(activeCourseParams, bookmarkStore, task.hint.content, task.hint.relatedStepInfo);\n }\n}\n","import noop from \"lodash/noop\";\nimport { action, computed, observable } from \"mobx\";\nimport { BackendApi } from \"../../shared/api/BackendApi\";\nimport { Step, Task } from \"../../shared/api/StepService\";\nimport { imageCropMock, imageHotspotMock } from \"../../shared/components/image/Image.mock\";\nimport { TaskFactory } from \"../../shared/components/tasks/TaskFactory\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../shared/services/NavigationService\";\nimport { bookmarkStoreMock } from \"../../shared/stores/mock/BookmarkStore.mock\";\nimport { ProgressStoreMock } from \"../../shared/stores/mock/ProgressStore.mock\";\nimport { assertUnreachable } from \"../../shared/typeUtils\";\nimport themeMockImageUrl from \"../../static/images/dog2.png\";\nimport { ThemeInfoDto } from \"../../types/trainingground/dto/ThemeInfoDto\";\nimport { BasePage } from \"../BasePage\";\nimport { StepViewModel } from \"../lessons/StepStore\";\nimport { StepFactory } from \"../lessons/lesson/steps/StepFactory\";\nimport { TrainingTask } from \"../trainingGrounds/trainingGround/training/testTask/TrainingTask\";\nimport { PreviewQuery } from \"./addStepPreviewRouting\";\n\nclass GtmServiceMock implements IGtmService {\n pushCookieConsentChanged() {\n noop();\n }\n\n pushPageViewed() {\n noop();\n }\n\n pushLoginStarted() {\n noop();\n }\n\n pushBuyStarted() {\n noop();\n }\n\n pushVideoEnded() {\n noop();\n }\n\n pushUserStatusChanged() {\n noop();\n }\n\n pushSoundCloudEnded() {\n noop();\n }\n}\n\ntype PreviewMode =\n | { type: \"loading\" }\n | { type: \"lesson\"; step: StepViewModel }\n | { type: \"training\"; task: TrainingTask };\nexport type PreviewModeType = Pick[\"type\"];\n\nexport class StepPreviewViewModel extends BasePage {\n @observable private step?: Step;\n\n @observable private task?: Task;\n\n @observable mode: PreviewMode = { type: \"loading\" };\n\n @computed private get currentLessonStep() {\n if (this.step === undefined) {\n return;\n }\n\n return this.stepFactory.createStep(this.step);\n }\n\n @computed private get currentTrainingGroundTask() {\n if (this.task === undefined) {\n return;\n }\n\n const themeInfo: ThemeInfoDto = {\n id: \"Theme-id1\",\n title: \"Mock theme\",\n slug: \"Theme-slug\",\n image: {\n url: themeMockImageUrl,\n alt: \"\",\n width: 200,\n height: 200,\n crop: imageCropMock,\n hotspot: imageHotspotMock,\n },\n };\n\n return new TrainingTask(\n this.activeCourseParamsMock,\n this.taskFactory,\n this.task,\n false,\n themeInfo,\n bookmarkStoreMock\n );\n }\n\n @computed get isTrainingPreviewAvailable() {\n return this.currentTrainingGroundTask !== undefined;\n }\n\n get activeCourseParamsMock() {\n return { courseSlug: \"123\", productSlug: \"123\" };\n }\n\n readonly lessonColor = \"#d3e1ba\";\n\n readonly stepFactory: StepFactory;\n\n readonly taskFactory = new TaskFactory();\n\n constructor(\n public stepSlug: string,\n public previewQuery: Partial,\n public backendApi: BackendApi,\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public navigationService: ILowLevelNavigationService\n ) {\n super(languageService, errorService);\n const progressStoreMock = new ProgressStoreMock();\n const gtmServiceMock = new GtmServiceMock();\n\n this.stepFactory = new StepFactory(\n this.lessonColor,\n progressStoreMock,\n bookmarkStoreMock,\n backendApi,\n gtmServiceMock,\n this.activeCourseParamsMock,\n this.navigationService\n );\n }\n\n @action.bound\n changeMode(type: PreviewModeType) {\n if (type === \"lesson\" && this.currentLessonStep) {\n this.mode = { type: \"lesson\", step: this.currentLessonStep };\n return;\n }\n\n if (type === \"training\" && this.currentTrainingGroundTask) {\n this.mode = { type: \"training\", task: this.currentTrainingGroundTask };\n return;\n }\n\n if (type === \"loading\") {\n this.mode = { type: \"loading\" };\n return;\n }\n\n return assertUnreachable();\n }\n\n private async loadTraining(stepType: Step) {\n switch (stepType._type) {\n case \"Task\": {\n switch (stepType.task._type) {\n case \"ChoiceListTask\":\n case \"ChoiceTask\":\n case \"GapTask\":\n case \"InputTask\":\n case \"MaskTask\":\n case \"MatchTask\":\n return this.backendApi.getTrainingGroundTaskPreview({\n slug: this.stepSlug,\n isDraft: this.previewQuery.isDraft,\n revision: this.previewQuery.revision,\n });\n case \"TextTask\":\n return undefined;\n default:\n return assertUnreachable(stepType.task);\n }\n }\n case \"Video\":\n case \"TaskGroup\":\n case \"TextBlock\":\n case \"Sound\":\n return undefined;\n default:\n return assertUnreachable(stepType);\n }\n }\n\n protected async loadData() {\n this.step = await this.backendApi.getStepPreview({\n slug: this.stepSlug,\n isDraft: this.previewQuery.isDraft,\n revision: this.previewQuery.revision,\n });\n\n if (this.currentLessonStep) {\n this.mode = { type: \"lesson\", step: this.currentLessonStep };\n }\n\n this.task = await this.loadTraining(this.step);\n }\n}\n","import { computed } from \"mobx\";\nimport { Popup } from \"../../shared/components/popup/Popup\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { TermsAndConditionsDto } from \"../../types/config/dto/TermsAndConditionsDto\";\nimport { GtmBasePage } from \"../GtmBasePage\";\n\nexport class TermsAndConditionsViewModel extends GtmBasePage {\n @computed get termsAndConditionsAccordion() {\n if (!this.termsAndConditions) {\n return undefined;\n }\n\n return this.termsAndConditions.accordion.accordionItems.map(acc => ({ ...acc, model: new Popup() }));\n }\n\n @computed get termsAndConditionsInfo(): Omit | undefined {\n if (!this.termsAndConditions) {\n return;\n }\n\n return this.termsAndConditions;\n }\n\n constructor(\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public gtm: IGtmService,\n private termsAndConditions?: TermsAndConditionsDto\n ) {\n super(languageService, gtm, errorService);\n }\n\n protected async loadData() {\n this.isLoading = false;\n }\n}\n","import { ITestService } from \"../../shared/api/BackendApi\";\n\nexport class TestApi {\n constructor(private testService: ITestService) {}\n\n get(id: string, courseId: string) {\n return this.testService.getTest({ id, courseId });\n }\n\n async submit(testResult: {\n courseId: string;\n themeId: string;\n testId: string;\n correctAnswers: number;\n totalQuestions: number;\n isPassed: boolean;\n }) {\n await this.testService.submitTest({ testResult });\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { Command } from \"react-mvvm\";\nimport { StaticLink } from \"../../layout/header/HeaderViewModel\";\nimport { Popup } from \"../../shared/components/popup/Popup\";\nimport { TestStructure } from \"../../shared/contentStructure/TestStructure\";\nimport { Url } from \"../../shared/models/Url\";\nimport { Result } from \"../../shared/resultUtils\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { delay, smoothScrollToSection } from \"../../shared/utils\";\nimport { GtmBasePage } from \"../GtmBasePage\";\nimport { CourseNavigator } from \"../shared/courseNavigator/CourseNavigator\";\nimport { TestStore } from \"./TestStore\";\n\ntype TestState = \"test\" | \"testResult\";\n\nexport class TestPageViewModel extends GtmBasePage {\n @observable state: TestState = \"test\";\n\n @observable testResult?: Result;\n\n @observable confirmExitPanel = new Popup();\n\n @observable isReviewOpen = false;\n\n @observable submitCount = 0;\n\n @computed get title() {\n return this.testStructure.title;\n }\n\n @computed get subtitle() {\n return this.testStructure.subtitle || this.testStructure.themeStructure.title;\n }\n\n @computed get color() {\n return this.testStructure.color;\n }\n\n @computed get test() {\n return this.testStore.test;\n }\n\n @computed get tasksCount() {\n return this.testStructure.tasksCount;\n }\n\n @computed get completedTasksCount() {\n return this.test?.tasks?.filter(task => task.model.isAnswered).length ?? 0;\n }\n\n @computed get isCompleted() {\n return this.tasksCount === this.completedTasksCount;\n }\n\n @computed get exitLink() {\n const { themeStructure } = this.testStructure;\n return Url.toThemePage(themeStructure.courseStructure.urlParams, themeStructure.slug);\n }\n\n @computed get nextElementLink(): StaticLink {\n const { themeStructure } = this.testStructure;\n const { courseStructure } = themeStructure;\n const nextTheme = this.courseNavigator.getNextTheme(themeStructure);\n\n if (!nextTheme) {\n return {\n translation: \"goToDashboard\",\n href: Url.toDashboardPage(courseStructure.urlParams),\n id: \"goToDashboard\",\n };\n }\n\n return {\n translation: \"goToNextTheme\",\n href: Url.toThemePage(courseStructure.urlParams, nextTheme.slug),\n id: \"goToNextTheme\",\n };\n }\n\n submit: Command;\n\n reset: Command;\n\n constructor(\n public testStructure: TestStructure,\n languageService: ILanguageService,\n gtm: IGtmService,\n errorService: IErrorService,\n public courseNavigator: CourseNavigator,\n private testStore: TestStore\n ) {\n super(languageService, gtm, errorService);\n this.submit = new Command(async () => {\n this.submitCount += 1;\n\n if (this.isCompleted) {\n this.isLoading = true;\n\n const testResult = await this.test?.submit(this.testStructure.themeStructure.id);\n\n this.testResult = testResult;\n this.state = \"testResult\";\n\n this.isLoading = false;\n }\n\n const unansweredTask = this.test?.tasks.find(task => !task.model.isAnswered);\n\n if (unansweredTask) {\n smoothScrollToSection(unansweredTask.id);\n }\n });\n\n this.reset = new Command(async () => {\n this.isLoading = true;\n\n await delay(500); // to improve UX\n\n this.test?.reset();\n this.isReviewOpen = false;\n this.testResult = undefined;\n this.state = \"test\";\n this.submitCount = 0;\n\n this.isLoading = false;\n });\n }\n\n @action.bound\n toggleReview() {\n this.isReviewOpen = !this.isReviewOpen;\n }\n\n protected async loadData() {\n const { themeStructure } = this.testStructure;\n const { courseStructure } = themeStructure;\n await this.testStore.loadTest(this.testStructure.id, courseStructure.id);\n }\n}\n","import { GetStepPreviewRequest } from \"../../types/api/lessons/GetStepPreviewRequest\";\nimport { GetStepRequest } from \"../../types/api/lessons/GetStepRequest\";\nimport { GetTrainingGroundTaskPreviewRequest } from \"../../types/api/trainingground/GetTrainingGroundTaskPreviewRequest\";\nimport { LessonSoundDto } from \"../../types/dto/lessonstepdtos/LessonSoundDto\";\nimport { LessonStepDto } from \"../../types/dto/lessonstepdtos/LessonStepDto\";\nimport { LessonTaskGroupDto } from \"../../types/dto/lessonstepdtos/LessonTaskGroupDto\";\nimport { LessonTextBlockDto } from \"../../types/dto/lessonstepdtos/LessonTextBlockDto\";\nimport { LessonVideoDto } from \"../../types/dto/lessonstepdtos/LessonVideoDto\";\nimport { ChoiceListTaskDto } from \"../../types/dto/tasks/ChoiceListTaskDto\";\nimport { ChoiceTaskDto } from \"../../types/dto/tasks/ChoiceTaskDto\";\nimport { GapTaskDto } from \"../../types/dto/tasks/GapTaskDto\";\nimport { InputTaskDto } from \"../../types/dto/tasks/InputTaskDto\";\nimport { MaskTaskDto } from \"../../types/dto/tasks/MaskTaskDto\";\nimport { MatchTaskDto } from \"../../types/dto/tasks/MatchTaskDto\";\nimport { TaskDto } from \"../../types/dto/tasks/TaskDto\";\nimport { TaskTypeDto } from \"../../types/dto/tasks/TaskTypeDto\";\nimport { TextTaskDto } from \"../../types/dto/tasks/TextTaskDto\";\nimport { StepTypeDto } from \"../../types/shared/dto/StepTypeDto\";\nimport { StepType } from \"../stepTypeUtils\";\nimport { assertUnreachable } from \"../typeUtils\";\n\nexport type TaskType = `${TaskTypeDto}`;\n\nexport type Step =\n | (\n | ({ _type: Extract } & LessonTextBlockDto)\n | ({ _type: Extract } & LessonVideoDto)\n | ({ _type: Extract } & Omit & { tasks: Task[] })\n | { _type: Extract; task: Task }\n | ({ _type: Extract } & LessonSoundDto)\n ) & {\n id: string;\n title: string;\n slug: string;\n\n relatedContentIds?: string[];\n };\n\nexport type Task =\n | ({ _type: Extract } & TextTaskDto)\n | ({ _type: Extract } & ChoiceListTaskDto)\n | ({ _type: Extract } & ChoiceTaskDto)\n | ({ _type: Extract } & MaskTaskDto & { solution: undefined })\n | ({ _type: Extract } & InputTaskDto)\n | ({ _type: Extract } & GapTaskDto)\n | ({ _type: Extract } & MatchTaskDto);\n\nexport interface IStepService {\n getStep: (req: GetStepRequest) => Promise;\n getStepPreview: (req: GetStepPreviewRequest) => Promise;\n getTrainingGroundTaskPreview: (req: GetTrainingGroundTaskPreviewRequest) => Promise;\n}\n\nfunction throwCreationError(type: TType): never {\n throw new Error(`Unable to create object with type: ${type}`);\n}\n\nexport const mapToTask = (task: TaskDto): Task => {\n switch (task.type) {\n case TaskTypeDto.ChoiceListTask: {\n if (!task.choiceListTask) {\n throwCreationError(task.type);\n }\n return { _type: \"ChoiceListTask\", ...task.choiceListTask };\n }\n case TaskTypeDto.ChoiceTask: {\n if (!task.choiceTask) {\n throwCreationError(task.type);\n }\n return { _type: \"ChoiceTask\", ...task.choiceTask };\n }\n case TaskTypeDto.GapTask: {\n if (!task.gapTask) {\n throwCreationError(task.type);\n }\n return { _type: \"GapTask\", ...task.gapTask };\n }\n case TaskTypeDto.InputTask: {\n if (!task.inputTask) {\n throwCreationError(task.type);\n }\n return { _type: \"InputTask\", ...task.inputTask };\n }\n case TaskTypeDto.MaskTask: {\n if (!task.maskTask) {\n throwCreationError(task.type);\n }\n return { _type: \"MaskTask\", ...task.maskTask, solution: undefined };\n }\n case TaskTypeDto.MatchTask: {\n if (!task.matchTask) {\n throwCreationError(task.type);\n }\n return { _type: \"MatchTask\", ...task.matchTask };\n }\n case TaskTypeDto.TextTask: {\n if (!task.textTask) {\n throwCreationError(task.type);\n }\n return { _type: \"TextTask\", ...task.textTask };\n }\n default:\n return assertUnreachable(task.type);\n }\n};\n\nexport const mapToStep = (step: LessonStepDto): Step => {\n switch (step.type) {\n case StepTypeDto.TextBlock: {\n if (!step.textBlock) {\n throwCreationError(step.type);\n }\n return { _type: step.type, ...step, ...step.textBlock };\n }\n case StepTypeDto.Video: {\n if (!step.video) {\n throwCreationError(step.type);\n }\n return { _type: step.type, ...step, ...step.video };\n }\n case StepTypeDto.TaskGroup: {\n if (!step.taskGroup) {\n throwCreationError(step.type);\n }\n\n return { _type: step.type, ...step, ...step.taskGroup, tasks: step.taskGroup.tasks.map(mapToTask) };\n }\n case StepTypeDto.Task: {\n if (!step.task) {\n throwCreationError(step.type);\n }\n return { _type: step.type, ...step, task: mapToTask(step.task) };\n }\n case StepTypeDto.Sound: {\n if (!step.sound) {\n throwCreationError(step.type);\n }\n return { _type: step.type, ...step, ...step.sound };\n }\n default:\n return assertUnreachable(step.type);\n }\n};\n","import { ResultDto } from \"../types/shared/dto/ResultDto\";\nimport { formatProgress } from \"./formatProgress\";\n\nexport interface Result extends ResultDto {\n score: number;\n hasPassed: boolean;\n}\n\nexport function getResultForScore(progress: number, passThreshold: number, results: ResultDto[]): Result {\n const { progressValue, unitInterval } = formatProgress(progress);\n const score = unitInterval;\n const result = results.find(r => r.startRange <= progressValue && progressValue <= r.endRange);\n\n if (result === undefined) {\n throw new Error(\"Results have to cover every score\");\n }\n\n return {\n score,\n hasPassed: progressValue >= passThreshold,\n ...result,\n };\n}\n","import clamp from \"lodash/clamp\";\nimport { Percentage } from \"../../shared/formatProgress\";\nimport { getResultForScore, Result } from \"../../shared/resultUtils\";\nimport { ResultDto } from \"../../types/shared/dto/ResultDto\";\nimport { PassThresholdDto } from \"../../types/test/dto/PassThresholdDto\";\n\nexport type PassThreshold = PassThresholdDto;\n\nexport class TestResultCalculator {\n private get percentagePassThreshold(): Percentage {\n const passThreshold = this.passThreshold.value;\n\n return clamp(passThreshold, 0, 100);\n }\n\n constructor(private passThreshold: PassThreshold, private testResults: ResultDto[]) {}\n\n calculate(correctTasks: number, totalTasks: number): Result {\n if (correctTasks < 0) {\n throw new Error(\"Number of correct tasks can not be less than 0\");\n }\n\n if (totalTasks <= 0) {\n throw new Error(\"Number of total tasks can not be less or equal to 0\");\n }\n\n if (correctTasks > totalTasks) {\n throw new Error(\"Number of correct tasks can not be greater that number of total tasks\");\n }\n\n const result = getResultForScore(correctTasks / totalTasks, this.percentagePassThreshold, this.testResults);\n return result;\n }\n}\n","import { action } from \"mobx\";\nimport { Task } from \"../../../../shared/api/StepService\";\nimport { TaskHintViewModel } from \"../../../../shared/components/taskHint/TaskHintViewModel\";\nimport { TaskFactory } from \"../../../../shared/components/tasks/TaskFactory\";\nimport { ActionableTask } from \"../../../../shared/components/tasks/TaskView\";\nimport { ActiveCourseParams } from \"../../../../shared/models/Url\";\nimport { IBookmarkStore } from \"../../../../shared/stores/BookmarkStore\";\n\nexport class TestTask {\n get id() {\n return this.task.model.id;\n }\n\n readonly task: ActionableTask;\n\n get model() {\n return this.task.model;\n }\n\n readonly hint?: TaskHintViewModel;\n\n constructor(\n activeCourseParams: ActiveCourseParams,\n taskFactory: TaskFactory,\n task: Task,\n bookmarkStore: IBookmarkStore\n ) {\n if (task._type === \"TextTask\") {\n throw new Error(`${task._type} is invalid task type in Training Ground`);\n }\n\n this.task = taskFactory.createTask(task) as ActionableTask;\n this.hint =\n task?.hint &&\n new TaskHintViewModel(activeCourseParams, bookmarkStore, task.hint.content, task.hint.relatedStepInfo);\n }\n\n @action.bound\n disable() {\n this.task.model.isDisabled = true;\n }\n\n @action.bound\n submit() {\n this.task.model.submit();\n }\n\n @action.bound\n reset() {\n this.task.model.reset();\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { mapToTask } from \"../../shared/api/StepService\";\nimport { TaskFactory } from \"../../shared/components/tasks/TaskFactory\";\nimport { ActiveCourseParams } from \"../../shared/models/Url\";\nimport { IBookmarkStore } from \"../../shared/stores/BookmarkStore\";\nimport { TestDto } from \"../../types/test/dto/TestDto\";\nimport { TestApi } from \"./TestApi\";\nimport { TestResultCalculator } from \"./TestResultCalculator\";\nimport { TestTask } from \"./shared/testTask/TestTask\";\n\nclass Test {\n private taskById = observable.map();\n\n private testResultCalculator: TestResultCalculator;\n\n get title() {\n return this.testDto.title;\n }\n\n get subtitle() {\n return this.testDto.subtitle;\n }\n\n get content() {\n return this.testDto.content;\n }\n\n get shouldTaskTitlesBeDisplayed() {\n return this.testDto.shouldTaskTitlesBeDisplayed;\n }\n\n @computed get tasks() {\n return Array.from(this.taskById.values());\n }\n\n constructor(\n activeCourseParams: ActiveCourseParams,\n private id: string,\n private courseId: string,\n private testDto: TestDto,\n public testStore: TestStore,\n taskFactory: TaskFactory,\n bookmarkStore: IBookmarkStore\n ) {\n testDto.tasks\n .map(task => new TestTask(activeCourseParams, taskFactory, mapToTask(task), bookmarkStore))\n .forEach(task => this.taskById.set(task.model.id, task));\n\n this.testResultCalculator = new TestResultCalculator(testDto.passThreshold, testDto.results);\n }\n\n @action\n async submit(themeId: string) {\n if (!this.id) {\n throw new Error(\"Cannot submit unloaded test\");\n }\n\n this.tasks.forEach(_task => {\n const task = _task;\n task.submit();\n task.disable();\n });\n const correctTasks = this.tasks.filter(task => task.model.answersState === \"correct\").length;\n const totalTasks = this.taskById.size;\n\n const result = this.testResultCalculator.calculate(correctTasks, totalTasks);\n\n await this.testStore.testApi.submit({\n testId: this.id,\n correctAnswers: correctTasks,\n totalQuestions: totalTasks,\n courseId: this.courseId,\n themeId,\n isPassed: result.hasPassed,\n });\n\n return result;\n }\n\n @action\n reset() {\n this.tasks.forEach(task => task.model.reset());\n }\n}\n\nexport class TestStore {\n @observable test?: Test;\n\n constructor(\n private activeCourseParams: ActiveCourseParams,\n public testApi: TestApi,\n private taskFactory: TaskFactory,\n private bookmarkStore: IBookmarkStore\n ) {}\n\n @action\n async loadTest(testId: string, courseId: string) {\n const testDto = await this.testApi.get(testId, courseId);\n this.test = new Test(\n this.activeCourseParams,\n testId,\n courseId,\n testDto,\n this,\n this.taskFactory,\n this.bookmarkStore\n );\n }\n}\n","import { CardThemeBasicViewModel } from \"../../../shared/components/card/cardThemeBasic/CardThemeBasicViewModel\";\nimport { ThemeStructure } from \"../../../shared/contentStructure/ThemeStructure\";\nimport { IProgressStore } from \"../../../shared/stores/ProgressStore\";\n\nexport class ThemeListItemViewModel extends CardThemeBasicViewModel {\n constructor(public themeStructure: ThemeStructure, progressStore: IProgressStore) {\n super(themeStructure, progressStore);\n }\n}\n","import { computed, observable } from \"mobx\";\nimport { ITestService, IVideoService } from \"../../../shared/api/BackendApi\";\nimport {\n ALL_THEME_STATUSES,\n ThemeStatus,\n} from \"../../../shared/components/card/cardThemeBasic/CardThemeBasicViewModel\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { ThemeStructure } from \"../../../shared/contentStructure/ThemeStructure\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../../shared/services/NavigationService\";\nimport { BookmarkStore } from \"../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../shared/stores/ProgressStore\";\nimport { UserStore } from \"../../../shared/stores/UserStore\";\nimport { GtmBasePage } from \"../../GtmBasePage\";\nimport { CourseNavigator } from \"../../shared/courseNavigator/CourseNavigator\";\nimport { PaymentSidePanelViewModel } from \"../../shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { ThemeListItemViewModel } from \"./ThemeListItemViewModel\";\n\nexport class ThemeListViewModel extends GtmBasePage {\n @observable themeStructures: ThemeStructure[];\n\n @observable statusFilter: ThemeStatus[] = ALL_THEME_STATUSES;\n\n private get allThemeViewModels() {\n return this.themeStructures.map(theme => new ThemeListItemViewModel(theme, this.progressStore));\n }\n\n @computed get allThemeCount() {\n return this.allThemeViewModels.length;\n }\n\n @computed get inProgressThemeCount() {\n const inProgressThemes = this.allThemeViewModels.filter(theme => theme.status === \"inProgress\");\n return inProgressThemes.length > 0 ? inProgressThemes.length : undefined;\n }\n\n @computed get notStartedThemeCount() {\n const notStartedThemes = this.allThemeViewModels.filter(theme => theme.status === \"notStarted\");\n return notStartedThemes.length > 0 ? notStartedThemes.length : undefined;\n }\n\n @computed get finishedThemeCount() {\n const finishedThemes = this.allThemeViewModels.filter(theme => theme.status === \"finished\");\n return finishedThemes.length > 0 ? finishedThemes.length : undefined;\n }\n\n @computed get underDevelopmentThemeCount() {\n const underDevelopmentThemes = this.allThemeViewModels.filter(theme => theme.status === \"underDevelopment\");\n return underDevelopmentThemes.length > 0 ? underDevelopmentThemes.length : undefined;\n }\n\n @computed get themeViewModels() {\n return this.allThemeViewModels.filter(theme => this.statusFilter.includes(theme.status));\n }\n\n @computed get hasCourseAccess() {\n return this.activeCourseStructure.hasFullAccess;\n }\n\n constructor(\n public activeCourseStructure: CourseStructure,\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public progressStore: IProgressStore,\n public userStore: UserStore,\n public videoService: IVideoService,\n public paymentSidePanelViewModel: PaymentSidePanelViewModel,\n public bookmarkStore: BookmarkStore,\n public navigationService: ILowLevelNavigationService,\n public gtm: IGtmService,\n public testService: ITestService,\n public courseNavigator: CourseNavigator\n ) {\n super(languageService, gtm, errorService);\n this.themeStructures = activeCourseStructure.themeStructures;\n }\n\n protected async loadData() {\n this.isLoading = false;\n }\n}\n","import { computed, observable } from \"mobx\";\nimport { IVideoService } from \"../../../shared/api/BackendApi\";\nimport { BookmarkToggleViewModel } from \"../../../shared/components/thumbnails/shared/BookmarkToggleViewModel\";\nimport {\n createStepThumbnailViewModel,\n IStepThumbnail,\n} from \"../../../shared/components/thumbnails/stepThumbnail/createStepThumbnailViewModel\";\nimport { LessonStructure } from \"../../../shared/contentStructure/LessonStructure\";\nimport { BookmarkStore } from \"../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../shared/stores/ProgressStore\";\nimport { UserStore } from \"../../../shared/stores/UserStore\";\n\ntype LessonListItem = Omit;\n\nexport class LessonListItemViewModel {\n @computed get id() {\n return this.lesson.id;\n }\n\n @observable stepThumbnails: IStepThumbnail[];\n\n constructor(\n public index: number,\n public lesson: LessonListItem,\n public progressStore: IProgressStore,\n public videoService: IVideoService,\n bookmarkStore: BookmarkStore,\n userStore: UserStore,\n isBookmarkToggleVisible = true\n ) {\n this.stepThumbnails = lesson.stepStructures.map(step =>\n createStepThumbnailViewModel(\n step.thumbnail,\n progressStore,\n videoService,\n isBookmarkToggleVisible ? new BookmarkToggleViewModel(step.id, bookmarkStore, userStore) : undefined,\n lesson.isHighlighted\n )\n );\n }\n}\n","import { computed, observable, onBecomeObserved } from \"mobx\";\nimport { PaymentSidePanelViewModel } from \"../../../../pages/shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { TestResultDto } from \"../../../../types/test/dto/TestResultDto\";\nimport { ITestService } from \"../../../api/BackendApi\";\nimport { TestStructure } from \"../../../contentStructure/TestStructure\";\nimport { TestState } from \"./ThemeTestDomainThumbnail\";\n\ntype TestResult = { _type: \"loading\" } | { _type: \"loaded\"; model?: TestResultDto };\n\nexport class ThemeTestDomainThumbnailViewModel {\n @observable testResult: TestResult = { _type: \"loading\" };\n\n get id() {\n return this.testStructure.id;\n }\n\n @computed get testState(): TestState {\n if (this.testResult._type === \"loading\") {\n return this.testResult;\n }\n\n if (this.testResult.model) {\n return this.testResult.model.isPassed\n ? { _type: \"passed\", correctAnswers: this.testResult.model.correctAnswers }\n : { _type: \"failed\", correctAnswers: this.testResult.model.correctAnswers };\n }\n\n if (!this.testStructure.hasAccess) {\n return {\n _type: \"locked\",\n };\n }\n\n return { _type: \"default\" };\n }\n\n constructor(\n public testStructure: TestStructure,\n public paymentSidePanelViewModel: PaymentSidePanelViewModel,\n private testService: ITestService\n ) {\n onBecomeObserved(this, \"testResult\", async () => {\n this.testResult = { _type: \"loading\" };\n const result = this.testStructure.hasAccess\n ? await this.testService.getTestResult({\n courseId: this.testStructure.themeStructure.courseStructure.id,\n themeId: this.testStructure.themeStructure.id,\n testId: this.testStructure.id,\n })\n : null;\n\n if (result) {\n this.testResult = { _type: \"loaded\", model: result };\n } else {\n this.testResult = { _type: \"loaded\" };\n }\n });\n }\n}\n","import { computed } from \"mobx\";\nimport { ITestService } from \"../../../../shared/api/BackendApi\";\nimport { ThemeTestDomainThumbnailViewModel } from \"../../../../shared/components/thumbnails/domainThumbnail/ThemeTestDomainThumbnailViewModel\";\nimport { ThemeStructure } from \"../../../../shared/contentStructure/ThemeStructure\";\nimport { PaymentSidePanelViewModel } from \"../../../shared/paymentDialog/PaymentSidePanelViewModel\";\n\nexport class ThemeTrainingSectionViewModel {\n @computed private get testStructures() {\n return this.theme.testStructures;\n }\n\n @computed get tests() {\n return this.testStructures.map(\n test => new ThemeTestDomainThumbnailViewModel(test, this.paymentSidePanelViewModel, this.testService)\n );\n }\n\n @computed get relatedTrainingGround() {\n return this.theme.relatedTrainingGround;\n }\n\n get activeCourseParams() {\n return this.theme.courseStructure.urlParams;\n }\n\n get themeSlug() {\n return this.theme.slug;\n }\n\n get themeTitle() {\n return this.theme.title;\n }\n\n constructor(\n private theme: ThemeStructure,\n public paymentSidePanelViewModel: PaymentSidePanelViewModel,\n private testService: ITestService\n ) {}\n}\n","import flatten from \"lodash/flatten\";\nimport { computed } from \"mobx\";\nimport { ITestService, IVideoService } from \"../../../shared/api/BackendApi\";\nimport { BookmarkToggleViewModel } from \"../../../shared/components/thumbnails/shared/BookmarkToggleViewModel\";\nimport { createStepThumbnailViewModel } from \"../../../shared/components/thumbnails/stepThumbnail/createStepThumbnailViewModel\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { ThemeStructure } from \"../../../shared/contentStructure/ThemeStructure\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../../shared/services/LanguageService\";\nimport { BookmarkStore } from \"../../../shared/stores/BookmarkStore\";\nimport { IProgressStore } from \"../../../shared/stores/ProgressStore\";\nimport { UserStore } from \"../../../shared/stores/UserStore\";\nimport { GtmBasePage } from \"../../GtmBasePage\";\nimport { IAppMotifProvider } from \"../../shared/AppMotif\";\nimport { CourseNavigator } from \"../../shared/courseNavigator/CourseNavigator\";\nimport { LessonListItemViewModel } from \"../../shared/lessonList/LessonListItemViewModel\";\nimport { PaymentSidePanelViewModel } from \"../../shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { ThemeTrainingSectionViewModel } from \"./themeTrainingSection/ThemeTrainingSectionViewModel\";\n\nexport class ThemeViewModel extends GtmBasePage implements IAppMotifProvider {\n @computed get lessonList() {\n return this.themeStructure.lessonStructures.map(\n (lesson, index) =>\n new LessonListItemViewModel(\n index,\n lesson,\n this.progressStore,\n this.videoService,\n this.bookmarkStore,\n this.userStore\n )\n );\n }\n\n @computed get stepThumbnails() {\n return flatten(this.lessonList.map(lesson => lesson.stepThumbnails));\n }\n\n @computed get themeProgress() {\n return this.progressStore.courseProgress.getThemeProgressById(this.themeStructure.id);\n }\n\n @computed get appMotif() {\n return { color: this.themeStructure.themeColor };\n }\n\n @computed get relatedContent() {\n return this.themeStructure.relatedContentStepStructures.map(stepStructure =>\n createStepThumbnailViewModel(\n stepStructure.thumbnail,\n this.progressStore,\n this.videoService,\n new BookmarkToggleViewModel(stepStructure.id, this.bookmarkStore, this.userStore)\n )\n );\n }\n\n @computed get trainingSectionViewModel() {\n if (!this.themeStructure.relatedTrainingGround && this.themeStructure.testStructures.length === 0) {\n return;\n }\n\n return new ThemeTrainingSectionViewModel(this.themeStructure, this.paymentSidePanelViewModel, this.testService);\n }\n\n @computed get previousTheme() {\n return this.courseNavigator.getPreviousTheme(this.themeStructure);\n }\n\n @computed get nextTheme() {\n return this.courseNavigator.getNextTheme(this.themeStructure);\n }\n\n @computed get hasFullCourseAccess() {\n return this.activeCourseStructure.hasFullAccess;\n }\n\n constructor(\n public themeStructure: ThemeStructure,\n public videoService: IVideoService,\n public languageService: ILanguageService,\n public errorService: IErrorService,\n public progressStore: IProgressStore,\n public userStore: UserStore,\n public paymentSidePanelViewModel: PaymentSidePanelViewModel,\n public bookmarkStore: BookmarkStore,\n public gtm: IGtmService,\n public testService: ITestService,\n public courseNavigator: CourseNavigator,\n public activeCourseStructure: CourseStructure\n ) {\n super(languageService, gtm, errorService);\n this.themeStructure = themeStructure;\n this.paymentSidePanelViewModel = paymentSidePanelViewModel;\n }\n\n protected async loadData() {\n this.isLoading = false;\n }\n}\n","import { action } from \"mobx\";\nimport { Popup } from \"../../../../shared/components/popup/Popup\";\n\nexport class FinishConfirmationModalViewModel {\n private resolve?: (_: boolean) => void;\n\n public popup = new Popup();\n\n async confirm() {\n const confirmPromise = new Promise(resolve => {\n this.resolve = resolve;\n });\n this.popup.show();\n const result = await confirmPromise;\n this.popup.close();\n\n return result;\n }\n\n @action.bound\n cancel() {\n this.resolve && this.resolve(false);\n }\n\n @action.bound\n accept() {\n this.resolve && this.resolve(true);\n }\n}\n","import flatMap from \"lodash/flatMap\";\nimport random from \"lodash/random\";\nimport values from \"lodash/values\";\nimport { autorun, computed, observable, onBecomeObserved } from \"mobx\";\nimport { Command } from \"react-mvvm\";\nimport { ITrainingGroundService } from \"../../../../shared/api/BackendApi\";\nimport { mapToTask } from \"../../../../shared/api/StepService\";\nimport { TaskFactory } from \"../../../../shared/components/tasks/TaskFactory\";\nimport { CourseStructure } from \"../../../../shared/contentStructure/CourseStructure\";\nimport { ActiveCourseParams } from \"../../../../shared/models/Url\";\nimport { IBookmarkStore } from \"../../../../shared/stores/BookmarkStore\";\nimport { assertUnreachable } from \"../../../../shared/typeUtils\";\nimport { TrainingGroundInfoDto } from \"../../../../types/courses/dto/TrainingGroundInfoDto\";\nimport { TrainingGroundTheme } from \"../themesSelector/ThemesSelector\";\nimport { TrainingTask } from \"./testTask/TrainingTask\";\n\nconst maxRandomNumber = 100000;\nconst firstPageNumber = 1;\n\ntype Page = number;\nexport type LoadedTrainingSetState = { _type: \"loaded\"; trainingSet: TrainingSet };\ntype TrainingSetState = { _type: \"loading\" } | { _type: \"empty\" } | LoadedTrainingSetState;\ntype TrainingSets = { [page: Page]: TrainingSetState };\n\nclass TrainingSet {\n @observable currentTaskIndex = 0;\n\n @computed get currentTask() {\n return this.tasks[this.currentTaskIndex];\n }\n\n @computed get currentTaskTheme() {\n return this.currentTask.theme;\n }\n\n @computed get tasksCount() {\n return this.tasks.length;\n }\n\n @computed get isFirstTask() {\n return this.currentTaskIndex === 0;\n }\n\n @computed get isLastTask() {\n return this.currentTaskIndex === this.tasksCount - 1;\n }\n\n @computed get isFirstTaskInTrainingSet() {\n return this.trainingViewModel.isFirstTrainingSet && this.isFirstTask;\n }\n\n @computed get isLastTaskInTrainingSet() {\n return this.trainingViewModel.isNextTrainingSetLast && this.isLastTask;\n }\n\n @computed get visitedTasks() {\n return this.tasks.filter(task => task.visited);\n }\n\n gotoPreviousTask = new Command(\n () => {\n if (this.currentTaskIndex === 0) {\n this.trainingViewModel.gotoPreviousTrainingSet.execute();\n return;\n }\n\n this.currentTaskIndex -= 1;\n },\n () => !this.isFirstTaskInTrainingSet\n );\n\n gotoNextTask = new Command(\n () => {\n if (this.currentTaskIndex === this.tasksCount - 1) {\n this.trainingViewModel.gotoNextTrainingSet.execute();\n return;\n }\n\n this.currentTaskIndex += 1;\n },\n () => !this.isLastTaskInTrainingSet\n );\n\n constructor(private trainingViewModel: TrainingViewModel, private tasks: TrainingTask[]) {}\n}\n\nexport class TrainingViewModel {\n readonly seed = random(maxRandomNumber);\n\n readonly taskFactory = new TaskFactory();\n\n @observable page = firstPageNumber;\n\n @observable private trainingSets: TrainingSets = { 1: { _type: \"loading\" } };\n\n @computed get currentTrainingSetState() {\n const current = this.trainingSets[this.page];\n\n if (current._type === \"empty\") {\n throw new Error(`Current training cannot be type - ${current._type}`);\n }\n\n return current;\n }\n\n @computed get nextTrainingSetState(): TrainingSetState | undefined {\n return this.trainingSets[this.page + 1];\n }\n\n @computed get isFirstTrainingSet() {\n return this.page === firstPageNumber;\n }\n\n @computed get isNextTrainingSetLast() {\n if (this.nextTrainingSetState === undefined) {\n return true;\n }\n\n return this.nextTrainingSetState._type === \"empty\";\n }\n\n @computed get trainingGroundTitle() {\n return this.trainingGroundInfo.title;\n }\n\n @computed get selectedThemesCount() {\n return this.themes.length;\n }\n\n getVisitedTasks() {\n const visitedTasks = flatMap(values(this.trainingSets), trainingSet => {\n if (trainingSet._type !== \"loaded\") {\n return [];\n }\n\n return trainingSet.trainingSet.visitedTasks;\n });\n\n return visitedTasks;\n }\n\n gotoPreviousTrainingSet = new Command(\n () => {\n this.page -= 1;\n },\n () => !this.isFirstTrainingSet\n );\n\n gotoNextTrainingSet = new Command(\n () => {\n this.page += 1;\n },\n () => !this.isNextTrainingSetLast\n );\n\n endTrainingWithConfirmation = new Command(\n async () => {\n await this.endTraining.execute(true);\n },\n () => this.endTraining.isEnabled\n );\n\n endTrainingWithoutConfirmation = new Command(\n async () => {\n await this.endTraining.execute(false);\n },\n () => this.endTraining.isEnabled\n );\n\n constructor(\n private themes: TrainingGroundTheme[],\n private courseStructure: CourseStructure,\n private trainingGroundService: ITrainingGroundService,\n private endTraining: Command,\n private trainingGroundInfo: TrainingGroundInfoDto,\n private bookmarkStore: IBookmarkStore,\n private activeCourseParams: ActiveCourseParams\n ) {\n onBecomeObserved(this, \"trainingSets\", async () => {\n await this.loadTrainingSet(this.page);\n });\n\n autorun(async () => {\n await this.loadNextPage();\n });\n }\n\n private async loadNextPage() {\n if (this.currentTrainingSetState._type === \"loading\") {\n return;\n }\n\n // we will wait with loading the next page to reach the penultimate task of the current training set\n const penultimateTaskIndex = this.currentTrainingSetState.trainingSet.tasksCount - 2;\n\n if (this.currentTrainingSetState.trainingSet.currentTaskIndex < penultimateTaskIndex) {\n return;\n }\n\n const nextPage = this.page + 1;\n const nextTrainingSet = this.trainingSets[nextPage];\n\n if (nextTrainingSet !== undefined) {\n return;\n }\n\n await this.loadTrainingSet(nextPage);\n }\n\n private async loadTrainingSet(page: Page) {\n this.trainingSets[page] = { _type: \"loading\" };\n\n const { items } = await this.trainingGroundService.getTrainingGroundTasks({\n page,\n seed: this.seed,\n themeIds: this.themes.map(t => t.id),\n courseId: this.courseStructure.id,\n trainingGroundId: this.trainingGroundInfo.id,\n });\n\n if (items.every(themesWithTaskValue => themesWithTaskValue.task === null)) {\n this.trainingSets[page] = { _type: \"empty\" };\n return;\n }\n\n const tasks = items\n .filter(item => !!item.task)\n .map(item => {\n if (!item.task) {\n return assertUnreachable(item.task);\n }\n return new TrainingTask(\n this.activeCourseParams,\n this.taskFactory,\n mapToTask(item.task),\n item.isLast,\n item.theme,\n this.bookmarkStore\n );\n });\n\n this.trainingSets[page] = { _type: \"loaded\", trainingSet: new TrainingSet(this, tasks) };\n }\n}\n","import groupBy from \"lodash/groupBy\";\nimport { CourseStructure } from \"../../../../shared/contentStructure/CourseStructure\";\nimport { TrainingTask } from \"../training/testTask/TrainingTask\";\nimport { ProgressPerTheme, ProgressPerThemeWithAvailability } from \"./TrainingResultViewModel\";\n\nexport function getResultPerTheme(visitedTasks: TrainingTask[]) {\n const visitedTasksPerTheme = groupBy(visitedTasks, task => task.theme.id);\n\n return Object.entries(visitedTasksPerTheme).map(([_, value]) => {\n const themeInfo = value[0].theme;\n return {\n id: themeInfo.id,\n totalStepsCount: value.length,\n completedStepsCount: value.filter(visitedTask => visitedTask.task.model.answersState === \"correct\").length,\n themeInfo,\n };\n });\n}\n\nexport function getThemesAvailabilityForResults(\n progressPerThemes: ProgressPerTheme[],\n courseStructure: CourseStructure\n): ProgressPerThemeWithAvailability[] {\n return progressPerThemes.map(themeProgress => {\n const theme = courseStructure.tryGetThemeBySlug(themeProgress.themeInfo.slug);\n\n return {\n ...themeProgress,\n isThemeAvailable: theme ? !theme.isUnderDevelopment : false,\n };\n });\n}\n","import { Command } from \"../../../../react-mvvm/src\";\nimport { CourseStructure } from \"../../../../shared/contentStructure/CourseStructure\";\nimport { getResultForScore, Result } from \"../../../../shared/resultUtils\";\nimport { ResultDto } from \"../../../../types/shared/dto/ResultDto\";\nimport { ThemeInfoDto } from \"../../../../types/trainingground/dto/ThemeInfoDto\";\nimport { TrainingTask } from \"../training/testTask/TrainingTask\";\nimport {\n getThemesAvailabilityForResults as getThemesAvailabilityForResults,\n getResultPerTheme,\n} from \"./trainingResultUtils\";\n\nexport interface ProgressPerTheme {\n id: string;\n totalStepsCount: number;\n completedStepsCount: number;\n themeInfo: ThemeInfoDto;\n}\n\nexport interface ProgressPerThemeWithAvailability extends ProgressPerTheme {\n isThemeAvailable: boolean;\n}\n\nexport interface TrainingGroundResult extends Result {\n progressPerTheme: ProgressPerThemeWithAvailability[];\n}\n\nexport class TrainingResultViewModel {\n result: TrainingGroundResult;\n\n get activeCourseParams() {\n return this.courseStructure.urlParams;\n }\n\n constructor(\n public title: string,\n private results: ResultDto[],\n public successThreshold: number,\n public resetTraining: Command,\n public courseStructure: CourseStructure,\n private visitedTasks: TrainingTask[]\n ) {\n const correctAnswersCount = this.visitedTasks.filter(\n trainingTask => trainingTask.task.model.answersState === \"correct\"\n ).length;\n\n this.result = {\n ...getResultForScore(correctAnswersCount / this.visitedTasks.length, this.successThreshold, this.results),\n progressPerTheme: getThemesAvailabilityForResults(getResultPerTheme(this.visitedTasks), this.courseStructure),\n };\n }\n}\n","import { createLocation } from \"history\";\nimport * as React from \"react\";\nimport { HistoryLocationState, useHistory } from \"../../../useRouter\";\nimport { ButtonType, ButtonVariant, ButtonSize } from \"../button/Button\";\nimport { getLinkClassNames } from \"./helpers/getLinkClassNames\";\nimport { isExternal } from \"./helpers/isExternal\";\nimport { isModifiedEvent } from \"./helpers/isModifiedEvent\";\n\nexport type LinkType = \"default\" | \"button\" | \"clear\";\n\nexport enum HrefType {\n Autodetect,\n Internal,\n External,\n Anchor,\n}\n\ninterface DefaultLinkProps {\n to: string;\n replace?: boolean;\n target?: \"_blank\" | \"_self\";\n type?: LinkType;\n className?: string;\n children: React.ReactNode;\n onClick?: (event: React.MouseEvent) => void;\n hrefType?: HrefType;\n tabIndex?: number;\n buttonType?: Exclude;\n buttonVariant?: ButtonVariant;\n buttonSize?: ButtonSize;\n goBackText?: string;\n}\n\nexport type LinkProps = DefaultLinkProps &\n Pick, \"aria-describedby\" | \"aria-label\">;\n\nexport const Link: React.FC = props => {\n const {\n to,\n replace = false,\n children,\n target,\n type = \"default\",\n className,\n onClick,\n hrefType = HrefType.Autodetect,\n tabIndex,\n buttonType = \"solid\",\n buttonVariant = \"primary\",\n buttonSize = \"large\",\n goBackText,\n } = props;\n const history = useHistory();\n const isExternalHref = hrefType === HrefType.External || (hrefType === HrefType.Autodetect && isExternal(to));\n // eslint-disable-next-line react/destructuring-assignment\n const ariaDescribedBy = props[\"aria-describedby\"];\n // eslint-disable-next-line react/destructuring-assignment\n const ariaLabel = props[\"aria-label\"];\n\n const targetProps = target === \"_blank\" ? { target, rel: \"noreferrer\" } : { target };\n\n if (isExternalHref || hrefType === HrefType.Anchor) {\n return (\n \n {children}\n \n );\n }\n\n if (!history) {\n throw new Error(\"History is undefined\");\n }\n\n const navigate = replace ? history.replace : history.push;\n const location = createLocation(\n to,\n { goBackHref: history.location.pathname, goBackText },\n undefined,\n history.location\n );\n const href = location ? history.createHref(location) : \"\";\n\n const handleOnClick = (event: React.MouseEvent) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate(location);\n }\n };\n return (\n \n {children}\n \n );\n};\n","import { action, computed, observable } from \"mobx\";\nimport { Command } from \"react-mvvm\";\nimport { ITrainingGroundService } from \"../../../shared/api/BackendApi\";\nimport { ITibetClient } from \"../../../shared/api/TibetClient\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../../shared/services/NavigationService\";\nimport { BookmarkStore } from \"../../../shared/stores/BookmarkStore\";\nimport { loadImages } from \"../../../shared/utils\";\nimport hintToggleDogImage from \"../../../static/images/iconsAnimated/hint-dog.svg\";\nimport hintToggleMessageImage from \"../../../static/images/iconsAnimated/hint-message.svg\";\nimport { GtmBasePage } from \"../../GtmBasePage\";\nimport { PaymentSidePanelViewModel } from \"../../shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { FinishConfirmationModalViewModel } from \"./finishConfirmationModal/FinishConfirmationModalViewModel\";\nimport { TrainingGroundTheme } from \"./themesSelector/ThemesSelector\";\nimport { TrainingViewModel } from \"./training/TrainingViewModel\";\nimport { TrainingResultViewModel } from \"./trainingResult/TrainingResultViewModel\";\n\nexport type TrainingGroundState =\n | { _type: \"loading\" }\n | {\n _type: \"themeSelector\";\n themes: TrainingGroundTheme[];\n startTraining: Command;\n selectThemeIds: (newValues: string[]) => void;\n }\n | { _type: \"training\"; model: TrainingViewModel }\n | { _type: \"results\"; model: TrainingResultViewModel };\n\nexport class TrainingGroundViewModel extends GtmBasePage {\n @observable state: TrainingGroundState = { _type: \"loading\" };\n\n @observable finishConfirmationModal = new FinishConfirmationModalViewModel();\n\n @observable selectedThemeIds: string[] = [];\n\n @observable paymentSidePanelViewModel: PaymentSidePanelViewModel;\n\n startTraining: Command;\n\n endTraining = new Command(async (withConfirmation: boolean) => {\n const isConfirmed = withConfirmation ? await this.finishConfirmationModal.confirm() : true;\n\n if (!isConfirmed) {\n return;\n }\n\n if (this.state._type !== \"training\") {\n throw new Error(\"End training shouldn't be triggered from a different state than training\");\n }\n\n this.state = {\n _type: \"results\",\n model: new TrainingResultViewModel(\n this.trainingGroundInfo.title,\n this.trainingGroundInfo.results,\n this.trainingGroundInfo.successThreshold,\n this.resetTraining,\n this.courseStructure,\n this.state.model.getVisitedTasks()\n ),\n };\n });\n\n resetTraining = new Command(async () => {\n this.finishConfirmationModal.cancel();\n this.state = { _type: \"loading\" };\n await this.loadData();\n });\n\n @computed get trainingGroundInfo() {\n const { trainingGroundInfos } = this.courseStructure;\n\n if (trainingGroundInfos === undefined || trainingGroundInfos.length === 0) {\n throw new Error(\"Training ground infos should be defined\");\n }\n\n const info = trainingGroundInfos.find(t => t.slug === this.slug);\n\n if (info === undefined) {\n throw new Error(\"Training ground info for active training should be defined\");\n }\n\n return info;\n }\n\n @computed get activeCourseParams() {\n return this.courseStructure.urlParams;\n }\n\n @computed get hasAccess() {\n return this.trainingGroundInfo.hasAccess;\n }\n\n constructor(\n private slug: string,\n private courseStructure: CourseStructure,\n private trainingGroundService: ITrainingGroundService,\n languageService: ILanguageService,\n errorService: IErrorService,\n gtm: IGtmService,\n tibetClient: ITibetClient,\n navigation: ILowLevelNavigationService,\n bookmarkStore: BookmarkStore,\n private initialThemeSlug?: string\n ) {\n super(languageService, gtm, errorService);\n\n this.startTraining = new Command(selectedThemes => {\n this.state = {\n _type: \"training\",\n model: new TrainingViewModel(\n selectedThemes,\n courseStructure,\n this.trainingGroundService,\n this.endTraining,\n this.trainingGroundInfo,\n bookmarkStore,\n courseStructure.urlParams\n ),\n };\n });\n\n this.paymentSidePanelViewModel = new PaymentSidePanelViewModel(\n tibetClient,\n this.courseStructure,\n errorService,\n navigation\n );\n }\n\n @action.bound\n private selectThemeIds(newValues: string[]) {\n this.selectedThemeIds = newValues;\n }\n\n protected async loadData() {\n await loadImages([hintToggleDogImage, hintToggleMessageImage]);\n\n const themes = await this.trainingGroundService.getTrainingGroundThemes({\n courseId: this.courseStructure.id,\n trainingGroundId: this.trainingGroundInfo.id,\n });\n\n if (this.initialThemeSlug) {\n const initialTheme = themes.find(theme => theme.slug === this.initialThemeSlug);\n\n if (initialTheme) {\n this.selectedThemeIds = [initialTheme.id];\n }\n }\n\n this.state = {\n _type: \"themeSelector\",\n themes,\n startTraining: this.startTraining,\n selectThemeIds: this.selectThemeIds,\n };\n }\n}\n","import axios from \"axios\";\nimport axiosInherit from \"axios-inherit\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { ILanguageService } from \"../services/LanguageService\";\nimport { INavigationService } from \"../services/NavigationService\";\n\nexport const initAxiosGlobalInterceptors = (navigation: INavigationService, language: ILanguageService) => {\n // This makes sure global interceptors don't get overriden when defining interceptor on local instances\n // See issue https://github.com/axios/axios/issues/993\n // N.B. this _has_ to be called before local instances are created, so be careful.\n axiosInherit(axios);\n axios.interceptors.response.use(\n ok => ok,\n err => {\n const response = err?.response;\n if (response?.status === 401 && response.headers[\"retry-after-login\"]) {\n const params = new URLSearchParams(err.config.params).toString();\n const returnUrl = `${RouteConfiguration.BuyRedirect}?${params}`;\n const encodedReturnUrl = encodeURIComponent(returnUrl);\n navigation.goToTibetLogin(encodedReturnUrl);\n } else if (response?.status === 401) {\n navigation.goToTibetLogin();\n }\n return Promise.reject(err);\n }\n );\n axios.interceptors.request.use(config => {\n return {\n ...config,\n params: {\n ...config.params,\n lang: language.lang,\n },\n };\n });\n};\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport axios, { AxiosError, AxiosInstance, CancelToken } from \"axios\";\nimport qs from \"qs\";\nimport { AboutUsDto } from \"../../types/aboutus/dto/AboutUsDto\";\nimport { GetAboutUsRequest } from \"../../types/api/aboutus/GetAboutUsRequest\";\nimport { GetArticleRequest } from \"../../types/api/articles/GetArticleRequest\";\nimport { GetAuthorRequest } from \"../../types/api/authorsforproducts/GetAuthorRequest\";\nimport { GetAuthorsForProductsRequest } from \"../../types/api/authorsforproducts/GetAuthorsForProductsRequest\";\nimport { CreateUserBookmarkRequest } from \"../../types/api/bookmarks/CreateUserBookmarkRequest\";\nimport { DeleteUserBookmarkRequest } from \"../../types/api/bookmarks/DeleteUserBookmarkRequest\";\nimport { GetUserBookmarksRequest } from \"../../types/api/bookmarks/GetUserBookmarksRequest\";\nimport { UpdateUserBookmarkRequest } from \"../../types/api/bookmarks/UpdateUserBookmarkRequest\";\nimport { GetConfigRequest } from \"../../types/api/config/GetConfigRequest\";\nimport { GetCoursePaymentRequest } from \"../../types/api/courses/GetCoursePaymentRequest\";\nimport { GetCourseStructureRequest } from \"../../types/api/courses/GetCourseStructureRequest\";\nimport { GetStepPreviewRequest } from \"../../types/api/lessons/GetStepPreviewRequest\";\nimport { GetStepRequest } from \"../../types/api/lessons/GetStepRequest\";\nimport { GetProductArticlesRequest } from \"../../types/api/product/GetProductArticlesRequest\";\nimport { GetProductsRequest } from \"../../types/api/product/GetProductsRequest\";\nimport { SubmitNewsletterSignUpRequest } from \"../../types/api/product/SubmitNewsletterSignUpRequest\";\nimport { GetProgressRequest } from \"../../types/api/progress/GetProgressRequest\";\nimport { UpdateSoundStepProgressRequest } from \"../../types/api/progress/UpdateSoundStepProgressRequest\";\nimport { UpdateStepCompletionStatusRequest } from \"../../types/api/progress/UpdateStepCompletionStatusRequest\";\nimport { UpdateVideoProgressRequest } from \"../../types/api/progress/UpdateVideoProgressRequest\";\nimport { SearchContentRequest } from \"../../types/api/search/SearchContentRequest\";\nimport { GetTestRequest } from \"../../types/api/test/GetTestRequest\";\nimport { GetTestResultRequest } from \"../../types/api/test/GetTestResultRequest\";\nimport { SubmitTestRequest } from \"../../types/api/test/SubmitTestRequest\";\nimport { GetTrainingGroundTaskPreviewRequest } from \"../../types/api/trainingground/GetTrainingGroundTaskPreviewRequest\";\nimport { GetTrainingGroundTasksRequest } from \"../../types/api/trainingground/GetTrainingGroundTasksRequest\";\nimport { GetTrainingGroundThemesRequest } from \"../../types/api/trainingground/GetTrainingGroundThemesRequest\";\nimport { GetUserRequest } from \"../../types/api/user/GetUserRequest\";\nimport { GetVideoDetailsRequest } from \"../../types/api/video/GetVideoDetailsRequest\";\nimport { ArticleDto } from \"../../types/articles/dto/ArticleDto\";\nimport { ArticleListItemDto } from \"../../types/articles/dto/ArticleListItemDto\";\nimport { AuthorDetailsDto } from \"../../types/authorsforproducts/dto/AuthorDetailsDto\";\nimport { UserBookmarkDto } from \"../../types/bookmarks/dto/UserBookmarkDto\";\nimport { ConfigDto } from \"../../types/config/dto/ConfigDto\";\nimport { CoursePaymentDto } from \"../../types/courses/dto/CoursePaymentDto\";\nimport { CourseStructureDto } from \"../../types/courses/dto/CourseStructureDto\";\nimport { LessonStepDto } from \"../../types/dto/lessonstepdtos/LessonStepDto\";\nimport { TaskDto } from \"../../types/dto/tasks/TaskDto\";\nimport { ProductDto } from \"../../types/product/dto/ProductDto\";\nimport { ProgressDto } from \"../../types/progress/dto/ProgressDto\";\nimport { SearchResultDto } from \"../../types/search/dto/SearchResultDto\";\nimport { AuthorDto } from \"../../types/shared/dto/AuthorDto\";\nimport { UserDto } from \"../../types/shared/dto/UserDto\";\nimport { TestDto } from \"../../types/test/dto/TestDto\";\nimport { TestResultDto } from \"../../types/test/dto/TestResultDto\";\nimport { TrainingGroundDto } from \"../../types/trainingground/dto/TrainingGroundDto\";\nimport { TrainingGroundThemeDto } from \"../../types/trainingground/dto/TrainingGroundThemeDto\";\nimport { VideoDetailsDto } from \"../../types/video/dto/VideoDetailsDto\";\nimport { IErrorService } from \"../services/ErrorService\";\nimport { HttpError } from \"../services/errors/HttpError\";\nimport { mapToStep, IStepService, mapToTask } from \"./StepService\";\n\nexport interface ICourseService {\n getCourseStructure: (\n req: GetCourseStructureRequest,\n cancelToken?: CancelToken\n ) => Promise;\n getCoursePayment: (req: GetCoursePaymentRequest) => Promise;\n}\n\nexport interface IUserService {\n getUser: (req: GetUserRequest) => Promise;\n}\n\nexport interface IArticleService {\n getArticle: (req: GetArticleRequest) => Promise;\n}\n\nexport interface IProgressService {\n getProgress: (req: GetProgressRequest) => Promise;\n updateVideoProgress: (req: UpdateVideoProgressRequest) => Promise;\n updateSoundStepProgress: (req: UpdateSoundStepProgressRequest) => Promise;\n updateStepCompletionStatusRequest: (req: UpdateStepCompletionStatusRequest) => Promise;\n}\n\nexport interface IVideoService {\n getVideoDetails: (req: GetVideoDetailsRequest) => Promise;\n}\n\nexport interface ITestService {\n getTest: (req: GetTestRequest) => Promise;\n submitTest: (req: SubmitTestRequest) => Promise;\n getTestResult: (req: GetTestResultRequest) => Promise;\n}\n\nexport interface IBookmarkService {\n createUserBookmark: (req: CreateUserBookmarkRequest) => Promise;\n getUserBookmarks: (req: GetUserBookmarksRequest) => Promise;\n deleteUserBookmark: (req: DeleteUserBookmarkRequest) => Promise;\n updateUserBookmark: (req: UpdateUserBookmarkRequest) => Promise;\n}\n\nexport interface IConfigService {\n getConfig: (req: GetConfigRequest) => Promise;\n}\n\nexport interface IProductService {\n getProductsInfo: (req: GetProductsRequest) => Promise;\n submitNewsletterSignup: (req: SubmitNewsletterSignUpRequest) => Promise;\n}\n\nexport interface IProductArticleService {\n getProductArticles: (req: GetProductArticlesRequest) => Promise;\n}\n\nexport interface ISearchService {\n searchContent: (req: SearchContentRequest) => Promise;\n}\n\nexport interface ITrainingGroundService {\n getTrainingGroundThemes: (req: GetTrainingGroundThemesRequest) => Promise;\n getTrainingGroundTasks: (req: GetTrainingGroundTasksRequest) => Promise;\n}\n\nexport interface IAuthorsForProductService {\n getAuthorsForProduct: (req: GetAuthorsForProductsRequest) => Promise;\n getAuthor: (req: GetAuthorRequest) => Promise;\n}\n\nexport class BackendApi\n implements\n ISearchService,\n IProductService,\n IProductArticleService,\n IConfigService,\n IBookmarkService,\n IArticleService,\n IVideoService,\n IProgressService,\n IUserService,\n ICourseService,\n IStepService,\n ITestService,\n ITrainingGroundService,\n IAuthorsForProductService\n{\n constructor() {\n this.toastAxios = axios.create();\n this.toastAxios.interceptors.response.use(\n ok => ok,\n () => {\n this.ensureErrorServiceConfigured().showErrorToast();\n return Promise.resolve(undefined);\n }\n );\n this.splashAxios = axios.create();\n this.splashAxios.interceptors.response.use(\n ok => ok,\n (err: AxiosError) => {\n const response = err?.response;\n if (response && response.status !== 401) {\n this.ensureErrorServiceConfigured().showErrorSplash(new HttpError(response.status, response.statusText));\n }\n return Promise.reject(err);\n }\n );\n }\n\n private splashAxios: AxiosInstance;\n\n private toastAxios: AxiosInstance;\n\n private errorService?: IErrorService;\n\n public initErrorInterceptors(errorService: IErrorService) {\n this.errorService = errorService;\n }\n\n private ensureErrorServiceConfigured() {\n if (!this.errorService) {\n throw new Error(\"errorService in BackendApi was not initialized. Did you forget to call initErrorInterceptor?\");\n }\n return this.errorService;\n }\n\n async getProductsInfo(_req: GetProductsRequest) {\n const response = await this.splashAxios.get(`/api/getProducts`);\n return response.data;\n }\n\n async submitNewsletterSignup(req: SubmitNewsletterSignUpRequest) {\n await this.toastAxios.post(`/api/submitNewsletterSignUp`, req);\n }\n\n async searchContent(req: SearchContentRequest) {\n const response = await this.splashAxios.get(`/api/searchContent`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n return response.data;\n }\n\n async getTest(req: GetTestRequest) {\n const response = await this.splashAxios.get(`/api/getTest/${req.id}`, {\n params: { courseId: req.courseId },\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n return response.data;\n }\n\n async getTestResult(req: GetTestResultRequest) {\n const response = await this.splashAxios.get(`/api/getTestResult`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return response.data;\n }\n\n async submitTest(req: SubmitTestRequest) {\n await this.splashAxios.post(`/api/submitTest`, req);\n }\n\n async getConfig(_req: GetConfigRequest) {\n const response = await this.splashAxios.get(`/api/getConfig`);\n return response.data;\n }\n\n async createUserBookmark(req: CreateUserBookmarkRequest) {\n await this.toastAxios.post(`/api/createUserBookmark`, req);\n }\n\n async getUserBookmarks(req: GetUserBookmarksRequest) {\n const response = await this.splashAxios.get(`/api/getUserBookmarks`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n return response.data;\n }\n\n async deleteUserBookmark(req: DeleteUserBookmarkRequest) {\n await this.toastAxios.delete(`/api/deleteUserBookmark`, { data: req });\n }\n\n async updateUserBookmark(req: UpdateUserBookmarkRequest) {\n await this.toastAxios.post(`/api/updateUserBookmark`, req);\n }\n\n async getArticle(req: GetArticleRequest) {\n const response = await this.splashAxios.get(`/api/getArticle/${req.slug}`);\n return response.data;\n }\n\n async getVideoDetails(req: GetVideoDetailsRequest) {\n const response = await this.toastAxios.get(`/api/getVideoDetails/${req.stepId}`);\n return response?.data;\n }\n\n async getProgress(req: GetProgressRequest) {\n const response = await this.splashAxios.get(`/api/getProgress`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n return response.data;\n }\n\n async updateVideoProgress(req: UpdateVideoProgressRequest) {\n await this.toastAxios.post(`/api/updateVideoProgress`, req);\n }\n\n async updateSoundStepProgress(req: UpdateSoundStepProgressRequest) {\n await this.toastAxios.post(`/api/updateSoundStepProgress`, req);\n }\n\n async updateStepCompletionStatusRequest(req: UpdateStepCompletionStatusRequest) {\n await this.toastAxios.post(`/api/updateStepCompletionStatus`, req);\n }\n\n async getUser(_req: GetUserRequest) {\n const response = await this.splashAxios.get(`/api/getUser`);\n return response.status === 204 ? undefined : response.data;\n }\n\n async getCourseStructure(req: GetCourseStructureRequest, cancelToken?: CancelToken) {\n const response = await this.splashAxios\n .get(`/api/getCourseStructure/${req.id}`, {\n cancelToken,\n })\n .catch(e => {\n if (axios.isCancel(e)) {\n return;\n }\n\n throw new Error(\"Unhandled error in getCourseStructure\");\n });\n\n return response?.data;\n }\n\n async getCoursePayment(req: GetCoursePaymentRequest) {\n const response = await this.splashAxios.get(`/api/getCoursePayment`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n return response.data;\n }\n\n async getStep(req: GetStepRequest) {\n const response = await this.splashAxios.get(`/api/getStep`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return mapToStep(response.data);\n }\n\n async getStepPreview(req: GetStepPreviewRequest) {\n const response = await this.splashAxios.get(`/api/GetStepPreview`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return mapToStep(response.data);\n }\n\n async getTrainingGroundTaskPreview(req: GetTrainingGroundTaskPreviewRequest) {\n const response = await this.splashAxios.get(`/api/GetTrainingGroundTaskPreview`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return mapToTask(response.data);\n }\n\n async getTrainingGroundThemes(req: GetTrainingGroundThemesRequest) {\n const response = await this.splashAxios.get(`/api/getTrainingGroundThemes`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return response.data;\n }\n\n async getTrainingGroundTasks(req: GetTrainingGroundTasksRequest) {\n const response = await this.splashAxios.get(`/api/getTrainingGroundTasks`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return response.data;\n }\n\n async getProductArticles(req: GetProductArticlesRequest) {\n const response = await this.splashAxios.get(`/api/getProductArticles`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return response.data;\n }\n\n async getAuthorsForProduct(req: GetAuthorsForProductsRequest) {\n const response = await this.splashAxios.get(`/api/getAuthorsForProducts`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return response.data;\n }\n\n async getAuthor(req: GetAuthorRequest) {\n const response = await this.splashAxios.get(`/api/getAuthor`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return response.data;\n }\n\n async getAboutUs(req: GetAboutUsRequest) {\n const response = await this.splashAxios.get(`/api/getAboutUs`, {\n params: req,\n paramsSerializer: params => {\n return qs.stringify(params);\n },\n });\n\n return response.data;\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport { CourseId } from \"../contentStructure/CourseStructure\";\nimport { IGtmService } from \"../services/GtmService\";\nimport { ILowLevelNavigationService } from \"../services/NavigationService\";\nimport { ICourseService } from \"./BackendApi\";\n\nexport interface ITibetClient {\n // prepares Tibet cart and redirects to a URL that is responsible for payments\n initiateBuying: (\n courseId: CourseId,\n selectedPriceOptionId: string,\n successUrl: string,\n cancelUrl: string,\n failUrl: string,\n utmSource?: string,\n utmMedium?: string,\n utmCampaign?: string\n ) => Promise;\n}\n\nexport class TibetClient implements ITibetClient {\n constructor(\n public courseService: ICourseService,\n private navigation: ILowLevelNavigationService,\n private gtm: IGtmService\n ) {}\n\n async initiateBuying(\n courseId: CourseId,\n selectedPriceOptionId: string,\n successUrl: string,\n cancelUrl: string,\n failUrl: string,\n utmSource?: string,\n utmMedium?: string,\n utmCampaign?: string\n ) {\n const response = await this.courseService.getCoursePayment({\n courseId,\n paymentOptionId: selectedPriceOptionId,\n successUrl,\n cancelUrl,\n failUrl,\n utmSource,\n utmMedium,\n utmCampaign,\n });\n\n this.gtm.pushBuyStarted();\n this.navigation.redirectTo(response.redirectUrl);\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport TagManager from \"react-gtm-module\";\nimport { getVimeoId } from \"../utils\";\nimport { ILowLevelNavigationService } from \"./NavigationService\";\n\nexport interface IGtmService {\n pushCookieConsentChanged(): void;\n pushPageViewed(): void;\n pushLoginStarted(loginLabel: string): void;\n pushBuyStarted(): void;\n pushVideoEnded(stepId: string, stepTitle: string, vimeoUrl: string): void;\n pushSoundCloudEnded(stepId: string, stepTitle: string, soundCloudUrl: string): void;\n pushUserStatusChanged(isAuthenticated: boolean): void;\n}\n\ninterface DataLayerModel {\n event: string;\n eventAction?: string;\n eventLabel?: string;\n params?: GoogleTagManagerProperties;\n}\n\ninterface GoogleTagManagerProperties {\n [key: string]: string | number | boolean | GoogleTagManagerProperties | null;\n}\n\nexport class GtmService implements IGtmService {\n constructor(private navigation: ILowLevelNavigationService) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const containerId = (window as any).googleTagManagerContainerId;\n if (containerId) {\n TagManager.initialize({ gtmId: containerId });\n }\n }\n\n private push = (data: DataLayerModel) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { dataLayer } = window as any;\n dataLayer && dataLayer.push(data);\n };\n\n pushCookieConsentChanged() {\n this.push({ event: \"cookieConsentChanged\" });\n }\n\n pushPageViewed(): void {\n const location = this.navigation.getCurrentLocation();\n this.push({\n event: \"Riktig - Viewed Page\",\n eventAction: \"Viewed Page\",\n params: { path: location },\n });\n }\n\n pushLoginStarted(loginLabel: string) {\n this.push({ event: \"Riktig - Login\", eventAction: \"Login\", eventLabel: loginLabel });\n }\n\n pushBuyStarted() {\n this.push({ event: \"Riktig - Buy\", eventAction: \"Buy\", eventLabel: \"Initiated Buying Process\" });\n }\n\n pushSoundCloudEnded(stepId: string, stepTitle: string, soundCloudUrl: string) {\n const params = {\n id: stepId,\n title: stepTitle,\n soundCloudUrl,\n };\n this.push({\n event: \"Riktig - Sound Cloud Ended\",\n eventAction: \"Sound Cloud Ended\",\n params,\n });\n }\n\n pushVideoEnded(stepId: string, stepTitle: string, vimeoUrl: string) {\n const params = {\n id: stepId,\n title: stepTitle,\n vimeoId: getVimeoId(vimeoUrl),\n };\n this.push({\n event: \"Riktig - Video Ended\",\n eventAction: \"Video Ended\",\n params,\n });\n }\n\n pushUserStatusChanged(isAuthenticated: boolean) {\n this.push({\n event: \"Riktig - Changed User Status\",\n eventAction: \"Changed Status Changed\",\n params: { isAuthenticated },\n });\n }\n}\n","import { action, observable } from \"mobx\";\n\nexport const Bokmal = \"nb\";\nexport const Nynorsk = \"nn\";\n\nexport interface ILanguageService {\n lang: string;\n changeLanguage(): void;\n}\n\nexport class LanguageService implements ILanguageService {\n @observable lang: string;\n\n private readonly localStorageLanguageKey = \"lang\";\n\n constructor() {\n const storageLang = localStorage.getItem(this.localStorageLanguageKey);\n this.lang = storageLang || Bokmal;\n }\n\n @action.bound\n changeLanguage(): void {\n if (this.lang === Nynorsk) {\n this.lang = Bokmal;\n } else {\n this.lang = Nynorsk;\n }\n localStorage.setItem(this.localStorageLanguageKey, this.lang);\n }\n}\n","import { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { ActiveCourseParams, Url } from \"../models/Url\";\n\n/* eslint-disable class-methods-use-this */\nexport interface INavigationService {\n isRoot(productSlug: string, courseSlug?: string): boolean;\n goToTibetLogin(returnUrl?: string): void;\n goToLoginPage(): void;\n goToSearch(phrase: string, params: ActiveCourseParams): void;\n goToLandingPage(): void;\n}\n\nexport interface ILowLevelNavigationService extends INavigationService {\n getCurrentLocation(): string;\n siteOrigin: string;\n redirectTo(url: string): void;\n pushUrlWithoutRedirect(url: string): void;\n}\n\n// The idea is that this should be the only place where we access window.location functionalities.\n// We should never refer to them directly from our viewmodels (and, preferably, services).\nexport class NavigationService implements ILowLevelNavigationService {\n redirectTo(url: string) {\n window.location.href = url;\n }\n\n getCurrentLocation() {\n return window.location.pathname;\n }\n\n get siteOrigin() {\n return window.location.origin;\n }\n\n isRoot(productSlug: string, courseSlug?: string) {\n return (\n this.getCurrentLocation() ===\n (courseSlug\n ? Url.toCoursePage({\n productSlug,\n courseSlug,\n })\n : RouteConfiguration.ProductNest)\n );\n }\n\n goToTibetLogin(returnUrl?: string) {\n this.redirectTo(Url.toTibetLoginPage(returnUrl));\n }\n\n goToLoginPage() {\n this.redirectTo(Url.toLoginPage());\n }\n\n goToLandingPage() {\n this.redirectTo(Url.toProductNestPage());\n }\n\n pushUrlWithoutRedirect(url: string): void {\n const currentPath = window.location.pathname + window.location.search;\n if (url !== currentPath) {\n window.history.pushState({}, \"\", encodeURI(url));\n }\n }\n\n goToSearch(phrase: string, params: ActiveCourseParams): void {\n this.redirectTo(Url.toSearchPage(params, phrase));\n }\n}\n","import { LessonStepListItemDto } from \"../../types/dto/lessonstepdtos/LessonStepListItemDto\";\nimport { LessonStructure } from \"./LessonStructure\";\n\nexport class StepStructure {\n get id() {\n return this.dto.id;\n }\n\n get title() {\n return this.dto.title;\n }\n\n get slug() {\n return this.dto.slug;\n }\n\n get thumbnail() {\n return this.dto.thumbnail;\n }\n\n get hasAccess() {\n return this.dto.hasAccess;\n }\n\n get type() {\n return this.dto.type;\n }\n\n constructor(public lessonStructure: LessonStructure, private dto: LessonStepListItemDto) {}\n}\n","import { computed } from \"mobx\";\nimport { LessonStructureDto } from \"../../types/courses/dto/LessonStructureDto\";\nimport { StepStructure } from \"./StepStructure\";\nimport { ThemeStructure } from \"./ThemeStructure\";\n\nexport class LessonStructure {\n @computed get stepStructures(): StepStructure[] {\n return this.dto.steps.map(step => new StepStructure(this, step));\n }\n\n get id() {\n return this.dto.id;\n }\n\n get title() {\n return this.dto.title;\n }\n\n get color() {\n return this.dto.color;\n }\n\n get hasAccess() {\n return this.dto.hasAccess;\n }\n\n get isHighlighted() {\n return this.dto.isHighlighted;\n }\n\n constructor(public themeStructure: ThemeStructure, private dto: LessonStructureDto) {}\n}\n","import { TestStructureDto } from \"../../types/courses/dto/TestStructureDto\";\nimport { ThemeStructure } from \"./ThemeStructure\";\n\nexport class TestStructure {\n get id() {\n return this.dto.id;\n }\n\n get title() {\n return this.dto.title;\n }\n\n get slug() {\n return this.dto.slug;\n }\n\n get tasksCount() {\n return this.dto.tasksCount;\n }\n\n get image() {\n return this.dto.image;\n }\n\n get hasAccess() {\n return this.dto.hasAccess;\n }\n\n get description() {\n return this.dto.description;\n }\n\n get subtitle() {\n return this.dto.subtitle;\n }\n\n get color() {\n return this.themeStructure.themeColor;\n }\n\n constructor(public themeStructure: ThemeStructure, private dto: TestStructureDto) {}\n}\n","import flatten from \"lodash/flatten\";\nimport { computed } from \"mobx\";\nimport { ThemeStructureDto } from \"../../types/courses/dto/ThemeStructureDto\";\nimport { HighLevelStepType, stepTypeDtoToStepType } from \"../stepTypeUtils\";\nimport { CourseStructure } from \"./CourseStructure\";\nimport { LessonStructure } from \"./LessonStructure\";\nimport { StepStructure } from \"./StepStructure\";\nimport { TestStructure } from \"./TestStructure\";\n\nexport class ThemeStructure {\n @computed get lessonStructures(): LessonStructure[] {\n return this.dto.lessons.map(lesson => new LessonStructure(this, lesson));\n }\n\n @computed get articles() {\n return this.dto.articles;\n }\n\n @computed get testStructures() {\n return this.dto.tests?.map(test => new TestStructure(this, test));\n }\n\n @computed get relatedContentStepStructures() {\n if (this.dto.relatedContentIds === undefined) {\n return [];\n }\n\n return this.dto.relatedContentIds\n .map(id => this.courseStructure.allSteps.find(step => step.id === id))\n .filter((stepStructure): stepStructure is StepStructure => !!stepStructure);\n }\n\n @computed get relatedTrainingGround() {\n const { trainingGroundInfos } = this.courseStructure;\n\n if (!trainingGroundInfos || trainingGroundInfos.length === 0) {\n return;\n }\n\n return trainingGroundInfos.find(trainingGroundInfo => trainingGroundInfo.themeIds.includes(this.id));\n }\n\n @computed get steps() {\n return flatten(this.lessonStructures.map(lessonStructure => lessonStructure.stepStructures));\n }\n\n @computed get stepsByType() {\n const stepsByType: { [key in HighLevelStepType]: StepStructure[] } = {\n Video: this.steps.filter(step => stepTypeDtoToStepType[step.type] === \"Video\"),\n Task: this.steps.filter(step => stepTypeDtoToStepType[step.type] === \"Task\"),\n TextBlock: this.steps.filter(step => stepTypeDtoToStepType[step.type] === \"TextBlock\"),\n Sound: this.steps.filter(step => stepTypeDtoToStepType[step.type] === \"Sound\"),\n };\n\n return stepsByType;\n }\n\n get id() {\n return this.dto.id;\n }\n\n get title() {\n return this.dto.title;\n }\n\n get slug() {\n return this.dto.slug;\n }\n\n get description() {\n return this.dto.description;\n }\n\n get image() {\n return this.dto.image;\n }\n\n get subtitle() {\n return this.dto.subtitle;\n }\n\n get themeColor() {\n return this.dto.themeColor;\n }\n\n get orderNumber() {\n return this.dto.orderNumber;\n }\n\n get isUnderDevelopment() {\n return this.dto.isUnderDevelopment;\n }\n\n get hasStepsWithAccess() {\n return this.steps.some(step => step.hasAccess);\n }\n\n constructor(\n public courseStructure: CourseStructure,\n private dto: ThemeStructureDto,\n public source: \"course\" | \"previousExams\"\n ) {}\n\n getTest(testSlug: string) {\n const testStructure = this.testStructures?.find(test => test.slug === testSlug);\n\n if (!testStructure) {\n throw new TypeError(\"Invalid test slug\");\n }\n\n return testStructure;\n }\n}\n","import { computed } from \"mobx\";\nimport { PreviousExamsStructureDto } from \"../../types/courses/dto/PreviousExamsStructureDto\";\nimport { CourseStructure } from \"./CourseStructure\";\nimport { ThemeStructure } from \"./ThemeStructure\";\n\nexport class PreviousExamsStructure {\n @computed get examThemes() {\n return this.dto.examThemes.map(examTheme => ({\n ...examTheme,\n id: examTheme.theme.id,\n theme: new ThemeStructure(this.courseStructure, examTheme.theme, \"previousExams\"),\n }));\n }\n\n get previousExamsSection() {\n return this.dto.previousExamsSection;\n }\n\n get title() {\n return this.dto.title;\n }\n\n get description() {\n return this.dto.description;\n }\n\n get image() {\n return this.dto.image;\n }\n\n get articles() {\n return this.dto.articles;\n }\n\n constructor(public courseStructure: CourseStructure, private dto: PreviousExamsStructureDto) {}\n}\n","import flatten from \"lodash/flatten\";\nimport { computed } from \"mobx\";\nimport { CourseStructureDto } from \"../../types/courses/dto/CourseStructureDto\";\nimport { ActiveCourseParams } from \"../models/Url\";\nimport { Product } from \"../stores/Product\";\nimport { PreviousExamsStructure } from \"./PreviousExamsStructure\";\nimport { ThemeStructure } from \"./ThemeStructure\";\n\nexport type CourseId = string;\ntype CourseStructureProduct = Pick;\n\nexport class CourseStructure {\n previousExamsStructure?: PreviousExamsStructure;\n\n @computed get themeStructures(): ThemeStructure[] {\n return this.dto.themes.map(theme => new ThemeStructure(this, theme, \"course\"));\n }\n\n @computed private get previousExamsThemeStructures() {\n return this.previousExamsStructure?.examThemes || [];\n }\n\n @computed get buyCourseSection() {\n return this.dto.buyCourseSection;\n }\n\n @computed get freeContentSection() {\n return this.dto.freeContentSection;\n }\n\n @computed get priceOptions() {\n return this.dto.priceOptions;\n }\n\n @computed get isLicensed() {\n return this.dto.isLicensed;\n }\n\n @computed get allSteps() {\n const allThemeLessons = flatten(this.themeStructures.map(theme => theme.lessonStructures));\n const allPreviousExamsLessons = flatten(\n this.previousExamsThemeStructures.map(examTheme => examTheme.theme.lessonStructures)\n );\n const allLessons = allThemeLessons.concat(allPreviousExamsLessons);\n return flatten(allLessons.map(lesson => lesson.stepStructures));\n }\n\n @computed get urlParams(): ActiveCourseParams {\n return {\n productSlug: this.product.slug,\n courseSlug: this.slug,\n };\n }\n\n @computed get coursePreviousExamsThemes() {\n return this.previousExamsStructure?.examThemes.map(examTheme => examTheme.theme);\n }\n\n get id(): CourseId {\n return this.dto.id;\n }\n\n get title() {\n return this.dto.title;\n }\n\n get slug() {\n return this.dto.slug;\n }\n\n get color() {\n return this.dto.color;\n }\n\n get description() {\n return this.dto.description;\n }\n\n get image() {\n return this.dto.image;\n }\n\n get levels() {\n return this.dto.levels;\n }\n\n get isInfoBannerDisplayed() {\n return this.dto.isInfoBannerDisplayed;\n }\n\n get infoBannerTitle() {\n return this.dto.infoBannerTitle;\n }\n\n get infoBannerDescription() {\n return this.dto.infoBannerDescription;\n }\n\n get infoBannerLink() {\n return this.dto.infoBannerLink;\n }\n\n get trainingGroundInfos() {\n return this.dto.trainingGroundInfosDto;\n }\n\n get hasFullAccess() {\n return this.dto.isCourseFreeOrAccessible;\n }\n\n get trainingGroundHeaderInfo() {\n return {\n trainingGroundHeaderText: this.dto.trainingGroundHeaderText,\n trainingGroundInfos: this.trainingGroundInfos,\n };\n }\n\n get feedbackButtonLink() {\n return this.dto.feedbackButtonLink;\n }\n\n get otherCourses() {\n return this.product.courses.filter(c => c.id !== this.id);\n }\n\n get productTitle() {\n return this.product.title;\n }\n\n constructor(private product: CourseStructureProduct, private dto: CourseStructureDto) {\n if (this.dto.previousExamsStructure) {\n this.previousExamsStructure = new PreviousExamsStructure(this, this.dto.previousExamsStructure);\n }\n }\n\n getLessonByStepSlug(stepSlug: string) {\n const lessonSteps = flatten(this.themeStructures.map(theme => theme.steps));\n const previousExamsLessons = flatten(\n this.previousExamsThemeStructures.map(examTheme => examTheme.theme.lessonStructures)\n );\n const previousExamsSteps = flatten(previousExamsLessons.map(lesson => lesson.stepStructures));\n\n const allSteps = lessonSteps.concat(previousExamsSteps);\n const lessonStructure = allSteps.find(step => step.slug === stepSlug)?.lessonStructure;\n\n if (!lessonStructure) {\n throw new TypeError(`Invalid step slug. Can not find lesson for step slug ${stepSlug}`);\n }\n\n return lessonStructure;\n }\n\n getTest(testId: string) {\n return flatten(this.themeStructures.map(theme => theme.testStructures)).find(test => test.id === testId);\n }\n\n tryGetThemeBySlug(themeSlug: string) {\n return (\n this.themeStructures.find(t => t.slug === themeSlug) ||\n this.previousExamsThemeStructures?.find(examTheme => examTheme.theme.slug === themeSlug)?.theme\n );\n }\n\n getThemeBySlug(themeSlug: string) {\n const theme = this.tryGetThemeBySlug(themeSlug);\n\n if (!theme) {\n throw new TypeError(`Invalid theme slug. Can not find theme for slug ${themeSlug}`);\n }\n\n return theme;\n }\n}\n","import { action, computed, observable } from \"mobx\";\nimport { ProductParams } from \"../../pages/product/addProductRouting\";\nimport { CourseColorDto } from \"../../types/courses/dto/CourseColorDto\";\nimport { ProductDto } from \"../../types/product/dto/ProductDto\";\nimport { ImageDto } from \"../../types/shared/dto/ImageDto\";\nimport { CourseStructure } from \"../contentStructure/CourseStructure\";\nimport { ProductStore } from \"./ProductStore\";\n\nexport type CourseColor = CourseColorDto | undefined;\n\nexport type CourseInfo = {\n title: string;\n id: string;\n slug: string;\n isBeta: boolean;\n color: CourseColor;\n image: ImageDto;\n};\n\nexport class Product {\n @observable courseStructure?: CourseStructure;\n\n get title() {\n return this.productDto.title;\n }\n\n get id() {\n return this.productDto.id;\n }\n\n get slug() {\n return this.productDto.slug;\n }\n\n get isBeta() {\n return this.courses.some(course => course.isBeta);\n }\n\n get targetGroup() {\n return this.productDto.targetGroup;\n }\n\n get studiesType() {\n return this.productDto.studiesType;\n }\n\n get heroSection() {\n return {\n title: this.productDto.section.title,\n description: this.productDto.heroDescription,\n };\n }\n\n get sections() {\n return this.productDto.section.blocks;\n }\n\n get image() {\n return this.productDto.image;\n }\n\n get cardImage() {\n return this.productDto.cardImage;\n }\n\n get courses(): CourseInfo[] {\n return this.productDto.courses;\n }\n\n get seoTitle() {\n return this.productDto.seoTitle;\n }\n\n get seoDescription() {\n return this.productDto.seoDescription;\n }\n\n get productParams(): ProductParams {\n return { productSlug: this.slug };\n }\n\n get productAuthorsHero() {\n return this.productDto.productAuthorsHero;\n }\n\n get shouldShowProductArticleList() {\n return this.productDto.shouldShowProductArticleList;\n }\n\n @computed get isOnlyOneCourse() {\n return this.courses.length === 1;\n }\n\n @computed get defaultCourseInfo() {\n if (this.courseStructure) {\n return this.courses.find(courseInfo => courseInfo.id === this.courseStructure?.id);\n }\n\n if (!this.isOnlyOneCourse) {\n return;\n }\n\n return this.courses[0];\n }\n\n @computed get availableCourses() {\n return this.courses.filter(c => !c.isBeta);\n }\n\n constructor(private productStore: ProductStore, private productDto: ProductDto) {}\n\n @action.bound\n async trySetActiveCourseStructureBySlug(slug: string) {\n const course = this.courses.find(c => c.slug === slug);\n if (course) {\n const dto = await this.productStore.loadCourseStructure(course.id);\n\n if (dto) {\n this.courseStructure = new CourseStructure(this, dto);\n }\n }\n }\n\n @action.bound\n resetActiveCourseStructure() {\n this.productStore.cancelTokenSource?.cancel(\"Canceled after resetting active course structure\");\n this.courseStructure = undefined;\n }\n}\n","import axios, { CancelTokenSource } from \"axios\";\nimport { action, computed, observable } from \"mobx\";\nimport { ICourseService, IProductService } from \"../api/BackendApi\";\nimport { Product } from \"./Product\";\n\nexport class ProductStore {\n @observable public products: Product[] = [];\n\n @observable private product?: Product;\n\n cancelTokenSource?: CancelTokenSource;\n\n @computed get activeProduct() {\n if (this.isOnlyOneProduct) {\n this.trySetActiveProductBySlug(this.products[0].slug);\n }\n\n if (this.product) {\n return this.product;\n }\n\n return undefined;\n }\n\n @action.bound\n deactivateProduct() {\n this.product = undefined;\n }\n\n @computed get isOnlyOneProduct() {\n return this.products.length === 1;\n }\n\n @computed get isBeta() {\n return this.product?.isBeta;\n }\n\n private constructor(private productService: IProductService, private courseService: ICourseService) {}\n\n static async create(productService: IProductService, courseService: ICourseService) {\n const store = new ProductStore(productService, courseService);\n await store.loadProducts();\n return store;\n }\n\n @action.bound\n trySetActiveProductBySlug(slug: string) {\n if (slug === this.product?.slug) {\n return true;\n }\n\n const product = this.products.find(f => f.slug === slug);\n if (product) {\n this.product = product;\n return true;\n }\n return false;\n }\n\n async loadProducts() {\n const productDtos = await this.productService.getProductsInfo({});\n this.products = productDtos.map(productDto => new Product(this, productDto));\n }\n\n async loadCourseStructure(courseId: string) {\n this.cancelTokenSource = axios.CancelToken.source();\n const result = await this.courseService.getCourseStructure({ id: courseId }, this.cancelTokenSource.token);\n this.cancelTokenSource = undefined;\n\n return result;\n }\n}\n","import { computed, observable } from \"mobx\";\nimport { UserDto } from \"../../types/shared/dto/UserDto\";\nimport { IUserService } from \"../api/BackendApi\";\n\nexport interface IUserStore {\n isAuthenticated: boolean;\n}\n\nexport class UserStore implements IUserStore {\n @observable public user?: UserDto;\n\n @computed get isAuthenticated() {\n return !!this.user;\n }\n\n private constructor(public userService: IUserService) {}\n\n static async create(userService: IUserService) {\n const store = new UserStore(userService);\n await store.loadUser();\n return store;\n }\n\n private async loadUser() {\n this.user = await this.userService.getUser({});\n }\n}\n","import { IHomeRoute, route } from \"react-mvvm\";\nimport { App, AppQuery } from \"./pages/App\";\nimport { addAboutUsRouting } from \"./pages/aboutUs/addAboutUsRouting\";\nimport { addArticlesRoutes } from \"./pages/articles/addArticlesRoutes\";\nimport { addCourseArticleRouting } from \"./pages/articles/addCourseArticleRouting\";\nimport { addProductArticleListRouting } from \"./pages/articles/addProductArticleListRouting\";\nimport { addProductArticleRouting } from \"./pages/articles/addProductArticleRouting\";\nimport { addAuthorsForProductRouting } from \"./pages/authorsForProduct/addAuthorsForProductRouting\";\nimport { addBookmarksRoutes } from \"./pages/bookmarks/addBookmarksRoutes\";\nimport { addBuyRedirectRouting } from \"./pages/buyRedirect/addBuyRedirectRouting\";\nimport { addCourseRouting } from \"./pages/course/addCourseRouting\";\nimport { addDashboardRouting } from \"./pages/dashboard/addDashboardRouting\";\nimport { addErrorRoutes } from \"./pages/error/addErrorsRoutes\";\nimport { addLessonsRoutes } from \"./pages/lessons/addLessonsRoutes\";\nimport { addLoginRouting } from \"./pages/login/addLoginRouting\";\nimport { addPreviousExamsRouting } from \"./pages/previousExams/addPreviousExamsRouting\";\nimport { addProductRouting } from \"./pages/product/addProductRouting\";\nimport { addPurchaseConfirmationRouting } from \"./pages/purchaseConfirmation/addPurchaseConfirmationRouting\";\nimport { addSiteSearchRouting } from \"./pages/search/siteSearch/addSiteSearchRouting\";\nimport { addStepPreviewRouting } from \"./pages/stepPreview/addStepPreviewRouting\";\nimport { addTermsAndConditionsRoute } from \"./pages/termsAndConditions/addTermsAndConditionsRouting\";\nimport { addTestsRoutes } from \"./pages/tests/addTestsRoutes\";\nimport { addThemeListRouting } from \"./pages/themes/addThemeListRouting\";\nimport { addThemesRoutes } from \"./pages/themes/addThemesRoutes\";\nimport { addTrainingGroundsRouting } from \"./pages/trainingGrounds/addTrainingGroundsRouting\";\nimport { initAxiosGlobalInterceptors } from \"./shared/api/AxiosClient\";\nimport { BackendApi } from \"./shared/api/BackendApi\";\nimport { TibetClient } from \"./shared/api/TibetClient\";\nimport { GtmService } from \"./shared/services/GtmService\";\nimport { LanguageService } from \"./shared/services/LanguageService\";\nimport { NavigationService } from \"./shared/services/NavigationService\";\nimport { ProductStore } from \"./shared/stores/ProductStore\";\nimport { UserStore } from \"./shared/stores/UserStore\";\n\nexport const appRoute = route(async () => {\n const navigation = new NavigationService();\n const languageService = new LanguageService();\n initAxiosGlobalInterceptors(navigation, languageService);\n const backendApi = new BackendApi();\n const productStorePromise = ProductStore.create(backendApi, backendApi);\n const configPromise = backendApi.getConfig({});\n const userStorePromise = UserStore.create(backendApi);\n const [config, userStore, productStore] = await Promise.all([configPromise, userStorePromise, productStorePromise]);\n const gtmService = new GtmService(navigation);\n const tibetClient = new TibetClient(backendApi, navigation, gtmService);\n const app = new App(\n config,\n languageService,\n productStore,\n userStore,\n tibetClient,\n navigation,\n backendApi,\n gtmService\n );\n backendApi.initErrorInterceptors(app);\n return app;\n});\n\nclass AppRoutes {\n buyRedirectRouting = addBuyRedirectRouting(this._appRoute);\n\n purchaseConfirmation = addPurchaseConfirmationRouting(this._appRoute);\n\n aboutUsRouting = addAboutUsRouting(this._appRoute);\n\n articlesRoutes = addArticlesRoutes(this._appRoute);\n\n loginRouting = addLoginRouting(this._appRoute);\n\n stepPreviewRouting = addStepPreviewRouting(this._appRoute);\n\n errorRouting = addErrorRoutes(this._appRoute);\n\n termsAndConditionsRouting = addTermsAndConditionsRoute(this._appRoute);\n\n productRouting = addProductRouting(this._appRoute);\n\n productArticleListRouting = addProductArticleListRouting(this.productRouting);\n\n productArticleRouting = addProductArticleRouting(this.productArticleListRouting);\n\n authorsForProduct = addAuthorsForProductRouting(this.productRouting);\n\n courseRouting = addCourseRouting(this.productRouting);\n\n themeListRoute = addThemeListRouting(this.courseRouting);\n\n themesRoutes = addThemesRoutes(this.themeListRoute);\n\n testsRoutes = addTestsRoutes(this.themesRoutes);\n\n lessonsRoutes = addLessonsRoutes(this.courseRouting);\n\n bookmarkRoutes = addBookmarksRoutes(this.courseRouting);\n\n dashboardRouting = addDashboardRouting(this.courseRouting);\n\n siteSearchRouting = addSiteSearchRouting(this.courseRouting);\n\n courseArticleRouting = addCourseArticleRouting(this.courseRouting);\n\n trainingGroundsRouting = addTrainingGroundsRouting(this.courseRouting);\n\n previousExamsRouting = addPreviousExamsRouting(this.courseRouting);\n\n constructor(private _appRoute: IHomeRoute) {}\n}\n\nexport const appRoutes = new AppRoutes(appRoute);\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { App } from \"../App\";\nimport { BuyRedirectViewModel } from \"./BuyRedirectViewModel\";\n\nexport type BuyRedirectQueryParams = {\n courseId: string;\n paymentOptionId: string;\n successUrl: string;\n cancelUrl: string;\n failUrl: string;\n};\n\nexport const addBuyRedirectRouting = (route: IRoute) => {\n const buyRedirectRoute = route.addRoute(\n RouteConfiguration.BuyRedirect,\n BuyRedirectViewModel,\n app => {\n const buyRedirect = new BuyRedirectViewModel(app.languageService, app, app.gtm, app.tibetClient, app.userStore);\n\n return app.showChildPage(buyRedirect);\n }\n );\n return buyRedirectRoute;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { App } from \"../App\";\nimport { PurchaseConfirmationViewModel } from \"./PurchaseConfirmationViewModel\";\n\nexport const addPurchaseConfirmationRouting = (route: IRoute) => {\n const buyRedirectRoute = route.addRoute(\n \"/purchase-confirmation\",\n PurchaseConfirmationViewModel,\n app => {\n const purchaseConfirmation = new PurchaseConfirmationViewModel(\n app.languageService,\n app,\n app.gtm,\n app.backendApi,\n app.userStore\n );\n\n return app.showChildPage(purchaseConfirmation);\n }\n );\n return buyRedirectRoute;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { App } from \"../App\";\nimport { AboutUsViewModel } from \"./AboutUsViewModel\";\n\nexport const addAboutUsRouting = (route: IRoute) => {\n const aboutUsRoute = route.addRoute(`${RouteConfiguration.AboutUs}`, AboutUsViewModel, app => {\n const aboutUs = new AboutUsViewModel(app, app.backendApi);\n\n return app.showChildPage(aboutUs);\n });\n return aboutUsRoute;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { App } from \"../App\";\nimport { ArticleViewModel } from \"./article/ArticleViewModel\";\n\nexport type ArticleParams = { articleSlug: string };\n\nexport const addArticlesRoutes = (route: IRoute) => {\n const articlesRoutes = route.addRoute(\n `${RouteConfiguration.Articles}/:articleSlug`,\n ArticleViewModel,\n (app, p) => {\n const article = new ArticleViewModel(\n p.articleSlug,\n app.languageService,\n app,\n app.backendApi,\n app.navigation,\n app.gtm\n );\n\n return app.showChildPage(article);\n },\n page => ({ articleSlug: page.articleSlug })\n );\n return articlesRoutes;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { App } from \"../App\";\nimport { LoginViewModel } from \"./LoginViewModel\";\n\nexport type LoginQuery = { returnUrl: string };\n\nexport const addLoginRouting = (route: IRoute) => {\n route.addRoute(\n RouteConfiguration.LoginPage,\n LoginViewModel,\n (app, params, query) => {\n const login = new LoginViewModel(\n app.config.loginConfig,\n app.languageService,\n app.navigation,\n app.gtm,\n app,\n query.returnUrl\n );\n return app.showChildPage(login);\n }\n );\n};\n","import { IRoute } from \"react-mvvm\";\nimport { App } from \"../App\";\nimport { StepPreviewViewModel } from \"./StepPreviewViewModel\";\n\nexport type PreviewParams = {\n slug: string;\n};\n\nexport type PreviewQuery = {\n isDraft: boolean;\n revision: string;\n};\n\nexport const addStepPreviewRouting = (appRoute: IRoute) => {\n const productRoute = appRoute.addRoute(\n \"/preview/step/:slug\",\n StepPreviewViewModel,\n (app, params, query) => {\n const product = new StepPreviewViewModel(\n params.slug,\n query,\n app.backendApi,\n app.languageService,\n app,\n app.navigation\n );\n return app.showChildPage(product);\n },\n page => ({ slug: page.stepSlug })\n );\n return productRoute;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { App } from \"../App\";\nimport { TermsAndConditionsViewModel } from \"./TermsAndConditionsViewModel\";\n\nexport const addTermsAndConditionsRoute = (route: IRoute) => {\n const termsAndConditionsRoute = route.addRoute(\n `${RouteConfiguration.TermsAndConditions}`,\n TermsAndConditionsViewModel,\n app => {\n const termsAndConditions = new TermsAndConditionsViewModel(\n app.languageService,\n app,\n app.gtm,\n app.config.termsAndConditions\n );\n\n return app.showChildPage(termsAndConditions);\n }\n );\n return termsAndConditionsRoute;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { ProductViewModel } from \"../product/ProductViewModel\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { ArticleListViewModel } from \"./articleList/ArticleListViewModel\";\n\nexport type ProductArticleListQueryParams = {\n category?: string;\n};\n\nexport const addProductArticleListRouting = (productRoute: IRoute) => {\n // eslint-disable-next-line @typescript-eslint/ban-types\n const productArticleListRouting = productRoute.addRoute(\n RouteConfiguration.Articles,\n ArticleListViewModel,\n (productViewModel, _, queryParams) => {\n const articleList = new ArticleListViewModel(\n { categorySlug: queryParams.category },\n productViewModel.languageService,\n productViewModel.errorService,\n productViewModel.navigation,\n productViewModel.gtm,\n // properties needed for the nested ProductArticles\n productViewModel.handleLogin,\n productViewModel.userStore,\n productViewModel.product,\n productViewModel.backendApi,\n productViewModel.backendApi\n );\n\n return productViewModel.showChildPage(articleList);\n }\n );\n\n return productArticleListRouting;\n};\n","import { Command, IRoute } from \"react-mvvm\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { ArticleParams } from \"./addArticlesRoutes\";\nimport { ArticleViewModel } from \"./article/ArticleViewModel\";\nimport { ArticleLoginSectionViewModel } from \"./article/articleLoginSection/ArticleLoginSectionViewModel\";\nimport { ArticleListViewModel } from \"./articleList/ArticleListViewModel\";\n\nexport const addProductArticleRouting = (\n productArticleListRoute: IRoute\n) => {\n const productArticleRouting = productArticleListRoute.addRoute(\n `/:articleSlug`,\n ArticleViewModel,\n (articleListViewModel, params) => {\n const {\n handleLogin,\n languageService,\n errorService,\n backendApi,\n navigationService,\n gtm,\n userStore: { isAuthenticated },\n product: { defaultCourseInfo },\n } = articleListViewModel;\n\n const paramToRidirectFrom = \"nasjonal-deleksamen-i-matematikk-2021-og-2022-tidligere-eksamensoppgaver\";\n\n if (params.articleSlug === paramToRidirectFrom) {\n window.location.replace(\"/glu/algebraisk-/eksamener\");\n }\n\n /* This code is responsible for redirecting from old article to new, simillar article.\n It has been request by Kine and it should be first and last time we are doing this\n because it's very bad practice to have this kind of code in the codebase. */\n const articlesSlugs = {\n oldSlug: \"eksamensoppsummering-afb\",\n newSlug: \"gratis-webinar-oppsummering-av-pensum-i-anatomi-fysiologi-og-biokjemi\",\n };\n\n if (params.articleSlug === articlesSlugs.oldSlug) {\n window.location.assign(`/sykepleie/artikler/${articlesSlugs.newSlug}`);\n }\n\n const articleHandleLogin = new Command(async () => {\n await handleLogin(defaultCourseInfo?.slug);\n });\n\n const actionSection = !isAuthenticated ? new ArticleLoginSectionViewModel(articleHandleLogin) : undefined;\n\n const article = new ArticleViewModel(\n params.articleSlug,\n languageService,\n errorService,\n backendApi,\n navigationService,\n gtm,\n actionSection\n );\n\n return articleListViewModel.showChildPage(article);\n },\n page => ({ articleSlug: page.articleSlug })\n );\n\n return productArticleRouting;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { ProductViewModel } from \"../product/ProductViewModel\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { AuthorsForProductViewModel } from \"./AuthorsForProductViewModel\";\n\nexport interface AuthorsForProductQueryParams {\n author?: string;\n}\n\nexport const addAuthorsForProductRouting = (productRoute: IRoute) => {\n // eslint-disable-next-line @typescript-eslint/ban-types\n const productAuthorsRouting = productRoute.addRoute(\n RouteConfiguration.AuthorsForProductPage,\n AuthorsForProductViewModel,\n (productViewModel, _, queryParams) => {\n const authorsForProduct = new AuthorsForProductViewModel(\n productViewModel.languageService,\n productViewModel.errorService,\n productViewModel.navigation,\n productViewModel.gtm,\n productViewModel.userStore,\n productViewModel.product.productParams,\n productViewModel.backendApi,\n productViewModel.product.productAuthorsHero,\n { author: queryParams.author }\n );\n return productViewModel.showChildPage(authorsForProduct);\n }\n );\n return productAuthorsRouting;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { PageNotFoundError } from \"../../shared/services/errors/HttpError\";\nimport { ProductViewModel } from \"../product/ProductViewModel\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { CourseViewModel } from \"./CourseViewModel\";\n\nexport type CourseParams = {\n courseSlug: string;\n};\n\nexport const addCourseRouting = (productRoute: IRoute) => {\n return productRoute.addRoute(\n \"/:courseSlug\",\n CourseViewModel,\n async (productViewModel, courseParams) => {\n const _productViewModel = productViewModel;\n _productViewModel.isLoading = true;\n\n // TODO: Remove this if no longer needed, ie when licenses expire for old courses\n const invalidSlugs = [\"riktig-matematikk-1-7\", \"riktig-matematikk-5-10\"];\n const replacementPath = \"/glu/algebraisk-/forside\";\n\n if (invalidSlugs.some(slug => courseParams.courseSlug.includes(slug))) {\n window.location.replace(replacementPath);\n }\n\n await productViewModel.product.trySetActiveCourseStructureBySlug(courseParams.courseSlug);\n\n if (!productViewModel.product.courseStructure) {\n await productViewModel.handleInvalidRoute();\n throw new PageNotFoundError(\"Unable to find course\");\n }\n\n const course = new CourseViewModel(\n productViewModel.config,\n productViewModel.languageService,\n productViewModel.product,\n productViewModel.userStore,\n productViewModel.tibetClient,\n productViewModel.navigation,\n productViewModel.backendApi,\n productViewModel.gtm,\n productViewModel.errorService,\n productViewModel.product.courseStructure\n );\n\n _productViewModel.isLoading = false;\n return productViewModel.showChildPage(course);\n },\n page => ({ courseSlug: page.courseSlug })\n );\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { CourseViewModel } from \"../course/CourseViewModel\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { ThemeListViewModel } from \"./themeList/ThemeListViewModel\";\n\nexport const addThemeListRouting = (courseRoute: IRoute) => {\n const themeListRouting = courseRoute.addRoute(\n RouteConfiguration.Themes,\n ThemeListViewModel,\n coursePage => {\n const theme = new ThemeListViewModel(\n coursePage.courseStructure,\n coursePage.languageService,\n coursePage.errorService,\n coursePage.progressStore,\n coursePage.userStore,\n coursePage.backendApi,\n coursePage.paymentSidePanelViewModel,\n coursePage.bookmarkStore,\n coursePage.navigation,\n coursePage.gtm,\n coursePage.backendApi,\n coursePage.courseNavigator\n );\n return coursePage.showChildPage(theme);\n }\n );\n\n return themeListRouting;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { ThemeViewModel } from \"./theme/ThemeViewModel\";\nimport { ThemeListViewModel } from \"./themeList/ThemeListViewModel\";\n\nexport type ThemeParams = { themeSlug: string };\n\nexport const addThemesRoutes = (themeListRoute: IRoute) => {\n const themesRoutes = themeListRoute.addRoute(\n \"/:themeSlug\",\n ThemeViewModel,\n (themesPage, p) => {\n const currentTheme = themesPage.activeCourseStructure.getThemeBySlug(p.themeSlug);\n\n if (currentTheme.isUnderDevelopment) {\n throw new Error(`Trying to enter under development theme with id: ${currentTheme.id}`);\n }\n\n const theme = new ThemeViewModel(\n currentTheme,\n themesPage.videoService,\n themesPage.languageService,\n themesPage.errorService,\n themesPage.progressStore,\n themesPage.userStore,\n themesPage.paymentSidePanelViewModel,\n themesPage.bookmarkStore,\n themesPage.gtm,\n themesPage.testService,\n themesPage.courseNavigator,\n themesPage.activeCourseStructure\n );\n\n return themesPage.showChildPage(theme);\n },\n page => ({ themeSlug: page.themeStructure.slug })\n );\n\n return themesRoutes;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { TaskFactory } from \"../../shared/components/tasks/TaskFactory\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ThemeParams } from \"../themes/addThemesRoutes\";\nimport { ThemeViewModel } from \"../themes/theme/ThemeViewModel\";\nimport { TestApi } from \"./TestApi\";\nimport { TestPageViewModel } from \"./TestPageViewModel\";\nimport { TestStore } from \"./TestStore\";\n\nexport type TestParams = { testSlug: string };\n\nexport const addTestsRoutes = (themeRoute: IRoute) => {\n const testsRoutes = themeRoute.addRoute(\n \"/:testSlug\",\n TestPageViewModel,\n async (themePage, p) => {\n const testStructure = themePage.themeStructure.getTest(p.testSlug);\n\n const {\n themeStructure: {\n courseStructure: { urlParams },\n },\n bookmarkStore,\n gtm,\n languageService,\n testService,\n errorService,\n } = themePage;\n\n const testApi = new TestApi(testService);\n const testFactory = new TaskFactory();\n const testStore = new TestStore(urlParams, testApi, testFactory, bookmarkStore);\n\n const test = new TestPageViewModel(\n testStructure,\n languageService,\n gtm,\n errorService,\n themePage.courseNavigator,\n testStore\n );\n\n return themePage.showChildPage(test);\n },\n page => ({ testSlug: page.testStructure.slug })\n );\n\n return testsRoutes;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { CourseViewModel } from \"../course/CourseViewModel\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { StepApi } from \"./StepApi\";\nimport { StepStore } from \"./StepStore\";\nimport { LessonViewModel } from \"./lesson/LessonViewModel\";\nimport { StepFactory } from \"./lesson/steps/StepFactory\";\n\nexport type LessonParams = { stepSlug: string };\n\nexport const addLessonsRoutes = (courseRoute: IRoute) => {\n const lessonsRoutes = courseRoute.addRoute(\n `${RouteConfiguration.Lessons}/:stepSlug`,\n LessonViewModel,\n (coursePage, p) => {\n const {\n courseStructure,\n courseNavigator,\n progressStore,\n bookmarkStore,\n userStore,\n paymentSidePanelViewModel,\n navigation,\n backendApi,\n languageService,\n errorService,\n gtm,\n } = coursePage;\n const lesson = courseStructure.getLessonByStepSlug(p.stepSlug);\n\n if (lesson.themeStructure.isUnderDevelopment) {\n throw new Error(\n `Trying to enter the step from the under development theme with id: ${lesson.themeStructure.id}`\n );\n }\n\n const { urlParams } = courseStructure;\n\n const stepFactory = new StepFactory(\n lesson.color,\n progressStore,\n bookmarkStore,\n backendApi,\n gtm,\n urlParams,\n navigation\n );\n\n const stepStore = new StepStore(new StepApi(courseStructure.id, backendApi), stepFactory);\n\n const lessonViewModel = new LessonViewModel(\n p.stepSlug,\n lesson,\n stepStore,\n backendApi,\n progressStore,\n bookmarkStore,\n userStore,\n languageService,\n errorService,\n paymentSidePanelViewModel,\n navigation,\n gtm,\n courseNavigator\n );\n\n return coursePage.showChildPage(lessonViewModel);\n },\n page => ({ stepSlug: page.currentStepSlug })\n );\n\n return lessonsRoutes;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { CourseViewModel } from \"../course/CourseViewModel\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { BookmarkListApi } from \"./BookmarkListApi\";\nimport { BookmarkListStore } from \"./BookmarkListStore\";\nimport { BookmarkListViewModel } from \"./bookmarkList/BookmarkListViewModel\";\n\nexport const addBookmarksRoutes = (courseRoute: IRoute) => {\n const bookmarksRoutes = courseRoute.addRoute(\n RouteConfiguration.Bookmarks,\n BookmarkListViewModel,\n coursePage => {\n const bookmarkListApi = new BookmarkListApi(coursePage.backendApi);\n const bookmarkListStore = new BookmarkListStore(bookmarkListApi);\n\n const bookmarks = new BookmarkListViewModel(\n coursePage.courseStructure,\n coursePage.languageService,\n coursePage.errorService,\n bookmarkListStore,\n coursePage.progressStore,\n coursePage.backendApi,\n coursePage.paymentSidePanelViewModel,\n coursePage.gtm\n );\n return coursePage.showChildPage(bookmarks);\n }\n );\n\n return bookmarksRoutes;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { CourseViewModel } from \"../course/CourseViewModel\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { DashboardViewModel } from \"./DashboardViewModel\";\n\nexport const addDashboardRouting = (courseRoute: IRoute) => {\n const dashboardRouting = courseRoute.addRoute(\n RouteConfiguration.Dashboard,\n DashboardViewModel,\n coursePage => {\n const dashboard = new DashboardViewModel(\n coursePage.courseStructure,\n coursePage.userStore,\n coursePage.backendApi,\n coursePage.progressStore,\n coursePage.languageService,\n coursePage.tibetClient,\n coursePage.errorService,\n coursePage.paymentSidePanelViewModel,\n coursePage.navigation,\n coursePage.gtm,\n coursePage.activateSearchPage,\n coursePage.goToCourse\n );\n return coursePage.showChildPage(dashboard);\n }\n );\n\n return dashboardRouting;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../../types/platform/infrastructure/RouteConfiguration\";\nimport { CourseViewModel } from \"../../course/CourseViewModel\";\nimport { CourseParams } from \"../../course/addCourseRouting\";\nimport { ProductParams } from \"../../product/addProductRouting\";\nimport { SiteSearchViewModel } from \"./SiteSearchViewModel\";\n\nexport type SearchQuery = { phrase: string };\n\nexport const addSiteSearchRouting = (courseRoute: IRoute) => {\n // eslint-disable-next-line @typescript-eslint/ban-types\n const siteSearchRouting = courseRoute.addRoute(\n RouteConfiguration.SiteSearch,\n SiteSearchViewModel,\n (coursePage, params, query) => {\n const siteSearch = new SiteSearchViewModel(\n coursePage.courseStructure,\n coursePage.languageService,\n coursePage.errorService,\n coursePage.progressStore,\n coursePage.backendApi,\n coursePage.backendApi,\n coursePage.paymentSidePanelViewModel,\n coursePage.bookmarkStore,\n coursePage.userStore,\n coursePage.gtm,\n query\n );\n return coursePage.showChildPage(siteSearch);\n }\n );\n\n return siteSearchRouting;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { CourseViewModel } from \"../course/CourseViewModel\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { ArticleParams } from \"./addArticlesRoutes\";\nimport { ArticleViewModel } from \"./article/ArticleViewModel\";\nimport { ArticleBuySectionViewModel } from \"./article/articleBuySection/ArticleBuySectionViewModel\";\n\nexport const addCourseArticleRouting = (courseRoute: IRoute) => {\n const courseArticleRouting = courseRoute.addRoute(\n `${RouteConfiguration.Articles}/:articleSlug`,\n ArticleViewModel,\n (coursePage, params) => {\n const actionSection = !coursePage.courseStructure.hasFullAccess\n ? new ArticleBuySectionViewModel(coursePage.paymentSidePanelViewModel)\n : undefined;\n\n const article = new ArticleViewModel(\n params.articleSlug,\n coursePage.languageService,\n coursePage.errorService,\n coursePage.backendApi,\n coursePage.navigation,\n coursePage.gtm,\n actionSection\n );\n\n return coursePage.showChildPage(article);\n },\n page => ({ articleSlug: page.articleSlug })\n );\n\n return courseArticleRouting;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { CourseViewModel } from \"../course/CourseViewModel\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { TrainingGroundViewModel } from \"./trainingGround/TrainingGroundViewModel\";\n\nexport type TrainingGroundParams = {\n trainingGroundSlug: string;\n};\n\nexport type TrainingGroundQueryParams = {\n initialThemeSlug: string;\n};\n\nexport const addTrainingGroundsRouting = (courseRoute: IRoute) => {\n const trainingGroundRoutes = courseRoute.addRoute<\n TrainingGroundViewModel,\n TrainingGroundParams,\n TrainingGroundQueryParams\n >(\n `${RouteConfiguration.TrainingGroundPage}/:trainingGroundSlug`,\n TrainingGroundViewModel,\n\n async (coursePage, params, queryParams) => {\n const { initialThemeSlug } = queryParams;\n const {\n courseStructure,\n backendApi,\n gtm,\n languageService,\n errorService,\n bookmarkStore,\n tibetClient,\n navigation,\n } = coursePage;\n const { trainingGroundSlug } = params;\n\n const trainingGroundViewModel = new TrainingGroundViewModel(\n trainingGroundSlug,\n courseStructure,\n backendApi,\n languageService,\n errorService,\n gtm,\n tibetClient,\n navigation,\n bookmarkStore,\n initialThemeSlug\n );\n\n return coursePage.showChildPage(trainingGroundViewModel);\n }\n );\n\n return trainingGroundRoutes;\n};\n","import { IRoute } from \"react-mvvm\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { CourseViewModel } from \"../course/CourseViewModel\";\nimport { CourseParams } from \"../course/addCourseRouting\";\nimport { ProductParams } from \"../product/addProductRouting\";\nimport { PreviousExamsViewModel } from \"./PreviousExamsViewModel\";\n\nexport const addPreviousExamsRouting = (courseRoute: IRoute) => {\n const previousExamsRouting = courseRoute.addRoute(\n RouteConfiguration.PreviousExamsPage,\n PreviousExamsViewModel,\n coursePage => {\n const previousExamsViewModel = new PreviousExamsViewModel(\n coursePage.languageService,\n coursePage.gtm,\n coursePage.errorService,\n coursePage.courseStructure,\n coursePage.navigation,\n coursePage.progressStore,\n coursePage.backendApi\n );\n\n return coursePage.showChildPage(previousExamsViewModel);\n }\n );\n\n return previousExamsRouting;\n};\n","import qs from \"qs\";\nimport { ProductArticleListQueryParams } from \"../../pages/articles/addProductArticleListRouting\";\nimport { AuthorsForProductQueryParams } from \"../../pages/authorsForProduct/addAuthorsForProductRouting\";\nimport { CourseParams } from \"../../pages/course/addCourseRouting\";\nimport { ErrorParams } from \"../../pages/error/addErrorsRoutes\";\nimport { ProductParams } from \"../../pages/product/addProductRouting\";\nimport { appRoutes } from \"../../routes\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\n\nexport interface ContentReference {\n id: string;\n slug: string;\n}\n\nexport type ActiveCourseParams = ProductParams & CourseParams;\n\nexport interface IUrl {\n toProductNestPage: () => string;\n toProductPage: (params: ProductParams) => string;\n toDashboardPage: (params: ActiveCourseParams) => string;\n toLogoutPage: () => string;\n toLessonPage: (params: ActiveCourseParams, stepRef: ContentReference) => string;\n toThemePage: (params: ActiveCourseParams, themeSlug: string) => string;\n toThemesPage: (params: ActiveCourseParams) => string;\n toThemeTestPage: (params: ActiveCourseParams, themeSlug: string, testSlug: string) => string;\n toArticlePage: (articleRef: ContentReference) => string;\n toProductArticleListPage: (params: ProductParams, queryParams?: ProductArticleListQueryParams) => string;\n toProductArticlePage: (params: ProductParams, articleRef: ContentReference) => string;\n toCourseArticlePage: (params: ActiveCourseParams, articleRef: ContentReference) => string;\n toBookmarksPage: (params: ActiveCourseParams) => string;\n toTibetLoginPage: (returnUrl?: string) => string;\n toLoginPage: () => string;\n toCoursePage: (params: ActiveCourseParams) => string;\n toSearchPage: (params: ActiveCourseParams, phrase?: string) => string;\n toTrainingGroundPage: (params: ActiveCourseParams, trainingGroundSlug: string, initialThemeSlug?: string) => string;\n toPreviousExamsPage: (params: ActiveCourseParams) => string;\n toErrorPage: (params: ErrorParams) => string;\n toAuthorsForProductPage: (params: ProductParams, queryParams?: AuthorsForProductQueryParams) => string;\n toMyProfile: () => string;\n toTermsAndConditionsPage: () => string;\n toAboutUsPage: () => string;\n toMyProfileBPN: () => string;\n toBuyRedirectPage: () => string;\n toPurchaseConfirmationPage: () => string;\n}\n\nconst createUrl = (): IUrl => {\n const toDashboardPage = (params: ActiveCourseParams) => {\n return appRoutes.dashboardRouting.getPath(params);\n };\n\n const toBuyRedirectPage = () => {\n return RouteConfiguration.BuyRedirect;\n };\n\n const toPurchaseConfirmationPage = () => {\n return RouteConfiguration.PurchaseConfirmation;\n };\n\n const toProductNestPage = () => {\n return RouteConfiguration.ProductNest;\n };\n\n const toProductPage = (params: ProductParams) => {\n return appRoutes.productRouting.getPath(params);\n };\n\n const toLogoutPage = () => {\n return RouteConfiguration.Logout;\n };\n\n const toLessonPage = (params: ActiveCourseParams, stepRef: ContentReference) => {\n return appRoutes.lessonsRoutes.getPath({ ...params, stepSlug: stepRef.slug });\n };\n\n const toThemePage = (params: ActiveCourseParams, themeSlug: string) => {\n return appRoutes.themesRoutes.getPath({ ...params, themeSlug });\n };\n\n const toThemesPage = (params: ActiveCourseParams) => {\n return appRoutes.themeListRoute.getPath(params);\n };\n\n const toThemeTestPage = (params: ActiveCourseParams, themeSlug: string, testSlug: string) => {\n return appRoutes.testsRoutes.getPath({ ...params, themeSlug, testSlug });\n };\n\n const toArticlePage = (articleRef: ContentReference) => {\n return appRoutes.articlesRoutes.getPath({ articleSlug: articleRef.slug });\n };\n\n const toProductArticleListPage = (params: ProductParams, queryParams?: ProductArticleListQueryParams) => {\n return appRoutes.productArticleListRouting.getPath(params, queryParams);\n };\n\n const toProductArticlePage = (params: ProductParams, articleRef: ContentReference) => {\n return appRoutes.productArticleRouting.getPath({ ...params, articleSlug: articleRef.slug });\n };\n\n const toCourseArticlePage = (params: ActiveCourseParams, articleRef: ContentReference) => {\n return appRoutes.courseArticleRouting.getPath({ ...params, articleSlug: articleRef.slug });\n };\n\n const toBookmarksPage = (params: ActiveCourseParams) => {\n return appRoutes.bookmarkRoutes.getPath(params);\n };\n\n const toTibetLoginPage = (returnUrl?: string) => {\n const params = qs.stringify({ return_Url: returnUrl }, { addQueryPrefix: true });\n return `${RouteConfiguration.Login}${params}`;\n };\n\n const toLoginPage = () => {\n const params = qs.stringify({ returnUrl: window.location.pathname }, { addQueryPrefix: true });\n return `${RouteConfiguration.LoginPage}${params}`;\n };\n\n const toSearchPage = (params: ActiveCourseParams, phrase?: string) => {\n const baseUrl = appRoutes.siteSearchRouting.getPath(params);\n\n let queryString = \"\";\n if (phrase) {\n queryString = qs.stringify({ phrase }, { addQueryPrefix: true });\n }\n\n return `${baseUrl}${queryString}`;\n };\n\n const toCoursePage = (params: ActiveCourseParams) => {\n return `${RouteConfiguration.ProductNest}${params.productSlug}/${params.courseSlug}${RouteConfiguration.Dashboard}`;\n };\n\n const toTrainingGroundPage = (params: ActiveCourseParams, trainingGroundSlug: string, initialThemeSlug?: string) => {\n return appRoutes.trainingGroundsRouting.getPath({ ...params, trainingGroundSlug }, { initialThemeSlug });\n };\n\n const toPreviousExamsPage = (params: ActiveCourseParams) => {\n return appRoutes.previousExamsRouting.getPath(params);\n };\n\n const toErrorPage = (params: ErrorParams) => {\n return appRoutes.errorRouting.getPath(params);\n };\n\n const toAuthorsForProductPage = (params: ProductParams, queryParams?: AuthorsForProductQueryParams) => {\n return appRoutes.authorsForProduct.getPath(params, queryParams);\n };\n\n const toMyProfile = () => {\n return RouteConfiguration.TibetUserProfile;\n };\n\n const toMyProfileBPN = () => {\n return RouteConfiguration.TibetUserProfileBPN;\n };\n\n const toTermsAndConditionsPage = () => {\n return RouteConfiguration.TermsAndConditions;\n };\n\n const toAboutUsPage = () => {\n return RouteConfiguration.AboutUs;\n };\n\n return {\n toBuyRedirectPage,\n toPurchaseConfirmationPage,\n toProductNestPage,\n toProductPage,\n toDashboardPage,\n toLogoutPage,\n toLessonPage,\n toThemePage,\n toThemesPage,\n toThemeTestPage,\n toArticlePage,\n toProductArticleListPage,\n toProductArticlePage,\n toCourseArticlePage,\n toBookmarksPage,\n toTibetLoginPage,\n toLoginPage,\n toSearchPage,\n toCoursePage,\n toTrainingGroundPage,\n toPreviousExamsPage,\n toErrorPage,\n toAuthorsForProductPage,\n toMyProfile,\n toTermsAndConditionsPage,\n toAboutUsPage,\n toMyProfileBPN,\n };\n};\n\nexport const Url = createUrl();\n","import head from \"lodash/head\";\nimport { action, observable } from \"mobx\";\nimport { asyncCommand, Command } from \"react-mvvm\";\nimport { ITibetClient } from \"../../../shared/api/TibetClient\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { Url } from \"../../../shared/models/Url\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { ILowLevelNavigationService } from \"../../../shared/services/NavigationService\";\nimport { HttpError } from \"../../../shared/services/errors/HttpError\";\n\nexport class BuyCourseViewModel {\n buyCourseCommand: Command;\n\n @observable selectedPriceOptionId = head(this.course.priceOptions)?.id;\n\n constructor(\n public course: CourseStructure,\n public groupName: string,\n private tibetClient: ITibetClient,\n private errorService: IErrorService,\n lowLevelNavigationService: ILowLevelNavigationService\n ) {\n this.buyCourseCommand = asyncCommand(\n async () => {\n if (this.selectedPriceOptionId) {\n try {\n await this.tibetClient.initiateBuying(\n this.course.id,\n this.selectedPriceOptionId,\n `${lowLevelNavigationService.siteOrigin}/purchase-confirmation?courseId=${this.course.id}`,\n `${lowLevelNavigationService.siteOrigin}${Url.toCoursePage(course.urlParams)}`,\n `${lowLevelNavigationService.siteOrigin}${Url.toErrorPage({ errorType: \"payment\" })}`,\n sessionStorage.getItem(\"utm_source\") ?? undefined,\n sessionStorage.getItem(\"utm_medium\") ?? undefined,\n sessionStorage.getItem(\"utm_campaign\") ?? undefined\n );\n } catch (responseError) {\n if (responseError instanceof Response) {\n const message = await responseError.text();\n this.errorService.showErrorSplash(new HttpError(responseError.status, message));\n throw message;\n }\n throw responseError;\n }\n }\n },\n () => !!this.selectedPriceOptionId\n );\n }\n\n @action.bound\n setSelectedOption(priceOptionId: string) {\n this.selectedPriceOptionId = priceOptionId;\n }\n}\n","import { computed } from \"mobx\";\nimport { ITibetClient } from \"../../../shared/api/TibetClient\";\nimport { Popup } from \"../../../shared/components/popup/Popup\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { IErrorService } from \"../../../shared/services/ErrorService\";\nimport { ILowLevelNavigationService } from \"../../../shared/services/NavigationService\";\nimport { BuyCourseViewModel } from \"../buyCourse/BuyCourseViewModel\";\n\nexport class PaymentSidePanelViewModel extends Popup {\n @computed get buyCourseVm() {\n return new BuyCourseViewModel(\n this.activeCourseStructure,\n \"sidepanel\",\n this.tibetClient,\n this.errorService,\n this.navigationService\n );\n }\n\n constructor(\n public tibetClient: ITibetClient,\n private activeCourseStructure: CourseStructure,\n private errorService: IErrorService,\n private navigationService: ILowLevelNavigationService\n ) {\n super();\n }\n}\n","import { createBrowserHistory, History, Location } from \"history\";\nimport * as React from \"react\";\nimport { IUrl, Url } from \"./shared/models/Url\";\n\nexport interface HistoryLocationState {\n goBackHref?: string;\n goBackText?: string;\n}\n\nexport interface RouterContext {\n history: History;\n url: IUrl;\n}\n\nexport interface LocationContext {\n location: Location;\n}\n\nconst routerContext = React.createContext(undefined);\nconst locationContext = React.createContext(undefined);\n\nexport const useRouterContext = () => {\n const routerCtx = React.useContext(routerContext);\n\n if (!routerCtx) {\n throw new Error(\"Component beyond RouterContext!\");\n }\n\n return routerCtx;\n};\n\nexport const useHistory = (): History => {\n const routerCtx = useRouterContext();\n return routerCtx.history;\n};\n\nexport const useUrl = (): IUrl => {\n const routerCtx = useRouterContext();\n return routerCtx.url;\n};\n\ninterface RouteProviderProps {\n history: History;\n url: IUrl;\n children: React.ReactNode;\n}\n\nexport const RouterProvider = ({ history, url, children }: RouteProviderProps) => {\n const { Provider } = routerContext;\n return {children};\n};\n\nexport const LocationProvider = ({ children }: { children: React.ReactNode }) => {\n const { Provider } = locationContext;\n const history = useHistory();\n\n const [location, setLocation] = React.useState(history.location);\n\n React.useEffect(() => {\n const historyListenerUnregister = history.listen(newLocation => {\n setLocation(newLocation);\n });\n return () => {\n historyListenerUnregister();\n };\n }, []);\n\n return {children};\n};\n\nexport const useLocationContext = () => {\n const locationCtx = React.useContext(locationContext);\n\n if (!locationCtx) {\n throw new Error(\"Component beyond LocationContext!\");\n }\n\n return locationCtx;\n};\n\nexport const useLocation = () => {\n const locationCtx = useLocationContext();\n return locationCtx.location;\n};\n\nexport const useRouter = () => {\n const history = createBrowserHistory();\n const url = Url;\n\n const routerProvider = ({ children }: { children: React.ReactNode }) => {\n return (\n \n {children}\n \n );\n };\n\n return { history, RouterProvider: routerProvider };\n};\n","import classNames from \"classnames\";\nimport { ButtonType, ButtonSize, ButtonVariant } from \"../../button/Button\";\nimport { LinkType } from \"../Link\";\n\nexport const getLinkClassNames = (\n type: LinkType,\n buttonType: Exclude,\n buttonVariant: ButtonVariant,\n size: ButtonSize,\n className?: string\n) => {\n if (type === \"button\") {\n return classNames(\n \"Link\",\n \"Link--clear\",\n `Link--${type}`,\n \"Button\",\n `Button--${buttonType}`,\n `Button--${buttonVariant}`,\n `Button--${size}`,\n className\n );\n }\n\n return classNames(\"Link\", `Link--${type}`, `Link--${size}`, className);\n};\n","export const getHostname = (url: string) => {\n return new URL(url).hostname;\n};\n","import { getHostname } from \"./getHostName\";\n\n// https://stackoverflow.com/a/28054735\nexport const isExternal = (url: string) => {\n return (url.indexOf(\":\") > -1 || url.indexOf(\"//\") > -1) && getHostname(location.href) !== getHostname(url);\n};\n","export const isModifiedEvent = (event: React.MouseEvent) => {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n","import { computed } from \"mobx\";\nimport { IUrl } from \"../../../shared/models/Url\";\nimport { SourceLink } from \"../HeaderViewModel\";\nimport { HeaderHamburgerViewModel } from \"../headerHamburger/HeaderHamburgerViewModel\";\n\nexport class HamburgerMenuLinks {\n @computed get primaryLinks(): SourceLink[] {\n const links: SourceLink[] = [];\n\n if (this.headerViewModel.currentContext === \"productNest\") {\n return links;\n }\n\n if (this.headerViewModel.currentContext === \"product\") {\n links.push(...this.headerViewModel.desktopHamburgerPrimaryLinks);\n }\n\n if (this.headerViewModel.currentContext === \"course\" && this.headerViewModel.baseHeaderLinks) {\n links.push(...this.headerViewModel.baseHeaderLinks);\n }\n\n return links;\n }\n\n @computed get secondaryLinks(): SourceLink[] {\n const links: SourceLink[] = [];\n\n if (this.headerViewModel.currentContext === \"productNest\") {\n return links;\n }\n\n if (this.headerViewModel.currentContext === \"product\") {\n if (!this.headerViewModel.config.hideAboutUsInMenu) {\n links.push({\n source: \"static\",\n id: \"aboutUs\",\n href: this.url.toAboutUsPage(),\n translation: \"aboutUs\",\n });\n }\n }\n\n if (this.headerViewModel.currentContext === \"course\") {\n links.push(...this.headerViewModel.desktopHamburgerPrimaryLinks);\n }\n\n return links;\n }\n\n @computed get studiesType() {\n if (!this.headerViewModel.activeProduct || !this.headerViewModel.activeProduct.studiesType) {\n return;\n }\n\n return this.headerViewModel.activeProduct.studiesType;\n }\n\n constructor(\n private headerViewModel: Pick<\n HeaderHamburgerViewModel,\n | \"baseHeaderLinks\"\n | \"desktopHamburgerPrimaryLinks\"\n | \"currentContext\"\n | \"activeCourse\"\n | \"activeProduct\"\n | \"config\"\n >,\n private url: IUrl\n ) {}\n}\n","import { computed, observable } from \"mobx\";\nimport { PaymentSidePanelViewModel } from \"../../../pages/shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { Popup } from \"../../../shared/components/popup/Popup\";\nimport { CourseStructure } from \"../../../shared/contentStructure/CourseStructure\";\nimport { IUrl } from \"../../../shared/models/Url\";\nimport { Product } from \"../../../shared/stores/Product\";\nimport { ConfigDto } from \"../../../types/config/dto/ConfigDto\";\nimport { SourceLink, StaticLink } from \"../HeaderViewModel\";\nimport { HamburgerMenuLinks } from \"../hamburgerMenu/HamburgerMenuLinks\";\n\ntype HeaderContext = \"productNest\" | \"product\" | \"course\";\n\nexport class HeaderHamburgerViewModel {\n @observable public mobileMenu = new Popup();\n\n @observable public desktopMenu = new Popup();\n\n @observable mobileHamburgerMenuLinks = new HamburgerMenuLinks(this, this.url);\n\n @computed get currentContext(): HeaderContext {\n if (!this.activeProduct) {\n return \"productNest\";\n }\n\n if (!this.activeCourse) {\n return \"product\";\n }\n\n return \"course\";\n }\n\n @computed private get activeCourseParams() {\n if (!this.activeCourse) {\n return;\n }\n\n return this.activeCourse.urlParams;\n }\n\n @computed private get productAuthorsHero() {\n return this.activeProduct?.productAuthorsHero;\n }\n\n @computed get studiesType() {\n return this.activeProduct?.studiesType;\n }\n\n @computed get desktopHamburgerPrimaryLinks(): SourceLink[] {\n const links: SourceLink[] = [];\n\n if (!this.activeProduct) {\n return links;\n }\n\n links.push({\n source: \"static\",\n id: \"products\",\n href: this.url.toProductNestPage(),\n translation: \"products\",\n });\n\n if (this.activeProduct.shouldShowProductArticleList) {\n links.push({\n source: \"static\",\n id: \"articles\",\n href: this.url.toProductArticleListPage(this.activeProduct.productParams),\n translation: \"articles\",\n });\n }\n\n if (this.productAuthorsHero) {\n links.push({\n source: \"dynamic\",\n id: \"meetTheAuthors\",\n title: this.productAuthorsHero.title,\n href: this.url.toAuthorsForProductPage(this.activeProduct.productParams),\n });\n }\n\n return links;\n }\n\n @computed get desktopHamburgerSecondaryLinks(): SourceLink[] {\n const links: SourceLink[] = [];\n\n if (!this.config.hideAboutUsInMenu) {\n links.push({\n source: \"dynamic\",\n id: \"aboutUs\",\n title: \"Om oss\",\n href: this.url.toAboutUsPage(),\n });\n }\n\n return links;\n }\n\n constructor(\n private url: IUrl,\n public baseHeaderLinks: SourceLink[],\n public goToSearchPage: (searchPhrase: string) => void,\n public config: ConfigDto,\n public searchLink?: StaticLink,\n public activeProduct?: Product,\n public activeCourse?: CourseStructure,\n public paymentSidePanelViewModel?: PaymentSidePanelViewModel | undefined\n ) {}\n}\n","import { action, computed, observable } from \"mobx\";\nimport { PaymentSidePanelViewModel } from \"../../pages/shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { ITibetClient } from \"../../shared/api/TibetClient\";\nimport { HrefType } from \"../../shared/components/link/Link\";\nimport { Popup } from \"../../shared/components/popup/Popup\";\nimport { IUrl } from \"../../shared/models/Url\";\nimport { IErrorService } from \"../../shared/services/ErrorService\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILowLevelNavigationService } from \"../../shared/services/NavigationService\";\nimport { ProductStore } from \"../../shared/stores/ProductStore\";\nimport { ConfigDto } from \"../../types/config/dto/ConfigDto\";\nimport { TranslationsDto } from \"../../types/translations/dto/TranslationsDto\";\nimport { HeaderHamburgerViewModel } from \"./headerHamburger/HeaderHamburgerViewModel\";\n\nexport interface BaseLink {\n id: string;\n href: string;\n type?: HrefType;\n target?: \"_blank\" | \"_self\";\n}\nexport type StaticLink = BaseLink & { translation: keyof TranslationsDto };\n\nexport type DynamicLink = BaseLink & {\n title: string;\n};\n\nexport type SourceLink = ({ source: \"static\" } & StaticLink) | ({ source: \"dynamic\" } & DynamicLink);\n\nexport type SearchLink = {\n toSearchPage: (searchPhrase?: string) => void;\n translation: keyof TranslationsDto;\n};\n\nexport type UserLink = StaticLink & { icon: { name: string; color: \"primary\" | \"secondary\" } };\n\nexport class HeaderViewModel {\n @observable public userLinksSheet = new Popup();\n\n @observable public userLinksDialog = new Popup();\n\n @observable pickCourseSidePanel = new Popup();\n\n @observable motif = window.motif;\n\n @computed get availableCoursesCount() {\n return this.activeProduct?.availableCourses.length || 0;\n }\n\n @computed get logoLink(): StaticLink {\n if (this.activeCourseParams) {\n return {\n id: \"toDashboard\",\n href: this.url.toDashboardPage(this.activeCourseParams),\n translation: \"goToDashboard\",\n };\n }\n\n if (this.activeProduct) {\n return {\n id: \"toProductPage\",\n href: this.url.toProductPage(this.activeProduct.productParams),\n translation: \"goToHomePage\",\n };\n }\n\n return { id: \"toProductNest\", href: this.url.toProductNestPage(), translation: \"goToProductOverview\" };\n }\n\n @computed get userLinks() {\n if (!this.isAuthenticated) {\n return;\n }\n // TODO: Remove link to BPN when content is merged to one site.\n const links: UserLink[] = [\n {\n href: this.motif == \"riktig\" ? this.url.toMyProfile() : this.url.toMyProfileBPN(),\n translation: \"myProfile\",\n id: \"myProfile\",\n type: HrefType.External,\n target: \"_blank\",\n icon: { name: \"user\", color: \"primary\" },\n },\n ];\n\n if (this.activeCourseParams) {\n links.push({\n id: \"bookmarksLink\",\n href: this.url.toBookmarksPage(this.activeCourseParams),\n translation: \"bookmarksLink\",\n icon: { name: \"bookmark\", color: \"primary\" },\n });\n }\n\n links.push({\n id: \"logOut\",\n href: this.url.toLogoutPage(),\n translation: \"logOut\",\n type: HrefType.External,\n icon: { name: \"log-out\", color: \"secondary\" },\n });\n\n return links;\n }\n\n @computed get searchLink(): StaticLink | undefined {\n if (!this.activeCourseParams) {\n return;\n }\n\n return {\n id: \"search\",\n href: this.url.toSearchPage(this.activeCourseParams),\n translation: \"search\",\n };\n }\n\n @computed get paymentSidePanel() {\n if (!this.activeProduct?.courseStructure) {\n return;\n }\n\n if (this.activeCourse?.hasFullAccess) {\n return;\n }\n\n return new PaymentSidePanelViewModel(\n this.app.tibetClient,\n this.activeProduct.courseStructure,\n this.errorService,\n this.app.navigation\n );\n }\n\n @computed get activeProduct() {\n return this.app.productStore.activeProduct;\n }\n\n @computed get activeCourse() {\n return this.activeProduct?.courseStructure;\n }\n\n @computed get isAuthenticated() {\n return this.app.isAuthenticated;\n }\n\n @computed private get activeCourseParams() {\n if (!this.activeCourse) {\n return;\n }\n\n return this.activeCourse.urlParams;\n }\n\n @computed get colorVersion() {\n return this.activeCourse?.color?.colorVersion;\n }\n\n @computed get headerHamburgerModel() {\n return new HeaderHamburgerViewModel(\n this.url,\n this.baseHeaderLinks,\n this.goToSearchPage,\n this.app.config,\n this.searchLink,\n this.activeProduct,\n this.activeCourse,\n this.paymentSidePanel\n );\n }\n\n @computed private get trainingGroundLink(): SourceLink | undefined {\n if (!this.activeCourse) {\n return;\n }\n\n const { trainingGroundHeaderInfo, urlParams } = this.activeCourse;\n\n if (!trainingGroundHeaderInfo.trainingGroundInfos || trainingGroundHeaderInfo.trainingGroundInfos.length === 0) {\n return;\n }\n\n if (!trainingGroundHeaderInfo.trainingGroundHeaderText) {\n return;\n }\n\n return {\n id: \"trainingGroundLink\",\n href: this.url.toTrainingGroundPage(urlParams, trainingGroundHeaderInfo.trainingGroundInfos[0].slug),\n title: trainingGroundHeaderInfo.trainingGroundHeaderText,\n source: \"dynamic\",\n };\n }\n\n @computed get baseHeaderLinks(): SourceLink[] {\n const links: SourceLink[] = [];\n\n if (!this.activeCourseParams) {\n return links;\n }\n\n links.push({\n id: \"dashboard\",\n href: this.url.toDashboardPage(this.activeCourseParams),\n translation: \"dashboard\",\n source: \"static\",\n });\n\n links.push({\n id: \"themesLink\",\n href: this.url.toThemesPage(this.activeCourseParams),\n translation: \"themesLink\",\n source: \"static\",\n });\n\n if (this.trainingGroundLink) {\n links.push(this.trainingGroundLink);\n }\n\n if (this.activeCourse?.previousExamsStructure) {\n links.push({\n id: \"previousExams\",\n href: this.url.toPreviousExamsPage(this.activeCourseParams),\n translation: \"previousExams\",\n source: \"static\",\n });\n }\n\n return links;\n }\n\n constructor(\n private url: IUrl,\n private errorService: IErrorService,\n private app: {\n isAuthenticated: boolean;\n productStore: ProductStore;\n navigation: ILowLevelNavigationService;\n tibetClient: ITibetClient;\n gtm: IGtmService;\n config: ConfigDto;\n },\n public handleLogin: (slug?: string) => Promise\n ) {}\n\n @action.bound\n goToSearchPage(searchPhrase: string) {\n if (!this.activeCourseParams) {\n return;\n }\n\n return this.app.navigation.goToSearch(searchPhrase, this.activeCourseParams);\n }\n}\n","import noop from \"lodash/noop\";\nimport { computed } from \"mobx\";\nimport { BackendApi } from \"../../shared/api/BackendApi\";\nimport { ITibetClient } from \"../../shared/api/TibetClient\";\nimport { IGtmService } from \"../../shared/services/GtmService\";\nimport { ILanguageService } from \"../../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../../shared/services/NavigationService\";\nimport { ProductStore } from \"../../shared/stores/ProductStore\";\nimport { UserStore } from \"../../shared/stores/UserStore\";\nimport { isDefined } from \"../../shared/typeUtils\";\nimport { ConfigDto } from \"../../types/config/dto/ConfigDto\";\nimport { App } from \"../App\";\nimport { GtmBasePage } from \"../GtmBasePage\";\n\nexport class ProductNestViewModel extends GtmBasePage {\n constructor(\n public config: ConfigDto,\n public languageService: ILanguageService,\n public productStore: ProductStore,\n public userStore: UserStore,\n public tibetClient: ITibetClient,\n public navigation: ILowLevelNavigationService,\n public backendApi: BackendApi,\n public gtm: IGtmService,\n public app: App\n ) {\n super(languageService, gtm, app);\n }\n\n @computed get title() {\n return this.config.productNestTitle;\n }\n\n @computed get description() {\n return this.config.productNestDescription;\n }\n\n @computed get listInfo() {\n return this.config.productNestListInfo.map(info => ({ id: info, value: info }));\n }\n\n @computed get products() {\n const productIdsInOrder = this.config.products.productIds;\n const { products } = this.productStore;\n\n return productIdsInOrder.map(productId => products.find(product => product.id === productId)).filter(isDefined);\n }\n\n protected async loadData() {\n noop();\n }\n\n public async onActivated() {\n if (this.app.childPage) {\n return super.onActivated();\n }\n\n if (this.productStore.isOnlyOneProduct) {\n this.app.activate();\n }\n\n this.productStore.deactivateProduct();\n }\n}\n","import { IRoutedPage } from \"react-mvvm\";\n\nexport interface IAppMotif {\n color?: string;\n}\n\nexport interface IAppMotifProvider {\n appMotif?: IAppMotif;\n}\n\nexport const getMotif = (page?: IRoutedPage): IAppMotif | undefined => {\n if (!page) {\n return;\n }\n\n const motifProvider = page as IAppMotifProvider;\n\n return { ...motifProvider.appMotif, ...getMotif(page.childPage) };\n};\n","import debounce from \"lodash/debounce\";\nimport { action, computed, observable, reaction } from \"mobx\";\nimport { IPage } from \"react-mvvm\";\nimport Scroll from \"react-scroll\";\nimport { CookiesConsentViewModel } from \"../layout/cookiesConsent/CookiesConsentViewModel\";\nimport { FooterViewModel } from \"../layout/footer/FooterViewModel\";\nimport { HeaderViewModel } from \"../layout/header/HeaderViewModel\";\nimport { BackendApi } from \"../shared/api/BackendApi\";\nimport { ITibetClient } from \"../shared/api/TibetClient\";\nimport { Url } from \"../shared/models/Url\";\nimport { IErrorService } from \"../shared/services/ErrorService\";\nimport { IGtmService } from \"../shared/services/GtmService\";\nimport { ILanguageService } from \"../shared/services/LanguageService\";\nimport { ILowLevelNavigationService } from \"../shared/services/NavigationService\";\nimport { PageNotFoundError } from \"../shared/services/errors/HttpError\";\nimport { ProductStore } from \"../shared/stores/ProductStore\";\nimport { UserStore } from \"../shared/stores/UserStore\";\nimport { ConfigDto } from \"../types/config/dto/ConfigDto\";\nimport { TranslatedPage } from \"./TranslatedPage\";\nimport { CourseViewModel } from \"./course/CourseViewModel\";\nimport { ProductViewModel } from \"./product/ProductViewModel\";\nimport { ProductNestViewModel } from \"./productNest/ProductNestViewModel\";\nimport { getMotif, IAppMotifProvider } from \"./shared/AppMotif\";\n\nexport interface AppQuery {\n product: string;\n}\n\nexport type DisplayedContent =\n | { _type: \"Page\"; page: IPage }\n | { _type: \"Error\"; error: Error }\n | { _type: \"ProductNest\"; vm: ProductNestViewModel };\n\nexport class App extends TranslatedPage implements IErrorService, IAppMotifProvider {\n @observable.ref public header: HeaderViewModel;\n\n @observable.ref public footer: FooterViewModel;\n\n @observable.ref public cookiesConsent: CookiesConsentViewModel;\n\n @observable splashError?: Error;\n\n @observable errorToastCounter: number;\n\n @observable productNest?: ProductNestViewModel;\n\n @computed get appMotif() {\n return getMotif(this.childPage);\n }\n\n @computed get content(): DisplayedContent | undefined {\n if (this.splashError) {\n return { _type: \"Error\", error: this.splashError };\n }\n\n if (this.childPage) {\n return { _type: \"Page\", page: this.childPage };\n }\n\n if (this.productNest) {\n // I believe that this is the time when we can reorganize routing and add product nest as first child of App not keep it parallel with Product\n this.productNest.activate();\n return { _type: \"ProductNest\", vm: this.productNest };\n }\n return undefined;\n }\n\n @computed get isAuthenticated() {\n return this.userStore.isAuthenticated;\n }\n\n // react-mvvm provides currently displayed page via childPage. The issue is that\n // when the page changes, sometimes it is first set to undefined and only then set to\n // the next child page (depending on how we redirect). In those cases, when we subscribe to\n // childPage, we get a sequence page_prev -> undefined -> page_current.\n // In order not to report on seeing product page on this undefined in between, we use\n // debouncing.\n //\n // We only report here product when there is no child page - this is how we detect Landing is displayed.\n // For the rest of the pages, the reporting is done in onActivated, and this should be\n // the default behavior for majority of the pages.\n debouncedLog = debounce((page: IPage | undefined) => {\n if (!page) {\n this.gtm.pushPageViewed();\n }\n }, 100);\n\n constructor(\n public config: ConfigDto,\n public languageService: ILanguageService,\n public productStore: ProductStore,\n public userStore: UserStore,\n public tibetClient: ITibetClient,\n public navigation: ILowLevelNavigationService,\n public backendApi: BackendApi,\n public gtm: IGtmService\n ) {\n super(languageService);\n this.header = new HeaderViewModel(Url, this, this, this.handleLogin);\n this.footer = new FooterViewModel(Url, this);\n this.cookiesConsent = new CookiesConsentViewModel(this.config, this.gtm);\n this.errorToastCounter = 0;\n reaction(() => this.childPage, this.debouncedLog, {\n fireImmediately: true,\n });\n reaction(\n () => this.isAuthenticated,\n isAuthenticated => this.gtm.pushUserStatusChanged(isAuthenticated),\n { fireImmediately: true }\n );\n\n reaction(\n () => this.childPage,\n _ => {\n this.productStore.activeProduct?.resetActiveCourseStructure();\n }\n );\n }\n\n async onLanguageChange() {\n this.header.headerHamburgerModel.mobileMenu.close();\n this.header.headerHamburgerModel.desktopMenu.close();\n this.cookiesConsent.cookiesDetailsModal.close();\n this.initProductNest();\n }\n\n @action\n showErrorSplash(error: Error) {\n this.splashError = error;\n }\n\n @action\n showErrorToast() {\n const next = this.errorToastCounter + 1;\n this.errorToastCounter = Number.isSafeInteger(next) ? next : 1;\n }\n\n @action.bound\n async handleLogin(courseSlug?: string) {\n const activeProduct = this.productStore.activeProduct;\n\n if (!activeProduct) {\n this.gtm.pushLoginStarted(\"Started Login process\");\n this.navigation.goToTibetLogin(courseSlug);\n return;\n } else {\n if (courseSlug === undefined) {\n this.navigation.goToTibetLogin(Url.toProductPage(activeProduct.productParams));\n return;\n }\n\n this.gtm.pushLoginStarted(\"Started Login Process\");\n this.navigation.goToTibetLogin(Url.toCoursePage({ ...activeProduct.productParams, courseSlug }));\n }\n }\n\n @action.bound\n async handleCourseEnter(courseSlug?: string) {\n const activeProduct = this.productStore.activeProduct;\n\n if (!activeProduct) {\n return;\n }\n\n if (courseSlug === undefined) {\n this.navigation.redirectTo(Url.toProductPage(activeProduct.productParams));\n return;\n }\n\n this.navigation.redirectTo(Url.toDashboardPage({ ...activeProduct.productParams, courseSlug }));\n }\n\n async onInvalidRoute() {\n this.showErrorSplash(new PageNotFoundError(\"Invalid route\"));\n }\n\n handleLocationChange() {\n this.splashError = undefined;\n this.header.headerHamburgerModel.mobileMenu.close();\n this.header.headerHamburgerModel.desktopMenu.close();\n this.header.userLinksSheet.close();\n this.cookiesConsent.cookiesDetailsModal.close();\n setTimeout(Scroll.animateScroll.scrollToTop, 0); // It's a hack!\n }\n\n initProductNest() {\n this.productNest = new ProductNestViewModel(\n this.config,\n this.languageService,\n this.productStore,\n this.userStore,\n this.tibetClient,\n this.navigation,\n this.backendApi,\n this.gtm,\n this\n );\n }\n\n validateNextChildOfPage() {\n // if child is course and do not have next child render error page eg. /math/\n const { activeProduct } = this.productStore;\n if (\n activeProduct &&\n this.childPage instanceof CourseViewModel &&\n !this.childPage.childPage &&\n !this.navigation.isRoot(activeProduct.slug, activeProduct.courseStructure?.slug)\n ) {\n this.showErrorSplash(new PageNotFoundError(\"Invalid next child page\"));\n }\n }\n\n // Loading happens before activation, because onActivated may not be called if the url is malformed\n async beforeActivated() {\n if (!this.productNest) {\n this.initProductNest();\n }\n\n this.validateNextChildOfPage();\n }\n\n // TODO: I think that this function in unreachable (we are resetting the product on Product Nest)\n async onActivated() {\n const product = this.productStore.activeProduct;\n // temporary cause for now productNestVM force to navigate to /glu HARDCODED!\n // if (this.productStore.isOnlyOneProduct && product && this.navigation.isRoot(product.slug)) {\n if (product && this.navigation.isRoot(product.slug)) {\n this.navigation.pushUrlWithoutRedirect(product.slug);\n this.showChildPage(\n new ProductViewModel(\n { productSlug: product.slug },\n this.config,\n this.productStore,\n this.userStore,\n this.navigation,\n this.gtm,\n this.tibetClient,\n this.backendApi,\n this.languageService,\n this,\n this.handleCourseEnter,\n this.handleLogin\n )\n );\n }\n await super.onActivated();\n }\n}\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { MouseEventHandler } from \"react\";\nimport { Command } from \"react-mvvm\";\nimport \"./Button.css\";\n\nexport type ButtonType = \"solid\" | \"outline\" | \"circle\" | \"clear\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"tertiary\";\n\nexport type ButtonSize = \"xsmall\" | \"small\" | \"medium\" | \"large\" | \"xlarge\";\n\nexport type HtmlButtonType = \"button\" | \"submit\" | \"reset\";\n\ninterface DefaultButtonProps {\n disabled?: boolean;\n onClick?: MouseEventHandler;\n type?: ButtonType;\n variant?: ButtonVariant;\n htmltype?: HtmlButtonType;\n size?: ButtonSize;\n className?: string;\n tabIndex?: number;\n children?: React.ReactNode;\n style?: React.CSSProperties;\n}\n\nexport type ButtonProps = DefaultButtonProps &\n Pick<\n React.ButtonHTMLAttributes,\n \"aria-selected\" | \"aria-controls\" | \"aria-expanded\" | \"role\" | \"aria-haspopup\" | \"aria-describedby\"\n >;\n\ninterface CommandButtonProps extends Omit {\n command: Command;\n}\n\nexport const Button = React.forwardRef((props, ref) => {\n const {\n children,\n onClick,\n type = \"solid\",\n variant = \"primary\",\n htmltype = \"button\",\n size = \"large\",\n className,\n disabled,\n tabIndex,\n style,\n } = props;\n return (\n \n {children}\n \n );\n});\n\nexport const CommandButton = observer(\n React.forwardRef((props, ref) => {\n const { command, tabIndex } = props;\n return (\n ) => {\n e.preventDefault();\n e.stopPropagation();\n return command.execute();\n }}\n tabIndex={tabIndex}\n disabled={!command.isEnabled}\n />\n );\n })\n);\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\n\ninterface ListProps {\n items: ReadonlyArray;\n renderItem: (item: T, index: number) => React.ReactNode;\n empty?: React.ReactNode;\n className?: string;\n singleItemClassName?: string;\n id?: string;\n}\n\nexport const List = observer((props: ListProps) => {\n const { items, renderItem, empty, className, id, singleItemClassName } = props;\n if (items.length <= 0) {\n return empty !== undefined ? <>{empty} : null;\n }\n\n return (\n

    \n {items.map((item, index) => (\n
  • \n {renderItem(item, index)}\n
  • \n ))}\n
\n );\n});\n","import * as React from \"react\";\n\ninterface ScrollLockProps {\n isLocked: boolean;\n}\n\nexport const ScrollLock = (props: ScrollLockProps) => {\n const { isLocked } = props;\n\n const scrollPosition = React.useRef();\n\n const setScrollPosition = (scroll?: number) => {\n scrollPosition.current = scroll;\n };\n\n const getScrollPosition = () => {\n return scrollPosition.current;\n };\n\n const unlockScroll = () => {\n const scrollPositionValue = getScrollPosition();\n if (scrollPositionValue !== undefined) {\n const { body } = document;\n body.classList.remove(\"scrollLocked\");\n body.style.top = \"\";\n window.scrollTo(0, scrollPositionValue);\n setScrollPosition(undefined);\n }\n };\n\n React.useEffect(() => {\n return () => unlockScroll();\n }, []);\n\n React.useEffect(() => {\n const { body } = document;\n const scrollY = window.scrollY || window.pageYOffset;\n\n if (isLocked) {\n body.classList.add(\"scrollLocked\");\n body.style.top = `-${scrollY}px`;\n setScrollPosition(scrollY);\n } else {\n unlockScroll();\n }\n }, [isLocked]);\n\n return <>;\n};\n","import { createContext, useContext } from \"react\";\nimport { TranslationsDto } from \"../../types/translations/dto/TranslationsDto\";\n\ninterface StaticTranslationContext {\n translations: TranslationsDto;\n}\n\nexport const staticTranslationContext = createContext(undefined);\n\nexport const useTranslations = () => {\n const ctx = useContext(staticTranslationContext);\n\n if (!ctx) {\n throw new Error(\"Component beyond StaticTranslationContext!\");\n }\n\n return ctx.translations;\n};\n","import React from \"react\";\n\nexport const useDelayedDisplay = (shouldBeDisplay: boolean) => {\n const [isDisplayed, setIsDisplayed] = React.useState(shouldBeDisplay);\n React.useEffect(() => {\n shouldBeDisplay && setIsDisplayed(true);\n }, [shouldBeDisplay]);\n\n const hide = () => {\n !shouldBeDisplay && setIsDisplayed(false);\n };\n\n return [isDisplayed, hide] as const;\n};\n","import { useSpring } from \"react-spring\";\nimport { useDelayedDisplay } from \"../../hooks/useDelayedDisplay\";\n\nexport const usePopup = (isOpen: boolean) => {\n const [isDisplayed, hide] = useDelayedDisplay(isOpen);\n\n const backgroundStyles = useSpring({\n opacity: isOpen ? 1 : 0,\n onResolve: () => hide(),\n });\n\n return { isDisplayed, backgroundStyles };\n};\n","import React from \"react\";\n\nexport type Motif = \"riktig\" | \"degrees37\";\n\nconst DEFAULT_MOTIF: Motif = \"riktig\";\n\ninterface MotifContext {\n motif: Motif;\n}\n\nconst getMotif = (): Motif => {\n const { motif = DEFAULT_MOTIF } = window;\n\n if (motif !== \"riktig\" && motif !== \"degrees37\") {\n throw new Error(`${motif} is not a correct motif`);\n }\n\n return motif;\n};\n\nexport const motifContext = React.createContext({\n motif: DEFAULT_MOTIF,\n});\n\nexport const useMotif = () => React.useContext(motifContext).motif;\n\nexport const MotifProvider = ({ children }: { children: React.ReactNode }) => {\n const { Provider } = motifContext;\n return {children};\n};\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { useMotif } from \"../../contexts/MotifContext\";\nimport { getBuildHash } from \"./getBuildHash\";\n\nexport const SvgIcon: React.FC<{\n iconName: string;\n alt?: string;\n className?: string;\n}> = ({ iconName, alt = \"\", className }) => {\n const buildHash = getBuildHash();\n const formattedBuildHash = buildHash ? `.${buildHash}` : \"\";\n\n return (\n \n \n \n \n \n );\n};\n\nexport const MotifSvgIcon: React.FC<{\n iconName: string;\n alt?: string;\n className?: string;\n}> = ({ iconName, ...restProps }) => {\n const motif = useMotif();\n return ;\n};\n","export const getBuildHash = (): string | undefined => {\n return buildHash;\n};\n","import classNames from \"classnames\";\nimport FocusTrap from \"focus-trap-react\";\nimport * as React from \"react\";\nimport { animated, useSpring } from \"react-spring\";\nimport { ScrollLock } from \"../../../pages/shared/scrollLock/ScrollLock\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { Button } from \"../button/Button\";\nimport { usePopup } from \"../popup/usePopup\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\n\ninterface ModalProps {\n children: React.ReactNode;\n isOpen: boolean;\n onClose: () => void;\n size?: \"small\" | \"default\";\n className?: string;\n}\n\nexport const Modal: React.FC = props => {\n const { children, isOpen, onClose, size = \"default\", className } = props;\n const { isDisplayed, backgroundStyles } = usePopup(isOpen);\n const translations = useTranslations();\n\n const modalInnerStyles = useSpring({\n from: { top: \"0%\", opacity: 0 },\n top: isOpen ? \"0%\" : \"100%\",\n opacity: isOpen ? 1 : 0,\n });\n\n if (!isDisplayed) {\n return null;\n }\n\n return (\n \n
\n \n \n \n \n
\n
\n \n
\n
{children}
\n
\n \n
\n
\n
\n
\n
\n );\n};\n","import classNames from \"classnames\";\nimport RcSwitch from \"rc-switch\";\nimport * as React from \"react\";\nimport \"rc-switch/assets/index.css\";\n\nexport type SwitchType = \"light\" | \"dark\";\n\nexport interface SwitchProps\n extends Pick, \"aria-labelledby\" | \"aria-describedby\"> {\n checked?: boolean;\n disabled?: boolean;\n type?: SwitchType;\n onChange?: (value: boolean) => void;\n className?: string;\n}\n\nexport const Switch: React.FC = props => {\n const { onChange, checked = false, type = \"dark\", disabled = false, className, ...buttonProps } = props;\n return (\n \n );\n};\n","import React from \"react\";\n\nexport type Level = 1 | 2 | 3 | 4 | 5;\n\nexport interface TitleProps {\n children: React.ReactNode;\n id?: string;\n className?: string;\n level: Level;\n}\n\nexport const Title = (props: TitleProps) => {\n const { children, id, level, className } = props;\n const CustomTag = (level > 5 ? \"p\" : `h${level}`) as keyof JSX.IntrinsicElements;\n\n return (\n \n {children}\n \n );\n};\n","import { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { animated, config, useSpring } from \"react-spring\";\nimport { Button } from \"../../shared/components/button/Button\";\nimport { List } from \"../../shared/components/list/List\";\nimport { Modal } from \"../../shared/components/modal/Modal\";\nimport { Switch } from \"../../shared/components/switch/Switch\";\nimport { Title } from \"../../shared/components/title/Title\";\nimport { useMotif } from \"../../shared/contexts/MotifContext\";\nimport { useTranslations } from \"../../shared/contexts/StaticTranslationContext\";\nimport { useDelayedDisplay } from \"../../shared/hooks/useDelayedDisplay\";\nimport { AnalysisCookieName, CookiesConsentViewModel, NecessaryCookieName } from \"./CookiesConsentViewModel\";\n\nexport interface CookiesConsentProps {\n model: CookiesConsentViewModel;\n}\n\nexport const CookiesConsent: React.FC = observer(({ model }) => {\n const {\n consentText,\n privacyPolicyArticle,\n acceptCookies,\n toggleCookie,\n cookiesDetailsModal,\n shouldCookiesConsentBeOpen,\n selectedCookies,\n } = model;\n\n const translations = useTranslations();\n const [isDisplayed, hide] = useDelayedDisplay(shouldCookiesConsentBeOpen);\n const cookiesConsentStyles = useSpring({\n from: { transform: `translateY(100%)` },\n transform: shouldCookiesConsentBeOpen ? `translateY(0%)` : `translateY(100%)`,\n onResolve: hide,\n config: config.stiff,\n });\n\n const cookiesConsentTitleId = \"CookiesConsent__title\";\n const cookiesConsentDescriptionId = \"CookiesConsent__message\";\n const motif = useMotif();\n\n const cookies = [\n {\n id: NecessaryCookieName,\n cookieName: NecessaryCookieName,\n title: translations.necessaryCookiesTitle,\n description: translations.necessaryCookiesDescription,\n mandatory: true,\n },\n {\n id: AnalysisCookieName,\n cookieName: AnalysisCookieName,\n title: translations.analysisCookiesTitle,\n description: translations.analysisCookiesDescription,\n mandatory: false,\n },\n ];\n\n const acceptAllCookies = () => {\n acceptCookies(cookies.map(cookie => cookie.cookieName));\n };\n\n if (!isDisplayed) {\n return null;\n }\n\n return (\n
\n \n
\n

\n {translations.cookieNotice}\n

\n

\n {consentText}\n  \n \n Les mer\n \n

\n
\n \n {translations.editCookieSettings}\n \n \n
\n
\n \n \n
\n \n {translations.cookiesConsentSettings}\n \n

{translations.cookiesDescription}

\n {privacyPolicyArticle && (\n
\n \n Gyldendals bruk av informasjonskapsler\n \n
\n )}\n {\n const cookieTitleId = `Title__${cookie.id}`;\n const cookieDescriptionId = `Description__${cookie.id}`;\n\n return (\n
\n
\n \n {cookie.title}\n \n
\n toggleCookie(cookie.cookieName, value)}\n aria-labelledby={cookieTitleId}\n aria-describedby={cookieDescriptionId}\n />\n
\n
\n

\n {cookie.description}\n

\n
\n );\n }}\n />\n {\n acceptCookies(selectedCookies);\n cookiesDetailsModal.close();\n }}\n className=\"CookiesConsent__submitButton\"\n >\n {translations.submitUpdatedCookies}\n \n
\n
\n
\n );\n});\n","import classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport ReactCollapse from \"react-css-collapse\";\n\ninterface CollapseProps {\n id: string;\n children: ReactNode;\n isOpen: boolean;\n className?: string;\n onRest?: () => void;\n}\n\nexport const Collapse: React.FC = ({ id, isOpen, className, children, onRest }) => {\n return (\n \n
{children}
\n
\n );\n};\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { Button } from \"../button/Button\";\nimport { Collapse } from \"../collapse/Collapse\";\nimport { Popup } from \"../popup/Popup\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\n\ninterface AccordionProps {\n model: Popup;\n title: string;\n content: React.ReactNode;\n variant: \"light\" | \"dark\";\n}\n\nexport const Accordion: React.FC = observer(props => {\n const { content, title, model, variant } = props;\n\n return (\n \n \n {title}\n {model.isOpen ? (\n \n ) : (\n \n )}\n \n \n {content}\n \n \n );\n});\n","import * as PopperJS from \"@popperjs/core\";\nimport classNames from \"classnames\";\nimport isString from \"lodash/isString\";\nimport uniqueId from \"lodash/uniqueId\";\nimport React, { AriaAttributes } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { usePopperTooltip } from \"react-popper-tooltip\";\nimport { animated, useTransition } from \"react-spring\";\nimport \"react-popper-tooltip/dist/styles.css\";\n\ninterface TriggerElementProps {\n children: React.ReactNode;\n setTriggerRef: React.Dispatch>;\n}\n\nconst TriggerElement = (props: TriggerElementProps & Pick) => {\n const { children, setTriggerRef } = props;\n // eslint-disable-next-line react/destructuring-assignment\n const ariaDescribedby = props[\"aria-describedby\"];\n const getTriggerProps = (defaultProps = {}) => ({\n ...defaultProps,\n \"aria-describedby\": ariaDescribedby,\n ref: setTriggerRef,\n });\n const shouldWrap = isString(children);\n\n if (shouldWrap) {\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n \n {children}\n \n );\n }\n\n const child = React.Children.only(children) as React.ReactElement & {\n ref?: React.Ref;\n };\n return React.cloneElement(child, { ...getTriggerProps(child.props) });\n};\n\ninterface TooltipProps {\n label: React.ReactNode;\n children: React.ReactNode;\n placement?: PopperJS.Placement;\n}\n\nexport const Tooltip: React.FC = props => {\n const { label, children, placement } = props;\n\n const [controlledVisible, setControlledVisible] = React.useState(false);\n const tooltipId = React.useRef(uniqueId(\"tooltip-\"));\n\n const { getArrowProps, getTooltipProps, setTooltipRef, setTriggerRef } = usePopperTooltip({\n visible: controlledVisible,\n onVisibleChange: setControlledVisible,\n trigger: [\"hover\", \"focus\"],\n placement,\n offset: [0, 8],\n });\n\n const transitions = useTransition(controlledVisible, {\n from: { opacity: 0 },\n enter: { opacity: 0.8 },\n leave: { opacity: 0 },\n });\n\n const tooltipProps = getTooltipProps({\n className: classNames(\"Tooltip__container\", \"tooltip-container\"),\n });\n\n return (\n <>\n \n {children}\n \n {transitions(({ opacity }, isVisible, { key }) => {\n if (!isVisible) {\n return null;\n }\n\n return ReactDOM.createPortal(\n \n {label}\n
\n ,\n document.body\n );\n })}\n \n );\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport imageUrlBuilder from \"@sanity/image-url\";\nimport { SanityImageSource } from \"@sanity/image-url/lib/types/types\";\nimport { ImageCropDto } from \"../../../types/shared/dto/ImageCropDto\";\nimport { ImageHotspotDto } from \"../../../types/shared/dto/ImageHotspotDto\";\nimport { Motif } from \"../../contexts/MotifContext\";\n\nconst builder = imageUrlBuilder({\n projectId: window.sanityProjectId,\n dataset: \"production\",\n});\n\nconst urlFor = (source: SanityImageSource) => {\n return builder.image(source);\n};\n\nexport const buildUrl = (\n url: string,\n hotspot: ImageHotspotDto,\n crop: ImageCropDto,\n width?: number,\n height?: number\n): string => {\n if (crop && hotspot && width && height) {\n const { left, top, bottom, right } = crop;\n const cropLeft = Math.round(left * width);\n const cropTop = Math.round(top * height);\n const cropValues = {\n left: cropLeft,\n top: cropTop,\n width: Math.round(width - right * width - cropLeft),\n height: Math.round(height - bottom * height - cropTop),\n };\n\n return urlFor(url)\n .dpr(1)\n .fit(\"crop\")\n .focalPoint(hotspot.x, hotspot.y)\n .rect(cropValues.left, cropValues.top, cropValues.width, cropValues.height)\n .url();\n }\n\n return urlFor(url).dpr(1).fit(\"crop\").url();\n};\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport { ImageCropDto } from \"../../../types/shared/dto/ImageCropDto\";\nimport { ImageHotspotDto } from \"../../../types/shared/dto/ImageHotspotDto\";\nimport { useMotif } from \"../../contexts/MotifContext\";\nimport { Button } from \"../button/Button\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\nimport { Tooltip } from \"../tooltip/Tooltip\";\nimport { imageParamsMock } from \"./Image.mock\";\nimport { buildUrl } from \"./ImageBuilder\";\n\nexport type Placement = \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\";\n\ninterface ImageCreditProps {\n text: string;\n placement?: Placement;\n}\n\nconst placementToClassNameMap: { [placement in Placement | \"default\"]: string } = {\n default: \"ImageCredit--bottomEnd\",\n \"top-start\": \"ImageCredit--topStart\",\n \"top-end\": \"ImageCredit--topEnd\",\n \"bottom-start\": \"ImageCredit--bottomStart\",\n \"bottom-end\": \"ImageCredit--bottomEnd\",\n};\n\nconst ImageCredit: React.FC = props => {\n const { text, placement } = props;\n\n return (\n
\n \n \n \n
\n );\n};\n\ntype AspectRatio = \"3/2\" | \"4/3\" | \"3/4\" | \"1/1\" | \"9/16\" | \"16/9\";\n\nconst aspectRatioToClassNameMap: { [aspectRatio in AspectRatio]: string } = {\n \"3/2\": \"ImageContainer--3x2\",\n \"4/3\": \"ImageContainer--4x3\",\n \"3/4\": \"ImageContainer--3x4\",\n \"1/1\": \"ImageContainer--1x1\",\n \"9/16\": \"ImageContainer--9x16\",\n \"16/9\": \"ImageContainer--16x9\",\n};\n\ninterface ImageContainerProps {\n children: React.ReactNode;\n aspectRatio: AspectRatio;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst ImageContainer: React.FC = props => {\n const { children, style, className, aspectRatio } = props;\n\n return (\n
\n {children}\n
\n );\n};\n\ninterface ImageProps {\n url: string;\n alt?: string;\n className?: string;\n}\n\ninterface SanityImageProps {\n url: string;\n alt?: string;\n className?: string;\n hotspot: ImageHotspotDto;\n crop: ImageCropDto;\n width: number;\n height: number;\n}\n\ninterface ImageComposition extends React.ForwardRefExoticComponent> {\n Container: typeof ImageContainer;\n Credit: typeof ImageCredit;\n}\n\n// Use this component for internal images (our svg's or pngs that are present in the project directory)\nexport const Image = React.forwardRef(({ url, alt = \"\", className }, ref) => {\n return {alt};\n}) as ImageComposition;\n\n// Use this component for images that come from Sanity. When using for internal images the app will breake cause of `buildUrl` from Sanity\nexport const SanityImage = React.forwardRef(\n ({ url, alt = \"\", className, crop, hotspot, height, width }, ref) => {\n if (!url) {\n return {alt};\n }\n\n return {alt};\n }\n) as ImageComposition;\n\nexport interface MotifImageProps {\n fileName: `${string}.${string}`;\n alt?: string;\n}\n\nexport const MotifImage: React.FC<{\n image: MotifImageProps;\n className?: string;\n maxWidth?: string;\n}> = ({ image: { fileName, ...restImageProps }, ...restProps }) => {\n const importedIconUrlRef = React.useRef(\"\");\n const [loading, setLoading] = React.useState(true);\n const motif = useMotif();\n\n React.useEffect(() => {\n setLoading(true);\n (async () => {\n try {\n importedIconUrlRef.current = (await import(`../../../static/images/${motif}/${fileName}`)).default;\n } finally {\n setLoading(false);\n }\n })();\n }, [fileName]);\n\n if (loading || !importedIconUrlRef) {\n return null;\n }\n\n const { current } = importedIconUrlRef;\n return {restImageProps.alt};\n};\n\nImage.Container = ImageContainer;\nImage.Credit = ImageCredit;\n","import React from \"react\";\nimport { ReactSVG } from \"react-svg\";\nimport { DynamicLink, StaticLink } from \"../../../layout/header/HeaderViewModel\";\nimport gyldendalLogoUrl from \"../../../static/images/iconsAnimated/logo-desktop.svg\";\nimport { CourseColorVersionDto } from \"../../../types/courses/dto/CourseColorVersionDto\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { MotifImage } from \"../image/Image\";\nimport { Link } from \"../link/Link\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\n\ninterface LogoSectionProps {\n link: StaticLink;\n colorVersion?: CourseColorVersionDto;\n studiesTypeLink?: DynamicLink;\n}\n\nexport const LogoSection: React.FC = props => {\n const { link, colorVersion, studiesTypeLink } = props;\n const translations = useTranslations();\n\n const logoUrl = colorVersion === \"Light\" ? \"icons/logo-light.svg\" : \"icons/logo.svg\";\n const gyldendalLogoClassName =\n colorVersion === \"Light\"\n ? \"LogoSection__gyldendalLogoWrapper LogoSection__gyldendalLogoWrapper--white\"\n : \"LogoSection__gyldendalLogoWrapper\";\n const studiesTypeClassName =\n colorVersion === \"Light\" ? \"LogoSection__studiesType LogoSection__studiesType--white\" : \"LogoSection__studiesType\";\n\n return (\n
\n \n \n \n {studiesTypeLink ? (\n <>\n
\n \n {studiesTypeLink.title}\n \n \n ) : (\n <>\n
\n
\n \n \n
\n \n )}\n
\n );\n};\n","// This code was generated by a Reinforced.Typings tool. \n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport const enum CourseColorVersionDto { \n\tNone = \"None\", \n\tLight = \"Light\", \n\tDark = \"Dark\"\n}\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\n\nconst CURRENT_YEAR = new Date().getFullYear();\n\nexport const ProductCopyright: React.FC = observer(() => {\n const translations = useTranslations();\n\n return (\n
\n \n © {`${CURRENT_YEAR} ${translations.siteName} ${translations.allRightsReserved}`}\n \n
\n );\n});\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { ReactSVG } from \"react-svg\";\nimport { Accordion } from \"../../shared/components/accordion/AccordionView\";\nimport { HrefType, Link } from \"../../shared/components/link/Link\";\nimport { List } from \"../../shared/components/list/List\";\nimport { LogoSection } from \"../../shared/components/logoSection/LogoSection\";\nimport { ProductCopyright } from \"../../shared/components/productCopyright/ProductCopyright\";\nimport { Title } from \"../../shared/components/title/Title\";\nimport { useTranslations } from \"../../shared/contexts/StaticTranslationContext\";\nimport gyldendalLogoUrl from \"../../static/images/iconsAnimated/logo-desktop.svg\";\nimport { CourseColorVersionDto } from \"../../types/courses/dto/CourseColorVersionDto\";\nimport { RouteConfiguration } from \"../../types/platform/infrastructure/RouteConfiguration\";\nimport { SourceLink } from \"../header/HeaderViewModel\";\nimport { FooterViewModel } from \"./FooterViewModel\";\n\ninterface FooterProps {\n model: FooterViewModel;\n}\n\nexport const FooterView: React.FC = observer((props: FooterProps) => {\n const { model } = props;\n const translations = useTranslations();\n const convertLinkBySource = (link: SourceLink) =>\n link.source === \"static\" ? translations[link.translation] : link.title;\n\n return (\n
\n
\n
\n \n
\n \n {\n return (\n <>\n
\n
{translations[section.translation]}
\n
\n
\n (\n \n {convertLinkBySource(link)}\n \n )}\n />\n }\n title={translations[section.translation]}\n variant=\"light\"\n />\n
\n (\n \n {convertLinkBySource(link)}\n \n )}\n />\n \n );\n }}\n />\n {model.feedbackButtonLink && (\n <>\n
\n
\n \n {translations.helpUsImprove}\n \n

{translations.whatDoYouThinkAboutThisService}

\n \n {translations.sayYourOpinion}\n \n
\n \n )}\n
\n
\n {model.shouldShowGyldendalLogo && (\n
\n {translations.weArePartOf}\n \n \n \n
\n )}\n
\n \n \n \n {model.termsAndConditionsPageLink && (\n <>\n
\n \n {translations[model.termsAndConditionsPageLink.translation]}\n \n \n )}\n
\n
\n
\n
\n );\n});\n","import React from \"react\";\n\ninterface RadioGroupContextProps {\n name: string;\n onChange: (id: string) => void;\n value?: string;\n disabled?: boolean;\n}\n\nconst radioGroupContext = React.createContext({\n name: \"\",\n onChange: () => {},\n});\n\nexport const useRadioGroupContext = () => {\n const context = React.useContext(radioGroupContext);\n if (!context) {\n throw new Error(`Radio compound components cannot be rendered outside the RadioGroup component`);\n }\n return context;\n};\n\nexport const RadioGroupProvider = ({\n children,\n name,\n onChange,\n value,\n disabled,\n}: {\n children: React.ReactNode;\n name: string;\n onChange: (id: string) => void;\n value?: string;\n disabled?: boolean;\n}) => {\n const { Provider } = radioGroupContext;\n\n return {children};\n};\n","import React from \"react\";\nimport { RadioGroupProvider } from \"./RadioGroupContext\";\n\ninterface RadioGroupProps {\n name: string;\n onChange?: (value: string) => void;\n value?: string;\n disabled?: boolean;\n children: React.ReactNode;\n}\n\nexport const RadioGroup: React.FC = ({ name, onChange, value, disabled, children }) => {\n const [currentValue, setCurrentValue] = React.useState(value);\n\n React.useEffect(() => {\n setCurrentValue(value);\n }, [value]);\n\n const handleOnChange = (checkedId: string) => {\n setCurrentValue(checkedId);\n onChange && onChange(checkedId);\n };\n\n return (\n \n <>{children}\n \n );\n};\n","import classNames from \"classnames\";\nimport FocusTrap from \"focus-trap-react\";\nimport * as React from \"react\";\nimport { animated, useSpring } from \"react-spring\";\nimport { ScrollLock } from \"../../../pages/shared/scrollLock/ScrollLock\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { Button } from \"../button/Button\";\nimport { usePopup } from \"../popup/usePopup\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\n\ninterface SidePanelProps {\n children: React.ReactNode;\n isOpen: boolean;\n onClose: () => void;\n type?: \"rounded\" | \"notRounded\";\n variant?: \"wrapper\" | \"fullWidth\";\n className?: string;\n}\n\nexport const SidePanel: React.FC = ({\n children,\n isOpen,\n onClose,\n className,\n variant = \"wrapper\",\n type = \"rounded\",\n}) => {\n const translations = useTranslations();\n const { isDisplayed, backgroundStyles } = usePopup(isOpen);\n\n const sidePanelInnerStyles = useSpring({\n from: { left: \"0%\", top: \"0%\" },\n left: isOpen ? \"0%\" : \"100%\",\n top: isOpen ? \"0%\" : \"100%\",\n });\n\n if (!isDisplayed) {\n return null;\n }\n return (\n \n
\n \n \n \n \n \n \n
\n {children}\n {variant === \"fullWidth\" && (\n \n \n {translations.close}\n \n )}\n \n \n {translations.close}\n \n
\n \n
\n
\n \n );\n};\n","export const getInitials = (name: string) => {\n const nameSplitted = name.split(\" \");\n\n if (nameSplitted.length === 2) {\n return `${nameSplitted[0].charAt(0)}${nameSplitted[1].charAt(0)}`.toUpperCase();\n }\n\n return name.slice(0, 2).toUpperCase();\n};\n\n/**\n * Apply variables to string with {} placeholders\n * ex. format(`{0} is {1}`, [\"price\", 30])\n */\nconst format = (template: string, values: (string | number)[]) => {\n return template.replace(/{(\\d+)}/g, (match, index) => {\n return typeof values[index] !== \"undefined\" ? values[index].toString() : match;\n });\n};\n\nexport const FormattedText = (text?: string, values?: (string | number)[]) =>\n text && values && values.length > 0 ? format(text, values) : text;\n\nexport const alphabet = \"abcdefghijklmnopqrstuvwxyz\";\n\nexport const splitWords = (words: string[], conjunction: string) => {\n if (words.length === 1) {\n return words[0];\n }\n\n const lastWord = words.pop();\n\n if (!lastWord) {\n throw new Error(\"Last element of array should be specified\");\n }\n\n const formattedText = FormattedText(conjunction, [words.join(\", \"), lastWord]);\n\n if (!formattedText) {\n throw new Error(\"Formatted text should be specified\");\n }\n\n return formattedText;\n};\n\nexport const useSingularOrPluralForm = (count: number, forms: [singular: string, plural: string]) => {\n const [singular, plural] = forms;\n switch (count) {\n case 0:\n return undefined;\n case 1:\n return FormattedText(singular, [count]);\n default:\n return FormattedText(plural, [count]);\n }\n};\n","import classNames from \"classnames\";\nimport uniqueId from \"lodash/uniqueId\";\nimport * as React from \"react\";\nimport { useRadioGroupContext } from \"./RadioGroupContext\";\n\nexport interface RadioProps {\n id: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport const Radio: React.FC = ({ id, children, className }) => {\n const { name, value, onChange, disabled } = useRadioGroupContext();\n const checked = id === value;\n const htmlId = uniqueId(\"Radio__\");\n\n return (\n
\n onChange(id)}\n checked={checked}\n value={value}\n disabled={disabled}\n />\n \n
\n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { Radio } from \"../../../../shared/components/radio/Radio\";\nimport { useRadioGroupContext } from \"../../../../shared/components/radio/RadioGroupContext\";\nimport { useTranslations } from \"../../../../shared/contexts/StaticTranslationContext\";\nimport { FormattedText } from \"../../../../shared/textUtils\";\nimport { PriceOptionDto } from \"../../../../types/courses/dto/PriceOptionDto\";\n\ninterface BuyCourseItemProps {\n option: PriceOptionDto;\n}\n\nexport const BuyCourseItem: React.FC = props => {\n const {\n option: { id, displayName, nokPrice, regularNokPrice },\n } = props;\n const translations = useTranslations();\n const { value, onChange, disabled } = useRadioGroupContext();\n const isOptionSelected = id === value;\n const isPromotional = !!regularNokPrice;\n const promotionValue = isPromotional ? Math.round((regularNokPrice - nokPrice) / (regularNokPrice / 100)) : undefined;\n\n const onContainerClick = () => {\n if (disabled) {\n return;\n }\n\n onChange(id);\n };\n\n return (\n \n
\n
\n {displayName}\n
\n

\n {FormattedText(translations.priceValue, [nokPrice])}\n

\n {isPromotional && (\n \n {FormattedText(translations.regularPriceValue, [regularNokPrice])}\n \n )}\n
\n {!!promotionValue && (\n
\n {FormattedText(translations.promotionValue, [promotionValue])}\n
\n )}\n
\n );\n};\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { ClipLoader } from \"react-spinners\";\nimport { CommandButton } from \"../../../shared/components/button/Button\";\nimport { List } from \"../../../shared/components/list/List\";\nimport { RadioGroup } from \"../../../shared/components/radio/RadioGroup\";\nimport { SidePanel } from \"../../../shared/components/sidePanel/SidePanel\";\nimport { SvgIcon } from \"../../../shared/components/svgIcon/SvgIcon\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport { FormattedText } from \"../../../shared/textUtils\";\nimport { BuyCourseItem } from \"../buyCourse/buyCourseItem/BuyCourseItem\";\nimport { PaymentSidePanelViewModel } from \"./PaymentSidePanelViewModel\";\n\nexport const PaymentSidePanel = observer(({ modal }: { modal: PaymentSidePanelViewModel }) => {\n const { isOpen, close, buyCourseVm } = modal;\n const { course, buyCourseCommand, setSelectedOption, selectedPriceOptionId, groupName } = buyCourseVm;\n const { buyCourseSection, priceOptions } = course;\n const { title } = buyCourseSection;\n const translations = useTranslations();\n\n return (\n \n
\n
\n

{title}

\n
\n {FormattedText(translations.youAreBuying, [course.title])}\n
\n
\n {FormattedText(translations.includedThemes, [course.themeStructures.length])}\n
\n {priceOptions && (\n <>\n

{translations.choosePricing}

\n \n {\n return ;\n }}\n />\n \n \n )}\n
\n \n {translations.buyCourseButton}\n \n \n {buyCourseCommand.isRunning && (\n
\n
\n \n
\n {translations.pleaseWaitItCanTakeFewSeconds}\n
\n )}\n
\n
\n
\n
\n );\n});\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { CourseInfo, Product } from \"../../stores/Product\";\nimport { Button } from \"../button/Button\";\nimport { List } from \"../list/List\";\nimport { Radio } from \"../radio/Radio\";\nimport { RadioGroup } from \"../radio/RadioGroup\";\nimport { useRadioGroupContext } from \"../radio/RadioGroupContext\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\nimport { Title } from \"../title/Title\";\n\ninterface CoursesPickerProps {\n handleLogin: (slug: string) => void;\n activeProduct?: Product;\n}\n\nexport const CoursesPicker: React.FC = observer(props => {\n const { activeProduct, handleLogin } = props;\n\n if (!activeProduct) {\n return null;\n }\n\n const { availableCourses, studiesType } = activeProduct;\n const [selectedCourse, setSelectedCourse] = React.useState(availableCourses[0]);\n const translations = useTranslations();\n\n return (\n
\n
\n \n {translations.selectCourse}\n \n

{translations.selectCourseDescription}

\n
\n setSelectedCourse(availableCourses.filter(course => course.id === value)[0])}\n value={selectedCourse.id}\n >\n {\n const { onChange, disabled } = useRadioGroupContext();\n\n const onContainerClick = () => {\n if (disabled) {\n return;\n }\n\n onChange(item.id);\n };\n\n return (\n \n \n

{studiesType}

\n

{item.title}

\n
\n
\n );\n }}\n />\n \n handleLogin(selectedCourse.slug)}\n disabled={!selectedCourse}\n className=\"CoursesPicker__loginButton\"\n >\n {translations.logIn}\n \n \n
\n );\n});\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { useLocation } from \"../../../useRouter\";\nimport { Link, LinkProps } from \"./Link\";\nimport { getIsLinkActive } from \"./helpers/getIsLinkActive\";\n\ntype NavLinkProps = LinkProps & { activeClassName: string; exact?: boolean };\n\nexport const NavLink: React.FC = props => {\n const { to, className, activeClassName, exact = false } = props;\n const location = useLocation();\n const isActive = getIsLinkActive(to, location.pathname, exact);\n\n return ;\n};\n","export const getIsLinkActive = (url: string, currentUrl: string, exact: boolean) => {\n if (exact) {\n return url === currentUrl;\n }\n\n return currentUrl.startsWith(url);\n};\n","import React from \"react\";\n\nexport const useIsVisible = (ref: React.RefObject) => {\n const [isVisible, setIsVisible] = React.useState(false);\n\n React.useEffect(() => {\n const scrollObserver = new IntersectionObserver(\n entries => {\n const entry = entries[0];\n setIsVisible(entry.isIntersecting);\n },\n { threshold: [0, 1] }\n );\n\n if (ref && ref.current) {\n scrollObserver.observe(ref.current);\n }\n }, []);\n\n return isVisible;\n};\n","import classNames from \"classnames\";\nimport React, { forwardRef } from \"react\";\n\ntype InputVariant = \"default\" | \"clear\";\n\nexport interface InputProps {\n value: string;\n label: string;\n describedBy?: string;\n placeholder?: string;\n disabled?: boolean;\n required?: boolean;\n onChange: (v: string) => void;\n onBlur?: () => void;\n onEnter?: () => void;\n htmlType?: \"text\" | \"email\";\n variant?: InputVariant;\n className?: string;\n}\n\nexport const Input = forwardRef((props, ref) => {\n const {\n value,\n label,\n describedBy,\n placeholder,\n disabled,\n required,\n onChange,\n onBlur,\n onEnter,\n htmlType = \"text\",\n variant = \"default\",\n className,\n } = props;\n\n return (\n \n onChange(e.target.value)}\n onBlur={onBlur}\n onKeyDown={e => {\n if (e.key.toLowerCase() === \"enter\") {\n if (onEnter) {\n onEnter();\n e.preventDefault();\n }\n }\n }}\n />\n
\n
\n );\n});\n","import FocusTrap from \"focus-trap-react\";\nimport React from \"react\";\nimport { animated, useSpring } from \"react-spring\";\nimport { PaymentSidePanelViewModel } from \"../../../pages/shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { ScrollLock } from \"../../../pages/shared/scrollLock/ScrollLock\";\nimport { Button } from \"../../../shared/components/button/Button\";\nimport { Input } from \"../../../shared/components/input/Input\";\nimport { NavLink } from \"../../../shared/components/link/NavLink\";\nimport { List } from \"../../../shared/components/list/List\";\nimport { Popup } from \"../../../shared/components/popup/Popup\";\nimport { usePopup } from \"../../../shared/components/popup/usePopup\";\nimport { SvgIcon } from \"../../../shared/components/svgIcon/SvgIcon\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport { DynamicLink } from \"../HeaderViewModel\";\n\ninterface HamburgerMenuProps {\n model: Popup;\n links: DynamicLink[];\n secondaryLinks?: DynamicLink[];\n studiesType?: string;\n paymentSidePanel?: PaymentSidePanelViewModel;\n goToSearchPage?: (searchPhrase: string) => void;\n}\n\nexport const HamburgerMenu: React.FC = props => {\n const { model, links, goToSearchPage, secondaryLinks, studiesType, paymentSidePanel } = props;\n const { isOpen, close } = model;\n const translations = useTranslations();\n const { isDisplayed, backgroundStyles } = usePopup(isOpen);\n const [searchPhrase, setSearchPhrase] = React.useState(\"\");\n\n const panelStyles = useSpring({\n from: { translateX: \"100vw\" },\n translateX: isOpen ? \"0vw\" : \"100vw\",\n });\n\n if (!isDisplayed) {\n return null;\n }\n\n const renderPrimaryLinks = () => {\n if (links.length === 0 && secondaryLinks?.length === 0) {\n return;\n }\n\n const renderItems: DynamicLink[] = [];\n if (links.length > 0) {\n renderItems.push(...links);\n }\n\n if (links.length == 0 && secondaryLinks && secondaryLinks.length > 0) {\n renderItems.push(...secondaryLinks);\n }\n\n return (\n (\n \n {link.title}\n \n )}\n />\n );\n };\n\n return (\n
\n \n \n \n
\n \n \n \n
\n
\n {goToSearchPage && (\n {\n event.preventDefault();\n goToSearchPage(searchPhrase);\n }}\n className=\"HamburgerMenu__searchLinkWrapper\"\n >\n \n \n \n )}\n
\n {paymentSidePanel && (\n {\n close();\n paymentSidePanel.show();\n }}\n className=\"HamburgerMenu__link HamburgerMenu__buyLink\"\n >\n {translations.buyAccess}\n \n )}\n {renderPrimaryLinks()}\n {links.length > 0 && secondaryLinks && secondaryLinks.length > 0 && (\n (\n \n {link.title}\n \n )}\n />\n )}\n
\n
{studiesType}
\n
\n
\n \n
\n \n \n
\n
\n );\n};\n","import { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { Button } from \"../../../shared/components/button/Button\";\nimport { SvgIcon } from \"../../../shared/components/svgIcon/SvgIcon\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport { DynamicLink, SourceLink } from \"../HeaderViewModel\";\nimport { HamburgerMenu } from \"../hamburgerMenu/HamburgerMenu\";\nimport { HeaderHamburgerViewModel } from \"./HeaderHamburgerViewModel\";\n\ninterface HeaderHamburgerProps {\n model: HeaderHamburgerViewModel;\n}\n\nexport const HeaderHamburgerView = observer((props: HeaderHamburgerProps) => {\n const { model } = props;\n const {\n mobileHamburgerMenuLinks,\n desktopHamburgerPrimaryLinks,\n desktopHamburgerSecondaryLinks,\n desktopMenu,\n mobileMenu,\n studiesType,\n searchLink,\n paymentSidePanelViewModel,\n goToSearchPage,\n } = model;\n const translations = useTranslations();\n\n const convertToLinkWithTitle = (links: SourceLink[]): DynamicLink[] => {\n return links.map(link => {\n if (link.source === \"static\") {\n return { ...link, title: translations[link.translation] };\n }\n\n return link;\n });\n };\n\n return (\n
\n {(desktopHamburgerPrimaryLinks.length > 0 || desktopHamburgerSecondaryLinks.length > 0) && (\n desktopMenu.toggle()}\n >\n \n {desktopMenu.isOpen ? translations.closeMenu : translations.openMenu}\n \n )}\n {mobileHamburgerMenuLinks.primaryLinks.length > 0 && (\n mobileMenu.toggle()}\n >\n \n {mobileMenu.isOpen ? translations.closeMenu : translations.openMenu}\n \n )}\n \n \n
\n );\n});\n","import { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\nimport FocusTrap from \"focus-trap-react\";\nimport * as React from \"react\";\nimport { Command } from \"react-mvvm\";\nimport { usePopper } from \"react-popper\";\nimport { animated, useSpring, config } from \"react-spring\";\nimport { useDelayedDisplay } from \"../../hooks/useDelayedDisplay\";\nimport { CommandButton } from \"../button/Button\";\n\ninterface DialogViewProps {\n children: React.ReactNode;\n referenceElement: HTMLElement | null;\n placement: Placement;\n className?: string;\n cancelCommand: Command;\n isVisible: boolean;\n onShow?: () => void;\n offset?: [number, number];\n}\n\nexport const DialogView = ({\n children,\n cancelCommand,\n referenceElement,\n className,\n placement,\n isVisible,\n onShow,\n offset = [0, 0],\n}: DialogViewProps) => {\n const [popperElement, setPopperElement] = React.useState(null);\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\n placement,\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset,\n },\n },\n ],\n });\n const [isDisplayed, hide] = useDelayedDisplay(isVisible);\n\n React.useEffect(() => {\n isDisplayed && onShow && onShow();\n }, [isDisplayed]);\n\n const dialogStyles = useSpring({\n config: config.stiff,\n opacity: isVisible ? 1 : 0,\n onResolve: () => {\n !isVisible && hide();\n },\n });\n\n if (!isDisplayed) {\n return null;\n }\n\n return (\n \n
\n {isVisible && }\n {\n setPopperElement(a);\n }}\n style={{ ...styles.popper, ...dialogStyles }}\n {...attributes.popper}\n className={classNames(\"Dialog__dialog\", className)}\n >\n {children}\n \n
\n
\n );\n};\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { NavLink } from \"../../../shared/components/link/NavLink\";\nimport { List } from \"../../../shared/components/list/List\";\nimport { SvgIcon } from \"../../../shared/components/svgIcon/SvgIcon\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport { UserLink } from \"../HeaderViewModel\";\n\ninterface UserLinksProps {\n links: UserLink[];\n}\n\nexport const UserLinks: React.FC = observer(props => {\n const { links } = props;\n const translations = useTranslations();\n\n return (\n (\n \n \n {translations[link.translation]}\n {link.target === \"_blank\" && }\n \n )}\n className=\"UserLinks\"\n singleItemClassName=\"UserLinks__listItem\"\n />\n );\n});\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { command } from \"../../../react-mvvm/src\";\nimport { DialogView } from \"../../../shared/components/dialog/DialogView\";\nimport { Popup } from \"../../../shared/components/popup/Popup\";\nimport { useDelayedDisplay } from \"../../../shared/hooks/useDelayedDisplay\";\nimport { useLocation } from \"../../../useRouter\";\nimport { UserLink } from \"../HeaderViewModel\";\nimport { UserLinks } from \"../userLinks/UserLinks\";\n\ninterface UserLinksDialogProps {\n popup: Popup;\n links: UserLink[];\n referenceElement: HTMLElement | null;\n}\n\nexport const UserLinksDialog: React.FC = observer(props => {\n const {\n popup: { isOpen, close },\n links,\n referenceElement,\n } = props;\n const [isDisplayed] = useDelayedDisplay(isOpen);\n const location = useLocation();\n\n React.useEffect(() => {\n if (isOpen) {\n close();\n }\n }, [location]);\n\n if (!isDisplayed) {\n return null;\n }\n\n return (\n
\n close())}\n offset={[0, 4]}\n className=\"UserLinksDialog__dialog\"\n >\n \n \n
\n );\n});\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { animated, useSpring } from \"react-spring\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { useDelayedDisplay } from \"../../hooks/useDelayedDisplay\";\nimport { useVerticalSwipeThreshold } from \"../../hooks/useVerticalSwipeThreshold\";\nimport { Button } from \"../button/Button\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\n\ninterface BottomSheetProps {\n children: React.ReactNode;\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n onResolve?: () => void;\n variant?: \"white\" | \"blue\";\n}\n\nexport const BottomSheet: React.FC = props => {\n const { children, isOpen, setIsOpen, onResolve, variant = \"white\" } = props;\n const translations = useTranslations();\n const [isDisplayed, hide] = useDelayedDisplay(isOpen);\n const { touchStart, touchEnd } = useVerticalSwipeThreshold(40);\n\n const sheetStyles = useSpring({\n from: { transform: `translateY(100%)` },\n transform: isOpen ? `translateY(0%)` : `translateY(100%)`,\n onResolve: () => {\n if (!isOpen) {\n hide();\n\n if (onResolve) {\n onResolve();\n }\n }\n },\n });\n\n const fadeInStyles = useSpring({\n from: { opacity: 0 },\n opacity: isOpen ? 1 : 0,\n });\n\n if (!isDisplayed) {\n return null;\n }\n\n return (\n
\n \n setIsOpen(false)}\n disabled={!isOpen}\n tabIndex={-1}\n type=\"clear\"\n className=\"BottomSheet__backgroundButton\"\n >\n {translations.close}\n \n \n \n \n touchEnd(e, () => {\n if (!isOpen) {\n return;\n }\n\n setIsOpen(false);\n })\n }\n >\n
\n
\n {children}\n \n \n \n \n
\n );\n};\n","import React from \"react\";\n\nexport const useVerticalSwipeThreshold = (threshold: number) => {\n const startPosition = React.useRef();\n\n const touchStart = (e: React.TouchEvent) => {\n startPosition.current = e.touches[0].clientY;\n e.preventDefault();\n };\n\n const touchEnd = (e: React.TouchEvent, callback: () => void) => {\n if (startPosition.current === undefined) {\n return;\n }\n\n if (Math.abs(startPosition.current - e.changedTouches[0].clientY) >= threshold) {\n callback();\n }\n };\n\n return { touchStart, touchEnd } as const;\n};\n","import React from \"react\";\nimport { ScrollLock } from \"../../../pages/shared/scrollLock/ScrollLock\";\nimport { BottomSheet } from \"../../../shared/components/bottomSheet/BottomSheet\";\nimport { Popup } from \"../../../shared/components/popup/Popup\";\nimport { useLocation } from \"../../../useRouter\";\nimport { UserLink } from \"../HeaderViewModel\";\nimport { UserLinks } from \"../userLinks/UserLinks\";\n\ninterface UserLinksSheetProps {\n links: UserLink[];\n sheet: Popup;\n}\n\nexport const UserLinksSheet: React.FC = props => {\n const { links, sheet } = props;\n const { isOpen, setIsOpen } = sheet;\n const location = useLocation();\n\n React.useEffect(() => {\n if (isOpen) {\n setIsOpen(false);\n }\n }, [location]);\n\n return (\n
\n
\n \n \n \n \n
\n
\n );\n};\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { PaymentSidePanel } from \"../../pages/shared/paymentDialog/PaymentSidePanel\";\nimport { Button } from \"../../shared/components/button/Button\";\nimport { CoursesPicker } from \"../../shared/components/coursesLoginSelector/CoursesPicker\";\nimport { NavLink } from \"../../shared/components/link/NavLink\";\nimport { List } from \"../../shared/components/list/List\";\nimport { LogoSection } from \"../../shared/components/logoSection/LogoSection\";\nimport { SidePanel } from \"../../shared/components/sidePanel/SidePanel\";\nimport { SvgIcon } from \"../../shared/components/svgIcon/SvgIcon\";\nimport { useTranslations } from \"../../shared/contexts/StaticTranslationContext\";\nimport { useIsVisible } from \"../../shared/hooks/useIsVisible\";\nimport { useLocation } from \"../../useRouter\";\nimport { HeaderViewModel, SourceLink } from \"./HeaderViewModel\";\nimport { HeaderHamburgerView } from \"./headerHamburger/HeaderHamburgerView\";\nimport { UserLinksDialog } from \"./userLinksDialog/UserLinksDialog\";\nimport { UserLinksSheet } from \"./userLinksSheet/UserLinksSheet\";\ninterface HeaderProps {\n model: HeaderViewModel;\n stickyHeaderRef: React.RefObject;\n}\n\nexport const HeaderView = observer((props: HeaderProps) => {\n const { model, stickyHeaderRef } = props;\n const {\n logoLink,\n userLinks,\n activeCourse,\n colorVersion,\n searchLink,\n isAuthenticated,\n baseHeaderLinks,\n userLinksSheet,\n userLinksDialog,\n pickCourseSidePanel,\n availableCoursesCount,\n handleLogin,\n activeProduct,\n paymentSidePanel,\n headerHamburgerModel,\n } = model;\n const translations = useTranslations();\n const isVisible = useIsVisible(stickyHeaderRef);\n const buttonWrapperRef = React.useRef(null);\n const location = useLocation();\n const currentPath = location.pathname + location.search;\n\n const convertToLinkText = (link: SourceLink) => {\n if (link.source === \"dynamic\") {\n return link.title;\n }\n\n return translations[link.translation];\n };\n\n const loginButton = () => {\n if (!activeProduct) {\n return;\n }\n\n if (isAuthenticated) {\n return;\n }\n\n if (availableCoursesCount === 0) {\n return;\n }\n\n if (availableCoursesCount === 1) {\n return (\n handleLogin(activeProduct.courses[0].slug)}\n className=\"Header__actionButton\"\n >\n {translations.logIn}\n \n );\n }\n\n if (activeCourse) {\n return (\n handleLogin(activeCourse.slug)}\n className=\"Header__actionButton\"\n >\n {translations.logIn}\n \n );\n }\n\n if (activeCourse === undefined && availableCoursesCount > 1) {\n return (\n \n );\n }\n\n return;\n };\n\n const buyButton = () => {\n if (!activeProduct) {\n return;\n }\n\n if (activeCourse?.hasFullAccess) {\n return;\n }\n\n if (availableCoursesCount === 0) {\n return;\n }\n\n return (\n paymentSidePanel?.show()}\n className={classNames(\"Header__actionButton\", \"Header__buyButton\")}\n >\n {translations.buyAccess}\n \n );\n };\n\n return (\n \n
\n
\n \n {\n return (\n \n {convertToLinkText(link)}\n \n );\n }}\n />\n
\n {currentPath !== \"/\" && loginButton()}\n {!isAuthenticated && currentPath === \"/\" && (\n handleLogin(currentPath)}\n className=\"Header__actionButton\"\n >\n {translations.logIn}\n \n )}\n {activeCourse && buyButton()}\n {isAuthenticated && userLinks && (\n
\n \n \n \n \n
\n )}\n {searchLink && (\n \n \n {translations[searchLink.translation]}\n \n )}\n \n
\n \n \n \n {paymentSidePanel && }\n
\n
\n \n );\n});\n","import * as React from \"react\";\nimport { Link, HrefType } from \"../../shared/components/link/Link\";\nimport { useTranslations } from \"../../shared/contexts/StaticTranslationContext\";\n\ninterface SkipNavigationLinkProps {\n to: string;\n}\n\nexport const SkipNavigationLink: React.FC = ({ to }) => {\n const translations = useTranslations();\n\n return (\n \n {translations.goToContent}\n \n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { Slide, toast, ToastContainer, ToastOptions } from \"react-toastify\";\nimport { Button } from \"../../components/button/Button\";\nimport { SvgIcon } from \"../../components/svgIcon/SvgIcon\";\nimport { useTranslations } from \"../StaticTranslationContext\";\n\nexport type NotificationVariant = \"info\" | \"error\";\n\ntype ToastParams = Omit;\n\nexport interface NotificationService {\n showNotification: (children: React.ReactNode, variant: NotificationVariant, params?: ToastParams) => void;\n}\n\nconst notificationContext = React.createContext(undefined);\n\nexport const useNotificationService = () => {\n const context = React.useContext(notificationContext);\n\n if (!context) {\n throw new Error(\"Notification context shouldn't be used outside of the NotificationProvider\");\n }\n\n return context;\n};\n\nexport const NotificationProvider = ({\n children,\n maxNumberOfNotifications = 4,\n}: {\n children: React.ReactNode;\n maxNumberOfNotifications?: number;\n}) => {\n const translations = useTranslations();\n\n const notificationService = {\n showNotification: (toastChildren: React.ReactNode, variant: NotificationVariant, params?: ToastParams) => {\n toast(toastChildren, {\n position: \"bottom-right\",\n autoClose: 5000,\n hideProgressBar: true,\n pauseOnHover: true,\n transition: Slide,\n className: classNames(\"NotificationContainer__notification\", {\n \"NotificationContainer__notification--info\": variant === \"info\",\n \"NotificationContainer__notification--error\": variant === \"error\",\n }),\n bodyClassName: \"NotificationContainer__content\",\n closeButton: ({ closeToast }) => (\n
\n \n
\n ),\n ...params,\n });\n },\n };\n\n const { Provider } = notificationContext;\n\n return (\n \n {children}\n \n \n );\n};\n","import React from \"react\";\nimport { Helmet } from \"react-helmet-async\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\n\ninterface PageTitleProps {\n title?: string;\n description?: string;\n image?: ImageDto;\n type?: \"website\" | \"article\";\n children: React.ReactNode;\n noIndex?: boolean;\n}\n\nexport const PageTitle: React.FC = props => {\n const { title, description, image, type, children, noIndex = false } = props;\n const translations = useTranslations();\n\n const { siteName } = translations;\n const fullTitle = !title ? siteName : `${title} | ${siteName}`;\n\n return (\n <>\n \n {fullTitle}\n {title && }\n {noIndex && }\n {description && }\n {description && }\n {image && }\n {type && }\n \n {children}\n \n );\n};\n","import { HttpError } from \"../../shared/services/errors/HttpError\";\nimport { PaymentError } from \"../../shared/services/errors/PaymentError\";\nimport { TranslationsDto } from \"../../types/translations/dto/TranslationsDto\";\n\nexport type ErrorMessagesMapKey = \"UNEXPECTED_ERROR\" | \"FORBIDDEN\" | \"NOT_FOUND\" | \"SYSTEM_FAILURE\" | \"PAYMENT_FAILURE\";\n\nexport const errorMessagesMap: { [type in ErrorMessagesMapKey]: keyof TranslationsDto } = {\n UNEXPECTED_ERROR: \"unexpectedErrorMessage\",\n FORBIDDEN: \"unauthorizedViewMessage\",\n NOT_FOUND: \"notFoundMessage\",\n SYSTEM_FAILURE: \"unexpectedErrorMessage\",\n PAYMENT_FAILURE: \"paymentErrorMessage\",\n};\n\nexport interface UserErrorMessage {\n type: keyof typeof errorMessagesMap;\n}\n\nexport const HTTPStatusCodeToErrorMessageMap: {\n [code in number]?: keyof typeof errorMessagesMap;\n} = {\n 403: \"FORBIDDEN\",\n 404: \"NOT_FOUND\",\n};\n\nexport const getUserErrorMessage = (e: unknown): UserErrorMessage => {\n if (!(e instanceof Error)) {\n return { type: \"UNEXPECTED_ERROR\" };\n }\n if (e instanceof TypeError) {\n return { type: \"UNEXPECTED_ERROR\" };\n }\n\n if (e instanceof HttpError) {\n if (e.code >= 500) {\n return { type: \"SYSTEM_FAILURE\" };\n }\n\n const messageType = HTTPStatusCodeToErrorMessageMap[e.code];\n if (messageType) {\n return { type: messageType };\n }\n }\n\n if (e instanceof PaymentError) {\n return { type: \"PAYMENT_FAILURE\" };\n }\n\n return { type: \"UNEXPECTED_ERROR\" };\n};\n","import * as React from \"react\";\nimport { MotifImage } from \"../../shared/components/image/Image\";\nimport { HrefType, Link } from \"../../shared/components/link/Link\";\nimport { PageTitle } from \"../../shared/components/pageTitle/PageTitle\";\nimport { useTranslations } from \"../../shared/contexts/StaticTranslationContext\";\nimport { assertUnreachable } from \"../../shared/typeUtils\";\n\nimport { useUrl } from \"../../useRouter\";\nimport { errorMessagesMap, getUserErrorMessage } from \"./ErrorMessages\";\n\ninterface ErrorViewProps {\n error: unknown;\n}\n\nexport const ErrorView: React.FC = ({ error }) => {\n const translations = useTranslations();\n const url = useUrl();\n const errorMessage = getUserErrorMessage(error);\n const errorMessageTranslation = translations[errorMessagesMap[errorMessage.type]];\n\n const getErrorPageData = () => {\n switch (errorMessage.type) {\n case \"UNEXPECTED_ERROR\":\n return {\n pageTitle: errorMessageTranslation,\n imageUrl: \"iconsColor/error.svg\",\n title: errorMessageTranslation,\n };\n case \"FORBIDDEN\":\n return {\n pageTitle: `${403} ${errorMessageTranslation}`,\n imageUrl: \"iconsColor/error-403.svg\",\n title: 403,\n description: errorMessageTranslation,\n };\n case \"NOT_FOUND\":\n return {\n pageTitle: `${404} ${errorMessageTranslation}`,\n imageUrl: \"iconsColor/error.svg\",\n title: 404,\n description: errorMessageTranslation,\n };\n case \"SYSTEM_FAILURE\":\n return {\n pageTitle: `${500} ${errorMessageTranslation}`,\n imageUrl: \"iconsColor/error.svg\",\n title: 500,\n description: errorMessageTranslation,\n };\n case \"PAYMENT_FAILURE\": {\n return {\n pageTitle: errorMessageTranslation,\n imageUrl: \"iconsColor/error-payment.svg\",\n title: errorMessageTranslation,\n };\n }\n default:\n return assertUnreachable(errorMessage.type);\n }\n };\n\n const pageData = getErrorPageData();\n\n return (\n \n
\n
\n
\n \n
\n
\n

{pageData.title}

\n {pageData.description &&

{pageData.description}

}\n \n {translations.goToProductOverview}\n \n
\n
\n
\n
\n );\n};\n","import React from \"react\";\nimport { SvgIcon } from \"../../../shared/components/svgIcon/SvgIcon\";\n\ninterface InfoElementProps {\n value: string;\n}\n\nexport const InfoElement: React.FC = props => {\n const { value } = props;\n return (\n
\n \n

{value}

\n
\n );\n};\n","import React from \"react\";\nimport { SanityImage } from \"../../../shared/components/image/Image\";\nimport { Link } from \"../../../shared/components/link/Link\";\nimport { SvgIcon } from \"../../../shared/components/svgIcon/SvgIcon\";\nimport { Title } from \"../../../shared/components/title/Title\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport { Product } from \"../../../shared/stores/Product\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { useUrl } from \"../../../useRouter\";\n\nexport interface ProductCardItem extends Pick {\n image: ImageDto;\n hasMoreThanOneCourse?: boolean;\n courseSlug?: string;\n}\n\nexport const ProductCard: React.FC = props => {\n const { title, targetGroup, slug, image, hasMoreThanOneCourse, courseSlug } = props;\n\n const url = useUrl();\n const translations = useTranslations();\n\n return (\n
\n
\n \n
\n
\n

{targetGroup}

\n \n {title}\n \n \n {translations.seeProduct}\n \n \n
\n {hasMoreThanOneCourse || !courseSlug ? (\n \n {title}\n \n ) : (\n \n {title}\n \n )}\n
\n );\n};\n","import { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { List } from \"../../shared/components/list/List\";\nimport { PageTitle } from \"../../shared/components/pageTitle/PageTitle\";\nimport { Title } from \"../../shared/components/title/Title\";\nimport { ProductNestViewModel } from \"./ProductNestViewModel\";\nimport { InfoElement } from \"./infoElement/InfoElement\";\nimport { ProductCard } from \"./productCard/ProductCard\";\n\nexport const ProductNestView = observer(({ model }: { model: ProductNestViewModel }) => {\n const { title, description, products, listInfo } = model;\n\n return (\n \n
\n
\n
\n
\n \n {title}\n \n

{description}

\n
\n {\n return ;\n }}\n />\n
\n {\n return (\n 1}\n courseSlug={product.courses.length === 1 ? product.courses[0].slug : \"\"}\n slug={product.slug}\n image={product.cardImage}\n targetGroup={product.targetGroup}\n title={product.title}\n />\n );\n }}\n />\n
\n
\n
\n );\n});\n","import { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { ContentView } from \"react-mvvm\";\nimport { CookiesConsent } from \"../layout/cookiesConsent/CookiesConsent\";\nimport { FooterView } from \"../layout/footer/FooterView\";\nimport { HeaderView } from \"../layout/header/HeaderView\";\nimport { SkipNavigationLink } from \"../layout/skipNavigationLink/SkipNavigationLink\";\nimport { useTranslations } from \"../shared/contexts/StaticTranslationContext\";\nimport { useNotificationService } from \"../shared/contexts/notification/NotificationContext\";\nimport { App, DisplayedContent } from \"./App\";\nimport { ErrorView } from \"./error/ErrorView\";\nimport { ProductNestView } from \"./productNest/ProductNestView\";\n\nexport const AppView = observer(({ model }: { model: App }) => {\n const translations = useTranslations();\n const notificationService = useNotificationService();\n\n React.useEffect(() => {\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement.blur();\n }\n }, [model.childPage]);\n\n React.useEffect(() => {\n if (model.errorToastCounter) {\n notificationService.showNotification(translations.toastErrorMessage, \"error\", { autoClose: 2000 });\n }\n }, [model.errorToastCounter]);\n\n const { content, cookiesConsent } = model;\n const stickyHeaderRef = React.useRef(null);\n\n const renderContent = (c: DisplayedContent) => {\n // eslint-disable-next-line default-case, no-underscore-dangle\n switch (c._type) {\n case \"Page\":\n return ;\n case \"Error\":\n return ;\n case \"ProductNest\":\n return ;\n }\n };\n\n return (\n
\n \n \n \n
\n
\n {content && renderContent(content)}\n
\n \n
\n );\n});\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport ClipLoader from \"react-spinners/ClipLoader\";\nimport { useMotif } from \"../../contexts/MotifContext\";\n\ninterface ActivityIndicatorProps {\n isLoading: boolean;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const ActivityIndicator: React.FC = ({ isLoading, className, children }) => {\n const motif = useMotif();\n const activityIndicatorColor = motif === \"degrees37\" ? \"#212121\" : \"#e50043\";\n\n return (\n
\n {isLoading ? (\n
\n \n
\n ) : (\n <>{children}\n )}\n
\n );\n};\n","import * as React from \"react\";\nimport { ReactSVG } from \"react-svg\";\nimport arrowsImgUrl from \"../../../../../static/images/iconsAnimated/arrows.svg\";\nimport shapesImgUrl from \"../../../../../static/images/iconsAnimated/figures.svg\";\nimport { StepThumbnailType } from \"../../stepThumbnail/StepThumbnailType\";\n\ntype StepTypeWithoutVideo = Exclude;\n\ninterface StepIconProps {\n type: StepTypeWithoutVideo;\n}\n\nconst getImageUrl = (type: StepTypeWithoutVideo) => {\n switch (type) {\n case \"ChoiceTask\":\n case \"TaskGroup\":\n case \"ChoiceListTask\":\n return arrowsImgUrl;\n default:\n return shapesImgUrl;\n }\n};\n\nexport const StepIcon: React.FC = ({ type }) => {\n const url = getImageUrl(type);\n\n return ;\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport defaultTestImageSrc from \"../../../../../static/images/gril-with-barbell.png\";\nimport { ImageDto } from \"../../../../../types/shared/dto/ImageDto\";\nimport { Image, SanityImage } from \"../../../image/Image\";\nimport { ThumbnailTypes } from \"../../types/ThumbnailTypes\";\nimport { StepIcon } from \"../stepIcon/StepIcon\";\n\ninterface ThumbnailImageProps {\n type: ThumbnailTypes;\n image?: ImageDto;\n defaultImageSrc?: string;\n}\n\nexport const ThumbnailImage: React.FC = props => {\n const { type, image, defaultImageSrc } = props;\n\n const defaultTestImage = (\n \n );\n\n const getThumbnailImage = () => {\n switch (type) {\n // Using here because of the images that are returned from vimeo\n // sanity image builder is not accepting their name format\n case \"Video\":\n return (\n <>{image && }\n );\n case \"Theme\":\n case \"Article\":\n return (\n <>\n {image && }\n \n );\n case \"Test\":\n case \"PreviousExams\":\n return (\n <>\n {image ? (\n \n ) : (\n defaultTestImage\n )}\n \n );\n case \"TrainingGround\":\n case \"Author\":\n return (\n <>\n {image ? (\n \n ) : (\n defaultTestImage\n )}\n \n );\n default:\n return ;\n }\n };\n\n return (\n
\n {getThumbnailImage()}\n
\n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { ProductParams } from \"../../../../../pages/product/addProductRouting\";\nimport { ImageDto } from \"../../../../../types/shared/dto/ImageDto\";\nimport { useUrl } from \"../../../../../useRouter\";\nimport { Image } from \"../../../image/Image\";\nimport { Link } from \"../../../link/Link\";\nimport { ThumbnailImage } from \"../../../thumbnails/shared/thumbnailImage/ThumbnailImage\";\nimport { Level, Title } from \"../../../title/Title\";\n\nexport interface SectionArticleItemProps {\n id: string;\n slug: string;\n title: { text: string; level: Level; size: \"small\" | \"big\" };\n category?: string;\n description?: string;\n image?: ImageDto;\n goBackText?: string;\n productParams?: ProductParams;\n}\n\nexport const SectionArticleItem: React.FC = props => {\n const { id, title, slug, category, description, image, goBackText, productParams } = props;\n const url = useUrl();\n const navigationUrl = productParams\n ? url.toProductArticlePage(productParams, { id, slug })\n : url.toArticlePage({ id, slug });\n\n return (\n
\n {image && }\n
\n {category && {category}}\n \n {title.text}\n \n {description &&

{description}

}\n
\n \n {title.text}\n \n
\n );\n};\n","async function load(src: string) {\n return new Promise((resolve, reject) => {\n // Create script element and set attributes\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.async = true;\n script.src = src;\n\n // Append the script to the DOM\n const el = document.getElementsByTagName(\"script\")[0];\n el && el.parentNode && el.parentNode.insertBefore(script, el);\n\n // Resolve the promise once the script is loaded\n script.addEventListener(\"load\", () => {\n resolve(script);\n });\n\n // Catch any errors while loading the script\n script.addEventListener(\"error\", () => {\n reject(new Error(`${src} failed to load.`));\n });\n });\n}\n\nexport const loadScript = async (src: string) => {\n await load(src);\n};\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { loadScript } from \"./loadScript/loadScript\";\n\nexport const enum GeoGebraAppType {\n Classic = \"classic\",\n Graphing = \"graphing\",\n Geometry = \"geometry\",\n _3d = \"3d\",\n Suite = \"suite\",\n Evaluator = \"evaluator\",\n}\n\ninterface GeoGebraAppletProps {\n id: string;\n appType: GeoGebraAppType;\n materialId?: string;\n showAlgebraInput: boolean;\n showMenuBar: boolean;\n showToolBar: boolean;\n}\n\nexport const GeoGebraApplet: React.FC = ({\n id,\n appType,\n materialId,\n showAlgebraInput,\n showMenuBar,\n showToolBar,\n}) => {\n const appletContainerClassName = `GeoGebraApplet__container-${id}`;\n\n const loadGeoGebraApp = () => {\n const params = {\n appName: appType,\n material_id: materialId,\n showToolBar,\n showAlgebraInput,\n showMenuBar,\n scaleContainerClass: appletContainerClassName,\n autoHeight: true,\n allowUpscale: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ggbApp = new (window as any).GGBApplet(params, true);\n ggbApp.inject(id);\n };\n\n React.useEffect(() => {\n (async () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (typeof (window as any).GGBApplet === \"undefined\") {\n await loadScript(\"https://geogebra.org/apps/deployggb.js\");\n }\n loadGeoGebraApp();\n })();\n }, []);\n\n return (\n
\n
\n
\n );\n};\n","import React from \"react\";\nimport { RettsdataPortableTextDto } from \"../../../types/rettsdatas/dto/RettsdataPortableTextDto\";\n\ninterface RettsdataPortableTextProps {\n content: RettsdataPortableTextDto;\n}\n\nexport const RettsdataPortableText: React.FC = props => {\n const { content } = props;\n\n const formattedContentValue = React.useMemo(() => {\n return content.value.replace(//g, \"\");\n }, [content]);\n\n // eslint-disable-next-line react/no-danger\n return
;\n};\n","import axios from \"axios\";\nimport React from \"react\";\nimport { RettsdataPortableTextDto } from \"../../../types/rettsdatas/dto/RettsdataPortableTextDto\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { ActivityIndicator } from \"../activityIndicator/ActivityIndicator\";\nimport { Link } from \"../link/Link\";\nimport { RettsdataPortableText } from \"./RettsdataPortableText\";\nimport { Law } from \"./RettsdataReference\";\n\nexport interface RettsdataReferenceContentProps {\n mainLaw: Law;\n childLaw: Law;\n}\n\ntype RettsdataReferenceContentState =\n | { _type: \"loading\" }\n | { _type: \"loaded\"; content: RettsdataPortableTextDto }\n | { _type: \"error\" };\n\nexport const RettsdataReferenceContent = (props: RettsdataReferenceContentProps) => {\n const { childLaw, mainLaw } = props;\n const [state, setState] = React.useState({ _type: \"loading\" });\n const translations = useTranslations();\n\n // Maybe we should use react-query to cache data?\n const loadContent = async () => {\n const getLawContent = await axios\n .get(`/api/GetLawContent/${mainLaw.id}/${childLaw.id}`)\n .catch(e => {\n setState({ _type: \"error\" });\n throw e;\n });\n\n if (getLawContent.data) {\n setState({ _type: \"loaded\", content: getLawContent.data });\n }\n };\n\n React.useEffect(() => {\n loadContent();\n }, []);\n\n if (state._type === \"error\") {\n return (\n
\n
{translations.unexpectedErrorMessage}
\n
\n );\n }\n\n if (state._type === \"loading\") {\n return ;\n }\n\n return (\n
\n \n
\n \n {translations.rettsdataLinkText}\n \n
\n
\n );\n};\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { Button } from \"../button/Button\";\nimport { HrefType, Link } from \"../link/Link\";\nimport { Modal } from \"../modal/Modal\";\nimport { RettsdataReferenceContent } from \"./RettsdataReferenceContent\";\nimport \"./RettsdataReference.css\";\n\nexport interface Law {\n id: string;\n title: string;\n}\n\nexport interface RettsdataReferenceProps {\n children: React.ReactNode;\n mainLaw: Law;\n childLaw: Law;\n}\n\nexport const RettsdataReference: React.FC = props => {\n const { children, mainLaw, childLaw } = props;\n const [isContentVisible, setContentVisible] = React.useState(false);\n const translations = useTranslations();\n\n const modalElement = (\n setContentVisible(false)} isOpen={isContentVisible}>\n
\n \n
\n
\n setContentVisible(false)}\n >\n {translations.close}\n \n
\n
\n );\n\n return (\n \n {\n e.preventDefault();\n setContentVisible(true);\n }}\n to={`https://arbeidsbok.gyldendal.no/lawesome/law_indexes/${mainLaw.id}/law_documents/${childLaw.id}`}\n >\n {children}\n \n {isContentVisible && ReactDOM.createPortal(modalElement, document.body)}\n \n );\n};\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { GapTaskViewModel } from \"../../components/tasks/gapTask/GapTaskViewModel\";\n\nexport interface GapTaskOptions {\n gapTaskViewModel: GapTaskViewModel;\n}\n\nconst gapTaskContext = React.createContext(undefined);\n\nexport const useGapTaskContext = () => {\n const context = React.useContext(gapTaskContext);\n\n if (!context) {\n throw new Error(\"Gap task context shouldn't be used outside of the context provider\");\n }\n\n return context;\n};\n\nexport const GapTaskContextProvider = observer(\n ({ children, gapTaskViewModel }: { children: React.ReactNode; gapTaskViewModel: GapTaskViewModel }) => {\n const { Provider } = gapTaskContext;\n return {children};\n }\n);\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { useRef, useState } from \"react\";\nimport ReactSelect, { MultiValueProps } from \"react-select\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\nexport interface SelectListItem {\n value: T;\n label: string;\n}\n\nfunction selectListItemTypeGuard(o: unknown): o is SelectListItem {\n return !!(o as SelectListItem).value;\n}\n\ntype ValueType = IsMulti extends true ? T[] : T;\n\nexport interface SelectProps {\n isMulti?: IsMulti;\n options: SelectListItem[];\n value?: IsMulti extends true ? T[] : T;\n onChange: (newValues: ValueType) => void;\n className?: string;\n label?: string; // TODO: Make it required\n describedBy?: string;\n placeholder?: React.ReactNode;\n disabled?: boolean;\n variant?: \"rounded\" | \"square\";\n isTrainingGroundTask?: boolean;\n isMobile?: boolean;\n}\n\nconst SelectIndicator = () => {\n return (\n
\n \n
\n );\n};\n\nconst ClearIndicator = () => {\n return null;\n};\n\nconst MultiValue = (multiValueProps: MultiValueProps, IsMulti>) => {\n const { index, getValue } = multiValueProps;\n\n if (index !== 0) {\n return null;\n }\n\n const _value = getValue();\n return
{_value.map(item => item.label).join(\", \")}
;\n};\n\nexport function Select(props: SelectProps) {\n const {\n isMulti,\n value,\n onChange,\n options,\n className,\n label,\n describedBy,\n placeholder,\n disabled,\n variant = \"rounded\",\n isTrainingGroundTask,\n isMobile,\n } = props;\n const [menuPlacement, setMenuPlacement] = useState<\"auto\" | \"bottom\" | \"top\">(\"auto\");\n const translations = useTranslations();\n\n const selectedValue =\n (isMulti && value\n ? options.filter(option => (value as T[]).includes(option.value))\n : options.find(option => option.value === value)) || null;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const selectRef = useRef(null);\n\n const customMenuStyleForTask = {\n menu: () => ({\n position: menuPlacement === \"top\" ? (\"absolute\" as const) : (\"relative\" as const),\n overflow: menuPlacement === \"top\" ? \"hidden\" : null,\n bottom: menuPlacement === \"top\" ? \"1rem\" : \"0\",\n borderRadius: variant === \"rounded\" ? \"24px\" : \"8px\",\n width: menuPlacement === \"top\" ? \"100%\" : \"auto\",\n }),\n };\n\n const customMenuForTrainingGroundTasksForMobile = {\n menu: () => ({\n position: \"absolute\",\n top: \"20vh\",\n width: \"auto\",\n left: \"-30px\",\n borderRadius: variant === \"rounded\" ? \"24px\" : \"8px\",\n }),\n };\n\n const customMenuStyle = {\n menu: () => ({\n borderRadius: variant === \"rounded\" ? \"24px\" : \"8px\",\n }),\n };\n\n const onMenuOpen = () => {\n if (selectRef.current) {\n const rect = selectRef.current.controlRef?.getBoundingClientRect();\n if (rect && rect.bottom + 300 > window.innerHeight) {\n setMenuPlacement(\"top\");\n } else {\n setMenuPlacement(\"auto\");\n }\n }\n };\n\n const selectedStyle =\n // eslint-disable-next-line no-nested-ternary\n !isMobile && !isTrainingGroundTask\n ? customMenuStyle\n : // eslint-disable-next-line no-nested-ternary\n isTrainingGroundTask && !isMobile\n ? customMenuStyleForTask\n : isTrainingGroundTask && isMobile\n ? customMenuForTrainingGroundTasksForMobile\n : customMenuStyle;\n\n return (\n {\n if (newValue === null) {\n return;\n }\n // TODO: Type casting because \"IsMulti\" is not applying here\n if (\n Array.isArray(newValue) &&\n newValue.every((i: unknown): i is SelectListItem => selectListItemTypeGuard(i)) &&\n isMulti\n ) {\n onChange(newValue.map(i => i.value) as ValueType);\n } else if (selectListItemTypeGuard(newValue)) {\n onChange(newValue.value as ValueType);\n }\n }}\n menuPortalTarget={document.body}\n styles={selectedStyle}\n components={{ DropdownIndicator: SelectIndicator, ClearIndicator, MultiValue }}\n noOptionsMessage={() => translations.noMoreOptions}\n menuPlacement={menuPlacement}\n onMenuOpen={onMenuOpen}\n />\n );\n}\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { OptionStatus } from \"../../shared/OptionStatus\";\n\ninterface ChoiceListOptionStatusProps {\n status: OptionStatus;\n variant: \"full-width\" | \"limited-width\";\n children: React.ReactNode;\n className?: string;\n}\n\nexport const ChoiceListOptionStatus: React.FC = props => {\n const { status, children, className, variant } = props;\n\n return (\n
\n \n {children}\n
\n
\n );\n};\n","// This code was generated by a Reinforced.Typings tool. \n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport const enum DateTypeDto { \n\tCreationDate = \"CreationDate\", \n\tEditDate = \"EditDate\"\n}\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { useTranslations } from \"../../../contexts/StaticTranslationContext\";\nimport { useGapTaskContext } from \"../../../contexts/gapTask/GapTaskContext\";\nimport { ChoiceGapTest } from \"../../portableTextContent/PortableTextTypes\";\nimport { shuffledOptions } from \"../../portableTextContent/inlineChoiceGapTest/utils\";\nimport { Select } from \"../../select/Select\";\nimport { ChoiceListOptionStatus } from \"../choiceListTask/choiceListOptionStatus/ChoiceListOptionStatus\";\nimport { GapTest } from \"./GapTestsViewModel\";\n\ninterface GapTaskGapProps {\n id: string;\n choiceGapTest: ChoiceGapTest;\n}\n\nexport const GapTaskGap: React.FC = observer(props => {\n const { id, choiceGapTest } = props;\n const { choices, additionalChoices } = choiceGapTest;\n\n const {\n gapTaskViewModel: { gapTestsViewModel, shouldDisplayCorrectAnswer, showCorrectAnswer, isCompleted, isDisabled },\n } = useGapTaskContext();\n const currentGapTest = gapTestsViewModel.gapTests.get(id);\n const translations = useTranslations();\n\n const onChange = (newValue: string) => {\n if (currentGapTest) {\n currentGapTest.setValue(newValue);\n }\n };\n\n const shouldAnswerBeDisplayed =\n shouldDisplayCorrectAnswer && gapTestsViewModel.gapTests.get(id)?.state === \"incorrect\";\n\n React.useEffect(() => {\n gapTestsViewModel.registerGapTest(id, new GapTest(choices, additionalChoices));\n }, []);\n\n React.useEffect(() => {\n if (isCompleted) {\n showCorrectAnswer();\n }\n }, [isCompleted]);\n\n return (\n
\n \n \n value={gapTestsViewModel.gapTests.get(id)?.value}\n options={shuffledOptions(choices, additionalChoices)}\n variant=\"square\"\n className=\"GapTaskGap__choiceGapTestSelect\"\n onChange={onChange}\n placeholder={translations.select}\n disabled={isDisabled}\n />\n \n {shouldAnswerBeDisplayed && (\n

{choices.map(choice => choice.content.nb).join(\", \")}

\n )}\n
\n );\n});\n","import Vimeo from \"@u-wave/react-vimeo\";\nimport Player from \"@vimeo/player\";\nimport * as React from \"react\";\nimport { TimeSpanDto } from \"../../../../types/shared/dto/TimeSpanDto\";\nimport { TimeSpan } from \"../../../models/TimeSpan\";\nimport { getVimeoId } from \"../../../utils\";\n\ninterface VimeoEventProps {\n seconds: number;\n percent: number;\n duration: number;\n}\n\ninterface VimeoPlayerProps {\n videoUrl: string;\n duration?: TimeSpanDto;\n startPositionSeconds?: TimeSpan;\n onReady?: (player: Player) => void;\n onEnd?: (secondsSinceStart: TimeSpan) => void;\n onUpdateProgress?: (seekedToSeconds: TimeSpan) => void;\n onVideoSeeked?: (secondsSinceStart: TimeSpan) => void;\n}\n\nexport const VimeoPlayer: React.FC = ({\n videoUrl,\n duration,\n startPositionSeconds,\n onReady,\n onEnd,\n onVideoSeeked,\n onUpdateProgress,\n}) => {\n const vimeoId = getVimeoId(videoUrl);\n\n const onTimeUpdate = (vimeoEvent: VimeoEventProps) => {\n onUpdateProgress && onUpdateProgress(vimeoEvent.seconds);\n };\n\n const onEndVideo = (vimeoEvent: VimeoEventProps) => {\n // We have to round the value because duration reported by Vimeo\n // is also rounded. If we don't do that, then what we keep as video\n // last position is different from duration as kept by Vimeo.\n onEnd && onEnd(Math.round(vimeoEvent.seconds));\n };\n\n const onSeeked = (vimeoEvent: VimeoEventProps) => {\n onVideoSeeked && onVideoSeeked(vimeoEvent.seconds);\n };\n\n const calculateStartTime = () => {\n if (startPositionSeconds) {\n return Math.ceil(startPositionSeconds) === duration?.totalSeconds ? 0 : startPositionSeconds;\n }\n return 0;\n };\n\n return (\n
\n \n
\n );\n};\n","import * as React from \"react\";\nimport YouTube from \"react-youtube\";\n\ninterface YoutubePlayerProps {\n videoUrl: string;\n}\n\nexport const getYoutubeId = (videoUrl: string) => {\n // eslint-disable-next-line no-useless-escape\n const youtubeMatch = videoUrl.match(/.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/);\n\n if (!youtubeMatch) {\n return;\n }\n\n return youtubeMatch[1];\n};\n\nexport const YoutubePlayer = ({ videoUrl }: YoutubePlayerProps) => {\n const youtubeId = getYoutubeId(videoUrl);\n\n return ;\n};\n","import * as React from \"react\";\nimport { assertUnreachable } from \"../../typeUtils\";\nimport { VimeoPlayer } from \"./vimeoPlayer/VimeoPlayer\";\nimport { YoutubePlayer } from \"./youtubePlayer/YoutubePlayer\";\n\nexport interface VideoPlayerProps {\n videoUrl: string;\n}\n\nconst isYoutubeUrl = (url: string) => url.indexOf(\"youtu\") > 0;\nconst isVimeoUrl = (url: string) => url.indexOf(\"vimeo\") > 0;\n\nexport const VideoPlayer = ({ videoUrl }: VideoPlayerProps) => {\n if (isVimeoUrl(videoUrl)) {\n return ;\n }\n\n if (isYoutubeUrl(videoUrl)) {\n return ;\n }\n\n return assertUnreachable(videoUrl as never);\n};\n","/* eslint-disable react/no-danger */\nimport React from \"react\";\n\ninterface EmbeddedBlockProps {\n iframe: string;\n}\n\nexport const EmbeddedBlock = (props: EmbeddedBlockProps) => {\n const { iframe } = props;\n return
;\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { List } from \"../../list/List\";\nimport { ImagePropsNode } from \"../PortableTextTypes\";\n\nexport interface ImageCollectionProps {\n images: ImagePropsNode[];\n imageSize?: \"small\" | \"normal\" | \"large\";\n imageSerializer: (props: ImagePropsNode) => React.ReactNode;\n}\n\nexport const ImageCollection: React.FC = props => {\n const { images, imageSize, imageSerializer } = props;\n\n return (\n {\n return { ...image, id: image.asset.url };\n })}\n renderItem={image => {\n return
{imageSerializer(image)}
;\n }}\n />\n );\n};\n","import React from \"react\";\n\ninterface TextContentWithPlaceholderProps {\n isVisible: boolean;\n children: React.ReactNode;\n}\n\nexport const TextContentWithPlaceholder: React.FC = props => {\n const { isVisible, children } = props;\n\n if (!isVisible) {\n return <>​;\n }\n\n return <>{children};\n};\n","import React from \"react\";\nimport { TextContentWithPlaceholder } from \"../../textContentWithPlaceholder/TextContentWithPlaceholder\";\n\ninterface InlineGapProps {\n value?: number;\n}\n\nexport const InlineGap: React.FC = props => {\n const { value } = props;\n\n return (\n \n {value}\n \n );\n};\n","/* eslint-disable react/no-danger */\nimport KaTeX, { ParseError } from \"katex\";\nimport React, { useState, useMemo } from \"react\";\nimport \"katex/dist/katex.min.css\";\n\n// https://github.com/sanity-io/latex-input/blob/master/src/components/LatexPreview.tsx\ntype SchemaDefinition = {\n body: string;\n};\n\ntype PreviewProps = {\n node: SchemaDefinition;\n layout: \"inline\" | \"block\";\n};\n\ntype MathProps = {\n node: SchemaDefinition;\n};\n\nconst LatexPreview = ({ node, layout }: PreviewProps) => {\n const latex = (node && node.body) || \"\";\n const isInline = layout === \"inline\";\n const [html, setHtml] = useState(\"\");\n const createHtml = () => {\n try {\n const str = KaTeX.renderToString(latex, {\n displayMode: !isInline,\n throwOnError: true,\n });\n setHtml(str);\n } catch (ex) {\n if (ex instanceof ParseError) {\n setHtml(`${ex.message}`);\n }\n }\n };\n\n useMemo(createHtml, [latex, isInline]);\n if (isInline) {\n return ;\n }\n return
;\n};\n\nexport const BlockMath = ({ node }: MathProps) => ;\nexport const InlineMath = ({ node }: MathProps) => ;\n","type ChildrenType = { _type: string; text?: string };\n\ninterface TextBlockType {\n children: ChildrenType[];\n}\n\nconst isTextBlock = (block: unknown): block is TextBlockType => {\n if (typeof block !== \"object\" || block === null) {\n return false;\n }\n\n const potentialTextBlock = block as TextBlockType;\n\n if (!potentialTextBlock.children) {\n return false;\n }\n\n return true;\n};\n\nconst isBlockEmpty = (block: unknown) => {\n if (!isTextBlock(block)) {\n return false;\n }\n\n if (block.children.length !== 1) {\n return false;\n }\n\n const firstChild = block.children[0];\n\n return firstChild._type === \"span\" && firstChild.text === \"\";\n};\n\nexport const trimEmptyBlocks = (blocks: unknown): unknown[] => {\n if (!Array.isArray(blocks)) {\n throw new Error(\"Wrong argument\");\n }\n\n let startIndex = 0;\n let item = blocks[startIndex];\n while (isBlockEmpty(item) && startIndex !== blocks.length - 1) {\n startIndex += 1;\n item = blocks[startIndex];\n }\n\n let endIndex = blocks.length - 1;\n item = blocks[endIndex];\n while (isBlockEmpty(item) && endIndex !== 0) {\n endIndex -= 1;\n item = blocks[endIndex];\n }\n\n return blocks.slice(startIndex, endIndex + 1);\n};\n","import React from \"react\";\nimport { SvgIcon } from \"../../svgIcon/SvgIcon\";\n\ninterface QuoteProps {\n children: React.ReactNode;\n}\n\nexport const Quote: React.FC = props => {\n const { children } = props;\n\n if (!children) {\n return null;\n }\n\n return (\n
\n \n
{children}
\n
\n );\n};\n","import React from \"react\";\n\nexport interface Row {\n rowCells: {\n content: unknown[];\n _key: string;\n }[];\n key: string;\n}\n\ninterface TableProps {\n rows: Row[];\n renderBlocks: (blocks: unknown) => React.ReactNode;\n}\n\nexport const Table: React.FC = props => {\n const { rows, renderBlocks } = props;\n\n return (\n
\n \n \n {rows.map(row => (\n \n {row.rowCells.map(cell => (\n \n ))}\n \n ))}\n \n
\n {renderBlocks(cell.content)}\n
\n
\n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { TextContentWithPlaceholder } from \"../../textContentWithPlaceholder/TextContentWithPlaceholder\";\n\ntype TextType = \"normal\" | \"h3\" | \"h2\";\n\nexport interface TextProps {\n className?: string;\n children: React.ReactNode;\n type: TextType;\n}\n\nexport const Text: React.FC = props => {\n const { children, className, type } = props;\n\n const CustomTag = (type === \"normal\" ? \"span\" : type) as keyof JSX.IntrinsicElements;\n const isVisible = !(Array.isArray(children) && children.length === 1 && children[0] === \"\");\n\n return (\n \n {children}\n \n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { List } from \"../../list/List\";\n\nexport interface Tile {\n _key: string;\n content: unknown[];\n shouldCenterContent?: boolean;\n}\n\nexport interface TileCollectionProps {\n tileSize?: \"small\" | \"normal\" | \"large\";\n tiles: Tile[];\n renderBlocks: (blocks: unknown) => React.ReactNode;\n}\n\nexport const TileCollection: React.FC = props => {\n const { tileSize = \"normal\", tiles, renderBlocks } = props;\n\n return (\n {\n return { ...c, id: c._key };\n })}\n renderItem={cell => {\n const { content, shouldCenterContent = true } = cell;\n return (\n \n {renderBlocks(content)}\n
\n );\n }}\n />\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport BlockContent from \"@sanity/block-content-to-react\";\nimport classNames from \"classnames\";\nimport chunk from \"lodash/chunk\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { PortableTextDto } from \"../../../types/shared/dto/PortableTextDto\";\nimport { GeoGebraApplet } from \"../geoGebraApplet/GeoGebraApplet\";\nimport { Image } from \"../image/Image\";\nimport { RettsdataReference } from \"../rettsdataReference/RettsdataReference\";\nimport { GapTaskGap } from \"../tasks/gapTask/GapTaskGap\";\nimport { VideoPlayer } from \"../videoPlayer/VideoPlayer\";\nimport { VimeoPlayer } from \"../videoPlayer/vimeoPlayer/VimeoPlayer\";\nimport {\n BlockConditionalRenderProps,\n EmbeddedBlockProps,\n GeoGebraProps,\n ImageCollectionProps,\n ImageProps,\n ImagePropsNode,\n ImageSize,\n InlineChoiceGapTest,\n InlineGapProps,\n LatexProps,\n LinkProps,\n LocalImageSerializerType,\n RettsdataReferenceProps,\n RichTextTableProps,\n TileCollectionProps,\n VimeoProps,\n} from \"./PortableTextTypes\";\nimport { EmbeddedBlock } from \"./embeddedBlock/EmbeddedBlock\";\nimport { ImageCollection } from \"./imageCollection/ImageCollection\";\nimport { InlineGap } from \"./inlineGap/InlineGap\";\nimport { BlockMath, InlineMath } from \"./katex/Katex\";\nimport { trimEmptyBlocks } from \"./portableTextUtils\";\nimport { Quote } from \"./quote/Quote\";\nimport { Table } from \"./table/Table\";\nimport { Text } from \"./text/Text\";\nimport { TileCollection } from \"./tileCollection/TileCollection\";\n\nconst defaultImageOptions = { fit: \"max\", w: 1200, auto: \"format\" };\n\nconst getImageOptions = (imageSize?: ImageSize) => {\n const defaults = { fit: \"max\", auto: \"format\" };\n switch (imageSize) {\n case \"small\":\n return { ...defaults, w: 400 };\n case \"medium\":\n return { ...defaults, w: 600 };\n case \"large\":\n return { ...defaults, w: 800 };\n case \"extraLarge\":\n return { ...defaults, w: 1200 };\n default:\n return defaultImageOptions;\n }\n};\n\n// This is listItem component copied from block-content-to-hyperscript/ListItemSerializer\nconst listItem: React.FC = props => {\n const children =\n !props.node.style || props.node.style === \"normal\"\n ? // Don't wrap plain text in paragraphs inside of a list item\n props.children\n : // But wrap any other style in whatever the block serializer says to use\n React.createElement(props.serializers.types.span, props, props.children);\n\n return React.createElement(\n \"li\",\n {\n className: classNames(\"PortableTextContent__listItem\", {\n \"PortableTextContent__listItem--roman\": props.node.listItem === \"roman\",\n }),\n },\n children\n );\n};\n\nexport const imageSerializer = (\n node: ImagePropsNode,\n sanityProjectId: string,\n sanityDataset: string,\n isInline = false,\n imageOptions = defaultImageOptions\n) => {\n const { asset, credit, alternativeText } = node;\n\n const options = { projectId: sanityProjectId, dataset: sanityDataset, imageOptions };\n\n if (!asset) {\n return null;\n }\n\n const img = React.createElement(\"img\", { src: BlockContent.getImageUrl({ node, options }), alt: alternativeText });\n return isInline ? (\n img\n ) : (\n <>\n
\n {img}\n {credit && }\n
\n \n );\n};\n\nconst serializers = (sanityProjectId: string, sanityDataset: string) => {\n const renderBlocks = (blocks: unknown) => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return renderBlockContent(blocks, sanityProjectId, sanityDataset);\n };\n\n const localImageSerializer: LocalImageSerializerType = (node, imageOptions, isInline) =>\n imageSerializer(node, sanityProjectId, sanityDataset, isInline, imageOptions);\n\n return {\n listItem,\n marks: {\n link: ({ mark, children }: LinkProps) => {\n // Read https://css-tricks.com/use-target_blank/\n const { blank, href } = mark;\n return blank ? (\n
\n {children}\n \n ) : (\n {children}\n );\n },\n rettsdataReference: ({ mark, children }: RettsdataReferenceProps) => {\n return (\n \n {children}\n \n );\n },\n },\n types: {\n inlineGap: (props: InlineGapProps) => {\n const { value } = props.node;\n\n return ;\n },\n latex: (props: LatexProps) => {\n const { isInline, node } = props;\n\n if (isInline) {\n return ;\n }\n\n return (\n
\n \n
\n );\n },\n // Deprecated, TODO: Remove this\n vimeo: (props: VimeoProps) => {\n const { node } = props;\n if (!node.url) {\n return null;\n }\n return (\n
\n \n
\n );\n },\n embeddedVideo: (props: VimeoProps) => {\n const { node } = props;\n if (!node.url) {\n return null;\n }\n return (\n
\n \n
\n );\n },\n embeddedBlock: (props: EmbeddedBlockProps) => {\n const {\n node: { iframe },\n } = props;\n if (!iframe) {\n return null;\n }\n return (\n
\n \n
\n );\n },\n geoGebra: (props: GeoGebraProps) => {\n const { node } = props;\n return (\n \n );\n },\n inlineChoiceGapTest: observer((props: InlineChoiceGapTest) => {\n const { node } = props;\n\n return ;\n }),\n image: (props: ImageProps) => {\n const { node, isInline } = props;\n const {\n asset: { metadata },\n imageSize,\n } = node;\n\n const ratio = metadata && (metadata.dimensions.height / metadata.dimensions.width) * 100;\n const imageOptions = getImageOptions(imageSize);\n\n return (\n \n {localImageSerializer(node, imageOptions, isInline)}\n {!!ratio &&
}\n
\n );\n },\n imageCollection: (props: ImageCollectionProps) => {\n const {\n node: { images, imageSize },\n } = props;\n\n return ;\n },\n tileCollection: (props: TileCollectionProps) => {\n const {\n node: { tiles, tileSize },\n } = props;\n return ;\n },\n richTextTable: (props: RichTextTableProps) => {\n const { node } = props;\n\n const rows = chunk(node.cells, node.columns).map(rowCells => {\n const key = rowCells.map(cell => cell._key).join();\n return {\n rowCells,\n key,\n };\n });\n\n return ;\n },\n block: (props: BlockConditionalRenderProps) => {\n const {\n children,\n node: { style },\n } = props;\n\n switch (style) {\n case \"blockquote\":\n return {children};\n case \"normal\":\n case \"h2\":\n case \"h3\":\n return {children};\n default:\n return BlockContent.defaultSerializers.types.block(props);\n }\n },\n },\n };\n};\n\nexport const renderBlockContent = (blocks: unknown, sanityProjectId: string, sanityDataset: string) => {\n if (!blocks) {\n return null;\n }\n\n const formattedBlocks = trimEmptyBlocks(Array.isArray(blocks) ? blocks : [blocks]);\n\n return (\n
\n \n
\n );\n};\n\nexport interface PortableTextContentProps {\n content: PortableTextDto;\n className?: string;\n}\n\nexport const PortableTextContent: React.FC = ({ content, className }) => {\n const blocks = JSON.parse(content.value);\n\n if (blocks === null) {\n return null;\n }\n\n const formattedBlocks = trimEmptyBlocks(blocks);\n\n return (\n
\n {!!formattedBlocks && (\n \n )}\n
\n );\n};\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { ActivityIndicator } from \"../../../shared/components/activityIndicator/ActivityIndicator\";\nimport { SectionArticleItem } from \"../../../shared/components/blocks/SectionArticleListBlock/SectionArticleItem/SectionArticleItem\";\nimport { Image, SanityImage } from \"../../../shared/components/image/Image\";\nimport { List } from \"../../../shared/components/list/List\";\nimport { PortableTextContent } from \"../../../shared/components/portableTextContent/PortableTextContent\";\nimport { Title } from \"../../../shared/components/title/Title\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport anonymousDog from \"../../../static/images/anonymous-dog.png\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { PortableTextDto } from \"../../../types/shared/dto/PortableTextDto\";\nimport { AuthorArticles } from \"../authorInfo/AuthorInfo\";\ninterface AuthorDetailsProps {\n id: string;\n name: string;\n role: string;\n description: PortableTextDto;\n image?: ImageDto;\n details: AuthorArticles;\n}\n\nexport const AuthorDetails: React.FC = observer(props => {\n const { description, image, name, role, details } = props;\n const translations = useTranslations();\n\n const authorContent = () => {\n if (details._type === \"unloaded\") {\n return ;\n }\n if (details._type === \"loaded\" && details.articles && details.articles.length > 0) {\n return (\n <>\n \n {translations.contentMadeByAuthor}\n \n (\n \n )}\n className=\"AuthorDetails__articlesList\"\n />\n \n );\n }\n\n return null;\n };\n\n return (\n
\n {image ? (\n \n \n \n ) : (\n \n \n \n )}\n
\n \n {name}\n \n

{role}

\n
\n \n
{authorContent()}
\n
\n
\n
\n );\n});\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { Popup } from \"../../../shared/components/popup/Popup\";\nimport { SidePanel } from \"../../../shared/components/sidePanel/SidePanel\";\nimport { AuthorDetails } from \"../authorDetails/AuthorDetails\";\nimport { AuthorInfo } from \"../authorInfo/AuthorInfo\";\n\ninterface AuthorDetailsSidePanelProps {\n popup: Popup;\n authorInfo?: AuthorInfo;\n}\n\nexport const AuthorDetailsSidePanel: React.FC = observer(props => {\n const { popup, authorInfo } = props;\n\n return (\n \n {authorInfo && }\n \n );\n});\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport placeholderImage from \"../../../static/images/superhero-dog.png\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { Button } from \"../button/Button\";\nimport { Image, SanityImage } from \"../image/Image\";\n\ninterface AuthorSlideProps {\n name: string;\n role: string;\n onButtonClick: () => void;\n image?: ImageDto;\n}\n\nexport const AuthorSlide: React.FC = observer(props => {\n const { image, name, role, onButtonClick } = props;\n return (\n
\n \n \n {image ? : }\n \n

{name}

\n

{role}

\n
\n );\n});\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport React from \"react\";\nimport Slider, { CustomArrowProps, Settings } from \"react-slick\";\nimport { AuthorDetailsSidePanel } from \"../../../pages/authorsForProduct/authorDetailsSidePanel/AuthorDetailsSidePanel\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { AuthorSlide } from \"../authorSlide/AuthorSlide\";\nimport { Button } from \"../button/Button\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\nimport { AuthorsSliderViewModel } from \"./AuthorsSliderViewModel\";\n\ninterface AuthorsSliderProps {\n model: AuthorsSliderViewModel;\n className?: string;\n}\n\nconst PrevArrow: React.FC = ({ onClick }) => {\n const translations = useTranslations();\n\n return (\n \n {translations.previous}\n \n \n );\n};\n\nconst NextArrow: React.FC = ({ onClick }) => {\n const translations = useTranslations();\n\n return (\n \n {translations.next}\n \n \n );\n};\n\nexport const AuthorsSlider: React.FC = observer(props => {\n const {\n model: { authors, setAuthor, authorInfo, authorInfoPopup },\n className,\n } = props;\n const sliderSettings = {\n dots: true,\n infinite: true,\n draggable: false,\n autoplay: true,\n autoplaySpeed: 4000,\n speed: 750,\n slidesToShow: 2,\n slidesToScroll: 1,\n pauseOnDotsHover: true,\n touchThreshold: 10,\n prevArrow: ,\n nextArrow: ,\n centerMode: true,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n autoplaySpeed: 3000,\n slidesToShow: 1,\n slidesToScroll: 1,\n draggable: true,\n centerMode: true,\n dots: false,\n },\n },\n {\n breakpoint: 768,\n settings: {\n autoplaySpeed: 3000,\n slidesToShow: 1,\n slidesToScroll: 1,\n draggable: true,\n centerMode: false,\n dots: false,\n },\n },\n ],\n } as Settings;\n\n if (!authors) {\n return null;\n }\n\n return (\n <>\n \n {authors.map(author => (\n {\n setAuthor(author.slug);\n authorInfoPopup.show();\n }}\n />\n ))}\n \n \n \n );\n});\n","import React from \"react\";\nimport placeholderImage from \"../../../static/images/superhero-dog.png\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { Image, SanityImage } from \"../image/Image\";\n\ninterface PersonCardProps {\n name: string;\n role: string;\n image?: ImageDto;\n}\n\nexport const PersonCard: React.FC = props => {\n const { image, name, role } = props;\n return (\n
\n \n {image ? : }\n \n

{name}

\n

{role}

\n
\n );\n};\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { AuthorDto } from \"../../../types/shared/dto/AuthorDto\";\nimport { List } from \"../list/List\";\nimport { PersonCard } from \"../personCard/PersonCard\";\n\ninterface PersonsListProps {\n persons: AuthorDto[];\n}\n\nexport const PersonsList: React.FC = observer(props => {\n const { persons } = props;\n return (\n
\n {\n return ;\n }}\n singleItemClassName=\"PersonsList__singleItem\"\n className=\"PersonsList__list\"\n />\n
\n );\n});\n","import React from \"react\";\nimport { ProductQuoteDto } from \"../../../types/productquote/dto/ProductQuoteDto\";\nimport { Image, SanityImage } from \"../image/Image\";\n\ninterface QuoteSlideProps {\n quote: ProductQuoteDto;\n}\n\nexport const QuoteSlide: React.FC = props => {\n const {\n quote: { quote, authorImage, authorName, authorRole, productTag },\n } = props;\n\n return (\n
\n
\n

{productTag}

\n
{quote}
\n
\n \n \n \n
\n
\n

{authorName}

\n

{authorRole}

\n
\n
\n
\n
\n );\n};\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport Slider, { CustomArrowProps, Settings } from \"react-slick\";\nimport { ProductQuoteDto } from \"../../../types/productquote/dto/ProductQuoteDto\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { Button } from \"../button/Button\";\nimport { QuoteSlide } from \"../quoteSlide/QuoteSlide\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\n\ninterface QuoteSliderProps {\n quotes: ProductQuoteDto[];\n}\n\nconst PrevArrow: React.FC = ({ onClick }) => {\n const translations = useTranslations();\n\n return (\n \n {translations.previous}\n \n \n );\n};\n\nconst NextArrow: React.FC = ({ onClick }) => {\n const translations = useTranslations();\n\n return (\n \n {translations.next}\n \n \n );\n};\n\nexport const QuotesSlider: React.FC = observer(props => {\n const { quotes } = props;\n const sliderSettings = {\n infinite: true,\n draggable: true,\n autoplay: true,\n autoplaySpeed: 4000,\n speed: 750,\n slidesToShow: 1,\n slidesToScroll: 1,\n pauseOnDotsHover: true,\n touchThreshold: 10,\n prevArrow: ,\n nextArrow: ,\n } as Settings;\n\n return (\n \n {quotes.map(q => (\n \n ))}\n \n );\n});\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { AuthorsSlider } from \"../../shared/components/authorsSlider/AuthorsSlider\";\nimport { Image, SanityImage } from \"../../shared/components/image/Image\";\nimport { List } from \"../../shared/components/list/List\";\nimport { PageTitle } from \"../../shared/components/pageTitle/PageTitle\";\nimport { PersonsList } from \"../../shared/components/personsList/PersonsList\";\nimport { PortableTextContent } from \"../../shared/components/portableTextContent/PortableTextContent\";\nimport { QuotesSlider } from \"../../shared/components/quotesSlider/QuotesSlider\";\nimport { Title } from \"../../shared/components/title/Title\";\nimport { useTranslations } from \"../../shared/contexts/StaticTranslationContext\";\nimport quotesImage from \"../../static/images/quote.png\";\nimport { ProductCard } from \"../productNest/productCard/ProductCard\";\nimport { AboutUsViewModel } from \"./AboutUsViewModel\";\n\ninterface AboutUsViewProps {\n model: AboutUsViewModel;\n}\n\nexport const AboutUsView: React.FC = observer(props => {\n const {\n model: { data, products, authorsSliderViewModel },\n } = props;\n const translations = useTranslations();\n if (!data) {\n return null;\n }\n\n return (\n \n
\n
\n \n \n \n
\n \n {data.pageTitle}\n \n

{data.pageSubtitle}

\n
\n
\n
\n
\n \n \n \n
\n

{data.aboutProductTitle}

\n \n
\n
\n
\n {data.authorsOfProductDescription && data.authorsOfProductList && (\n
\n
\n
\n

{data.authorsOfProductTitle}

\n
\n \n
\n
\n \n
\n
\n )}\n {data.studentsQuotesList && (\n
\n
\n

{data.studentsQuotesTitle}

\n \n \n \n
\n \n
\n
\n
\n )}\n {data.peopleBehindProductDescription && data.peopleBehindProductImage && data.peopleBehindProductList && (\n
\n
\n
\n

{data.peopleBehindProductTitle}

\n
\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n )}\n
\n \n \n \n
\n
\n

{data.ourCoursesTitle}

\n \n {\n return (\n \n );\n }}\n />\n
\n
\n
\n );\n});\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { Level, Title } from \"../title/Title\";\n\nexport interface SectionHeadingProps {\n title: React.ReactNode;\n level: Level | \"withoutLevel\";\n size?: \"medium\" | \"large\";\n extra?: React.ReactNode;\n className?: string;\n}\n\nexport const SectionHeading = (props: SectionHeadingProps) => {\n const { title, extra, level, size = \"large\", className } = props;\n return (\n
\n {level === \"withoutLevel\" ? (\n
{title}
\n ) : (\n \n {title}\n \n )}\n {extra &&
{extra}
}\n
\n );\n};\n","import React from \"react\";\nimport { ProductParams } from \"../../../../pages/product/addProductRouting\";\nimport { ArticleListItemDto } from \"../../../../types/articles/dto/ArticleListItemDto\";\nimport { useUrl } from \"../../../../useRouter\";\nimport { useTranslations } from \"../../../contexts/StaticTranslationContext\";\nimport { Link } from \"../../link/Link\";\nimport { List } from \"../../list/List\";\nimport { SectionHeading } from \"../../sectionHeading/SectionHeading\";\nimport { SectionArticleItem } from \"./SectionArticleItem/SectionArticleItem\";\n\nexport interface SectionArticleListBlockProps {\n title: string;\n articles: ArticleListItemDto[];\n goBackText?: string;\n productParams?: ProductParams;\n}\n\nexport const SectionArticleListBlock: React.FC = props => {\n const { title, articles, goBackText, productParams } = props;\n const url = useUrl();\n const translations = useTranslations();\n\n return (\n
\n
\n \n {translations.seeAllArticles}\n \n )\n }\n />\n {\n return (\n \n );\n }}\n />\n
\n
\n );\n};\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { ProductParams } from \"./addProductRouting\";\n\ninterface ProductParamsContext {\n params?: ProductParams;\n}\n\nconst productParamsContext = React.createContext(undefined);\n\nexport const useProductParams = () => {\n const context = React.useContext(productParamsContext);\n\n if (context === undefined) {\n throw new Error(\"Product Params context shouldn't be used outside of the context provider\");\n }\n\n return context.params;\n};\n\nexport const ProductParamsContextProvider = observer(\n ({ children, params }: { children: React.ReactNode; params?: ProductParams }) => {\n const { Provider } = productParamsContext;\n return {children};\n }\n);\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { Button } from \"../../../../shared/components/button/Button\";\nimport { Image, SanityImage } from \"../../../../shared/components/image/Image\";\nimport { SvgIcon } from \"../../../../shared/components/svgIcon/SvgIcon\";\nimport { Title } from \"../../../../shared/components/title/Title\";\nimport { useTranslations } from \"../../../../shared/contexts/StaticTranslationContext\";\nimport articleBuySectionUrl from \"../../../../static/images/dog-with-balls.png\";\nimport { ArticleActionSectionDto } from \"../../../../types/articles/dto/ArticleActionSectionDto\";\nimport { ArticleBuySectionViewModel } from \"./ArticleBuySectionViewModel\";\n\ninterface ArticleBuySectionProps {\n model: ArticleBuySectionViewModel;\n section?: ArticleActionSectionDto;\n}\n\nexport const ArticleBuySection: React.FC = props => {\n const { model, section } = props;\n const { paymentSidePanelViewModel } = model;\n const translations = useTranslations();\n\n return (\n
\n
\n \n \n {section?.title || translations.getFullAccessNow}\n \n

{section?.description || translations.fullAccessDescription}

\n \n
\n \n {section?.image ? : }\n \n
\n
\n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { SanityImage } from \"../image/Image\";\nimport { Tooltip } from \"../tooltip/Tooltip\";\n\nexport type AvatarSize = \"small\" | \"medium\" | \"large\" | \"xLarge\" | \"xxLarge\" | \"xxxLarge\" | \"custom\";\n\nexport interface AvatarImageProps {\n image: ImageDto;\n}\n\nconst AvatarImage = (props: AvatarImageProps) => {\n const { image } = props;\n\n const avatarImage = (\n
\n \n
\n );\n\n if (image.credit) {\n return {avatarImage};\n }\n\n return avatarImage;\n};\n\nexport interface AvatarProps {\n initials: string;\n image?: ImageDto;\n size?: AvatarSize;\n className?: string;\n}\n\nexport const Avatar: React.FC = props => {\n const { initials, image, size = \"large\", className } = props;\n\n return (\n
\n {image ? : initials}\n
\n );\n};\n","import React from \"react\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { getInitials } from \"../../textUtils\";\nimport { Avatar } from \"../avatar/Avatar\";\nimport { Button } from \"../button/Button\";\n\nexport interface AuthorInfoProps {\n name: string;\n role: string;\n image?: ImageDto;\n onClick?: () => void;\n}\n\nexport const AuthorInfo: React.FC = props => {\n const { name, role, image, onClick } = props;\n const initials = getInitials(name);\n\n return (\n
\n {onClick ? (\n \n ) : (\n
\n \n
\n )}\n
\n

{name}

\n {role}\n
\n
\n );\n};\n","import React from \"react\";\nimport { Link } from \"../link/Link\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\n\ninterface NavigationLinkProps {\n to: string;\n text: string;\n type: \"back\" | \"forward\";\n}\n\nexport const NavigationLink: React.FC = props => {\n const { to, text, type } = props;\n return (\n \n {type === \"back\" && (\n \n )}\n {text}\n {type === \"forward\" && (\n \n )}\n \n );\n};\n","import React from \"react\";\nimport { useTranslations } from \"../../../../shared/contexts/StaticTranslationContext\";\nimport { assertUnreachable } from \"../../../../shared/typeUtils\";\nimport { DateDto } from \"../../../../types/articles/dto/DateDto\";\nimport { DateTypeDto } from \"../../../../types/articles/dto/DateTypeDto\";\n\ninterface ArticleDateProps {\n date: DateDto;\n}\n\nexport const ArticleDate: React.FC = props => {\n const { date } = props;\n const { type, value } = date;\n const formattedDate = new Date(value).toLocaleDateString();\n\n const translations = useTranslations();\n\n switch (type) {\n case DateTypeDto.CreationDate:\n return (\n

\n {translations.published} {formattedDate}\n

\n );\n case DateTypeDto.EditDate:\n return (\n

\n {translations.edited} {formattedDate}\n

\n );\n default:\n return assertUnreachable(type);\n }\n};\n","// This code was generated by a Reinforced.Typings tool. \n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport const enum LinkTypeDto { \n\tExternalLink = \"ExternalLink\", \n\tInternalLink = \"InternalLink\", \n\tArticleLink = \"ArticleLink\"\n}\n","import * as React from \"react\";\nimport { AuthorInfo } from \"../../../../shared/components/authorInfo/AuthorInfo\";\nimport { Image, SanityImage } from \"../../../../shared/components/image/Image\";\nimport { List } from \"../../../../shared/components/list/List\";\nimport { NavigationLink } from \"../../../../shared/components/navigationLink/NavigationLink\";\nimport { Title } from \"../../../../shared/components/title/Title\";\nimport { DateDto } from \"../../../../types/articles/dto/DateDto\";\nimport { AuthorDto } from \"../../../../types/shared/dto/AuthorDto\";\nimport { ImageDto } from \"../../../../types/shared/dto/ImageDto\";\nimport { ArticleDate } from \"../articleDate/ArticleDate\";\n\nexport interface ArticleHeroProps {\n title: string;\n setSelectedAuthor?: (author: AuthorDto) => void;\n category?: string;\n image?: ImageDto;\n description?: string;\n authors?: AuthorDto[];\n date?: DateDto;\n color?: string;\n backLink?: { href: string; text: string };\n}\n\nexport const ArticleHero: React.FC = props => {\n const { title, category, image, description, authors, date, color, backLink, setSelectedAuthor } = props;\n\n return (\n
\n
\n {backLink && (\n
\n \n
\n )}\n
\n {category && {category}}\n \n {title}\n \n {description &&

{description}

}\n
\n {authors && authors.length > 0 && (\n (\n setSelectedAuthor && setSelectedAuthor(author)} />\n )}\n />\n )}\n {image && (\n \n \n {image.credit && }\n \n )}\n {date && (\n
\n \n
\n )}\n
\n
\n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { CommandButton } from \"../../../../shared/components/button/Button\";\nimport { Image, SanityImage } from \"../../../../shared/components/image/Image\";\nimport { SvgIcon } from \"../../../../shared/components/svgIcon/SvgIcon\";\nimport { Title } from \"../../../../shared/components/title/Title\";\nimport { useTranslations } from \"../../../../shared/contexts/StaticTranslationContext\";\nimport articleLoginSectionUrl from \"../../../../static/images/people-with-dog.png\";\nimport { ArticleActionSectionDto } from \"../../../../types/articles/dto/ArticleActionSectionDto\";\nimport { ArticleLoginSectionViewModel } from \"./ArticleLoginSectionViewModel\";\n\ninterface ArticleLoginSectionProps {\n model: ArticleLoginSectionViewModel;\n section?: ArticleActionSectionDto;\n}\n\nexport const ArticleLoginSection: React.FC = props => {\n const { model, section } = props;\n const { handleLogin } = model;\n const translations = useTranslations();\n\n return (\n
\n
\n \n \n {section?.title || translations.tryForFreeNow}\n \n

\n {section?.description || translations.explorePlatformDescription}\n

\n \n {translations.logInAndTry}\n \n \n
\n \n {section?.image ? : }\n \n
\n \n );\n};\n","import React from \"react\";\nimport { Title } from \"../../../../shared/components/title/Title\";\nimport { useTranslations } from \"../../../../shared/contexts/StaticTranslationContext\";\n\ninterface ArticleSummaryProps {\n summary: string[];\n}\n\nexport const ArticleSummary: React.FC = props => {\n const { summary } = props;\n const translations = useTranslations();\n\n return (\n
\n \n {translations.summary}\n \n
    \n {summary.map(summaryItem => (\n
  • \n {summaryItem}\n
  • \n ))}\n
\n
\n );\n};\n","import { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { ActivityIndicator } from \"../../../shared/components/activityIndicator/ActivityIndicator\";\nimport { SectionArticleListBlock } from \"../../../shared/components/blocks/SectionArticleListBlock/SectionArticleListBlock\";\nimport { PageTitle } from \"../../../shared/components/pageTitle/PageTitle\";\nimport { PortableTextContent } from \"../../../shared/components/portableTextContent/PortableTextContent\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport { FormattedText } from \"../../../shared/textUtils\";\nimport { useHistory, useUrl } from \"../../../useRouter\";\nimport { AuthorDetailsSidePanel } from \"../../authorsForProduct/authorDetailsSidePanel/AuthorDetailsSidePanel\";\nimport { useProductParams } from \"../../product/ProductParamsContext\";\nimport { ArticleViewModel } from \"./ArticleViewModel\";\nimport { ArticleBuySection } from \"./articleBuySection/ArticleBuySection\";\nimport { ArticleHero } from \"./articleHero/ArticleHero\";\nimport { ArticleLoginSection } from \"./articleLoginSection/ArticleLoginSection\";\nimport { ArticleSummary } from \"./articleSummary/ArticleSummary\";\n\nexport const ArticleView = observer(({ model }: { model: ArticleViewModel }) => {\n const { article, actionSection, authorInfo, authorInfoPopup, setSelectedAuthor } = model;\n const history = useHistory();\n const url = useUrl();\n const translations = useTranslations();\n const productParams = useProductParams();\n const fallbackLink = productParams\n ? { href: url.toProductArticleListPage(productParams), text: translations.goToArticleListPage }\n : undefined;\n\n const backLink =\n history.location.state?.goBackHref && history.location.state?.goBackText\n ? { href: history.location.state.goBackHref, text: history.location.state.goBackText }\n : undefined;\n\n if (!article) {\n return (\n
\n \n
\n );\n }\n\n const {\n seoTitle,\n title,\n seoDescription,\n category,\n image,\n date,\n color,\n content,\n authors,\n description,\n loginActionSection,\n buyActionSection,\n summary,\n relatedArticles,\n } = article;\n\n return (\n \n
\n
\n \n
\n
\n {summary && (\n
\n \n
\n )}\n
\n \n
\n
\n
\n {actionSection && (\n
\n {actionSection.type === \"LOGIN\" ? (\n \n ) : (\n \n )}\n
\n )}\n {relatedArticles && relatedArticles.length > 0 && (\n \n )}\n
\n \n
\n
\n );\n});\n","import isEqual from \"lodash/isEqual\";\nimport { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { ContentView } from \"react-mvvm\";\nimport { animated, useSpring } from \"react-spring\";\nimport { ActivityIndicator } from \"../../../shared/components/activityIndicator/ActivityIndicator\";\nimport { SectionArticleItem } from \"../../../shared/components/blocks/SectionArticleListBlock/SectionArticleItem/SectionArticleItem\";\nimport { Image } from \"../../../shared/components/image/Image\";\nimport { List } from \"../../../shared/components/list/List\";\nimport { PageTitle } from \"../../../shared/components/pageTitle/PageTitle\";\nimport { Select } from \"../../../shared/components/select/Select\";\nimport { Title } from \"../../../shared/components/title/Title\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport heroImageUrl from \"../../../static/images/chatting-people.png\";\nimport emptyListImageUrl from \"../../../static/images/dog.png\";\nimport { ArticleListViewModel } from \"./ArticleListViewModel\";\n\ninterface ArticleListViewProps {\n model: ArticleListViewModel;\n}\n\nexport const ArticleListView = observer((props: ArticleListViewProps) => {\n const { model } = props;\n const { articles: _articles, categoriesSelect, allCategoriesId, product, isLoading, isMobile } = model;\n const translations = useTranslations();\n\n const [articles, setArticles] = React.useState(_articles);\n const [styles, api] = useSpring(() => ({ opacity: 0, config: { duration: 300 } }));\n\n React.useEffect(() => {\n if (isLoading || isEqual(_articles, articles)) {\n return;\n }\n\n // HANDLE INITIAL STATE\n if (_articles.length > 0 && articles.length === 0) {\n setArticles(_articles);\n }\n\n api.start({\n opacity: 0,\n onResolve: () => {\n setArticles(_articles);\n },\n });\n }, [_articles, isLoading]);\n\n React.useEffect(() => {\n api.start({ opacity: 1 });\n }, [articles]);\n\n return (\n \n \n
\n
\n
\n \n {translations.articles}\n \n

{translations.articleListDescription}

\n
\n \n \n \n
\n
\n {categoriesSelect && (\n
\n categoriesSelect.setValue([value])}\n value={categoriesSelect.value[0]}\n label={translations.allCategories}\n />\n
\n )}\n
\n \n (\n \n )}\n empty={\n 0}>\n
\n \n \n \n

{translations.emptyResultsMessage}

\n
\n
\n }\n className=\"ArticleList__list\"\n />\n
\n
\n
\n
\n );\n});\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { Button } from \"../../../shared/components/button/Button\";\nimport { Image } from \"../../../shared/components/image/Image\";\nimport { PortableTextContent } from \"../../../shared/components/portableTextContent/PortableTextContent\";\nimport { ThumbnailImage } from \"../../../shared/components/thumbnails/shared/thumbnailImage/ThumbnailImage\";\nimport { Title } from \"../../../shared/components/title/Title\";\nimport { useTranslations } from \"../../../shared/contexts/StaticTranslationContext\";\nimport anonymousDog from \"../../../static/images/anonymous-dog.png\";\nimport { ImageDto } from \"../../../types/shared/dto/ImageDto\";\nimport { PortableTextDto } from \"../../../types/shared/dto/PortableTextDto\";\n\nexport interface AuthorThumbnailProps {\n name: string;\n description: PortableTextDto;\n role: string;\n buttonOnClickAction: () => void;\n image?: ImageDto;\n}\n\nexport const AuthorThumbnail: React.FC = observer(props => {\n const { name, role, description, image, buttonOnClickAction } = props;\n const t = useTranslations();\n\n return (\n
\n \n \n \n \n
\n
\n \n {name}\n \n {role}\n \n
\n \n
\n
\n );\n});\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { ContentView } from \"../../react-mvvm/src\";\nimport { Image, SanityImage } from \"../../shared/components/image/Image\";\nimport { List } from \"../../shared/components/list/List\";\nimport { PageTitle } from \"../../shared/components/pageTitle/PageTitle\";\nimport { Title } from \"../../shared/components/title/Title\";\nimport SuperHeroDog from \"../../static/images/superhero-dog.png\";\nimport { AuthorsForProductViewModel } from \"./AuthorsForProductViewModel\";\nimport { AuthorDetailsSidePanel } from \"./authorDetailsSidePanel/AuthorDetailsSidePanel\";\nimport { AuthorThumbnail } from \"./authorThumbnail/AuthorThumbnail\";\n\ninterface AuthorsForProductViewProps {\n model: AuthorsForProductViewModel;\n}\nexport const AuthorsForProductView = observer((props: AuthorsForProductViewProps) => {\n const { model } = props;\n const { productAuthorsHero, authors, setAuthor, authorInfo, authorInfoPopup } = model;\n\n if (!productAuthorsHero) {\n return null;\n }\n\n const { description, image, title } = productAuthorsHero;\n\n return (\n \n \n
\n
\n
\n \n {title}\n \n

{description}

\n
\n \n {image ? : }\n \n
\n
\n {authors && (\n (\n {\n setAuthor(item.slug);\n authorInfoPopup.show();\n }}\n />\n )}\n className=\"AuthorsForProductPage__authorsList\"\n />\n )}\n
\n
\n \n
\n
\n );\n});\n","import * as React from \"react\";\nimport { command } from \"react-mvvm\";\nimport { useTranslations } from \"../../contexts/StaticTranslationContext\";\nimport { Button } from \"../button/Button\";\nimport { DialogView } from \"../dialog/DialogView\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\n\ninterface PopoverProps {\n isOpen: boolean;\n toggle: () => void;\n children: React.ReactNode;\n}\n\nexport const Popover: React.FC = props => {\n const { isOpen, toggle, children } = props;\n const translations = useTranslations();\n\n const buttonWrapperRef = React.useRef(null);\n\n return (\n
\n
\n \n
\n toggle())}\n offset={[0, 8]}\n >\n {children}\n \n
\n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { ImageDto } from \"../../../../types/shared/dto/ImageDto\";\nimport { Link } from \"../../link/Link\";\nimport { Level, Title } from \"../../title/Title\";\nimport { ThumbnailImage } from \"../shared/thumbnailImage/ThumbnailImage\";\nimport { ThumbnailTypes } from \"../types/ThumbnailTypes\";\n\ntype HighlightedThumbnailVariant = \"default\" | \"dark\";\n\nexport interface HighlightedThumbnailProps {\n title: { text: string; level: Level };\n type: ThumbnailTypes;\n category?: string;\n description?: string;\n image?: ImageDto;\n overlay?: React.ReactNode;\n locked?: boolean;\n imageBackgroundColor?: string;\n href?: string;\n linkGoBackText?: string;\n variant?: HighlightedThumbnailVariant;\n backgroundColor?: string;\n bottomContent?: React.ReactNode;\n}\n\nexport const HighlightedThumbnail: React.FC = props => {\n const {\n title,\n type,\n category,\n description,\n image,\n overlay,\n locked,\n imageBackgroundColor,\n href,\n linkGoBackText,\n variant = \"default\",\n backgroundColor,\n bottomContent,\n } = props;\n\n return (\n \n
\n {overlay}\n \n
\n
\n {category && {category}}\n \n {title.text}\n \n

{description}

\n
\n
{bottomContent}
\n
\n
\n {href && !locked && (\n \n {title.text}\n \n )}\n \n );\n};\n","import { PaymentSidePanelViewModel } from \"../../../../pages/shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { CourseStructure } from \"../../../contentStructure/CourseStructure\";\nimport { BookmarkToggleViewModel } from \"../shared/BookmarkToggleViewModel\";\nimport { ThumbnailOverlayStates } from \"../shared/ThumbnailOverlay\";\nimport { ThumbnailTypes } from \"../types/ThumbnailTypes\";\n\ntype UseOverlayPropsType = (\n hasAccess: boolean,\n isCompleted: boolean,\n type: ThumbnailTypes,\n courseStructure: CourseStructure,\n bookmarkToggleViewModel?: BookmarkToggleViewModel,\n paymentSidePanelViewModel?: PaymentSidePanelViewModel\n) => ThumbnailOverlayStates | undefined;\n\nexport const useOverlayProps: UseOverlayPropsType = (\n hasAccess,\n isCompleted,\n type,\n courseStructure,\n bookmarkToggleViewModel,\n paymentSidePanelViewModel\n) => {\n if (!hasAccess && paymentSidePanelViewModel) {\n return {\n overlayState: \"locked\",\n onClick: () => paymentSidePanelViewModel.show(),\n };\n }\n\n if (isCompleted) {\n return {\n overlayState: \"finished\",\n isVideo: type === \"Video\",\n isBookmarked: bookmarkToggleViewModel?.isStepBookmarked,\n bookmarkCommand: bookmarkToggleViewModel?.toggleBookmark,\n };\n }\n\n if (courseStructure.hasFullAccess === false && hasAccess) {\n return {\n overlayState: \"freeNotFinished\",\n isVideo: type === \"Video\",\n isBookmarked: bookmarkToggleViewModel?.isStepBookmarked,\n bookmarkCommand: bookmarkToggleViewModel?.toggleBookmark,\n };\n }\n\n if (bookmarkToggleViewModel) {\n return {\n overlayState: \"bookmark\",\n isVideo: type === \"Video\",\n isBookmarked: bookmarkToggleViewModel.isStepBookmarked,\n bookmarkCommand: bookmarkToggleViewModel.toggleBookmark,\n };\n }\n\n return undefined;\n};\n","import { useTranslations } from \"../../../contexts/StaticTranslationContext\";\nimport { ThumbnailTypes } from \"../types/ThumbnailTypes\";\n\nexport const useSubtitle = (type: ThumbnailTypes) => {\n const translations = useTranslations();\n\n const subtitles: { [key in ThumbnailTypes]: string } = {\n ChoiceListTask: translations.choiceTask,\n ChoiceTask: translations.choiceTask,\n MaskTask: translations.task,\n TaskGroup: translations.task,\n TextTask: translations.task,\n TextBlock: translations.text,\n Video: translations.video,\n Article: translations.article,\n Theme: translations.theme,\n InputTask: translations.task,\n Test: translations.quiz,\n TrainingGround: translations.trainingGround,\n GapTask: translations.task,\n MatchTask: translations.task,\n PreviousExams: translations.previousExams,\n Author: translations.author,\n Sound: translations.sound,\n };\n\n return subtitles[type];\n};\n","import { ISearchThumbnail } from \"../../../../pages/search/searchItem/SearchItemViewModel\";\n\nexport const useThumbnailImage = (thumbnail: ISearchThumbnail) => {\n const { type } = thumbnail;\n\n switch (type) {\n case \"Video\":\n case \"Article\":\n case \"Theme\":\n return thumbnail.image;\n default:\n return undefined;\n }\n};\n","import { ISearchThumbnail } from \"../../../../pages/search/searchItem/SearchItemViewModel\";\nimport { getFormattedTime } from \"../../../utils\";\n\nexport const useVideoData = (thumbnail: ISearchThumbnail) => {\n if (thumbnail.type !== \"Video\") {\n return;\n }\n\n const totalSeconds = thumbnail.videoDetails?.duration.totalSeconds;\n return {\n timeStamp: totalSeconds !== undefined ? getFormattedTime(totalSeconds) : undefined,\n progress: thumbnail.progress,\n };\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { ImageDto } from \"../../../../types/shared/dto/ImageDto\";\nimport { Link } from \"../../link/Link\";\nimport { SvgIcon } from \"../../svgIcon/SvgIcon\";\nimport { Level, Title } from \"../../title/Title\";\nimport { ThumbnailImage } from \"../shared/thumbnailImage/ThumbnailImage\";\nimport { ThumbnailTypes } from \"../types/ThumbnailTypes\";\n\nexport interface HorizontalThumbnailProps {\n title: { text: string; level: Level };\n type: ThumbnailTypes;\n subtitle?: string;\n timeStamp?: string;\n image?: ImageDto;\n overlay?: React.ReactNode;\n locked?: boolean;\n color?: string;\n href?: string;\n}\n\nexport const HorizontalThumbnail: React.FC = props => {\n const { title, type, subtitle, timeStamp, image, overlay, locked, color, href } = props;\n\n const renderAdditionalInfo = () => {\n if (type === \"Video\" && timeStamp) {\n return (\n <>\n \n {timeStamp}\n \n );\n }\n\n if (subtitle) {\n return subtitle;\n }\n\n return null;\n };\n\n return (\n
\n {href && !locked && (\n \n {title.text}\n \n )}\n
\n {overlay}\n {href && type === \"Video\" && !locked && (\n
\n \n {title.text}\n \n \n
\n )}\n \n
\n
\n
{renderAdditionalInfo()}
\n \n {title.text}\n \n
\n
\n );\n};\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { animated, useSpring } from \"react-spring\";\nimport { formatProgress } from \"../../formatProgress\";\n\nexport type ProgressBarVariant = \"light\" | \"dark\";\nexport type ProgressBarType = \"error\" | \"warning\" | \"success\" | \"info\";\ntype ProgressBarSize = \"small\" | \"medium\" | \"large\";\n\nexport interface ProgressBarProps {\n progress?: number;\n variant?: ProgressBarVariant;\n size?: ProgressBarSize;\n type?: ProgressBarType;\n rounded?: boolean;\n}\n\nexport const ProgressBar = observer((props: ProgressBarProps) => {\n const { progress = 0, variant = \"light\", size = \"medium\", type = \"warning\", rounded = true } = props;\n const { progressValue, isCompleted } = formatProgress(progress);\n\n const progressBarStyle = useSpring({ to: { width: `${progressValue}%` }, from: { width: \"0%\" } });\n\n return (\n \n \n \n );\n});\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { ImageDto } from \"../../../../types/shared/dto/ImageDto\";\nimport { Link } from \"../../link/Link\";\nimport { ProgressBar } from \"../../progressBar/ProgressBar\";\nimport { SvgIcon } from \"../../svgIcon/SvgIcon\";\nimport { ThumbnailImage } from \"../shared/thumbnailImage/ThumbnailImage\";\nimport { ThumbnailTypes } from \"../types/ThumbnailTypes\";\n\nexport interface RectangleThumbnailProps {\n title: string;\n type: ThumbnailTypes;\n subtitle?: string;\n timeStamp?: string;\n progress?: number;\n image?: ImageDto;\n overlay?: React.ReactNode;\n locked?: boolean;\n color?: string;\n href?: string;\n}\n\nexport const RectangleThumbnail: React.FC = observer(props => {\n const { title, type, subtitle, timeStamp, progress, image, overlay, locked, color, href } = props;\n\n return (\n \n
\n {overlay}\n {href && type === \"Video\" && !locked && (\n
\n \n {title}\n \n \n
\n )}\n \n
\n
\n {subtitle &&
{subtitle}
}\n {timeStamp && (\n
\n \n {timeStamp}\n
\n )}\n
\n {progress !== undefined && (\n
\n \n
\n )}\n
\n
\n {href && !locked && (\n \n {title}\n \n )}\n \n );\n});\n","import { observable } from \"mobx\";\nimport React from \"react\";\nimport { UserDto } from \"../../types/shared/dto/UserDto\";\nimport { UserStore } from \"../stores/UserStore\";\n\nexport class AnonymousUser {\n readonly _type = \"anonymous\";\n}\n\nexport class LoggedInUser {\n @observable id: number;\n\n @observable firstName: string;\n\n @observable lastName: string;\n\n @observable accessibleCourseIds: string[];\n\n readonly _type = \"loggedIn\";\n\n constructor(userDto: UserDto) {\n this.id = userDto.id;\n this.firstName = userDto.firstName;\n this.lastName = userDto.lastName;\n this.accessibleCourseIds = userDto.accessibleCourseIds;\n }\n}\n\nexport type User = AnonymousUser | LoggedInUser;\n\ninterface UserContext {\n user: User;\n}\n\nconst userContext = React.createContext({\n user: new AnonymousUser(),\n});\n\nexport const useAppUser = () => React.useContext(userContext).user;\n\nexport const useLoggedInAppUser = () => {\n const appUser = React.useContext(userContext).user;\n\n if (appUser._type !== \"loggedIn\") {\n throw new Error(\"Expected logged in user\");\n }\n\n return appUser;\n};\n\nexport const UserProvider = ({ children, userStore }: { children: React.ReactNode; userStore?: UserStore }) => {\n const { Provider } = userContext;\n const userDto = userStore ? userStore.user : undefined;\n const user = userDto ? new LoggedInUser(userDto) : new AnonymousUser();\n\n return {children};\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { Command } from \"react-mvvm\";\nimport { useTranslations } from \"../../../../contexts/StaticTranslationContext\";\nimport { CommandButton } from \"../../../button/Button\";\nimport { SvgIcon } from \"../../../svgIcon/SvgIcon\";\n\nexport interface BookmarkLayerProps {\n isBookmarked: boolean;\n bookmarkCommand: Command;\n isVideo: boolean;\n variant: \"small\" | \"default\";\n}\n\nexport const BookmarkLayer: React.FC = ({ isBookmarked, bookmarkCommand, isVideo, variant }) => {\n const translations = useTranslations();\n\n return (\n
\n \n \n \n {isBookmarked ? translations.removeBookmark : translations.addUserBookmark}\n \n \n
\n );\n};\n\nexport default BookmarkLayer;\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { Status } from \"../../Status\";\n\ninterface StatusTagProps {\n status: Status;\n size?: \"small\" | \"default\";\n children: React.ReactNode;\n}\n\nexport const StatusTag: React.FC = props => {\n const { status, size = \"default\", children } = props;\n return (\n \n {children}\n \n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { useTranslations } from \"../../../../contexts/StaticTranslationContext\";\nimport { StatusTag } from \"../../../statusTag/StatusTag\";\n\ninterface FreeInfoLayerProps {\n size: \"small\" | \"default\";\n}\n\nexport const FreeInfoLayer: React.FC = props => {\n const { size } = props;\n const translations = useTranslations();\n\n return (\n
\n \n \n {translations.gratis}\n \n
\n \n );\n};\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { ReactSVG } from \"react-svg\";\nimport lockIcon from \"../../../../../static/images/icons/lock.svg\";\nimport { useTranslations } from \"../../../../contexts/StaticTranslationContext\";\nimport { Button } from \"../../../button/Button\";\n\nexport interface LockedLayerProps {\n onClick: () => void;\n variant: \"small\" | \"default\";\n}\n\nexport const LockedLayer: React.FC = ({ onClick, variant }) => {\n const translations = useTranslations();\n\n return (\n
\n \n
\n
\n \n
\n
\n \n
\n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { Status } from \"../../../../Status\";\nimport { useTranslations } from \"../../../../contexts/StaticTranslationContext\";\nimport { assertUnreachable } from \"../../../../typeUtils\";\n\nexport interface StatusLayerProps {\n variant: \"small\" | \"default\";\n status: Status;\n}\n\nexport const StatusLayer: React.FC = ({ variant, status }) => {\n const translations = useTranslations();\n\n const getStatusText = () => {\n switch (status) {\n case \"success\":\n return translations.finished;\n case \"warning\":\n return translations.failed;\n case \"error\":\n return translations.error;\n default:\n return assertUnreachable(status);\n }\n };\n\n return (\n
\n
\n {getStatusText()}\n
\n
\n );\n};\n","import * as React from \"react\";\nimport { Command } from \"react-mvvm\";\nimport { useAppUser } from \"../../../contexts/UserProvider\";\nimport { assertUnreachable } from \"../../../typeUtils\";\nimport { BookmarkLayer } from \"./bookmarkLayer/BookmarkLayer\";\nimport { FreeInfoLayer } from \"./freeInfoLayer/FreeInfoLayer\";\nimport { LockedLayer } from \"./lockedLayer/LockedLayer\";\nimport { StatusLayer } from \"./statusLayer/StatusLayer\";\n\nexport type ThumbnailOverlayStates =\n | {\n overlayState: \"bookmark\";\n isBookmarked: boolean;\n bookmarkCommand: Command;\n isVideo: boolean;\n }\n | { overlayState: \"locked\"; onClick: () => void }\n | {\n overlayState: \"finished\";\n isBookmarked?: boolean;\n bookmarkCommand?: Command;\n isVideo: boolean;\n }\n | {\n overlayState: \"freeNotFinished\";\n isBookmarked?: boolean;\n bookmarkCommand?: Command;\n isVideo: boolean;\n };\n\ninterface ThumbnailOverlayProps {\n state: ThumbnailOverlayStates;\n variant?: \"small\" | \"default\";\n}\n\nexport const ThumbnailOverlay: React.FC = ({ state, variant = \"default\" }) => {\n const user = useAppUser();\n const isAuthenticated = user._type === \"loggedIn\";\n\n switch (state.overlayState) {\n case \"finished\":\n return (\n <>\n \n {state.isBookmarked !== undefined && state.bookmarkCommand && isAuthenticated && (\n \n )}\n \n );\n case \"locked\":\n return ;\n case \"bookmark\":\n return (\n <>\n {isAuthenticated && (\n \n )}\n \n );\n case \"freeNotFinished\":\n return (\n <>\n \n {state.isBookmarked !== undefined && state.bookmarkCommand && isAuthenticated && (\n \n )}\n \n );\n default:\n return assertUnreachable(state);\n }\n};\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { ImageDto } from \"../../../../types/shared/dto/ImageDto\";\nimport { Link } from \"../../link/Link\";\nimport { ProgressBar } from \"../../progressBar/ProgressBar\";\nimport { SvgIcon } from \"../../svgIcon/SvgIcon\";\nimport { Level, Title } from \"../../title/Title\";\nimport { ThumbnailImage } from \"../shared/thumbnailImage/ThumbnailImage\";\nimport { ThumbnailTypes } from \"../types/ThumbnailTypes\";\n\nexport interface TileThumbnailProps {\n title: { text: string; level: Level };\n type: ThumbnailTypes;\n subtitle?: string;\n timeStamp?: string;\n progress?: number;\n image?: ImageDto;\n overlay?: React.ReactNode;\n locked?: boolean;\n color?: string;\n href?: string;\n}\n\nexport const TileThumbnail = (props: TileThumbnailProps) => {\n const { title, subtitle, timeStamp, progress, type, image, overlay, color, href, locked = false } = props;\n\n return (\n \n {href && !locked && (\n \n {title.text}\n \n )}\n
\n {overlay}\n {href && type === \"Video\" && !locked && (\n
\n \n {title.text}\n \n \n
\n )}\n \n {progress !== undefined && (\n
\n \n
\n )}\n
\n
\n \n {title.text}\n \n
\n {subtitle &&
{subtitle}
}\n {timeStamp && (\n
\n \n {timeStamp}\n
\n )}\n
\n
\n \n );\n};\n","import { observer } from \"mobx-react\";\nimport React from \"react\";\nimport { PaymentSidePanelViewModel } from \"../../../../pages/shared/paymentDialog/PaymentSidePanelViewModel\";\nimport { useUrl } from \"../../../../useRouter\";\nimport { CourseStructure } from \"../../../contentStructure/CourseStructure\";\nimport { ActiveCourseParams } from \"../../../models/Url\";\nimport { assertUnreachable } from \"../../../typeUtils\";\nimport { Level } from \"../../title/Title\";\nimport { HighlightedThumbnail } from \"../highlightedThumbnail/HighlightedThumbnail\";\nimport { useOverlayProps } from \"../hooks/useOverlayProps\";\nimport { useSubtitle } from \"../hooks/useSubtitle\";\nimport { useThumbnailImage } from \"../hooks/useThumbnailImage\";\nimport { useVideoData } from \"../hooks/useVideoData\";\nimport { HorizontalThumbnail } from \"../horizontalThumbnail/HorizontalThumbnail\";\nimport { RectangleThumbnail } from \"../rectangleThumbnail/RectangleThumbnail\";\nimport { ThumbnailOverlay } from \"../shared/ThumbnailOverlay\";\nimport { IStepThumbnail } from \"../stepThumbnail/createStepThumbnailViewModel\";\nimport { TileThumbnail } from \"../tileThumbnail/TileThumbnail\";\n\ninterface DomainThumbnailProps {\n stepThumbnail: IStepThumbnail;\n courseStructure: CourseStructure;\n activeCourseParams?: ActiveCourseParams;\n paymentSidePanelViewModel?: PaymentSidePanelViewModel;\n thumbnailType?: \"tile\" | \"highlighted\" | \"rectangle\" | \"horizontal\";\n thumbnailTitleLevel?: Level;\n}\n\nexport const DomainThumbnail: React.FC = observer(props => {\n const {\n stepThumbnail,\n courseStructure,\n activeCourseParams,\n paymentSidePanelViewModel,\n thumbnailType = \"tile\",\n thumbnailTitleLevel = 3,\n } = props;\n const { title, type, color, contentRef, hasAccess, isCompleted, bookmarkToggleViewModel, description } =\n stepThumbnail;\n\n const url = useUrl();\n const href = activeCourseParams && url.toLessonPage(activeCourseParams, contentRef);\n\n const subtitle = useSubtitle(type);\n const videoData = useVideoData(stepThumbnail);\n const image = useThumbnailImage(stepThumbnail);\n const overlayProps = useOverlayProps(\n hasAccess,\n isCompleted,\n type,\n courseStructure,\n bookmarkToggleViewModel,\n paymentSidePanelViewModel\n );\n\n if (thumbnailType === \"tile\") {\n return (\n }\n />\n );\n }\n\n if (thumbnailType === \"highlighted\") {\n return (\n }\n locked={!hasAccess}\n imageBackgroundColor={color}\n href={href}\n />\n );\n }\n\n if (thumbnailType === \"rectangle\") {\n return (\n }\n locked={!hasAccess}\n color={color}\n href={href}\n />\n );\n }\n\n if (thumbnailType === \"horizontal\") {\n return (\n }\n locked={!hasAccess}\n color={color}\n href={href}\n />\n );\n }\n\n return assertUnreachable(thumbnailType);\n});\n","import React from \"react\";\n\nexport interface TextareaProps {\n value?: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n}\n\nexport const Textarea = React.forwardRef(\n ({ value, onChange, placeholder, className }, ref) => {\n return (\n {\n onChange(e.target.value);\n }}\n ref={ref}\n />\n );\n }\n);\n","import { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { Button } from \"../../../../shared/components/button/Button\";\nimport { Textarea } from \"../../../../shared/components/textarea/Textarea\";\nimport { useTranslations } from \"../../../../shared/contexts/StaticTranslationContext\";\n\ninterface BookmarkMessageEditorProps {\n message?: string;\n isInEditMode: boolean;\n onSave: (value?: string) => void;\n onCancel: () => void;\n}\n\nexport const BookmarkMessageEditor = observer((props: BookmarkMessageEditorProps) => {\n const { message: defaultMessage, isInEditMode, onSave, onCancel } = props;\n const translations = useTranslations();\n\n const [message, setMessage] = React.useState(defaultMessage);\n const messageRef = React.useRef(null);\n\n React.useEffect(() => {\n if (isInEditMode) {\n messageRef.current?.focus();\n\n const messageLength = message?.length ?? 0;\n messageRef.current?.setSelectionRange(messageLength, messageLength);\n }\n }, [isInEditMode]);\n\n if (isInEditMode) {\n return (\n
\n