{"version":3,"sources":["infrastructure/types/IApiRequest.ts","utils/utils.ts","infrastructure/types/shared/dto/UserRoleDto.ts","utils/userUtils.ts","domain/company/CompanyId.ts","infrastructure/types/api/error/BadRequestResultTypeDto.ts","application/layout/cookiesConsent/CookiesConsentConfig.ts","ui/button/Button.tsx","infrastructure/components/link/LoginLink.tsx","infrastructure/paths/AppPaths.ts","ui/loader/Loader.tsx","infrastructure/types/courseassignments/dto/AssignmentStageDto.ts","infrastructure/types/routes/RouteConfiguration.ts","infrastructure/types/shared/dto/CourseModeDto.ts","infrastructure/paths/Hooks.tsx","infrastructure/components/TypedRoute.tsx","domain/courseContent/models/CourseTest.ts","domain/courseContent/models/Chapter.ts","domain/courseContent/models/Module.ts","domain/courseContent/models/Course.ts","infrastructure/errors/CheckoutLoginRequiredError.ts","application/models/appUser/AppUser.ts","domain/courseContent/utils/getCourseElementsCount.ts","infrastructure/paths/Paths.ts","infrastructure/stores/models/Unloaded.ts","infrastructure/api/HttpCustomError.ts","infrastructure/errors/PageForbiddenError.ts","infrastructure/types/users/dto/UserAndGroupTypeDto.ts","infrastructure/api/HttpError.ts","infrastructure/errors/LoginRequiredError.ts","domain/userManagement/models/CompanyUser.ts","domain/courseAssigning/models/IndividualCourseAssignment.ts","domain/courseAssigning/models/CourseAssignment.ts","domain/userManagement/models/Group.ts","static/images/icons/checked-circle.svg","static/images/icons/clouds.svg","static/images/icons/exclamation.svg","static/images/icons/gyldendal-logo-desktop.svg","static/images/icons/hamburger.svg","static/images/icons/qudos-logo.svg","static/images/icons/star-filled.svg","static/images/icons/trophy.svg","ui/svgIcon/SvgIcon.tsx","application/models/appUser/UserContext.tsx","ui/modal/Modal.tsx","ui/modal/useEscape.tsx","ui/popup/usePopup.tsx","infrastructure/components/link/ExternalLink.tsx","infrastructure/components/link/Link.ts","utils/groupUtils.ts","infrastructure/hooks/useDelayedDisplay.tsx","infrastructure/api/RequestCancelledError.ts","infrastructure/errors/PageNotFoundError.ts","infrastructure/authorization/PathsToAccessRights.ts","infrastructure/authorization/Authorization.ts","ui/scrollLock/ScrollLock.tsx","infrastructure/api/HttpClient.ts","infrastructure/errors/ErrorView.tsx","domain/courseAssigning/models/GroupCourseAssignment.ts","domain/userManagement/models/GroupLeader.ts","domain/userManagement/models/GroupUser.ts","infrastructure/types/api/users/SearchUsersAndGroupsRequest.ts","domain/userManagement/stores/searchStore/UserAndGroupSearchStore.ts","domain/test/models/OptionWithStatus.ts","domain/test/models/TaskWithStatus.ts","static/images/noActiveCourses.png","static/images/trophy.png","static/images/circleX.png","static/images/noAvailableCourses.png","static/images/noElementsFound.png","static/images/paymentError.png","static/images/paymentSuccess.png","landing/static/images/hero.png","landing/static/images/heroMobile.png","landing/static/images/qudosScreenShots.png","application/i18n.ts","infrastructure/types/config/dto/FooterLinkTypeDto.ts","application/pages/invitation/LazyInvitation.tsx","application/reportWebVitals.ts","application/layout/cookiesConsent/CookiesConsent.tsx","infrastructure/types/api/landing/CheckoutCourseRequest.ts","infrastructure/types/api/landing/CheckoutPackageRequest.ts","infrastructure/types/api/users/SearchGroupsRequest.ts","domain/userManagement/stores/searchStore/GroupSearchStore.ts","infrastructure/types/api/users/SearchUsersRequest.ts","domain/userManagement/stores/searchStore/UserSearchStore.ts","infrastructure/types/courseassignments/dto/AssignmentSourceDto.ts","application/layout/footer/footerLink/FooterLinkViewModel.ts","application/layout/footer/FooterConfig.ts","application/layout/publicLinks/TibetPublicLinks.ts","infrastructure/types/api/config/GetSiteConfigRequest.ts","infrastructure/types/api/invitation/TibetPageToJoinWithCodeRequest.ts","infrastructure/types/api/users/GetAppUserRequest.ts","domain/app/AppStore.ts","infrastructure/types/api/courseassignments/GetCourseAssignmentStatsRequest.ts","domain/course/models/CourseStats.ts","domain/course/stores/courseStatsStore/CourseStatsStore.ts","infrastructure/types/api/courses/GetAssignableCourseDomainsRequest.ts","infrastructure/types/api/courses/GetCourseDomainsRequest.ts","infrastructure/types/api/courses/GetCourseDomainBySlugRequest.ts","infrastructure/types/api/courses/GetCourseDomainRequest.ts","domain/course/models/CourseDomain.ts","domain/course/stores/courseStore/CourseDomainStore.ts","infrastructure/types/api/courseassignments/AddSelfAssignedCourseAssignmentRequest.ts","infrastructure/types/api/courseassignments/GetCourseAssignmentRequest.ts","infrastructure/types/api/courseassignments/GetUserCourseAssignmentsRequest.ts","infrastructure/types/api/courseassignments/StartCourseAssignmentRequest.ts","domain/courseAssigning/stores/courseAssignmentStore/CourseAssignmentStore.ts","infrastructure/types/api/invitation/AcceptInvitationRequest.ts","domain/courseAssigning/stores/invitationStore/InvitationStore.ts","infrastructure/types/api/courseassignments/AddCourseAssignmentsRequest.ts","infrastructure/types/api/courseassignments/GetCourseAssignmentsForGroupMembersRequest.ts","infrastructure/types/api/courseassignments/GetCourseAssignmentsRequest.ts","infrastructure/types/api/courseassignments/RemoveCourseAssignmentRequest.ts","infrastructure/types/api/courseassignments/RemoveGroupCourseAssignmentRequest.ts","domain/courseAssigning/stores/managerCourseAssignmentStore/ManagerCourseAssignmentStore.ts","infrastructure/types/api/coursecontents/GetCourseContentInfoRequest.ts","infrastructure/types/api/coursecontents/GetCourseContentRequest.ts","infrastructure/types/api/coursecontents/GetCoursesContentInfoRequest.ts","infrastructure/types/api/coursecontents/GetSelfAssignableCourseContentInfoRequest.ts","domain/courseContent/stores/courseContentStore/CourseContentStore.ts","infrastructure/types/api/progress/CompleteModuleRequest.ts","infrastructure/types/api/progress/GetModuleProgressByCourseAssignmentRequest.ts","domain/progress/models/ModuleCompletion.ts","domain/progress/models/CourseProgress.ts","domain/progress/stores/ProgressStore.ts","infrastructure/types/api/reports/GetCourseAssignmentsReportRequest.ts","domain/report/ReportStore.ts","infrastructure/types/api/test/GetTaskPreviewRequest.ts","infrastructure/types/api/test/GetTestRequest.ts","infrastructure/types/api/test/LockExamRequest.ts","infrastructure/types/api/test/SubmitCourseTestRequest.ts","infrastructure/types/api/test/SubmitExamTestRequest.ts","infrastructure/types/api/test/SubmitModuleTestRequest.ts","domain/test/models/Test.ts","domain/test/stores/testStore/TestStore.ts","infrastructure/types/api/invitation/ResendInvitationRequest.ts","infrastructure/types/api/company/AssignManagerRoleRequest.ts","infrastructure/types/api/company/GetCompanyLicenseUsageRequest.ts","infrastructure/types/api/company/GetCompanyRequest.ts","infrastructure/types/api/company/RevokeManagerRoleRequest.ts","infrastructure/types/api/users/AddConnectionsRequest.ts","infrastructure/types/api/users/AddMemberRequest.ts","infrastructure/types/api/users/RemoveConnectionsRequest.ts","infrastructure/types/api/users/RemoveUsersFromCompanyRequest.ts","domain/userManagement/models/Company.ts","domain/userManagement/stores/companyStore/CompanyStore.ts","infrastructure/types/api/users/GetCompanyUserRequest.ts","infrastructure/types/api/users/IsUserMemberOfMyNetworkRequest.ts","infrastructure/types/api/company/GetCompanyManagersRequest.ts","infrastructure/types/api/company/GetCompanyUsersRequest.ts","infrastructure/types/api/invitation/GetUserPendingInvitationsRequest.ts","domain/userManagement/stores/companyStore/CompanyUserStore.ts","infrastructure/types/api/group/AddLeadersToGroupRequest.ts","infrastructure/types/api/group/GetGroupLeadersRequest.ts","infrastructure/types/api/group/GetGroupStatsRequest.ts","infrastructure/types/api/group/GetSingleGroupStatsRequest.ts","infrastructure/types/api/group/RemoveLeadersFromGroupRequest.ts","infrastructure/types/api/group/RenameGroupRequest.ts","infrastructure/types/api/group/AddGroupRequest.ts","infrastructure/types/api/group/AddMembersToGroupRequest.ts","infrastructure/types/api/group/GetGroupCourseAssignmentsWithStatsRequest.ts","infrastructure/types/api/group/GetGroupUsersRequest.ts","infrastructure/types/api/group/GetGroupsLedByUserRequest.ts","infrastructure/types/api/group/RemoveGroupRequest.ts","infrastructure/types/api/group/RemoveMembersFromGroupRequest.ts","domain/userManagement/models/GroupCourseAssignmentWithStats.ts","domain/userManagement/stores/groupStore/GroupStore.ts","infrastructure/types/api/landing/PostCheckoutRequest.ts","infrastructure/types/landing/contact/GetContactPageContentRequest.ts","infrastructure/types/landing/coursepackages/GetCoursePackagesRequest.ts","infrastructure/types/landing/coursepackages/GetPackageRequest.ts","infrastructure/types/landing/courseslist/GetBuyCourseDetailsRequest.ts","infrastructure/types/landing/courseslist/GetCoursesListRequest.ts","infrastructure/types/landing/home/GetHomePageContentRequest.ts","landing/application/LandingStore.ts","infrastructure/gtm/GtmService.ts","infrastructure/stores/stores.ts","infrastructure/api/AxiosClient.ts","index.tsx","application/AppViewModel.ts"],"names":["IApiRequest","$type","response","mailValidationRegex","mailSplitRegex","getVimeoId","vimeoUrl","videoMatch","match","throwExpression","errorMessage","Error","isContentId","id","undefined","value","daysDifferenceFromNowToDate","date","now","Date","getTime","Math","floor","getFormattedTime","hour","getUTCHours","minutes","getUTCMinutes","formattedHour","formattedMinutes","getCourseUrl","mode","CourseModeDto","Exam","assertUnreachable","_","tryParseEmails","userEmails","emails","split","output","forEach","email","test","parsed","out","calculateProgress","completed","target","ceil","generateMarkups","number","markup","Array","fill","join","waitForElement","selector","Promise","resolve","document","querySelector","observer","MutationObserver","disconnect","observe","body","childList","subtree","getDisplayText","text","includes","charAt","slice","sanitizeHtml","html","DOMPurify","sanitize","UserRoleDto","getUserInitials","firstName","lastName","firstLetter","toUpperCase","secondLetter","substr","getUserDisplayName","getAuthHref","appUser","_type","RouteConfiguration","Logout","getLoginPath","to","params","CompanyId","BadRequestResultTypeDto","AcceptedCookiesConsentValue","NecessaryCookieName","AnalysisCookieName","CookiesConsentConfig","action","bound","gtm","makeObservable","this","cookieName","selectedCookies","Object","keys","Cookies","set","pushCookieConsentChanged","cookiesConsent","observable","consentText","privacyPolicyLink","privacyPolicyLinkTitle","Button","React","props","ref","children","onClick","type","variant","htmltype","size","className","disabled","tabIndex","title","classNames","CommandButton","command","otherProps","e","preventDefault","stopPropagation","execute","isEnabled","returnLink","Login","buildUrl","paymentSuccessUrl","paymentFailedUrl","PATHS","Loader","AssignmentStageDto","Landing","Dashboard","Api","HealthCheck","Init","Ping","PostLogout","Invitation","AnalyticsKeys","RobotsTxt","Sitemap","MailToSupport","GyldendalHomePage","GyldendalPrivacyPolicyUrl","TermsAndConditions","PrivacyPolicy","getParams","path","isParams","TypedRoute","render","exact","user","useAppUser","hasUserAccessToRoute","hasUserAccess","window","location","assign","PageForbiddenError","CourseTest","course","dto","testId","introTitle","introDescription","introImage","thumbnailImage","thumbnailTitle","Chapter","module","slug","content","ModuleInfo","image","duration","chaptersCount","ModuleDetailed","chapters","map","c","length","firstChapter","first","lastChapter","last","computed","CourseInfo","introduction","modules","m","courseTest","sumBy","getCourseElementsCount","CourseDetailed","CheckoutLoginRequiredError","stack","requestData","code","JSON","parse","courseSlug","packageSlug","AnonymousAppUser","LoggedInAppUser","userDto","role","defaultCompanyId","defaultCompanyName","phone","hasAnyActiveMemberships","hasAnyMemberships","allowSelfAssign","showCourses","dossierEnabled","merKompetanseEnabled","userType","Manager","Admin","paramSet","Set","requiredParams","filter","s","startsWith","x","has","scrollTarget","url","paramObj","key","replace","isPathValid","locationPathElements","Paths","some","p","pathElements","every","pathElement","index","Unloaded","UnloadedListItem","HttpCustomError","httpClientResponse","errorText","errorCode","UserAndGroupTypeDto","HttpError","LoginRequiredError","CompanyUser","companyStore","userFirstName","userLastName","userEmail","userRole","status","isActive","companyMembershipCreatedAt","assignManagerRole","revokeManagerRole","Member","managerId","addConnections","removeConnections","a","removeUsersFromCompany","resendInvitation","IndividualCourseAssignment","managerCourseAssignmentStore","userId","companyId","stage","isRemovable","completedAt","activeTo","hasPassed","hasDiploma","completedModulesCount","PastDue","Historical","removeIndividualCourseAssignment","CourseAssignment","courseAssignmentStore","courseId","courseTitle","assignerId","activeFrom","canBeViewed","isLocked","startCourseAssignment","loadCourseAssignment","Group","groupStore","name","membersCount","leaderIds","activeCoursesCount","getGroupInitials","loadGroup","trimmedGroupName","trim","renameGroup","updateToNewest","removeGroup","isAdmin","_extends","i","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref2","d","_ref3","fillRule","clipRule","_ref4","SvgCheckedCircle","_ref","svgRef","titleId","width","height","viewBox","xmlns","ForwardRef","SvgClouds","cx","cy","r","SvgExclamation","clipPath","SvgGyldendalLogoDesktop","stroke","strokeWidth","strokeLinecap","strokeLinejoin","SvgHamburger","_ref5","_ref6","_ref7","SvgQudosLogo","SvgStarFilled","SvgTrophy","icons","qudosLogo","QudosLogo","arrowLeft","ArrowLeft","arrowRight","ArrowRight","arrowDown","ArrowDown","circle","Circle","chevronDown","ChevronDown","chevronRight","ChevronRight","plus","Plus","userPlus","UserPlus","starFilled","StarFilled","clouds","Clouds","exclamation","Exclamation","search","Search","X","trophy","Trophy","moreHorizontal","MoreHorizontal","clock","Clock","star","Star","tool","Tool","checkedCircle","CheckedCircle","gyldendalLogo","GyldendalLogo","lock","Lock","arrowDownRight","ArrowDownRight","hamburger","Hamburger","trash","Trash","pencil","Edit3","check","Check","helpCircle","HelpCircle","Filter","SvgIcon","iconName","Icon","pixelSize","small","medium","large","xLarge","xxLarge","xxxLarge","custom","userContext","createContext","useContext","useLoggedInAppUser","UserProvider","appStore","Provider","Lazy","lazy","loadAppUser","default","Modal","listener","isOpen","onClose","isButtonDisabled","t","useTranslation","useState","isDisplayed","setIsDisplayed","useEffect","backgroundStyles","useSpring","opacity","onResolve","usePopup","handleEsc","event","addEventListener","removeEventListener","modalInnerStyles","active","focusTrapOptions","allowOutsideClick","ScrollLock","div","style","ExternalLink","href","buttonType","buttonVariant","buttonSize","ariaDescribedBy","targetProps","rel","aria-describedby","getLinkClassNames","substring","useDelayedDisplay","shouldBeDisplayed","RequestCancelledError","PageNotFoundError","UserRoles","PaidUser","CompanyManagementRoles","PathsToAccessRights","rolesWithAccess","scrollPosition","setScrollPosition","scroll","current","unlockScroll","scrollPositionValue","classList","remove","top","scrollTo","scrollY","pageYOffset","add","isBadRequestObjectResultDto","object","HttpClient","axiosInstance","cancelToken","responseType","request","method","baseURL","data","axios","isCancel","isAxiosError","statusText","ErrorView","error","isLoadingIndicatorVisible","setIsLoadingIndicatorVisible","getSlug","MembershipNotActive","description","displayLogoutButton","NoMembership","NoTibetPublication","NoLicenseInTibet","CompanyUserNotAllowed","UserRejectedInvitation","NoDossierKey","toString","displayDashboardButton","getErrorInfo","textDecoration","GroupCourseAssignment","groupId","groupName","assignedGroupMembersCount","removeGroupCourseAssignment","GroupLeader","GroupMember","SearchUsersAndGroupsRequest","UserAndGroupItem","UserAndGroupSearchStore","httpClient","cancelTokenSource","searchType","searchPhrase","options","loadItems","result","results","total","items","u","cancel","CancelToken","send","token","OptionWithStatus","option","changeStatus","TaskWithStatus","task","dispose","updateIsMobile","optionsWithStatus","choiceTask","matchTask","questions","question","answers","answer","inputTask","correctInputAnswers","innerWidth","isMobile","setInputTaskAnswers","reset","i18n","use","ICU","HttpApi","loadPath","initReactI18next","init","fallbackLng","interpolation","escapeValue","FooterLinkTypeDto","LazyInvitation","invitationStore","useLocation","searchParams","URLSearchParams","get","decodedUserEmail","decodeURIComponent","acceptInvitation","redirectToUrl","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","CookiesConsent","model","onAccept","toggleCookie","acceptSpecificCookies","cookiesConsentState","setCookiesConsentState","shouldCookiesConsentBeOpened","hide","showModal","setShowModal","cookiesConsentStyles","from","transform","config","stiff","cookies","mandatory","aria-labelledby","cookie","checked","onChange","htmlFor","CheckoutCourseRequest","CheckoutPackageRequest","SearchGroupsRequest","GroupItem","GroupSearchStore","SearchUsersRequest","UserItem","User","UserSearchStore","AssignmentSourceDto","InternalFooterLink","internalUrl","ExternalFooterLink","externalUrl","FooterConfig","footerLinks","link","createFooterLink","InternalLink","TibetPublicLinks","tibetPublicLinks","editMyProfileUrl","GetSiteConfigRequest","TibetPageToJoinWithCodeRequest","GetAppUserRequest","AppStore","footerConfig","cookiesConsentConfig","isPaymentEnabled","updateIsMobileView","onBecomeObserved","state","runInAction","loadConfig","getAppUserResponse","setCookiesConsent","setFooterLinks","setLinks","isMobileView","GetCourseAssignmentStatsRequest","CourseAssignmentStats","completedPassedAssignmentsCount","completedPassedCount","totalAssignmentsCount","totalCount","activeDaysLeft","CourseStatsStore","courseIds","loadedCourseStats","courseStatsDto","courseStats","GetAssignableCourseDomainsRequest","GetCourseDomainsRequest","GetCourseDomainBySlugRequest","GetCourseDomainRequest","CourseDomain","timeEstimate","price","approvedBy","isAssignable","sanityCourseId","CourseDomainStore","loadAssignableCourses","courses","loadSelfAssignableCourses","selfAssignableCourses","ids","loadCourses","loadedCourses","loadedCourse","push","AddSelfAssignedCourseAssignmentRequest","GetCourseAssignmentRequest","GetUserCourseAssignmentsRequest","StartCourseAssignmentRequest","CourseAssignmentStore","getUserCourseAssignmentsResponse","courseAssignments","toJSON","valueOf","updatedCourseassignments","AcceptInvitationRequest","InvitationStore","returnUrl","acceptInvitationResult","AddCourseAssignmentsRequest","GetCourseAssignmentsForGroupMembersRequest","GetCourseAssignmentsRequest","RemoveCourseAssignmentRequest","RemoveGroupCourseAssignmentRequest","ManagerCourseAssignmentStore","courseDomainId","userIds","groupIds","filters","loadCourseAssignments","assignmentsWithTotal","individualCourseAssignments","ca","getCourseAssignmentsResponse","Individual","individualCourseAssignment","groupCourseAssignment","GetCourseContentInfoRequest","GetCourseContentRequest","GetCoursesContentInfoRequest","GetSelfAssignableCourseContentInfoRequest","CourseContentStore","domainIds","loadCourse","courseCurrentIndex","findIndex","selectCourse","loadCourseDetailed","loadCourseInfo","loadCourseInfos","CompleteModuleRequest","GetModuleProgressByCourseAssignmentRequest","ModuleCompletion","moduleContentId","CourseProgress","courseAssignmentId","progressStore","progress","computedFn","completedModuleIds","courseElementsCount","areAllModulesWithTestCompleted","find","intersection","modulesProgress","moduleProgress","isModuleCompleted","completeModule","markModuleAsCompleted","mp","ProgressStore","courseAssignment","courseProgress","coursesProgress","cp","addProgress","newCourseProgress","updateFromDto","moduleContendId","moduleProgressDtos","assignmentsIds","assignmentId","assignmentProgress","GetCourseAssignmentsReportRequest","ReportStore","years","groups","users","report","loadCourseAssignmentsReport","GetTaskPreviewRequest","GetTestRequest","LockExamRequest","SubmitCourseTestRequest","SubmitExamTestRequest","SubmitModuleTestRequest","Test","threshold","tasks","TestStore","taskTypeMapping","Choice","Match","Gap","Input","userTaskAnswers","context","useDossier","submitCourseTest","submitModuleTest","submitExamTest","foundTest","tests","loadTest","loadedTest","revision","taskType","taskTypeNumber","getTaskResponse","courseContentId","contextRequestParams","testResult","getTestResponse","ResendInvitationRequest","AssignManagerRoleRequest","GetCompanyLicenseUsageRequest","GetCompanyRequest","RevokeManagerRoleRequest","AddConnectionsRequest","AddMemberRequest","RemoveConnectionsRequest","RemoveUsersFromCompanyRequest","Company","canEnableDossier","canEnableDossierIntegration","dossierIntegration","canEnableMerKompetanse","merKompetanseIntegration","addMemberToCompany","CompanyStore","foundCompany","companies","currentCompany","getCompany","loadedCompany","licenseUsage","numberAdded","loadCompany","companyDto","GetCompanyUserRequest","IsUserMemberOfMyNetworkRequest","GetCompanyManagersRequest","GetCompanyUsersRequest","GetUserPendingInvitationsRequest","CompanyUserStore","company","myNetworkOnly","activeOnly","invitedOnly","expiredOnly","AddLeadersToGroupRequest","GetGroupLeadersRequest","GetGroupStatsRequest","GetSingleGroupStatsRequest","RemoveLeadersFromGroupRequest","RenameGroupRequest","AddGroupRequest","AddMembersToGroupRequest","GetGroupCourseAssignmentsWithStatsRequest","GetGroupUsersRequest","GetGroupsLedByUserRequest","RemoveGroupRequest","RemoveMembersFromGroupRequest","GroupCourseAssignmentWithStats","groupCourseAssignmentWithStats","stats","GroupStore","group","dtos","groupCourseAssignmentsWithStats","gca","PostCheckoutRequest","GetContactPageContentRequest","GetCoursePackagesRequest","GetPackageRequest","GetBuyCourseDetailsRequest","GetCoursesListRequest","GetHomePageContentRequest","LandingStore","currentLocation","checkoutUrls","successUrl","failUrl","cancelUrl","GtmService","configure","useProxies","axiosInherit","interceptors","ok","err","reject","checkoutCourseUrl","checkoutPackageUrl","message","generateLoginRequiredError","http","axiosCustom","create","courseContentStore","courseDomainStore","testStore","companyUserStore","managerCourseAssignmentsStore","courseStatsStore","userAndGroupSearchStore","groupSearchStore","userSearchStore","reportStore","landingStore","appViewModel","LazyLandingApp","memo","App","LazyMainApp","Application","ReactDOM","StrictMode","fallbackRender","fallback","getElementById"],"mappings":"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","file":"static/js/main.47a5e657.chunk.js","sourcesContent":["// 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 IApiRequest\n{\n\tabstract $type: string;\n\tprivate response?: TResponse;\n}\n","import DOMPurify from \"dompurify\";\nimport { isNil } from \"lodash\";\nimport { Path } from \"../infrastructure/paths/Paths\";\nimport { ContentId } from \"../infrastructure/types/content/model/ContentId\";\nimport { CourseModeDto } from \"../infrastructure/types/shared/dto/CourseModeDto\";\n\nconst mailValidationRegex = /^[\\w-\\\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/;\nconst mailSplitRegex = /(?:,| |;)+/;\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 throwExpression = (errorMessage: string) => {\n throw new Error(errorMessage);\n};\n\nexport type IdType = string | number | ContentId;\n\nexport const isContentId = (id: IdType): id is ContentId => {\n return (id as ContentId).value !== undefined;\n};\n\nexport const downloadBlob = async (blob: Blob, fileName: string) => {\n const itemsBlobUrl = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.download = fileName;\n a.href = itemsBlobUrl;\n a.target = \"_blank\";\n a.dispatchEvent(new MouseEvent(`click`, { bubbles: true, cancelable: true, view: window }));\n a.remove();\n};\n\nexport const daysDifferenceFromNowToDate = (date: Date) => {\n const now = new Date().getTime();\n const dayInMilliseconds = 1000 * 3600 * 24;\n return Math.floor((date.getTime() - now) / dayInMilliseconds);\n};\n\nexport const getFormattedTime = (date: Date) => {\n const hour = date.getUTCHours();\n const minutes = date.getUTCMinutes();\n\n const formattedHour = hour < 10 ? `0${hour}` : hour;\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\n\n return `${formattedHour}:${formattedMinutes}`;\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\nexport const getCourseUrl = (\n mode: CourseModeDto\n): Extract => {\n return mode === CourseModeDto.Exam ? \"/exam/:courseAssignmentId\" : \"/course/:courseAssignmentId\";\n};\n\nexport const assertUnreachable = (_?: never) => {\n throw new Error(\"Didn't expect to get here (exhaustiveness-check)\");\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const asProxy = (t: TActual) => {\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\nexport const tryParseEmails = (userEmails: string) => {\n const emails = userEmails.split(mailSplitRegex);\n let output: string[] | undefined = emails;\n emails.forEach(email => {\n if (mailValidationRegex.test(email) === false) {\n output = undefined;\n }\n });\n\n return { parsed: output !== undefined, out: output };\n};\n\nexport const calculateProgress = (completed: number, target: number) => {\n return Math.ceil((completed / target) * 100);\n};\n\nexport const wait = (time: number) => new Promise(res => setTimeout(res, time));\n\nexport const generateMarkups = (number: number, markup: string) => Array(number).fill(markup).join(\"\");\n\nexport const waitForElement = (selector: string) => {\n return new Promise(resolve => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n};\n\nexport const getDisplayText = (text: string) =>\n text.includes(\" \") ? `${text.split(\" \")[0].charAt(0)}${text.split(\" \")[1].charAt(0)}` : `${text.slice(0, 2)}`;\n\nexport const sanitizeHtml = (html: string) => {\n return DOMPurify.sanitize(html);\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 enum UserRoleDto { \n\tMember = \"Member\", \n\tManager = \"Manager\", \n\tAdmin = \"Admin\", \n\tPaidUser = \"PaidUser\"\n}\n","import { AppUser } from \"../application/models/appUser/AppUser\";\nimport { getLoginPath } from \"../infrastructure/components/link/LoginLink\";\nimport { RouteConfiguration } from \"../infrastructure/types/routes/RouteConfiguration\";\n\nexport const getUserInitials = (email: string, firstName?: string, lastName?: string) => {\n if (firstName && lastName) {\n const firstLetter = firstName.charAt(0)?.toUpperCase();\n const secondLetter = lastName.charAt(0)?.toUpperCase();\n return `${firstLetter}${secondLetter}`;\n }\n return email.substr(0, 2).toUpperCase();\n};\n\nexport const getUserDisplayName = (email: string, firstName?: string, lastName?: string) =>\n firstName && lastName ? `${firstName} ${lastName}` : email;\n\nexport const getAuthHref = (appUser: AppUser) => {\n if (appUser._type === \"loggedIn\") {\n return RouteConfiguration.Logout;\n }\n\n return getLoginPath({ to: \"/dashboard\", params: {} });\n};\n","export class CompanyId {\n constructor(public value: string) {}\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 enum BadRequestResultTypeDto { \n\tMembershipNotActive = \"MembershipNotActive\", \n\tNoMembership = \"NoMembership\", \n\tNoTibetPublication = \"NoTibetPublication\", \n\tNoLicenseInTibet = \"NoLicenseInTibet\", \n\tCompanyUserNotAllowed = \"CompanyUserNotAllowed\", \n\tUserRejectedInvitation = \"UserRejectedInvitation\", \n\tNoDossierKey = \"NoDossierKey\"\n}\n","import Cookies from \"js-cookie\";\nimport { action, makeObservable, observable } from \"mobx\";\nimport { IGtmService } from \"../../../infrastructure/gtm/GtmService\";\nimport { CookiesConsentDto } from \"../../../infrastructure/types/config/dto/CookiesConsentDto\";\n\nexport const AcceptedCookiesConsentValue = \"true\";\n\nexport const NecessaryCookieName = \"necessary_cookie_consent\";\nexport const AnalysisCookieName = \"ga_analysis_consent\";\n\nexport class CookiesConsentConfig {\n @observable cookiesConsent: CookiesConsentDto = {\n consentText: \"\",\n privacyPolicyLink: \"\",\n privacyPolicyLinkTitle: \"\",\n };\n\n @observable selectedCookies: Record = {\n [NecessaryCookieName]: true,\n };\n\n constructor(private gtm: IGtmService) {\n makeObservable(this);\n }\n\n @action.bound\n toggleCookie(cookieName: string) {\n this.selectedCookies[cookieName] = !this.selectedCookies[cookieName];\n }\n\n @action.bound\n acceptAllCookies() {\n Object.keys(this.selectedCookies).forEach(cookieName => {\n Cookies.set(cookieName, \"true\");\n });\n this.gtm.pushCookieConsentChanged();\n }\n\n @action.bound\n acceptSpecificCookies() {\n Object.keys(this.selectedCookies).forEach(cookieName => {\n Cookies.set(cookieName, this.selectedCookies[cookieName] ? \"true\" : \"false\");\n });\n this.gtm.pushCookieConsentChanged();\n }\n\n @action.bound\n setCookiesConsent(cookiesConsent: CookiesConsentDto) {\n this.cookiesConsent = cookiesConsent;\n }\n}\n","import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { MouseEventHandler } from \"react\";\nimport { Command } from \"../../infrastructure/commands/Command\";\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\nexport interface 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 title?: string;\n children: React.ReactNode;\n}\n\ntype 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 | (() => void) | (() => Promise);\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 = \"medium\",\n className,\n disabled,\n tabIndex,\n title,\n } = props;\n return (\n \n {children}\n \n );\n});\n\nexport const CommandButton = observer(\n React.forwardRef((props: CommandButtonProps, ref) => {\n const { command, tabIndex, ...otherProps } = props;\n return (\n ) => {\n e.preventDefault();\n e.stopPropagation();\n if (typeof command === \"function\") {\n return command();\n }\n return command.execute();\n }}\n tabIndex={tabIndex}\n disabled={typeof command === \"function\" ? false : !command.isEnabled}\n />\n );\n })\n);\n","import { buildUrl, Path } from \"../../paths/Paths\";\nimport { RouteConfiguration } from \"../../types/routes/RouteConfiguration\";\nimport { TypedInternalLinkBase } from \"./TypedInternalLink\";\n\nexport const getLoginPath = (returnLink: TypedInternalLinkBase = { to: \"/dashboard\", params: {} }) =>\n `${RouteConfiguration.Login}?return_Url=${buildUrl(returnLink.to, returnLink.params)}`;\n","export const paymentSuccessUrl = \"/landingsside/betalingenErGjennomfort\";\nexport const paymentFailedUrl = \"/landingsside/betalingenFeilet\";\n\nexport const PATHS = [\n \"/\",\n \"/invitation\",\n \"/dashboard\",\n \"/exam/:courseAssignmentId\",\n \"/course/:courseAssignmentId\",\n \"/course/:courseAssignmentId/browse\",\n \"/course/:courseAssignmentId/browse/test\",\n \"/course/:courseAssignmentId/browse/module/:moduleSlug\",\n \"/course/:courseAssignmentId/browse/module/:moduleSlug/test\",\n \"/course/:courseAssignmentId/browse/module/:moduleSlug/chapter/:chapterSlug\",\n \"/manage\",\n \"/manage/courses\",\n \"/manage/courses/:courseSlug\",\n \"/manage/courses/:courseSlug/activity\",\n \"/manage/courses/:courseSlug/info\",\n \"/manage/members\",\n \"/manage/members/groups\",\n \"/manage/users/:userId\",\n \"/manage/groups/:groupId\",\n \"/manage/company\",\n \"/dossier/:courseSlug\",\n \"/merkompetanse/:courseSlug\",\n \"/reports\",\n \"/noMembership\",\n \"/myProfile\",\n \"/preview/task/:id\",\n \"/informasjonskapsler\",\n \"/bruks-og-kjopsvilkar\",\n \"/personvern\",\n \"/ikke-tilgang\",\n\n // landing\n \"/landingsside\",\n \"/landingsside/kontakt\",\n \"/landingsside/kurspakker\",\n \"/landingsside/kurspakker/:packageSlug\",\n \"/landingsside/kurs\",\n \"/landingsside/kurs/:courseSlug\",\n \"/landingsside/kurs/:courseSlug/kjop\",\n \"/landingsside/kurspakker/:packageSlug/kjop\",\n\n // payment\n paymentSuccessUrl,\n paymentFailedUrl,\n] as const;\n","import classNames from \"classnames\";\nimport * as React from \"react\";\n\ninterface LoaderProps {\n className?: string;\n}\n\nexport const Loader: React.FC = ({ className }) => {\n const loading = \"Laster...\";\n return (\n
\n
\n {loading}\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 enum AssignmentStageDto { \n\tInvited = \"Invited\", \n\tFuture = \"Future\", \n\tNotStarted = \"NotStarted\", \n\tStarted = \"Started\", \n\tHistorical = \"Historical\", \n\tPastDue = \"PastDue\"\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 Landing: string = `/`;\n\tpublic static Dashboard: string = `/dashboard`;\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 Invitation: string = `/invitation`;\n\tpublic static AnalyticsKeys: string = `/analytics-keys.js`;\n\tpublic static RobotsTxt: string = `/robots.txt`;\n\tpublic static Sitemap: string = `/sitemap.xml`;\n\tpublic static MailToSupport: string = `support@gyldendal.no`;\n\tpublic static GyldendalHomePage: string = `https://www.gyldendal.no`;\n\tpublic static GyldendalPrivacyPolicyUrl: string = `https://bokplussnett.gyldendal.no/artikler/gyldendals-bruk-av-informasjonskapsler`;\n\tpublic static Cookies: string = `/informasjonskapsler`;\n\tpublic static TermsAndConditions: string = `/bruks-og-kjopsvilkar`;\n\tpublic static PrivacyPolicy: string = `/personvern`;\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 enum CourseModeDto { \n\tRegular = \"Regular\", \n\tExam = \"Exam\"\n}\n","/* eslint-disable react/react-in-jsx-scope */\n/**\n * Source: https://github.com/0916dhkim/typed-react-router\n */\n\nimport { match as Match, useRouteMatch } from \"react-router-dom\";\nimport { isParams, Path, PathParams } from \"./Paths\";\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getParams =

(match: Match<{}> | null, path: P) => {\n if (!match || !isParams(path, match.params)) {\n throw new Error(\"Params not match\");\n }\n\n return match.params;\n};\n\n/**\n * Type-safe version of `react-router-dom/useParams`.\n * @param path Path to match route.\n * @returns parameter object if route matches. `null` otherwise.\n */\nexport const useTypedParams =

(path: P): PathParams

=> {\n // `exact`, `sensitive` and `strict` options are set to true\n // to ensure type safety.\n const match = useRouteMatch({\n path,\n exact: true,\n sensitive: true,\n strict: true,\n });\n\n return getParams(match, path);\n};\n","import React, { ReactNode } from \"react\";\nimport { Route } from \"react-router-dom\";\nimport { useAppUser } from \"../../application/models/appUser/UserContext\";\nimport { hasUserAccess } from \"../authorization/Authorization\";\nimport { PageForbiddenError } from \"../errors/PageForbiddenError\";\nimport { getParams } from \"../paths/Hooks\";\nimport { Path, PathParams } from \"../paths/Paths\";\nimport { getLoginPath } from \"./link/LoginLink\";\n\ntype TypedRouteProps

= {\n path: P;\n exact?: boolean;\n render: (params: PathParams

) => ReactNode;\n};\n\n/**\n * Type-safe version of `react-router-dom/Route`.\n */\nexport const TypedRoute =

({ path, render, exact }: TypedRouteProps

) => {\n const user = useAppUser();\n const hasUserAccessToRoute = hasUserAccess(user, path);\n\n // https://dev.to/mxdavis/redirecting-to-an-external-url-within-react-router-3nf1\n return (\n {\n if (hasUserAccessToRoute) {\n return render(getParams(match, path));\n }\n\n if (user._type === \"anonymous\") {\n window.location.assign(getLoginPath({ to: path, params: getParams(match, path) }));\n return null;\n }\n\n throw new PageForbiddenError();\n }}\n />\n );\n};\n","import { observable, makeObservable } from \"mobx\";\nimport { TestContentId } from \"../../../infrastructure/types/content/model/TestContentId\";\nimport { CourseTestDto } from \"../../../infrastructure/types/coursecontents/dto/CourseTestDto\";\nimport { ImageDto } from \"../../../infrastructure/types/shared/dto/ImageDto\";\nimport { ContentCourse } from \"./Course\";\n\nexport class CourseTest {\n @observable testId: TestContentId;\n\n @observable introTitle: string;\n\n @observable introDescription: string;\n\n @observable introImage: ImageDto;\n\n @observable thumbnailImage: ImageDto;\n\n @observable thumbnailTitle: string;\n\n readonly _type = \"courseTest\";\n\n constructor(public course: ContentCourse, dto: CourseTestDto) {\n makeObservable(this);\n this.testId = dto.testId;\n this.introTitle = dto.introTitle;\n this.introDescription = dto.introDescription;\n this.introImage = dto.introImage;\n this.thumbnailImage = dto.thumbnailImage;\n this.thumbnailTitle = dto.thumbnailTitle;\n }\n}\n","import { makeObservable, observable } from \"mobx\";\nimport { ChapterContentId } from \"../../../infrastructure/types/content/model/ChapterContentId\";\nimport { ChapterDto } from \"../../../infrastructure/types/coursecontents/dto/ChapterDto\";\nimport { PortableTextDto } from \"../../../infrastructure/types/shared/dto/PortableTextDto\";\nimport { ModuleDetailed } from \"./Module\";\n\nexport class Chapter {\n @observable id: ChapterContentId;\n\n @observable slug: string;\n\n @observable title: string;\n\n @observable content: PortableTextDto;\n\n constructor(public module: ModuleDetailed, dto: ChapterDto) {\n makeObservable(this);\n\n this.id = dto.id;\n this.slug = dto.slug;\n this.title = dto.title;\n this.content = dto.content;\n }\n}\n","import first from \"lodash/first\";\nimport last from \"lodash/last\";\nimport { computed, makeObservable, observable } from \"mobx\";\nimport { ModuleContentId } from \"../../../infrastructure/types/content/model/ModuleContentId\";\nimport { TestContentId } from \"../../../infrastructure/types/content/model/TestContentId\";\nimport { ModuleDto } from \"../../../infrastructure/types/coursecontents/dto/ModuleDto\";\nimport { ModuleInfoDto } from \"../../../infrastructure/types/coursecontents/dto/ModuleInfoDto\";\nimport { ImageDto } from \"../../../infrastructure/types/shared/dto/ImageDto\";\nimport { throwExpression } from \"../../../utils/utils\";\nimport { Chapter } from \"./Chapter\";\nimport { CourseDetailed, CourseInfo } from \"./Course\";\n\nexport type Module = {\n id: ModuleContentId;\n\n slug: string;\n\n title: string;\n\n image: ImageDto;\n\n duration: number;\n\n chaptersCount: number;\n\n testId?: TestContentId;\n\n _type: \"moduleInfo\" | \"moduleDetailed\";\n};\n\nexport class ModuleInfo {\n @observable id: ModuleContentId;\n\n @observable slug: string;\n\n @observable title: string;\n\n @observable image: ImageDto;\n\n @observable duration: number;\n\n @observable chaptersCount: number;\n\n @observable testId?: TestContentId;\n\n readonly _type = \"moduleInfo\";\n\n constructor(public course: CourseInfo, dto: ModuleInfoDto) {\n makeObservable(this);\n\n this.id = dto.id;\n this.slug = dto.slug;\n this.title = dto.title;\n this.image = dto.image;\n this.duration = dto.duration;\n this.chaptersCount = dto.chaptersCount;\n this.testId = dto.testId;\n }\n}\n\nexport class ModuleDetailed {\n @observable id: ModuleContentId;\n\n @observable slug: string;\n\n @observable title: string;\n\n @observable image: ImageDto;\n\n @observable duration: number;\n\n @observable chapters: Chapter[] = [];\n\n @computed get chaptersCount() {\n return this.chapters.length;\n }\n\n @observable testId?: TestContentId;\n\n @computed get firstChapter() {\n const firstChapter = first(this.chapters);\n return firstChapter ?? throwExpression(`Module '${this.slug}' must contain at least one chapter`);\n }\n\n @computed get lastChapter() {\n const lastChapter = last(this.chapters);\n return lastChapter ?? throwExpression(`Module '${this.slug}' must contain at least one chapter`);\n }\n\n @computed get hasTest() {\n return !!this.testId;\n }\n\n readonly _type = \"moduleDetailed\";\n\n constructor(public course: CourseDetailed, dto: ModuleDto) {\n makeObservable(this);\n\n this.id = dto.id;\n this.slug = dto.slug;\n this.title = dto.title;\n this.image = dto.image;\n this.duration = dto.duration;\n this.chapters = dto.chapters.map(c => new Chapter(this, c));\n this.testId = dto.testId;\n }\n}\n","import sumBy from \"lodash/sumBy\";\nimport { makeObservable, observable, computed } from \"mobx\";\nimport { CourseContentId } from \"../../../infrastructure/types/content/model/CourseContentId\";\nimport { CourseContentDto } from \"../../../infrastructure/types/coursecontents/dto/CourseContentDto\";\nimport { CourseContentInfoDto } from \"../../../infrastructure/types/coursecontents/dto/CourseContentInfoDto\";\nimport { CourseModeDto } from \"../../../infrastructure/types/shared/dto/CourseModeDto\";\nimport { ImageDto } from \"../../../infrastructure/types/shared/dto/ImageDto\";\nimport { getCourseElementsCount } from \"../utils/getCourseElementsCount\";\nimport { CourseTest } from \"./CourseTest\";\nimport { ModuleDetailed, ModuleInfo } from \"./Module\";\n\nexport class CourseInfo {\n @observable id;\n\n @observable slug;\n\n @observable title;\n\n @observable introduction;\n\n @observable image;\n\n @observable courseTest?: CourseTest;\n\n @observable modules: ModuleInfo[];\n\n readonly _type = \"courseInfo\";\n\n @computed get courseDuration() {\n return sumBy(this.modules, m => m.duration);\n }\n\n @computed get elementsCount() {\n return getCourseElementsCount(this.modules, this.courseTest);\n }\n\n constructor(dto: CourseContentInfoDto) {\n makeObservable(this);\n this.id = dto.id;\n this.slug = dto.slug;\n this.title = dto.title;\n this.image = dto.image;\n this.introduction = dto.introduction;\n this.modules = dto.modules.map(m => new ModuleInfo(this, m));\n this.courseTest = dto.courseTest && new CourseTest(this, dto.courseTest);\n }\n}\n\nexport class CourseDetailed {\n @observable id: CourseContentId;\n\n @observable slug: string;\n\n @observable title: string;\n\n @observable introduction: string;\n\n @observable image: ImageDto;\n\n @observable courseTest?: CourseTest;\n\n @observable modules: ModuleDetailed[];\n\n @observable mode: CourseModeDto;\n\n readonly _type = \"courseDetailed\";\n\n @computed get courseDuration() {\n return sumBy(this.modules, m => m.duration);\n }\n\n @computed get elementsCount() {\n return getCourseElementsCount(this.modules, this.courseTest);\n }\n\n @computed get isExam() {\n return this.mode === CourseModeDto.Exam;\n }\n\n constructor(dto: CourseContentDto) {\n makeObservable(this);\n this.id = dto.id;\n this.slug = dto.slug;\n this.title = dto.title;\n this.introduction = dto.introduction;\n this.image = dto.image;\n this.modules = dto.modules.map(m => new ModuleDetailed(this, m));\n this.courseTest = dto.courseTest && new CourseTest(this, dto.courseTest);\n this.mode = dto.mode;\n }\n}\n\nexport type ContentCourse = CourseInfo | CourseDetailed;\n","import { CheckoutType } from \"landing/application/pages/buyRedirect/LazyBuyRedirectPage\";\n\ninterface CheckoutParams {\n courseSlug: string;\n packageSlug: string;\n}\n\nexport class CheckoutLoginRequiredError extends Error {\n readonly code = 401;\n\n private params: CheckoutParams;\n\n constructor(stack: string, requestData: string, public type: CheckoutType) {\n super(stack);\n\n this.params = JSON.parse(requestData);\n }\n\n public getSlug() {\n if (this.type === \"course\") {\n return this.params.courseSlug;\n }\n return this.params.packageSlug;\n }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { computed, makeObservable, observable } from \"mobx\";\nimport { UserDto } from \"../../../infrastructure/types/shared/dto/UserDto\";\nimport { UserRoleDto } from \"../../../infrastructure/types/shared/dto/UserRoleDto\";\nimport { UserTypeDto } from \"../../../infrastructure/types/shared/dto/UserTypeDto\";\nimport { getUserDisplayName, getUserInitials } from \"../../../utils/userUtils\";\n\nexport class AnonymousAppUser {\n readonly _type = \"anonymous\";\n}\n\nexport class LoggedInAppUser {\n @observable id: string;\n\n @observable firstName?: string;\n\n @observable lastName?: string;\n\n @observable role?: UserRoleDto;\n\n @observable defaultCompanyId: CompanyId;\n\n @observable defaultCompanyName: string;\n\n @observable email: string;\n\n @observable phone?: string;\n\n @observable hasAnyActiveMemberships: boolean;\n\n @observable hasAnyMemberships: boolean;\n\n @observable allowSelfAssign: boolean;\n\n @observable showCourses: boolean;\n\n @observable dossierEnabled: boolean;\n\n @observable merKompetanseEnabled: boolean;\n\n @observable userType: UserTypeDto;\n\n readonly _type = \"loggedIn\";\n\n constructor(userDto: UserDto) {\n makeObservable(this);\n this.id = userDto.id;\n this.firstName = userDto.firstName;\n this.lastName = userDto.lastName;\n this.role = userDto.role;\n this.defaultCompanyId = new CompanyId(userDto.defaultCompanyId);\n this.defaultCompanyName = userDto.defaultCompanyName;\n this.email = userDto.email;\n this.phone = userDto.phone;\n this.hasAnyActiveMemberships = userDto.hasAnyActiveMemberships;\n this.hasAnyMemberships = userDto.hasAnyMemberships;\n this.allowSelfAssign = userDto.allowSelfAssign ?? false;\n this.showCourses = userDto.showCourses ?? false;\n this.dossierEnabled = userDto.dossierEnabled ?? false;\n this.merKompetanseEnabled = userDto.merKompetanseEnabled ?? false;\n this.userType = userDto.userType;\n }\n\n @computed get initials() {\n return getUserInitials(this.email, this.firstName, this.lastName);\n }\n\n @computed get isManager() {\n return this.role === UserRoleDto.Manager;\n }\n\n @computed get isAdmin() {\n return this.role === UserRoleDto.Admin;\n }\n\n @computed get displayName() {\n return getUserDisplayName(this.email, this.firstName, this.lastName);\n }\n}\n\nexport type AppUser = AnonymousAppUser | LoggedInAppUser;\n","import { ModuleContentId } from \"../../../infrastructure/types/content/model/ModuleContentId\";\nimport { TestContentId } from \"../../../infrastructure/types/content/model/TestContentId\";\n\ninterface Module {\n id: ModuleContentId;\n}\n\ninterface CourseTest {\n testId: TestContentId;\n}\n\nexport const getCourseElementsCount = (modules: Module[], courseTest?: CourseTest) => {\n return modules.length + (courseTest ? 1 : 0);\n};\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable @typescript-eslint/ban-types */\n/**\n * Source: https://github.com/0916dhkim/typed-react-router\n */\n\nimport { PATHS as Paths } from \"./AppPaths\";\nimport { ScrollTargets } from \"./AppScrollTargets\";\n\ntype ExtractRouteParams = string extends T\n ? Record\n : T extends `${string}:${infer Param}/${infer Rest}`\n ? { [k in Param | keyof ExtractRouteParams]: string }\n : T extends `${string}:${infer Param}`\n ? { [k in Param]: string }\n : {};\n\nexport type Path = typeof Paths[number];\nexport type ScrollTargetName = typeof ScrollTargets[number];\n\n// Object which has matching parameter keys for a path.\nexport type PathParams

= ExtractRouteParams

;\n\n/**\n * Type predicate for checking whether params match the path specs.\n * @example\n * isParams(\n * '/something/:id',\n * { id: 'abcd' },\n * ) // returns true.\n *\n * isParams(\n * '/else/:one',\n * { two: 'efg' },\n * ) // returns false.\n * @param path target path.\n * @param params params to be checked.\n */\nexport function isParams

(path: P, params: unknown): params is PathParams

{\n if (!(params instanceof Object)) {\n return false;\n }\n\n const paramSet = new Set(Object.keys(params));\n\n // Validate params.\n const requiredParams = path\n .split(\"/\")\n .filter(s => s.startsWith(\":\"))\n .map(s => s.substr(1));\n\n for (const x of requiredParams) {\n if (!paramSet.has(x)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Build an url with a path and its parameters.\n * @example\n * buildUrl(\n * '/a/:first/:last',\n * { first: 'p', last: 'q' },\n * ) // returns '/a/p/q'\n * @param path target path.\n * @param params parameters.\n */\nexport const buildUrl =

(path: P, params: PathParams

, scrollTarget?: ScrollTargetName): string => {\n let url: string = path;\n\n // Upcast `params` to be used in string replacement.\n const paramObj: { [i: string]: string } = params;\n\n for (const key of Object.keys(paramObj)) {\n url = url.replace(`:${key}`, paramObj[key]);\n }\n\n if (scrollTarget) {\n url += `#${scrollTarget}`;\n }\n\n return url;\n};\n\nexport const isPathValid = (locationPathElements: string[]) =>\n Paths.some(p => {\n const pathElements = p.split(\"/\");\n\n if (locationPathElements.length !== pathElements.length) {\n return false;\n }\n\n return pathElements.every((pathElement, index) => {\n if (pathElement.startsWith(\":\")) {\n return true;\n }\n\n return pathElement === locationPathElements[index];\n });\n });\n","export class Unloaded {\n readonly _type = \"unloaded\";\n}\n\nexport class UnloadedListItem extends Unloaded {\n constructor(public id: string | number) {\n super();\n }\n}\n","import { BadRequestResultTypeDto } from \"infrastructure/types/api/error/BadRequestResultTypeDto\";\nimport { HttpClientErrorResponse } from \"./HttpError\";\n\nexport interface HttpCustomErrorClientResponse extends HttpClientErrorResponse {\n type: BadRequestResultTypeDto;\n}\n\nexport class HttpCustomError extends Error {\n public code: number;\n\n public type: BadRequestResultTypeDto;\n\n constructor(httpClientResponse: HttpCustomErrorClientResponse) {\n super(httpClientResponse.errorText);\n this.code = httpClientResponse.errorCode;\n this.type = BadRequestResultTypeDto[httpClientResponse.type];\n }\n}\n","export class PageForbiddenError extends Error {\n public static readonly code = 403;\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 enum UserAndGroupTypeDto { \n\tGroup = \"Group\", \n\tUser = \"User\"\n}\n","export interface HttpClientErrorResponse {\n errorCode: number;\n errorText: string;\n}\n\nexport class HttpError extends Error {\n public code: number;\n\n constructor(httpClientResponse: HttpClientErrorResponse) {\n super(httpClientResponse.errorText);\n this.code = httpClientResponse.errorCode;\n }\n}\n","export class LoginRequiredError extends Error {\n readonly code = 401;\n}\n","import { action, computed, makeObservable, observable } from \"mobx\";\nimport { CompanyMembershipStatusDto } from \"../../../infrastructure/types/company/dto/CompanyMembershipStatusDto\";\nimport { CompanyUserDto } from \"../../../infrastructure/types/company/dto/CompanyUserDto\";\nimport { UserRoleDto } from \"../../../infrastructure/types/shared/dto/UserRoleDto\";\nimport { getUserDisplayName, getUserInitials } from \"../../../utils/userUtils\";\nimport { CompanyStore } from \"../stores/companyStore/CompanyStore\";\n\nexport class CompanyUser {\n @observable id: string;\n\n @observable firstName?: string;\n\n @observable lastName?: string;\n\n @observable email: string;\n\n @observable role: UserRoleDto;\n\n @observable status: CompanyMembershipStatusDto;\n\n @observable isActive: boolean;\n\n @observable phone?: string;\n\n @observable companyMembershipCreatedAt: string;\n\n @computed get initials() {\n return getUserInitials(this.email, this.firstName, this.lastName);\n }\n\n @computed get displayName() {\n return getUserDisplayName(this.email, this.firstName, this.lastName);\n }\n\n @computed get isManager() {\n return this.role === UserRoleDto.Manager;\n }\n\n @computed get isAdmin() {\n return this.role === UserRoleDto.Admin;\n }\n\n constructor(public companyStore: CompanyStore, dto: CompanyUserDto) {\n makeObservable(this);\n this.id = dto.id;\n this.firstName = dto.userFirstName;\n this.lastName = dto.userLastName;\n this.email = dto.userEmail;\n this.role = dto.userRole;\n this.status = dto.status;\n this.isActive = dto.isActive;\n this.companyMembershipCreatedAt = dto.companyMembershipCreatedAt;\n }\n\n @action.bound\n async assignManagerRole() {\n await this.companyStore.assignManagerRole(this.id);\n this.role = UserRoleDto.Manager;\n }\n\n @action.bound\n async revokeManagerRole() {\n await this.companyStore.revokeManagerRole(this.id);\n this.role = UserRoleDto.Member;\n }\n\n @action.bound\n async addConnection(managerId: string) {\n const number = await this.companyStore.addConnections(managerId, [this.id]);\n return number;\n }\n\n @action.bound\n async removeConnection(managerId: string) {\n await this.companyStore.removeConnections(managerId, [this.id]);\n }\n\n async remove() {\n await this.companyStore.removeUsersFromCompany([this.id]);\n }\n\n async resendInvitation() {\n await this.companyStore.resendInvitation(this.id);\n }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { computed, makeObservable, observable } from \"mobx\";\nimport { AssignmentStageDto } from \"../../../infrastructure/types/courseassignments/dto/AssignmentStageDto\";\nimport { IndividualCourseAssignmentDto } from \"../../../infrastructure/types/courseassignments/dto/IndividualCourseAssignmentDto\";\nimport { daysDifferenceFromNowToDate } from \"../../../utils/utils\";\nimport { ManagerCourseAssignmentStore } from \"../stores/managerCourseAssignmentStore/ManagerCourseAssignmentStore\";\n\nexport class IndividualCourseAssignment {\n @observable id: string;\n\n @observable userId: string;\n\n @observable companyId: CompanyId;\n\n @observable stage: AssignmentStageDto;\n\n @observable isRemovable: boolean;\n\n @observable completedAt?: Date;\n\n @observable activeTo: Date;\n\n @observable hasPassed?: boolean;\n\n @observable hasDiploma: boolean;\n\n @observable completedModulesCount: number;\n\n @observable userFirstName?: string;\n\n @observable userLastName?: string;\n\n @observable userEmail: string;\n\n @computed get remainingDays() {\n if (this.stage === AssignmentStageDto.PastDue || this.stage === AssignmentStageDto.Historical) {\n return;\n }\n\n return daysDifferenceFromNowToDate(this.activeTo);\n }\n\n readonly _type = \"individualCourseAssignment\";\n\n constructor(private managerCourseAssignmentStore: ManagerCourseAssignmentStore, dto: IndividualCourseAssignmentDto) {\n makeObservable(this);\n\n this.id = dto.id;\n this.userId = dto.userId;\n this.companyId = new CompanyId(dto.companyId);\n this.stage = dto.stage;\n this.isRemovable = dto.isRemovable;\n this.completedAt = dto.completedAt ? new Date(dto.completedAt) : undefined;\n this.activeTo = new Date(dto.activeTo);\n this.hasPassed = dto.hasPassed;\n this.hasDiploma = dto.hasDiploma;\n this.completedModulesCount = dto.completedModulesCount;\n this.userFirstName = dto.firstName;\n this.userLastName = dto.lastName;\n this.userEmail = dto.email;\n }\n\n async remove() {\n await this.managerCourseAssignmentStore.removeIndividualCourseAssignment(this.id, this.companyId);\n }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { makeObservable, observable } from \"mobx\";\nimport { AssignmentStageDto } from \"../../../infrastructure/types/courseassignments/dto/AssignmentStageDto\";\nimport { CourseAssignmentDto } from \"../../../infrastructure/types/courseassignments/dto/CourseAssignmentDto\";\nimport { CourseModeDto } from \"../../../infrastructure/types/shared/dto/CourseModeDto\";\nimport { CourseAssignmentStore } from \"../stores/courseAssignmentStore/CourseAssignmentStore\";\n\nexport type HistoricalCourseAssignment = CourseAssignment & { completedAt: Date; hasPassed: boolean };\n\nexport class CourseAssignment {\n @observable id: string;\n\n @observable companyId: CompanyId;\n\n @observable userId: string;\n\n @observable courseId: string;\n\n @observable courseTitle: string;\n\n @observable assignerId?: string;\n\n @observable activeFrom: Date;\n\n @observable activeTo: Date;\n\n @observable completedAt?: Date;\n\n @observable canBeViewed: boolean;\n\n @observable hasDiploma: boolean;\n\n @observable stage: AssignmentStageDto;\n\n @observable hasPassed?: boolean;\n\n @observable isRemovable: boolean;\n\n @observable mode: CourseModeDto;\n\n @observable isLocked: boolean;\n\n constructor(private courseAssignmentStore: CourseAssignmentStore, dto: CourseAssignmentDto) {\n makeObservable(this);\n\n this.id = dto.id;\n this.companyId = new CompanyId(dto.companyId);\n this.userId = dto.userId;\n this.courseId = dto.courseId;\n this.courseTitle = dto.courseTitle;\n this.assignerId = dto.assignerId;\n this.activeFrom = new Date(dto.activeFrom);\n this.activeTo = new Date(dto.activeTo);\n this.completedAt = dto.completedAt ? new Date(dto.completedAt) : undefined;\n this.canBeViewed = dto.canBeViewed;\n this.hasDiploma = dto.hasDiploma;\n this.stage = dto.stage;\n this.hasPassed = dto.hasPassed;\n this.isRemovable = dto.isRemovable;\n this.mode = dto.mode;\n this.isLocked = dto.isLocked;\n }\n\n async start() {\n await this.courseAssignmentStore.startCourseAssignment(this.id);\n }\n\n async updateToNewest() {\n const dto = await this.courseAssignmentStore.loadCourseAssignment(this.id);\n\n this.id = dto.id;\n this.companyId = new CompanyId(dto.companyId);\n this.userId = dto.userId;\n this.courseId = dto.courseId;\n this.courseTitle = dto.courseTitle;\n this.assignerId = dto.assignerId;\n this.activeFrom = new Date(dto.activeFrom);\n this.activeTo = new Date(dto.activeTo);\n this.completedAt = dto.completedAt ? new Date(dto.completedAt) : undefined;\n this.canBeViewed = dto.canBeViewed;\n this.hasDiploma = dto.hasDiploma;\n this.stage = dto.stage;\n this.hasPassed = dto.hasPassed;\n this.isRemovable = dto.isRemovable;\n this.mode = dto.mode;\n this.isLocked = dto.isLocked;\n }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { LoggedInAppUser } from \"application/models/appUser/AppUser\";\nimport { action, computed, makeObservable, observable } from \"mobx\";\nimport { getGroupInitials } from \"utils/groupUtils\";\nimport { GroupStatsDto } from \"../../../infrastructure/types/group/dto/GroupStatsDto\";\nimport { GroupStore } from \"../stores/groupStore/GroupStore\";\n\nexport class Group {\n @observable public id: string;\n\n @observable public name: string;\n\n @observable public membersCount: number;\n\n @observable public leaderIds: string[];\n\n @observable public activeCoursesCount: number;\n\n @computed get groupInitials() {\n return getGroupInitials(this.name);\n }\n\n readonly _type = \"group\";\n\n constructor(dto: GroupStatsDto, private companyId: CompanyId, private groupStore: GroupStore) {\n makeObservable(this);\n this.id = dto.id;\n this.name = dto.name;\n this.membersCount = dto.membersCount;\n this.leaderIds = dto.leaderIds;\n this.activeCoursesCount = dto.activeCoursesCount;\n }\n\n @action.bound\n public async updateToNewest() {\n const dto = await this.groupStore.loadGroup(this.id, this.companyId);\n\n this.id = dto.id;\n this.name = dto.name;\n this.membersCount = dto.membersCount;\n this.leaderIds = dto.leaderIds;\n this.activeCoursesCount = dto.activeCoursesCount;\n }\n\n @action.bound\n public async rename(name: string) {\n const trimmedGroupName = name.trim();\n await this.groupStore.renameGroup(this.id, trimmedGroupName, this.companyId);\n await this.updateToNewest();\n }\n\n @action.bound\n public async remove() {\n await this.groupStore.removeGroup(this.id, this.companyId);\n }\n\n public hasUserGroupManagementRights(user: LoggedInAppUser) {\n return user.isAdmin || this.leaderIds.some(id => id === user.id);\n }\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"CheckedCircle__filledCircle\",\n d: \"M12,3c5,0,9,4,9,9s-4,9-9,9s-9-4-9-9S7,3,12,3 M12,1C5.9,1,1,5.9,1,12c0,6.1,4.9,11,11,11c6.1,0,11-4.9,11-11 C23,5.9,18.1,1,12,1L12,1z\",\n fill: \"transparent\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"CheckedCircle__circle\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.663 3.77342C13.8902 2.98352 11.9096 2.78783 10.0166 3.21555C8.1235 3.64326 6.41941 4.67145 5.15845 6.14678C3.89748 7.62211 3.1472 9.46552 3.0195 11.4021C2.89181 13.3387 3.39353 15.2646 4.44986 16.8928C5.50618 18.5209 7.06051 19.764 8.88102 20.4365C10.7015 21.1091 12.6907 21.1752 14.5518 20.6249C16.413 20.0746 18.0463 18.9375 19.2084 17.3831C20.3704 15.8286 20.9989 13.9402 21 11.9994V11.08C21 10.5277 21.4477 10.08 22 10.08C22.5523 10.08 23 10.5277 23 11.08V12C22.9986 14.3721 22.2305 16.6807 20.8103 18.5806C19.39 20.4804 17.3936 21.8703 15.1189 22.5428C12.8442 23.2154 10.413 23.1346 8.18791 22.3126C5.96284 21.4906 4.06311 19.9713 2.77205 17.9813C1.48099 15.9914 0.867763 13.6374 1.02384 11.2705C1.17991 8.90358 2.09692 6.65052 3.6381 4.84734C5.17928 3.04416 7.26206 1.78748 9.5758 1.26472C11.8895 0.74196 14.3103 0.981129 16.477 1.94656C16.9815 2.17134 17.2082 2.76252 16.9834 3.26699C16.7586 3.77146 16.1675 3.9982 15.663 3.77342Z\",\n fill: \"#0F2B3B\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"CheckedCircle__mark\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M22.7068 3.29254C23.0975 3.68287 23.0978 4.31603 22.7075 4.70675L12.7075 14.7168C12.52 14.9044 12.2656 15.0099 12.0002 15.01C11.7349 15.0101 11.4805 14.9047 11.2929 14.7171L8.29289 11.7171C7.90237 11.3266 7.90237 10.6934 8.29289 10.3029C8.68342 9.91237 9.31658 9.91237 9.70711 10.3029L11.9996 12.5954L21.2925 3.29325C21.6829 2.90253 22.316 2.90221 22.7068 3.29254Z\",\n fill: \"#0192d0\"\n});\n\nfunction SvgCheckedCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckedCircle);\nexport default __webpack_public_path__ + \"static/media/checked-circle.161fdaf2.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38 16.313C38 21.3036 31.1308 20.749 25.0879 20.749C14.7581 20.749 8 21.3036 8 16.313C8 14.5402 10.8844 11.9225 14.5429 13.2313C20.7838 3.41481 37.1392 9.14113 38 16.313Z\",\n fill: \"white\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.2795 5.20466C14.2795 8.32919 11.0099 7.98196 8.13352 7.98196C3.21673 7.98196 0 8.32919 0 5.20466C0 4.09475 1.37294 2.4558 3.1143 3.27526C6.08485 -2.87072 13.8697 0.714448 14.2795 5.20466Z\",\n fill: \"white\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.2795 5.20466C14.2795 8.32919 11.0099 7.98196 8.13352 7.98196C3.21673 7.98196 0 8.32919 0 5.20466C0 4.09475 1.37294 2.4558 3.1143 3.27526C6.08485 -2.87072 13.8697 0.714448 14.2795 5.20466Z\",\n fill: \"white\"\n});\n\nfunction SvgClouds(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38,\n height: 21,\n viewBox: \"0 0 38 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClouds);\nexport default __webpack_public_path__ + \"static/media/clouds.8bfeea49.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.54396 21.3536C5.833 22.2959 7.167 22.2959 7.45604 21.3536L11.7325 7.41087C11.9297 6.768 11.4489 6.11764 10.7765 6.11764H2.22353C1.5511 6.11764 1.07031 6.768 1.26749 7.41087L5.54396 21.3536Z\",\n fill: \"white\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 6.88207,\n cy: 31.3529,\n r: 3.05882,\n fill: \"white\"\n});\n\nfunction SvgExclamation(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 35,\n viewBox: \"0 0 13 35\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExclamation);\nexport default __webpack_public_path__ + \"static/media/exclamation.e537e19c.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.31645 18.3692C1.88222 18.3039 1.45553 18.1966 1.04255 18.0487C0.710709 17.9236 0.390404 17.7704 0.0851988 17.5908L0.0697576 17.5527C0.0529642 17.5462 0.0379373 17.5359 0.0258738 17.5226C0.0138103 17.5094 0.00504374 17.4935 0.000272356 17.4763C-0.00549828 17.4578 -0.00722262 17.4382 -0.00478695 17.419C-0.00235127 17.3997 0.00418907 17.3811 0.0144027 17.3646C0.0246164 17.348 0.0382714 17.3337 0.054467 17.3227C0.0706626 17.3117 0.089031 17.3043 0.108361 17.3008C1.38623 17.0075 2.6175 16.5427 3.76792 15.9195C4.85905 15.3251 5.86624 14.5912 6.76351 13.7369C5.37985 13.7838 4.02036 13.3699 2.90321 12.5616H2.84917C2.82117 12.5413 2.80189 12.5113 2.79513 12.4777C2.7878 12.4403 2.79482 12.4017 2.81481 12.3692C2.8348 12.3368 2.86632 12.3128 2.90321 12.3021C4.05325 12.0265 5.12837 11.5055 6.05321 10.7758C6.89387 10.1044 7.59406 9.27754 8.11461 8.34134C7.58726 8.36182 7.06137 8.27345 6.57049 8.08186C6.25313 7.96367 5.95423 7.80181 5.68263 7.60107C5.6607 7.58446 5.64232 7.56371 5.62858 7.54002C5.60917 7.50137 5.60557 7.45682 5.6185 7.41561C5.63144 7.3744 5.65993 7.3397 5.69807 7.3187C6.63574 6.88665 7.46398 6.25307 8.12233 5.46423C9.0874 4.17449 9.44255 1.77818 9.5738 0.282389C9.56791 0.252547 9.56877 0.221785 9.57633 0.192311C9.58388 0.162838 9.59794 0.135382 9.6175 0.111913C9.63705 0.0884441 9.66162 0.0695444 9.68944 0.0565693C9.71726 0.0435941 9.74764 0.0368652 9.7784 0.0368652C9.80916 0.0368652 9.83954 0.0435941 9.86735 0.0565693C9.89517 0.0695444 9.91974 0.0884441 9.9393 0.111913C9.95885 0.135382 9.97291 0.162838 9.98047 0.192311C9.98802 0.221785 9.98888 0.252547 9.98299 0.282389C10.1142 1.8087 10.4771 4.17449 11.4422 5.46423C12.0874 6.25378 12.9058 6.88793 13.8356 7.3187C13.8545 7.32902 13.8712 7.34299 13.8846 7.35978C13.898 7.37658 13.9079 7.39586 13.9137 7.41648C13.9194 7.43711 13.921 7.45867 13.9181 7.47989C13.9153 7.5011 13.9083 7.52155 13.8973 7.54002C13.8889 7.56474 13.8727 7.58614 13.851 7.60107C13.5794 7.80181 13.2805 7.96367 12.9631 8.08186C12.4718 8.27174 11.9463 8.36005 11.419 8.34134C11.8979 9.0915 12.5256 9.73794 13.2642 10.2416C14.0602 10.7811 14.9627 11.1479 15.9124 11.3177C15.9304 11.3195 15.9479 11.325 15.9637 11.3338C15.9795 11.3426 15.9933 11.3545 16.0041 11.3689C16.015 11.3832 16.0228 11.3996 16.0269 11.4171C16.0311 11.4345 16.0315 11.4527 16.0282 11.4703C16.0225 11.5065 16.0032 11.5392 15.9742 11.5619L15.9124 11.6077C15.4528 11.9318 14.9483 12.1888 14.4146 12.3708C13.714 12.6158 12.9721 12.7246 12.2297 12.6913C13.0354 13.377 13.9347 13.9473 14.901 14.3855C15.8853 14.8217 16.9238 15.1271 17.9892 15.2937C18.0254 15.3011 18.0574 15.3217 18.0789 15.3514C18.1004 15.3811 18.1097 15.4177 18.1051 15.454C18.0967 15.491 18.0747 15.5237 18.0433 15.5455L17.9892 15.5913C17.3625 16.0385 16.6733 16.3933 15.9433 16.6445C15.0588 16.9403 14.128 17.0772 13.1948 17.049L16.6381 18.4761C16.66 18.4844 16.6799 18.497 16.6966 18.5133C16.7133 18.5295 16.7264 18.549 16.7351 18.5705C16.7438 18.592 16.7479 18.6151 16.7472 18.6382C16.7464 18.6614 16.7409 18.6841 16.7308 18.705C16.7102 18.7443 16.6779 18.7763 16.6381 18.7966H16.5995C16.4175 18.8949 16.2292 18.9816 16.0359 19.0561C15.829 19.1386 15.6176 19.2099 15.4028 19.2698L15.8738 19.7658C16.5462 20.4731 17.2576 21.1431 18.0047 21.7729C18.0345 21.8053 18.0511 21.8474 18.0511 21.8912C18.0511 21.935 18.0345 21.9772 18.0047 22.0095C17.99 22.0257 17.9722 22.0388 17.9523 22.048C17.9324 22.0571 17.9108 22.0622 17.8889 22.0629C16.9192 22.1358 15.9439 22.0689 14.9937 21.8645C14.142 21.6834 13.317 21.3962 12.5385 21.0098C12.6341 21.2987 12.7476 21.5816 12.8782 21.8569C13.0064 22.1197 13.1508 22.3746 13.3106 22.62C13.3231 22.6383 13.3316 22.659 13.3357 22.6807C13.3397 22.7024 13.3392 22.7247 13.3341 22.7462C13.329 22.7677 13.3195 22.7879 13.3062 22.8056C13.2928 22.8233 13.2759 22.838 13.2565 22.849C13.2392 22.8653 13.2185 22.8779 13.1959 22.8858C13.1732 22.8937 13.1492 22.8967 13.1253 22.8948C12.0058 22.5831 10.941 22.1044 9.96755 21.4753C8.97855 20.8443 8.08887 20.0729 7.32711 19.1858C7.34626 19.4583 7.38757 19.7288 7.45064 19.9948C7.51714 20.2964 7.60749 20.5924 7.72086 20.88C6.84464 21.3596 5.8996 21.7045 4.91829 21.9027C3.96955 22.1173 2.99427 22.1944 2.02307 22.1316C2.00224 22.1308 1.98184 22.1256 1.9632 22.1164C1.94456 22.1072 1.92812 22.0942 1.91498 22.0782C1.88339 22.0467 1.86566 22.0042 1.86566 21.9599C1.86566 21.9156 1.88339 21.8731 1.91498 21.8416C2.66799 21.2129 3.387 20.5455 4.06902 19.8421C4.68667 19.1858 5.23483 18.5448 5.71351 17.9419V17.8579C5.22392 18.1699 4.70717 18.438 4.16939 18.6592C3.49557 18.9474 2.79116 19.1598 2.06939 19.2927C2.02211 19.3102 1.96998 19.3102 1.9227 19.2927C1.90147 19.2795 1.88315 19.2623 1.86885 19.2419C1.85456 19.2216 1.84458 19.1986 1.83953 19.1743C1.83448 19.1501 1.83446 19.1251 1.83946 19.1008C1.84447 19.0765 1.8544 19.0535 1.86865 19.0332L2.31645 18.3692Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.1835 10.6154C30.1836 10.3078 29.1425 10.1508 28.0952 10.1499C25.0919 10.1499 23.8721 11.4167 23.8721 14.5228C23.8721 17.6289 25.0302 18.8804 28.296 18.8804C29.1013 18.8784 29.9039 18.7889 30.6893 18.6133C31.3224 18.4149 31.4614 18.0944 31.4614 17.4533V14.2938C31.4615 14.2585 31.4542 14.2234 31.4401 14.1909C31.4259 14.1584 31.4052 14.1291 31.3791 14.1048C31.3531 14.0805 31.3223 14.0617 31.2887 14.0496C31.255 14.0375 31.2192 14.0323 31.1835 14.0344H28.296C28.2623 14.0312 28.2283 14.035 28.1961 14.0453C28.1639 14.0557 28.1342 14.0725 28.1089 14.0947C28.0836 14.1169 28.0631 14.144 28.0488 14.1743C28.0345 14.2046 28.0267 14.2375 28.0257 14.271V15.1257C28.0314 15.1892 28.0605 15.2484 28.1075 15.292C28.1545 15.3356 28.2161 15.3606 28.2805 15.3623L29.5699 15.5225V17.3999C29.1602 17.4783 28.7441 17.5192 28.3268 17.522C26.3195 17.522 25.7405 16.8504 25.7405 14.5533C25.7405 12.2562 26.3504 11.5694 28.3346 11.5694C29.1169 11.5771 29.8951 11.6822 30.6507 11.8823L30.8901 11.9357H31.0445C31.1081 11.9385 31.1706 11.9184 31.2203 11.8791C31.27 11.8398 31.3035 11.784 31.3147 11.722L31.4769 11.0199V10.9054C31.446 10.7375 31.3147 10.6841 31.1835 10.6154Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.6409 10.2949H39.1817C39.1118 10.2922 39.0427 10.3114 38.9845 10.3498C38.9263 10.3882 38.8818 10.4438 38.8574 10.5086L36.8115 13.9581L34.696 10.501C34.6631 10.4382 34.6132 10.3857 34.5519 10.3493C34.4905 10.3129 34.4202 10.2941 34.3486 10.2949H32.8045C32.7347 10.3053 32.6706 10.3389 32.6228 10.3903C32.575 10.4417 32.5465 10.5077 32.542 10.5773V10.6994L35.7538 15.492V18.4684C35.7547 18.5051 35.7632 18.5413 35.7785 18.5748C35.7939 18.6082 35.8159 18.6383 35.8433 18.6632C35.8707 18.6881 35.9028 18.7074 35.9378 18.7198C35.9728 18.7322 36.01 18.7375 36.0471 18.7355H37.321C37.3588 18.7386 37.3968 18.7341 37.4327 18.7221C37.4686 18.7102 37.5017 18.6912 37.5299 18.6662C37.5581 18.6411 37.5808 18.6107 37.5967 18.5767C37.6126 18.5427 37.6212 18.5058 37.6221 18.4684V15.4768L40.8725 10.6841V10.6002C40.8791 10.5649 40.8782 10.5287 40.8699 10.4938C40.8616 10.4589 40.8461 10.4261 40.8244 10.3974C40.8026 10.3687 40.7751 10.3448 40.7435 10.3272C40.7119 10.3095 40.677 10.2986 40.6409 10.2949Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.1533 17.2701H44.1849V10.5314C44.1849 10.4639 44.1583 10.3991 44.1107 10.3506C44.0632 10.3022 43.9984 10.274 43.9301 10.272L42.5944 10.478C42.3551 10.478 42.3242 10.6688 42.3242 10.7299V18.4683C42.3252 18.505 42.3336 18.5412 42.349 18.5747C42.3644 18.6082 42.3864 18.6383 42.4138 18.6632C42.4411 18.6881 42.4733 18.7073 42.5083 18.7197C42.5433 18.7321 42.5805 18.7375 42.6176 18.7354H48.161C48.1981 18.7364 48.2351 18.7301 48.2697 18.7167C48.3043 18.7034 48.3359 18.6833 48.3625 18.6577C48.3892 18.6321 48.4103 18.6014 48.4248 18.5676C48.4392 18.5338 48.4467 18.4974 48.4466 18.4607V17.5525C48.4467 17.5148 48.439 17.4774 48.4242 17.4427C48.4093 17.4079 48.3876 17.3764 48.3603 17.3501C48.3329 17.3238 48.3005 17.3031 48.2649 17.2894C48.2294 17.2757 48.1914 17.2691 48.1533 17.2701Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.689 10.295H50.2379C50.2001 10.294 50.1625 10.3006 50.1274 10.3144C50.0922 10.3282 50.0603 10.349 50.0336 10.3754C50.0068 10.4018 49.9858 10.4334 49.9718 10.4681C49.9579 10.5028 49.9512 10.54 49.9523 10.5774V18.4608C49.9522 18.4975 49.9597 18.5339 49.9741 18.5677C49.9886 18.6016 50.0097 18.6322 50.0364 18.6578C50.063 18.6834 50.0946 18.7035 50.1292 18.7169C50.1638 18.7302 50.2008 18.7366 50.2379 18.7356H53.689C56.6074 18.7356 57.6883 17.5908 57.6883 14.5153C57.6883 11.4398 56.6074 10.295 53.689 10.295ZM53.4883 17.2627H51.8129V11.6458H53.4883C55.1868 11.6458 55.8045 12.0808 55.8045 14.5C55.8045 16.9192 55.1096 17.2627 53.4883 17.2627Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.5243 17.2701H61.4633V15.1028H65.3236C65.3968 15.1029 65.4672 15.0752 65.5203 15.0255C65.5735 14.9758 65.6053 14.9079 65.6093 14.8357V13.9504C65.6093 13.9137 65.6018 13.8773 65.5874 13.8435C65.5729 13.8096 65.5518 13.779 65.5251 13.7534C65.4985 13.7278 65.4669 13.7077 65.4323 13.6943C65.3977 13.681 65.3607 13.6746 65.3236 13.6757H61.4633V11.7143H65.5089C65.547 11.7166 65.5851 11.7108 65.6208 11.6974C65.6565 11.684 65.6889 11.6633 65.7159 11.6366C65.7429 11.6099 65.7638 11.5779 65.7774 11.5426C65.7909 11.5073 65.7968 11.4696 65.7945 11.432V10.562C65.7946 10.5256 65.7871 10.4895 65.7726 10.4561C65.7581 10.4227 65.7368 10.3925 65.71 10.3675C65.6833 10.3425 65.6516 10.3231 65.617 10.3106C65.5825 10.2982 65.5456 10.2928 65.5089 10.2949H59.9115C59.8729 10.2939 59.8346 10.3004 59.7986 10.314C59.7626 10.3276 59.7297 10.3482 59.7017 10.3744C59.6737 10.4006 59.6513 10.432 59.6356 10.4668C59.6199 10.5016 59.6114 10.5392 59.6104 10.5772V18.4607C59.6113 18.4984 59.62 18.5356 59.6357 18.57C59.6515 18.6044 59.6741 18.6353 59.7022 18.6609C59.7302 18.6865 59.7632 18.7063 59.7992 18.7191C59.8351 18.7319 59.8733 18.7374 59.9115 18.7354H65.5243C65.5615 18.7364 65.5984 18.7301 65.6331 18.7167C65.6677 18.7034 65.6992 18.6833 65.7259 18.6577C65.7525 18.6321 65.7737 18.6014 65.7881 18.5676C65.8026 18.5338 65.81 18.4974 65.81 18.4607V17.5525C65.81 17.4776 65.7799 17.4058 65.7263 17.3528C65.6727 17.2999 65.6001 17.2701 65.5243 17.2701Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.3861 10.2949H78.9273C78.8515 10.2949 78.7788 10.3247 78.7253 10.3776C78.6717 10.4306 78.6416 10.5024 78.6416 10.5773V18.4607C78.6436 18.5343 78.6746 18.6041 78.7279 18.6555C78.7813 18.7068 78.8528 18.7355 78.9273 18.7354H82.3861C85.2967 18.7354 86.3854 17.5907 86.3854 14.5152C86.3854 11.4397 85.2967 10.2949 82.3861 10.2949ZM82.1853 17.2702H80.51V11.6457H82.1853C83.8839 11.6457 84.5015 12.0807 84.5015 14.4999C84.5015 16.9191 83.8067 17.2702 82.1853 17.2702Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.282 17.2701H100.314V10.5314C100.315 10.4977 100.309 10.4642 100.297 10.4327C100.285 10.4013 100.266 10.3726 100.242 10.3484C100.218 10.3242 100.19 10.305 100.159 10.2918C100.127 10.2787 100.093 10.272 100.059 10.272L98.7236 10.478C98.6825 10.4845 98.6431 10.499 98.6077 10.5205C98.5723 10.542 98.5415 10.5703 98.5171 10.6036C98.4927 10.6369 98.4752 10.6746 98.4656 10.7146C98.456 10.7546 98.4544 10.7961 98.4611 10.8367V18.4683C98.461 18.5047 98.4685 18.5407 98.483 18.5742C98.4975 18.6076 98.5188 18.6378 98.5456 18.6628C98.5723 18.6878 98.604 18.7071 98.6386 18.7196C98.6731 18.7321 98.71 18.7375 98.7467 18.7354H104.29C104.328 18.7364 104.365 18.7301 104.4 18.7168C104.435 18.7036 104.467 18.6836 104.494 18.6581C104.522 18.6326 104.544 18.602 104.559 18.5681C104.574 18.5343 104.583 18.4977 104.584 18.4607V17.5525C104.583 17.5144 104.574 17.4769 104.558 17.4421C104.543 17.4073 104.52 17.3759 104.492 17.3496C104.464 17.3234 104.431 17.3029 104.395 17.2893C104.359 17.2756 104.321 17.2691 104.282 17.2701Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.8641 12.8668C69.9336 13.0347 73.8711 18.476 73.8711 18.476C73.9172 18.5624 73.9878 18.6336 74.0741 18.681C74.1605 18.7284 74.2589 18.75 74.3575 18.7431H75.7086C75.751 18.7463 75.7937 18.7407 75.8339 18.7268C75.8741 18.7129 75.9109 18.6909 75.9421 18.6622C75.9733 18.6336 75.9981 18.5988 76.015 18.5602C76.032 18.5216 76.0407 18.48 76.0406 18.4379V10.6155C76.0406 10.5392 76.0406 10.3026 75.6777 10.3026L74.5196 10.5087C74.1336 10.5773 74.1567 10.8292 74.1567 10.9208C74.1567 11.0123 74.2031 14.645 74.2185 16.0187C73.5159 15.0113 70.3582 10.5392 70.3582 10.5392C70.3232 10.474 70.2724 10.4183 70.2105 10.3771C70.1486 10.3358 70.0773 10.3102 70.0031 10.3026H68.4589C68.3755 10.3004 68.2944 10.3302 68.2326 10.3856C68.1707 10.441 68.1329 10.5179 68.127 10.6002V18.4379C68.1269 18.4786 68.1352 18.5189 68.1512 18.5565C68.1672 18.594 68.1906 18.628 68.2201 18.6565C68.2496 18.6849 68.2846 18.7072 68.3229 18.7221C68.3613 18.737 68.4023 18.7441 68.4435 18.7431H69.6634C69.7052 18.7452 69.747 18.7388 69.7863 18.7244C69.8255 18.71 69.8614 18.6879 69.8918 18.6593C69.9221 18.6307 69.9462 18.5964 69.9627 18.5583C69.9792 18.5203 69.9877 18.4793 69.9876 18.4379L69.8641 12.8668Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.7697 18.3159L93.8667 11.1193C93.7188 10.7903 93.4679 10.5171 93.151 10.3398C92.834 10.1626 92.4678 10.0907 92.1064 10.1348C91.7445 10.0873 91.3767 10.1558 91.057 10.3302C90.7374 10.5047 90.4828 10.7759 90.3307 11.104L87.42 18.3159C87.4134 18.364 87.4134 18.4127 87.42 18.4609C87.42 18.6669 87.6285 18.7814 88.0377 18.7814H88.9101C89.0157 18.7842 89.1197 18.755 89.208 18.6977C89.2964 18.6404 89.3648 18.5578 89.4042 18.4609L90.0914 16.698H94.1524C94.2064 16.8201 94.8395 18.4609 94.8395 18.4609C94.8807 18.5565 94.9495 18.638 95.0375 18.6951C95.1254 18.7521 95.2285 18.7821 95.3336 18.7814H96.2138C96.623 18.7814 96.8237 18.6669 96.8237 18.4609C96.8113 18.4107 96.7931 18.362 96.7697 18.3159ZM90.5932 15.2632C90.8248 14.6145 91.9134 11.7909 91.9134 11.7909C91.9134 11.7909 92.0138 11.684 92.1064 11.684C92.1991 11.684 92.2608 11.684 92.2994 11.7909C92.338 11.8977 93.388 14.6145 93.6197 15.2632H90.5932Z\"\n}));\n\nfunction SvgGyldendalLogoDesktop(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 105,\n height: 29,\n viewBox: \"0 0 105 29\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGyldendalLogoDesktop);\nexport default __webpack_public_path__ + \"static/media/gyldendal-logo-desktop.7a057562.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 9H21\",\n stroke: \"white\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 15H21\",\n stroke: \"white\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgHamburger(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHamburger);\nexport default __webpack_public_path__ + \"static/media/hamburger.92f50e6e.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.3038 11.7794C68.6598 11.5843 68.1663 11.4142 67.8252 11.2692C67.4758 11.1215 67.302 10.9244 67.302 10.6763V10.6298C67.302 10.4598 67.3866 10.3157 67.5576 10.1996C67.7277 10.0834 67.9842 10.0258 68.3252 10.0258C68.8215 10.0258 69.4032 10.1308 70.0696 10.3408C70.459 10.4626 70.8456 10.6131 71.2294 10.786L71.2498 10.7516C71.2721 10.7284 71.3 10.707 71.313 10.6791L72.4598 8.5723C72.4868 8.52676 72.5035 8.48308 72.5147 8.4394L72.7061 8.08812C72.7061 8.08812 72.366 7.88088 71.9134 7.66341C71.1578 7.26287 69.7843 6.83723 68.0297 6.8363C64.6832 6.83537 63.1944 8.50911 63.1934 10.5852C63.1925 12.5062 64.264 13.876 66.6812 14.7124C67.0753 14.8416 67.5762 14.9605 68.1115 15.1232C68.6217 15.2784 68.8763 15.5888 68.8596 15.9205C68.8549 16.309 68.5185 16.6064 67.8001 16.6083C67.0818 16.6101 66.3885 16.4744 65.6367 16.2328C65.2668 16.1148 64.8978 15.967 64.5335 15.7904L64.435 15.9856C64.4229 16.0033 64.4099 16.0209 64.4006 16.0395L63.3152 18.1779C63.2882 18.2262 63.2734 18.2708 63.2641 18.3145L63.094 18.6509C63.094 18.6509 63.4704 18.8795 63.9676 19.1026C64.7408 19.5013 66.0781 19.8516 67.7462 19.8516C71.247 19.8526 72.984 18.0868 72.984 15.9168C72.9868 13.6279 71.5063 12.6065 69.3038 11.7794Z\",\n fill: \"white\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.4312 4.68933C76.0112 4.68933 74.8616 5.86587 74.8616 7.31284C74.8616 8.75981 76.0102 9.92984 77.4303 9.93077C78.8503 9.9317 79.9999 8.76167 79.9999 7.3147C79.9999 5.86773 78.8512 4.69026 77.4312 4.68933ZM78.4404 8.72357L77.4303 8.12136L76.4201 8.72264L76.6821 7.57212L75.7965 6.78219L76.9684 6.68368L77.4312 5.58335L77.894 6.68368L79.0659 6.78312L78.1793 7.57212L78.4404 8.72357Z\",\n fill: \"white\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.478 15.0599C16.479 10.5099 12.7923 6.82046 8.24133 6.8186C3.69132 6.81767 0.00092951 10.5062 1.75617e-07 15.0562C-0.000929158 19.6062 3.68667 23.2957 8.23669 23.2976C9.30449 23.2976 10.3249 23.095 11.2617 22.7251L12.6194 25.3635L17.609 25.3644L14.8424 19.9863C15.8684 18.6128 16.4771 16.9075 16.478 15.0599ZM8.23762 19.1704C5.96632 19.1695 4.12717 17.3284 4.12717 15.0571C4.1281 12.7859 5.96818 10.9458 8.23948 10.9467C10.5108 10.9476 12.3508 12.7886 12.3499 15.0599C12.3499 15.112 12.3481 15.1631 12.3462 15.2142L7.39657 15.2133L9.35375 19.017C8.99874 19.1156 8.62422 19.1704 8.23762 19.1704Z\",\n fill: \"white\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.0873 7.7237C31.0873 7.71719 31.0854 7.70976 31.0854 7.70325V7.14101H30.5632C30.5418 7.13822 30.5204 7.1345 30.499 7.1345L27.3374 7.13357C27.2956 7.13357 27.2538 7.13543 27.2111 7.14008H26.6869L26.686 10.3007L26.6851 13.6408C26.6851 14.6946 26.0345 15.8405 24.8255 15.8405C23.5541 15.8405 22.8423 14.7244 22.8423 13.454L22.8441 7.72184C22.8441 7.71534 22.8423 7.71069 22.8423 7.70511V7.13915H22.32C22.2986 7.13636 22.2772 7.13264 22.2558 7.13264L18.94 7.13171C18.9186 7.13171 18.8972 7.13636 18.8749 7.13822H18.3526V7.70604C18.3517 7.71069 18.3517 7.71534 18.3517 7.71998L18.3499 13.3285C18.3489 16.8609 20.1137 19.8366 23.8013 19.8376C26.1869 19.8385 27.1785 18.7252 27.9843 17.9501L28.6255 19.5309L31.0882 19.53L31.0854 17.4009L31.0873 7.7237Z\",\n fill: \"white\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.1206 6.8313C51.5882 6.83037 48.6738 9.80517 48.6729 13.3069C48.6719 16.8709 51.5845 19.8475 55.1169 19.8485C58.6493 19.8494 61.5636 16.8746 61.5646 13.3106C61.5655 9.80888 58.653 6.83223 55.1206 6.8313ZM55.1178 15.8496C53.7545 15.8496 52.6699 14.7028 52.6699 13.3069C52.6699 11.9436 53.7554 10.8284 55.1187 10.8284C56.483 10.8284 57.5666 11.9445 57.5666 13.3078C57.5666 14.7037 56.482 15.8496 55.1178 15.8496Z\",\n fill: \"white\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.5959 0.000929333H46.0114L42.571 0H41.9818L41.9809 2.43393H41.9818L41.9809 7.41701C41.6091 7.19955 40.4623 6.82782 39.4094 6.82689C36.0935 6.82596 33.2414 8.96436 33.2405 13.3332C33.2395 16.8972 35.8733 19.8422 39.375 19.8431C41.9298 19.8441 43.3423 18.1304 43.5115 17.9138L44.1341 19.5355L46.5922 19.5365L46.5931 18.9751C46.5941 18.9658 46.5959 18.9556 46.5959 18.9463L46.6006 0.590127C46.6006 0.578975 46.5978 0.568752 46.5969 0.5576L46.5959 0.000929333ZM39.9949 15.8461C38.5693 15.8461 37.4847 14.7299 37.4847 13.3034C37.4847 11.9094 38.5702 10.8249 39.9958 10.8249C41.4214 10.8249 42.4753 11.9103 42.4743 13.3043C42.4743 14.7309 41.4205 15.8461 39.9949 15.8461Z\",\n fill: \"white\"\n});\n\nfunction SvgQudosLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 80,\n height: 26,\n viewBox: \"0 0 80 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgQudosLogo);\nexport default __webpack_public_path__ + \"static/media/qudos-logo.a2cb3f63.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.6389 0L16.6387 9.2323H26.3461L18.4927 14.9382L21.4924 24.1705L13.6389 18.4646L5.78548 24.1705L8.78523 14.9382L0.931771 9.2323H10.6392L13.6389 0Z\",\n fill: \"white\"\n});\n\nfunction SvgStarFilled(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 25,\n viewBox: \"0 0 27 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStarFilled);\nexport default __webpack_public_path__ + \"static/media/star-filled.150f60b9.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.8088 1.58745L23.9183 2.25311C23.9311 2.33269 24.2309 4.22319 23.5952 6.34507C23.0131 8.28932 21.5264 10.7828 17.7594 11.7868C16.9292 12.9215 15.8789 13.8169 14.6229 14.4499L15.434 17.4604H19.2217V22.2H23.1V24H0.9V22.2H4.81392V17.4604H8.60376L9.42286 14.4547C8.16684 13.8238 7.11547 12.9305 6.28468 11.7984C2.48527 10.8023 0.989531 8.29723 0.404843 6.34559C-0.230872 4.22319 0.0689137 2.33269 0.0816705 2.25311L0.191167 1.58745H4.13781C4.20048 0.986784 4.25051 0.717393 4.33172 0.280119C4.34763 0.194443 4.36474 0.102321 4.38338 0H19.6522C19.6703 0.0990439 19.687 0.188963 19.7026 0.273247C19.7825 0.703395 19.8351 0.986789 19.8978 1.58745H23.8088ZM6.4149 22.2H17.6207V19.0473H6.4149V22.2ZM1.60771 3.17438C1.58432 3.81895 1.61993 4.85564 1.9548 5.94451C2.47676 7.64212 3.53027 8.88963 5.0967 9.67176C4.26059 7.66056 3.98101 5.35739 4.03682 3.17438H1.60771ZM10.9383 14.9775L10.2616 17.4604H13.7772L13.1075 14.9759C12.3904 15.1135 11.6542 15.1135 10.9383 14.9775ZM10.2988 13.1149C11.3598 13.6183 12.6764 13.6177 13.7363 13.1149C18.8709 10.68 18.528 3.74938 18.2851 1.58693H5.74995C5.64896 2.48132 5.52937 4.18999 5.7861 6.05256C6.26767 9.54738 7.78626 11.9233 10.2988 13.1149ZM18.949 9.6491C20.4899 8.86538 21.5286 7.62525 22.0452 5.94451C22.3801 4.85564 22.4157 3.81948 22.3918 3.17438H19.9988C20.0541 5.34316 19.7787 7.64106 18.949 9.6491Z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9414 3.6352C11.9647 3.58823 12.0353 3.58823 12.0586 3.6352L12.9081 5.3467C12.9176 5.36572 12.9366 5.37884 12.9587 5.38145L14.9432 5.61623C14.9976 5.62268 15.0195 5.6862 14.9794 5.72167L13.5199 7.01422C13.5037 7.02859 13.4964 7.04981 13.5006 7.07045L13.8776 8.92706C13.888 8.978 13.8308 9.01726 13.7828 8.99222L12.0313 8.07956C12.0118 8.06942 11.9882 8.06942 11.9687 8.07956L10.2172 8.99222C10.1692 9.01726 10.112 8.978 10.1224 8.92706L10.4994 7.07045C10.5036 7.04981 10.4963 7.02859 10.4801 7.01422L9.02056 5.72167C8.98052 5.6862 9.00235 5.62268 9.05681 5.61623L11.0413 5.38145C11.0633 5.37884 11.0824 5.36572 11.0919 5.3467L11.9414 3.6352Z\"\n});\n\nfunction SvgTrophy(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrophy);\nexport default __webpack_public_path__ + \"static/media/trophy.0a34c3b3.svg\";\nexport { ForwardRef as ReactComponent };","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport {\n ArrowDown,\n ArrowDownRight,\n ArrowLeft,\n ArrowRight,\n Check,\n ChevronDown,\n ChevronRight,\n Circle,\n Clock,\n Edit3,\n HelpCircle,\n Lock,\n MoreHorizontal,\n Plus,\n Search,\n Star,\n Tool,\n Trash,\n UserPlus,\n X,\n Filter,\n} from \"react-feather\";\n\nimport { ReactComponent as CheckedCircle } from \"../../static/images/icons/checked-circle.svg\";\nimport { ReactComponent as Clouds } from \"../../static/images/icons/clouds.svg\";\nimport { ReactComponent as Exclamation } from \"../../static/images/icons/exclamation.svg\";\nimport { ReactComponent as GyldendalLogo } from \"../../static/images/icons/gyldendal-logo-desktop.svg\";\nimport { ReactComponent as Hamburger } from \"../../static/images/icons/hamburger.svg\";\nimport { ReactComponent as QudosLogo } from \"../../static/images/icons/qudos-logo.svg\";\nimport { ReactComponent as StarFilled } from \"../../static/images/icons/star-filled.svg\";\nimport { ReactComponent as Trophy } from \"../../static/images/icons/trophy.svg\";\n\nexport const icons = {\n qudosLogo: QudosLogo,\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n arrowDown: ArrowDown,\n circle: Circle,\n chevronDown: ChevronDown,\n chevronRight: ChevronRight,\n plus: Plus,\n userPlus: UserPlus,\n starFilled: StarFilled,\n clouds: Clouds,\n exclamation: Exclamation,\n search: Search,\n x: X,\n trophy: Trophy,\n moreHorizontal: MoreHorizontal,\n clock: Clock,\n star: Star,\n tool: Tool,\n checkedCircle: CheckedCircle,\n gyldendalLogo: GyldendalLogo,\n lock: Lock,\n arrowDownRight: ArrowDownRight,\n hamburger: Hamburger,\n trash: Trash,\n pencil: Edit3,\n check: Check,\n helpCircle: HelpCircle,\n filter: Filter,\n};\n\ntype SvgIconSize = \"small\" | \"medium\" | \"large\" | \"xLarge\" | \"xxLarge\" | \"xxxLarge\" | \"custom\";\n\nexport type SvgIconName = keyof typeof icons;\n\ninterface SvgIconProps {\n iconName: SvgIconName;\n className?: string;\n size?: SvgIconSize;\n}\n\nexport const SvgIcon: React.FC = ({ iconName, className, size = \"large\" }) => {\n const Icon = icons[iconName];\n\n const sizeToPixel: { [key in SvgIconSize]: string | undefined } = {\n small: \"8\",\n medium: \"16\",\n large: \"24\",\n xLarge: \"32\",\n xxLarge: \"48\",\n xxxLarge: \"80\",\n custom: undefined,\n };\n\n const pixelSize = sizeToPixel[size];\n\n return ;\n};\n","import React from \"react\";\nimport { AppStore } from \"../../../domain/app/AppStore\";\nimport { AnonymousAppUser, AppUser } from \"./AppUser\";\n\ninterface UserContext {\n user: AppUser;\n}\n\nconst userContext = React.createContext({\n user: new AnonymousAppUser(),\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, appStore }: { children: React.ReactNode; appStore: AppStore }) => {\n const { Provider } = userContext;\n\n const Lazy = React.lazy(async () => {\n const user = await appStore.loadAppUser();\n\n return {\n default: () => {children},\n };\n });\n\n return ;\n};\n","import classNames from \"classnames\";\nimport FocusTrap from \"focus-trap-react\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { animated, useSpring } from \"react-spring\";\nimport { Button } from \"../button/Button\";\nimport { usePopup } from \"../popup/usePopup\";\nimport { ScrollLock } from \"../scrollLock/ScrollLock\";\nimport { SvgIcon } from \"../svgIcon/SvgIcon\";\nimport { useEscape } from \"./useEscape\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n isButtonDisabled?: boolean;\n className?: string;\n}\n\nexport const Modal: React.FunctionComponent = observer(\n ({ isOpen, onClose, children, className, isButtonDisabled }) => {\n const { t } = useTranslation();\n const { isDisplayed, backgroundStyles } = usePopup(isOpen);\n useEscape(onClose);\n const modalInnerStyles = useSpring({\n opacity: isOpen ? 1 : 0,\n });\n\n if (!isDisplayed) {\n return null;\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 );\n }\n);\n","import React from \"react\";\n\nexport const useEscape = (listener: () => void) => {\n React.useEffect(() => {\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n listener();\n }\n };\n window.addEventListener(\"keydown\", handleEsc);\n\n return () => {\n window.removeEventListener(\"keydown\", handleEsc);\n };\n }, []);\n};\n","import React from \"react\";\nimport { useSpring } from \"react-spring\";\n\nexport const usePopup = (isOpen: boolean) => {\n const [isDisplayed, setIsDisplayed] = React.useState(isOpen);\n\n React.useEffect(() => {\n isOpen && setIsDisplayed(true);\n\n return () => {\n setIsDisplayed(false);\n };\n }, [isOpen]);\n\n const backgroundStyles = useSpring({\n opacity: isOpen ? 1 : 0,\n onResolve: () => !isOpen && setIsDisplayed(false),\n });\n\n return { isDisplayed, backgroundStyles };\n};\n","import React from \"react\";\nimport { LinkPropsBase, getLinkClassNames } from \"./Link\";\n\ninterface ExternalLinkProps\n extends LinkPropsBase,\n Pick, \"aria-describedby\">,\n Pick, \"target\"> {\n href: string;\n onClick?: React.MouseEventHandler;\n}\n\nexport const ExternalLink: React.FC = props => {\n const {\n href,\n children,\n type = \"primary\",\n buttonType = \"solid\",\n buttonVariant = \"primary\",\n size = \"inherit\",\n buttonSize = \"medium\",\n target,\n className,\n tabIndex,\n onClick,\n } = props;\n // eslint-disable-next-line react/destructuring-assignment\n const ariaDescribedBy = props[\"aria-describedby\"];\n\n const targetProps = target === \"_blank\" ? { target, rel: \"noreferrer\" } : { target };\n\n return (\n \n {children}\n \n );\n};\n","import classNames from \"classnames\";\nimport { ReactNode } from \"react\";\nimport { ButtonSize, ButtonType, ButtonVariant } from \"../../../ui/button/Button\";\n\nexport type LinkType = \"primary\" | \"secondary\" | \"button\" | \"clear\";\n\nexport type LinkSize = \"xLarge\" | \"large\" | \"medium\" | \"small\" | \"xSmall\" | \"inherit\";\n\nexport interface LinkPropsBase {\n type?: LinkType;\n buttonType?: ButtonType;\n buttonVariant?: ButtonVariant;\n size?: LinkSize;\n buttonSize?: ButtonSize;\n children: ReactNode;\n tabIndex?: number;\n className?: string;\n}\n\nexport const getLinkClassNames = (\n type: LinkType,\n buttonType: ButtonType,\n buttonVariant: ButtonVariant,\n size: LinkSize,\n buttonSize: ButtonSize,\n className?: string\n) => {\n if (type === \"button\") {\n return classNames(\n \"Link\",\n \"Link--clear\",\n \"Button\",\n `Button--${buttonType}`,\n `Button--${buttonVariant}`,\n `Button--${buttonSize}`,\n className\n );\n }\n\n return classNames(\"Link\", `Link--${type}`, `Link--${size}`, className);\n};\n","export const getGroupInitials = (name: string) => {\n return name.substring(0, 2).toUpperCase();\n};\n","import React from \"react\";\n\nexport const useDelayedDisplay = (shouldBeDisplayed: boolean) => {\n const [isDisplayed, setIsDisplayed] = React.useState(shouldBeDisplayed);\n React.useEffect(() => {\n shouldBeDisplayed && setIsDisplayed(true);\n }, [shouldBeDisplayed]);\n\n const hide = () => !shouldBeDisplayed && setIsDisplayed(false);\n\n return [isDisplayed, hide] as const;\n};\n","export class RequestCancelledError extends Error {\n constructor() {\n super(\"Request was canceled\");\n }\n}\n","export class PageNotFoundError extends Error {\n public static readonly code = 404;\n}\n","import { Path } from \"../paths/Paths\";\nimport { UserRoleDto } from \"../types/shared/dto/UserRoleDto\";\n\nconst UserRoles = [UserRoleDto.PaidUser, UserRoleDto.Member, UserRoleDto.Manager, UserRoleDto.Admin] as const;\nconst CompanyManagementRoles = [UserRoleDto.Manager, UserRoleDto.Admin] as const;\nconst CompanyAdminRoles = [UserRoleDto.Admin] as const;\n\nexport type PathAccessRights = \"allowAnonymous\" | readonly UserRoleDto[];\n\nexport const PathsToAccessRights: { [key in Path]: PathAccessRights } = {\n \"/\": \"allowAnonymous\",\n \"/landingsside\": \"allowAnonymous\",\n \"/landingsside/kontakt\": \"allowAnonymous\",\n \"/landingsside/kurspakker\": \"allowAnonymous\",\n \"/landingsside/kurspakker/:packageSlug\": \"allowAnonymous\",\n \"/landingsside/kurs\": \"allowAnonymous\",\n \"/landingsside/kurs/:courseSlug\": \"allowAnonymous\",\n \"/invitation\": \"allowAnonymous\",\n \"/preview/task/:id\": \"allowAnonymous\",\n \"/dashboard\": [],\n \"/landingsside/kurs/:courseSlug/kjop\": [],\n \"/landingsside/kurspakker/:packageSlug/kjop\": [],\n \"/exam/:courseAssignmentId\": UserRoles,\n \"/course/:courseAssignmentId\": UserRoles,\n \"/course/:courseAssignmentId/browse\": UserRoles,\n \"/course/:courseAssignmentId/browse/test\": UserRoles,\n \"/course/:courseAssignmentId/browse/module/:moduleSlug\": UserRoles,\n \"/course/:courseAssignmentId/browse/module/:moduleSlug/test\": UserRoles,\n \"/course/:courseAssignmentId/browse/module/:moduleSlug/chapter/:chapterSlug\": UserRoles,\n \"/dossier/:courseSlug\": [],\n \"/merkompetanse/:courseSlug\": [],\n \"/manage\": CompanyManagementRoles,\n \"/manage/courses\": CompanyManagementRoles,\n \"/manage/courses/:courseSlug\": CompanyManagementRoles,\n \"/manage/courses/:courseSlug/activity\": CompanyManagementRoles,\n \"/manage/courses/:courseSlug/info\": CompanyManagementRoles,\n \"/manage/members\": CompanyManagementRoles,\n \"/manage/members/groups\": CompanyManagementRoles,\n \"/manage/users/:userId\": CompanyManagementRoles,\n \"/manage/groups/:groupId\": CompanyManagementRoles,\n \"/manage/company\": CompanyAdminRoles,\n \"/reports\": CompanyManagementRoles,\n \"/noMembership\": [],\n \"/myProfile\": [],\n \"/landingsside/betalingenErGjennomfort\": [],\n \"/landingsside/betalingenFeilet\": [],\n \"/informasjonskapsler\": \"allowAnonymous\",\n \"/bruks-og-kjopsvilkar\": \"allowAnonymous\",\n \"/personvern\": \"allowAnonymous\",\n \"/ikke-tilgang\": \"allowAnonymous\",\n};\n","import { AppUser } from \"../../application/models/appUser/AppUser\";\nimport { Path } from \"../paths/Paths\";\nimport { PathsToAccessRights } from \"./PathsToAccessRights\";\n\nexport const hasUserAccess =

(user: AppUser, path: P) => {\n const rolesWithAccess = PathsToAccessRights[path];\n\n if (rolesWithAccess === \"allowAnonymous\") {\n return true;\n }\n\n if (user._type === \"anonymous\") {\n return false;\n }\n\n if (rolesWithAccess.length === 0) {\n return true;\n }\n\n return user.role !== null && rolesWithAccess.some(role => role === user.role);\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\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 axios, { AxiosInstance, CancelToken } from \"axios\";\nimport { BadRequestObjectResultDto } from \"infrastructure/types/api/error/BadRequestObjectResultDto\";\nimport { IApiRequest } from \"../types/IApiRequest\";\nimport { HttpCustomError } from \"./HttpCustomError\";\nimport { HttpError } from \"./HttpError\";\nimport { RequestCancelledError } from \"./RequestCancelledError\";\n\ntype ExtractGeneric = Type extends IApiRequest ? X : never;\n\ntype ResponseType = \"json\" | \"blob\";\n\n// Neccessary hardcoded 'type' property name\nconst isBadRequestObjectResultDto = (object: unknown): object is BadRequestObjectResultDto => {\n return Object.prototype.hasOwnProperty.call(object, \"type\");\n};\n\nexport class HttpClient {\n constructor(private axiosInstance: AxiosInstance) {}\n\n async send(\n requestData: T,\n cancelToken: CancelToken | undefined = undefined,\n responseType: ResponseType = \"json\"\n ): Promise> {\n try {\n const response = await this.axiosInstance.request>({\n url: requestData.$type.replace(\"Request\", \"\"),\n method: \"POST\",\n baseURL: \"/api\",\n data: requestData.data,\n responseType,\n cancelToken,\n });\n\n return response.data;\n } catch (e: unknown) {\n if (axios.isCancel(e)) {\n throw new RequestCancelledError();\n }\n if (axios.isAxiosError(e)) {\n if (e?.response?.data && isBadRequestObjectResultDto(e.response.data)) {\n throw new HttpCustomError({\n errorCode: e.response.status,\n errorText: e.response.statusText,\n type: e.response.data.type,\n });\n } else if (e.response) {\n throw new HttpError({ errorCode: e.response.status, errorText: e.response.statusText });\n }\n }\n throw e;\n }\n }\n}\n","import { HttpCustomError } from \"infrastructure/api/HttpCustomError\";\nimport { ExternalLink } from \"infrastructure/components/link/ExternalLink\";\nimport * as React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NavLink } from \"react-router-dom\";\nimport { assertUnreachable } from \"utils/utils\";\nimport { Button } from \"../../ui/button/Button\";\nimport { Loader } from \"../../ui/loader/Loader\";\nimport { HttpError } from \"../api/HttpError\";\nimport { getLoginPath } from \"../components/link/LoginLink\";\nimport { BadRequestResultTypeDto } from \"../types/api/error/BadRequestResultTypeDto\";\nimport { RouteConfiguration } from \"../types/routes/RouteConfiguration\";\nimport { CheckoutLoginRequiredError } from \"./CheckoutLoginRequiredError\";\nimport { LoginRequiredError } from \"./LoginRequiredError\";\nimport { PageForbiddenError } from \"./PageForbiddenError\";\nimport { PageNotFoundError } from \"./PageNotFoundError\";\n\ninterface ErrorViewProps {\n error: Error;\n}\n\nexport const ErrorView: React.FC = ({ error }) => {\n const { t } = useTranslation();\n\n const [isLoadingIndicatorVisible, setIsLoadingIndicatorVisible] = React.useState(true);\n\n React.useEffect(() => {\n if (error instanceof LoginRequiredError) {\n location.assign(getLoginPath());\n } else if (error instanceof CheckoutLoginRequiredError) {\n if (error.type === \"course\") {\n location.assign(\n getLoginPath({ to: \"/landingsside/kurs/:courseSlug/kjop\", params: { courseSlug: error.getSlug() } })\n );\n } else {\n location.assign(\n getLoginPath({\n to: \"/landingsside/kurspakker/:packageSlug/kjop\",\n params: { packageSlug: error.getSlug() },\n })\n );\n }\n } else {\n setIsLoadingIndicatorVisible(false);\n }\n }, [error]);\n\n const getErrorInfo = (e: Error) => {\n if (e instanceof HttpCustomError) {\n switch (e.type) {\n case BadRequestResultTypeDto.MembershipNotActive:\n return {\n title: t(\"invitationExpiredHeading\"),\n description: t(\"invitationExpiredDescription\"),\n displayLogoutButton: true,\n };\n case BadRequestResultTypeDto.NoMembership:\n return {\n title: t(\"noMembershipHeading\"),\n description: t(\"noMembershipDescription\"),\n displayLogoutButton: true,\n };\n case BadRequestResultTypeDto.NoTibetPublication:\n return {\n title: t(\"noTibetPublicationHeading\"),\n description: t(\"noTibetPublicationDescription\"),\n displayLogoutButton: false,\n };\n case BadRequestResultTypeDto.NoLicenseInTibet:\n return {\n title: t(\"noLicenseToSendWithInvitationHeading\"),\n description: t(\"noLicenseToSendWithInvitationDescription\"),\n };\n case BadRequestResultTypeDto.CompanyUserNotAllowed:\n return {\n title: t(\"companyUserNotAllowedToBuyCourseTitle\"),\n description: t(\"companyUserNotAllowedToBuyCourseDescription\"),\n };\n\n case BadRequestResultTypeDto.UserRejectedInvitation:\n return {\n title: \"Avslått invitasjon\",\n description: \"Din bruker har avslått invitasjonen til bedriften\",\n displayLogoutButton: false,\n };\n case BadRequestResultTypeDto.NoDossierKey:\n return {\n title: \"Mangler integrasjon med Dossier\",\n description: \"Integrasjonen med Dossier er ikke skrudd på\",\n displayLogoutButton: false,\n };\n default:\n assertUnreachable(e.type);\n }\n }\n if (e instanceof HttpError) {\n switch (e.code) {\n case PageForbiddenError.code:\n return {\n title: e.code.toString(),\n description: t(\"unauthorizedViewMessage\"),\n displayDashboardButton: true,\n displayLogoutButton: true,\n };\n case PageNotFoundError.code:\n return { title: e.code.toString(), description: t(\"notFoundErrorMessage\") };\n default:\n return { title: e.code.toString(), description: t(\"unexpectedErrorMessage\"), displayLogoutButton: true };\n }\n }\n\n return { title: t(\"unexpectedErrorMessage\"), description: undefined, displayLogoutButton: true };\n };\n\n const { title, description, displayLogoutButton, displayDashboardButton } = getErrorInfo(error);\n\n return isLoadingIndicatorVisible ? (\n \n ) : (\n

\n
\n
\n

Feil: {title}

\n {description && (\n

\n Du har ikke tilgang til denne siden. Sjekk at du er logget inn. Løser ikke problemet seg, kontakt{\" \"}\n \n support@gyldendal.no\n \n , så hjelper vi deg.\n

\n )}\n {displayLogoutButton && (\n \n {t(\"logout\")}\n \n )}\n {displayDashboardButton && (\n \n \n \n )}\n
\n
\n
\n );\n};\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { computed, makeObservable, observable } from \"mobx\";\nimport { AssignmentStageDto } from \"../../../infrastructure/types/courseassignments/dto/AssignmentStageDto\";\nimport { GroupCourseAssignmentDto } from \"../../../infrastructure/types/courseassignments/dto/GroupCourseAssignmentDto\";\nimport { daysDifferenceFromNowToDate } from \"../../../utils/utils\";\nimport { ManagerCourseAssignmentStore } from \"../stores/managerCourseAssignmentStore/ManagerCourseAssignmentStore\";\n\nexport class GroupCourseAssignment {\n @observable id: string;\n\n @observable companyId: CompanyId;\n\n @observable groupId: string;\n\n @observable groupName: string;\n\n @observable assignedGroupMembersCount: number;\n\n @observable completedModulesCount: number;\n\n @observable stage: AssignmentStageDto;\n\n @observable activeTo: Date;\n\n @observable hasPassed?: boolean;\n\n @observable isRemovable: boolean;\n\n @observable completedAt?: Date;\n\n @computed get remainingDays() {\n if (this.stage === AssignmentStageDto.PastDue || this.stage === AssignmentStageDto.Historical) {\n return;\n }\n\n return daysDifferenceFromNowToDate(this.activeTo);\n }\n\n readonly _type = \"groupCourseAssignment\";\n\n constructor(private managerCourseAssignmentStore: ManagerCourseAssignmentStore, dto: GroupCourseAssignmentDto) {\n makeObservable(this);\n\n this.id = dto.id;\n this.companyId = new CompanyId(dto.companyId);\n this.groupId = dto.groupId;\n this.groupName = dto.groupName;\n this.assignedGroupMembersCount = dto.assignedGroupMembersCount;\n this.completedModulesCount = dto.completedModulesCount;\n this.stage = dto.stage;\n this.activeTo = new Date(dto.activeTo);\n this.hasPassed = dto.hasPassed;\n this.isRemovable = dto.isRemovable;\n this.completedAt = dto.completedAt ? new Date(dto.completedAt) : undefined;\n }\n\n async remove() {\n await this.managerCourseAssignmentStore.removeGroupCourseAssignment(this.id, this.companyId);\n }\n}\n","import { GroupLeaderDto } from \"infrastructure/types/group/dto/GroupLeaderDto\";\nimport { UserRoleDto } from \"infrastructure/types/shared/dto/UserRoleDto\";\nimport { computed, makeObservable, observable } from \"mobx\";\nimport { getUserDisplayName, getUserInitials } from \"../../../utils/userUtils\";\n\nexport class GroupLeader {\n @observable id: string;\n\n @observable userId: string;\n\n @observable userFirstName?: string;\n\n @observable userLastName?: string;\n\n @observable userEmail: string;\n\n @observable role: UserRoleDto;\n\n constructor(dto: GroupLeaderDto) {\n makeObservable(this);\n this.id = dto.id;\n this.userId = dto.userId;\n this.userFirstName = dto.userFirstName;\n this.userLastName = dto.userLastName;\n this.userEmail = dto.userEmail;\n this.role = dto.userRole;\n }\n\n @computed get displayName() {\n return getUserDisplayName(this.userEmail, this.userFirstName, this.userLastName);\n }\n\n @computed get initials() {\n return getUserInitials(this.userEmail, this.userFirstName, this.userLastName);\n }\n}\n","import { computed, makeObservable, observable } from \"mobx\";\nimport { GroupUserDto } from \"../../../infrastructure/types/group/dto/GroupUserDto\";\nimport { UserRoleDto } from \"../../../infrastructure/types/shared/dto/UserRoleDto\";\nimport { getUserDisplayName, getUserInitials } from \"../../../utils/userUtils\";\n\nexport class GroupMember {\n @observable id: string;\n\n @observable groupId: string;\n\n @observable groupName: string;\n\n @observable userId: string;\n\n @observable userFirstName?: string;\n\n @observable userLastName?: string;\n\n @observable userEmail: string;\n\n @observable role: UserRoleDto;\n\n constructor(dto: GroupUserDto) {\n makeObservable(this);\n this.id = dto.id;\n this.groupId = dto.groupId;\n this.groupName = dto.groupName;\n this.userId = dto.userId;\n this.userFirstName = dto.userFirstName;\n this.userLastName = dto.userLastName;\n this.userEmail = dto.userEmail;\n this.role = dto.userRole;\n }\n\n @computed get displayName() {\n return getUserDisplayName(this.userEmail, this.userFirstName, this.userLastName);\n }\n\n @computed get initials() {\n return getUserInitials(this.userEmail, this.userFirstName, this.userLastName);\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\nimport { UserAndGroupItemDto } from '../../users/dto/UserAndGroupItemDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\nimport { SearchTypeDto } from '../../users/dto/SearchTypeDto';\n\nexport class SearchUsersAndGroupsRequest extends IApiRequest>\n{\n\tpublic $type = 'SearchUsersAndGroupsRequest';\n\tconstructor(public data: { companyId: string, searchType: SearchTypeDto, skip: number, take: number, searchPhrase?: string }) { super(); }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport axios, { CancelTokenSource } from \"axios\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { SearchUsersAndGroupsRequest } from \"../../../../infrastructure/types/api/users/SearchUsersAndGroupsRequest\";\nimport { SearchTypeDto } from \"../../../../infrastructure/types/users/dto/SearchTypeDto\";\nimport { UserAndGroupItemDto } from \"../../../../infrastructure/types/users/dto/UserAndGroupItemDto\";\nimport { UserAndGroupTypeDto } from \"../../../../infrastructure/types/users/dto/UserAndGroupTypeDto\";\nimport { PaginationOptions, SearchPhrase } from \"../../../../ui/loadMoreList/PaginatedList\";\nimport { LoadMoreButtonItem } from \"../../models/LoadMoreButtonItem\";\n\nexport type LoadedSearchedItem = UserAndGroupItem | LoadMoreButtonItem;\n\nexport class UserAndGroupItem {\n public id: string;\n\n public _type: UserAndGroupTypeDto;\n\n public firstName?: string;\n\n public lastName?: string;\n\n public email?: string;\n\n public name?: string;\n\n constructor(dto: UserAndGroupItemDto) {\n this.id = dto.id;\n this._type = dto.type;\n this.firstName = dto.firstName;\n this.lastName = dto.lastName;\n this.email = dto.email;\n this.name = dto.name;\n }\n}\n\nexport class UserAndGroupSearchStore {\n cancelTokenSource?: CancelTokenSource;\n\n constructor(private httpClient: HttpClient) {}\n\n public async getItems(\n searchType: SearchTypeDto,\n companyId: CompanyId,\n searchPhrase: SearchPhrase,\n options: PaginationOptions\n ) {\n const result = await this.loadItems(searchType, companyId, searchPhrase, options);\n\n const { results, total } = result;\n\n const items = results.map(u => new UserAndGroupItem(u));\n\n return { items, total };\n }\n\n private async loadItems(\n searchType: SearchTypeDto,\n companyId: CompanyId,\n searchPhrase: string,\n options: PaginationOptions\n ) {\n if (this.cancelTokenSource) {\n this.cancelTokenSource.cancel(\"Canceled because of a new request.\");\n }\n\n this.cancelTokenSource = axios.CancelToken.source();\n\n const response = await this.httpClient.send(\n new SearchUsersAndGroupsRequest({ searchType, companyId: companyId.value, searchPhrase, ...options }),\n this.cancelTokenSource.token\n );\n\n this.cancelTokenSource = undefined;\n\n return response;\n }\n}\n","import { action, makeObservable, observable } from \"mobx\";\nimport { OptionDto } from \"../../../infrastructure/types/test/dto/OptionDto\";\n\nexport type OptionStatusType = \"default\" | \"wrong\" | \"shouldBeChecked\" | \"correct\";\n\nexport class OptionWithStatus {\n @observable id: string;\n\n @observable status: OptionStatusType = \"default\";\n\n constructor(public option: OptionDto) {\n makeObservable(this);\n this.id = option.id;\n }\n\n @action.bound\n changeStatus = (status: OptionStatusType) => {\n this.status = status;\n };\n\n @action.bound\n reset = () => {\n this.changeStatus(\"default\");\n };\n}\n","import { action, makeObservable, observable } from \"mobx\";\nimport { PortableTextDto } from \"../../../infrastructure/types/shared/dto/PortableTextDto\";\nimport { TaskDto } from \"../../../infrastructure/types/test/dto/TaskDto\";\nimport { MultipleAnswerQuestion, SingleAnswerQuestion } from \"../components/task/taskUtils\";\nimport { OptionWithStatus } from \"./OptionWithStatus\";\n\nexport type TaskStatus = \"default\" | \"readOnly\";\n\nexport type Answer = { id: string; content: PortableTextDto };\nexport type Question = { id: string; content: PortableTextDto };\n\nexport type Answers = Answer[];\nexport type Questions = Question[];\n\nexport type MatchTaskValue = (SingleAnswerQuestion | MultipleAnswerQuestion)[];\n\nexport class TaskWithStatus {\n @observable id: string;\n\n @observable status: TaskStatus = \"default\";\n\n @observable optionsWithStatus: Record;\n\n @observable correctInputAnswers: string;\n\n @observable isMobile?: boolean = window.innerWidth <= 870;\n\n constructor(public task: TaskDto) {\n makeObservable(this);\n window.addEventListener(\"resize\", this.updateIsMobile);\n const optionsWithStatus: Record = {};\n const correctAnswers = \"\";\n\n if (task.choiceTask) {\n task.choiceTask.options.forEach(option => {\n optionsWithStatus[option.id] = new OptionWithStatus(option);\n });\n }\n\n if (task.matchTask) {\n task.matchTask.questions.forEach(question => {\n task.matchTask?.answers.forEach(answer => {\n optionsWithStatus[`${task.id}:${question.id}:${answer.id}`] = new OptionWithStatus(question);\n });\n });\n }\n\n if (task.inputTask) {\n optionsWithStatus[task.inputTask.id] = new OptionWithStatus(task.inputTask);\n }\n\n this.optionsWithStatus = optionsWithStatus;\n this.id = task.id;\n this.correctInputAnswers = correctAnswers;\n }\n\n @action.bound\n updateIsMobile = () => {\n this.isMobile = window.innerWidth <= 870;\n };\n\n @action.bound\n changeStatus = (status: TaskStatus) => {\n this.status = status;\n };\n\n @action.bound\n setInputTaskAnswers = (answers: string[]) => {\n this.correctInputAnswers = answers.join(\"/\");\n };\n\n @action.bound\n reset = () => {\n this.changeStatus(\"default\");\n this.setInputTaskAnswers([]);\n Object.keys(this.optionsWithStatus).forEach(key => {\n const answer = this.optionsWithStatus[key];\n answer.reset();\n });\n };\n\n dispose = () => {\n window.removeEventListener(\"resize\", this.updateIsMobile);\n };\n}\n","export default __webpack_public_path__ + \"static/media/noActiveCourses.71735273.png\";","export default __webpack_public_path__ + \"static/media/trophy.d8f09f18.png\";","export default __webpack_public_path__ + \"static/media/circleX.d7ace0f6.png\";","export default __webpack_public_path__ + \"static/media/noAvailableCourses.af489f9c.png\";","export default __webpack_public_path__ + \"static/media/noElementsFound.0e23dc73.png\";","export default __webpack_public_path__ + \"static/media/paymentError.bc06b195.png\";","export default __webpack_public_path__ + \"static/media/paymentSuccess.db19a0f6.png\";","export default __webpack_public_path__ + \"static/media/hero.3cb368b4.png\";","export default __webpack_public_path__ + \"static/media/heroMobile.2d245594.png\";","export default __webpack_public_path__ + \"static/media/qudosScreenShots.e217687e.png\";","import i18n from \"i18next\";\nimport HttpApi from \"i18next-http-backend\";\nimport ICU from \"i18next-icu\";\nimport { initReactI18next } from \"react-i18next\";\n\ni18n\n .use(ICU)\n .use(\n new HttpApi(null, {\n loadPath: ([first]) => {\n return `/api/GetTranslations?lang=${first}`;\n },\n })\n )\n .use(initReactI18next)\n .init({\n fallbackLng: \"nb\",\n interpolation: {\n escapeValue: false,\n },\n });\n\nexport default i18n;\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 enum FooterLinkTypeDto { \n\tExternalLink = \"ExternalLink\", \n\tInternalLink = \"InternalLink\"\n}\n","import React from \"react\";\nimport { useLocation } from \"react-router\";\nimport { InvitationStore } from \"../../../domain/courseAssigning/stores/invitationStore/InvitationStore\";\nimport { Loader } from \"../../../ui/loader/Loader\";\n\ninterface InvitationProps {\n invitationStore: InvitationStore;\n}\n\nexport const LazyInvitation: React.FC = ({ invitationStore }) => {\n const { search } = useLocation();\n const Lazy = React.lazy(async () => {\n const searchParams = new URLSearchParams(search);\n const userEmail = searchParams.get(\"userEmail\");\n\n if (!userEmail) {\n throw new Error(`No 'userEmail' query string parameter in request '${window.location.href}'`);\n }\n\n const decodedUserEmail = decodeURIComponent(userEmail);\n const result = await invitationStore.acceptInvitation(decodedUserEmail, window.location.href);\n\n const redirectToUrl = (url: string) => {\n if (!url) {\n throw new Error(\"Accept invitation result redirect url is empty\");\n }\n window.location.href = url;\n };\n\n redirectToUrl(result.url);\n\n return {\n default: () => ,\n };\n });\n\n return ;\n};\n","import { ReportHandler } from \"web-vitals\";\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import classNames from \"classnames\";\nimport Cookies from \"js-cookie\";\nimport { observer } from \"mobx-react\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { animated, config, useSpring } from \"react-spring\";\nimport { useDelayedDisplay } from \"../../../infrastructure/hooks/useDelayedDisplay\";\nimport { Button } from \"../../../ui/button/Button\";\nimport { Modal } from \"../../../ui/modal/Modal\";\nimport {\n AcceptedCookiesConsentValue,\n AnalysisCookieName,\n CookiesConsentConfig,\n NecessaryCookieName,\n} from \"./CookiesConsentConfig\";\n\ninterface CookiesConsentProps {\n model: CookiesConsentConfig;\n onAccept?: () => void;\n}\n\nexport const CookiesConsent: React.FC = observer(({ model, onAccept }) => {\n const { cookiesConsent, toggleCookie, acceptSpecificCookies } = model;\n const { t } = useTranslation();\n const [cookiesConsentState, setCookiesConsentState] = React.useState(Cookies.get(NecessaryCookieName));\n const shouldCookiesConsentBeOpened = cookiesConsentState !== AcceptedCookiesConsentValue;\n const [isDisplayed, hide] = useDelayedDisplay(shouldCookiesConsentBeOpened);\n const [showModal, setShowModal] = useState(false);\n const cookiesConsentStyles = useSpring({\n from: { transform: `translateY(100%)` },\n transform: shouldCookiesConsentBeOpened ? `translateY(0%)` : `translateY(100%)`,\n onResolve: hide,\n config: config.stiff,\n });\n\n const cookies = [\n {\n id: \"0\",\n name: NecessaryCookieName,\n title: \"Nødvendige informasjonskapsler\",\n mandatory: true,\n description:\n \"Disse informasjonskapslene støtter opp under kjernefunksjonalitet knyttet til sikkerhet. Vi har vurdert disse som nødvendige, og de lagres derfor uten samtykke.\",\n },\n {\n id: \"1\",\n name: AnalysisCookieName,\n title: \"Analyse og markedsføring\",\n mandatory: false,\n description:\n \"Vi bruker informasjonskapsler til å analysere bruk av nettsiden for å skape en bedre brukeropplevelse for deg og tilby relevant markedsføring gjennom andre nettsteder, inkludert sosiale medier.\",\n },\n ];\n const acceptCookies = () => {\n acceptSpecificCookies();\n onAccept && onAccept();\n setCookiesConsentState(AcceptedCookiesConsentValue);\n };\n\n const acceptSpecificCookiesLocalFunction = () => {\n acceptSpecificCookies();\n onAccept && onAccept();\n setCookiesConsentState(AcceptedCookiesConsentValue);\n setShowModal(false);\n };\n return (\n <>\n {isDisplayed ? (\n \n

\n {t(\"cookieNotice\")}\n

\n
\n

\n Det benyttes kun nødvendige informasjonskapsler (cookies), for å sikre tilgang og at nettsiden fungerer.\n Du finner personvernerklæringen ved å klikke her.\n

\n
\n \n
\n
\n \n ) : null}\n\n {showModal && (\n
\n setShowModal(false)} className=\"ConsentModal\">\n

Samtykkeinnstillinger

\n

{cookiesConsent.consentText}

\n \n Gyldendals bruk av informasjonskapsler\n \n
\n {cookies.map(cookie => (\n
\n
\n \n

{cookie.title}

\n toggleCookie(cookie.name)}\n disabled={cookie.mandatory}\n />\n \n
\n
\n

{cookie.description}

\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\nimport { CheckoutDto } from '../../landing/dto/CheckoutDto';\nimport { IApiRequest } from '../../IApiRequest';\nimport { CheckoutUrlsDto } from '../../landing/dto/CheckoutUrlsDto';\n\nexport class CheckoutCourseRequest extends IApiRequest\n{\n\tpublic $type = 'CheckoutCourseRequest';\n\tconstructor(public data: { courseSlug: string, checkoutUrls: CheckoutUrlsDto }) { super(); }\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\nimport { CheckoutDto } from '../../landing/dto/CheckoutDto';\nimport { IApiRequest } from '../../IApiRequest';\nimport { CheckoutUrlsDto } from '../../landing/dto/CheckoutUrlsDto';\n\nexport class CheckoutPackageRequest extends IApiRequest\n{\n\tpublic $type = 'CheckoutPackageRequest';\n\tconstructor(public data: { packageSlug: string, checkoutUrls: CheckoutUrlsDto }) { super(); }\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\nimport { GroupItemDto } from '../../users/dto/GroupItemDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class SearchGroupsRequest extends IApiRequest>\n{\n\tpublic $type = 'SearchGroupsRequest';\n\tconstructor(public data: { companyId: string, skip: number, take: number, searchPhrase?: string }) { super(); }\n}\n","import axios, { CancelTokenSource } from \"axios\";\nimport { SearchGroupsRequest } from \"infrastructure/types/api/users/SearchGroupsRequest\";\nimport { GroupItemDto } from \"infrastructure/types/users/dto/GroupItemDto\";\nimport { UserAndGroupTypeDto } from \"infrastructure/types/users/dto/UserAndGroupTypeDto\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { PaginationOptions, SearchPhrase } from \"../../../../ui/loadMoreList/PaginatedList\";\nimport { CompanyId } from \"../../../company/CompanyId\";\n\nexport class GroupItem {\n public id: string;\n\n public name?: string;\n\n public readonly _type = UserAndGroupTypeDto.Group;\n\n constructor(dto: GroupItemDto) {\n this.id = dto.id;\n this.name = dto.name;\n }\n}\n\nexport class GroupSearchStore {\n cancelTokenSource?: CancelTokenSource;\n\n constructor(private httpClient: HttpClient) {}\n\n public async getItems(companyId: CompanyId, searchPhrase: SearchPhrase, options: PaginationOptions) {\n const result = await this.loadItems(companyId, searchPhrase, options);\n\n const { results, total } = result;\n\n const items = results.map(u => new GroupItem(u));\n\n return { items, total };\n }\n\n private async loadItems(companyId: CompanyId, searchPhrase: SearchPhrase, options: PaginationOptions) {\n if (this.cancelTokenSource) {\n this.cancelTokenSource.cancel(\"Canceled because of a new request.\");\n }\n\n this.cancelTokenSource = axios.CancelToken.source();\n\n const response = await this.httpClient.send(\n new SearchGroupsRequest({\n companyId: companyId.value,\n searchPhrase,\n ...options,\n }),\n this.cancelTokenSource.token\n );\n\n this.cancelTokenSource = undefined;\n\n return response;\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\nimport { UserItemDto } from '../../users/dto/UserItemDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class SearchUsersRequest extends IApiRequest>\n{\n\tpublic $type = 'SearchUsersRequest';\n\tconstructor(public data: { companyId: string, searchPhrase?: string, skip: number, take: number }) { super(); }\n}\n","import axios, { CancelTokenSource } from \"axios\";\nimport { SearchUsersRequest } from \"infrastructure/types/api/users/SearchUsersRequest\";\nimport { UserAndGroupTypeDto } from \"infrastructure/types/users/dto/UserAndGroupTypeDto\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { UserAndGroupItemDto } from \"../../../../infrastructure/types/users/dto/UserAndGroupItemDto\";\nimport { PaginationOptions, SearchPhrase } from \"../../../../ui/loadMoreList/PaginatedList\";\nimport { CompanyId } from \"../../../company/CompanyId\";\n\nexport class UserItem {\n public id: string;\n\n public firstName?: string;\n\n public lastName?: string;\n\n public email?: string;\n\n public readonly _type = UserAndGroupTypeDto.User;\n\n constructor(dto: UserAndGroupItemDto) {\n this.id = dto.id;\n this.firstName = dto.firstName;\n this.lastName = dto.lastName;\n this.email = dto.email;\n }\n}\n\nexport class UserSearchStore {\n cancelTokenSource?: CancelTokenSource;\n\n constructor(private httpClient: HttpClient) {}\n\n public async getItems(companyId: CompanyId, searchPhrase: SearchPhrase, options: PaginationOptions) {\n const result = await this.loadItems(companyId, searchPhrase, options);\n\n const { results, total } = result;\n\n const items = results.map(u => new UserItem(u));\n\n return { items, total };\n }\n\n private async loadItems(companyId: CompanyId, searchPhrase: SearchPhrase, options: PaginationOptions) {\n if (this.cancelTokenSource) {\n this.cancelTokenSource.cancel(\"Canceled because of a new request.\");\n }\n\n this.cancelTokenSource = axios.CancelToken.source();\n\n const response = await this.httpClient.send(\n new SearchUsersRequest({ companyId: companyId.value, searchPhrase, ...options }),\n this.cancelTokenSource.token\n );\n\n this.cancelTokenSource = undefined;\n\n return response;\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 enum AssignmentSourceDto { \n\tIndividual = \"Individual\", \n\tGroup = \"Group\"\n}\n","import { FooterLinkDto } from \"infrastructure/types/config/dto/FooterLinkDto\";\nimport { makeObservable, observable } from \"mobx\";\nimport { throwExpression } from \"../../../../utils/utils\";\n\nexport class InternalFooterLink {\n @observable title: string;\n\n @observable internalUrl: string;\n\n readonly _type = \"internal\";\n\n constructor(dto: FooterLinkDto) {\n makeObservable(this);\n this.title = dto.title;\n this.internalUrl = dto.internalUrl ?? throwExpression(\"Missing internal url\");\n }\n}\n\nexport class ExternalFooterLink {\n @observable title: string;\n\n @observable externalUrl: string;\n\n readonly _type = \"external\";\n\n constructor(dto: FooterLinkDto) {\n makeObservable(this);\n this.title = dto.title;\n this.externalUrl = dto.externalUrl ?? throwExpression(\"Missing external url\");\n }\n}\n\nexport type FooterLinkViewModel = InternalFooterLink | ExternalFooterLink;\n","import { action, makeObservable, observable } from \"mobx\";\nimport { FooterLinkDto } from \"../../../infrastructure/types/config/dto/FooterLinkDto\";\nimport { FooterLinkTypeDto } from \"../../../infrastructure/types/config/dto/FooterLinkTypeDto\";\nimport { assertUnreachable } from \"../../../utils/utils\";\nimport { ExternalFooterLink, FooterLinkViewModel, InternalFooterLink } from \"./footerLink/FooterLinkViewModel\";\n\nexport class FooterConfig {\n @observable footerLinks: FooterLinkViewModel[] = [];\n\n constructor() {\n makeObservable(this);\n }\n\n @action\n setFooterLinks(footerLinks: FooterLinkDto[]) {\n this.footerLinks = footerLinks.map(link => this.createFooterLink(link));\n }\n\n private createFooterLink(link: FooterLinkDto) {\n switch (link.type) {\n case FooterLinkTypeDto.ExternalLink: {\n return new ExternalFooterLink(link);\n }\n case FooterLinkTypeDto.InternalLink: {\n return new InternalFooterLink(link);\n }\n default:\n return assertUnreachable(link.type);\n }\n }\n}\n","import { action, computed, makeObservable, observable } from \"mobx\";\nimport { TibetPublicLinksDto } from \"../../../infrastructure/types/config/dto/TibetPublicLinksDto\";\n\nexport class TibetPublicLinks {\n @observable private tibetPublicLinks: TibetPublicLinksDto = {\n editMyProfileUrl: \"\",\n };\n\n @computed get editProfileUrl() {\n return this.tibetPublicLinks.editMyProfileUrl;\n }\n\n constructor() {\n makeObservable(this);\n }\n\n @action.bound\n setLinks(tibetPublicLinks: TibetPublicLinksDto) {\n this.tibetPublicLinks = tibetPublicLinks;\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\nimport { SiteConfigDto } from '../../config/dto/SiteConfigDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetSiteConfigRequest extends IApiRequest\n{\n\tpublic $type = 'GetSiteConfigRequest';\n\tconstructor(public data: { lang?: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class TibetPageToJoinWithCodeRequest extends IApiRequest\n{\n\tpublic $type = 'TibetPageToJoinWithCodeRequest';\n\tconstructor() { super(); }\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\nimport { UserDto } from '../../shared/dto/UserDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetAppUserRequest extends IApiRequest\n{\n\tpublic $type = 'GetAppUserRequest';\n\tconstructor() { super(); }\n}\n","import { action, makeObservable, observable, onBecomeObserved, runInAction } from \"mobx\";\nimport { CookiesConsentConfig } from \"../../application/layout/cookiesConsent/CookiesConsentConfig\";\nimport { FooterConfig } from \"../../application/layout/footer/FooterConfig\";\nimport { TibetPublicLinks } from \"../../application/layout/publicLinks/TibetPublicLinks\";\nimport { AppUser, LoggedInAppUser, AnonymousAppUser } from \"../../application/models/appUser/AppUser\";\nimport { HttpClient } from \"../../infrastructure/api/HttpClient\";\nimport { IGtmService } from \"../../infrastructure/gtm/GtmService\";\nimport { Unloaded } from \"../../infrastructure/stores/models/Unloaded\";\nimport { GetSiteConfigRequest } from \"../../infrastructure/types/api/config/GetSiteConfigRequest\";\nimport { TibetPageToJoinWithCodeRequest } from \"../../infrastructure/types/api/invitation/TibetPageToJoinWithCodeRequest\";\nimport { GetAppUserRequest } from \"../../infrastructure/types/api/users/GetAppUserRequest\";\n\ntype AppConfigState = \"loaded\" | \"loading\" | \"unloaded\" | \"failedToLoad\";\nexport class AppStore {\n @observable footerConfig: FooterConfig;\n\n @observable cookiesConsentConfig: CookiesConsentConfig;\n\n @observable state: AppConfigState = \"unloaded\";\n\n @observable tibetPublicLinks: TibetPublicLinks;\n\n @observable user: Unloaded | AppUser = new Unloaded();\n\n @observable isPaymentEnabled;\n\n @observable isMobileView: boolean = window.innerWidth <= 1100;\n\n constructor(public httpClient: HttpClient, public gtm: IGtmService) {\n makeObservable(this);\n this.footerConfig = new FooterConfig();\n this.cookiesConsentConfig = new CookiesConsentConfig(gtm);\n this.tibetPublicLinks = new TibetPublicLinks();\n this.isPaymentEnabled = false;\n window.addEventListener(\"resize\", this.updateIsMobileView);\n onBecomeObserved(this, \"footerConfig\", async () => {\n if (this.state !== \"unloaded\") {\n return;\n }\n await runInAction(async () => {\n this.state = \"loading\";\n try {\n await this.loadConfig();\n this.state = \"loaded\";\n } catch (e) {\n this.state = \"failedToLoad\";\n }\n });\n });\n\n onBecomeObserved(this, \"cookiesConsentConfig\", async () => {\n if (this.state !== \"unloaded\") {\n return;\n }\n await runInAction(async () => {\n this.state = \"loading\";\n try {\n await this.loadConfig();\n this.state = \"loaded\";\n } catch (e) {\n this.state = \"failedToLoad\";\n }\n });\n });\n\n onBecomeObserved(this, \"tibetPublicLinks\", async () => {\n if (this.state !== \"unloaded\") {\n return;\n }\n await runInAction(async () => {\n this.state = \"loading\";\n try {\n await this.loadConfig();\n this.state = \"loaded\";\n } catch (e) {\n this.state = \"failedToLoad\";\n }\n });\n });\n\n onBecomeObserved(this, \"isPaymentEnabled\", async () => {\n if (this.state !== \"unloaded\") {\n return;\n }\n await runInAction(async () => {\n this.state = \"loading\";\n try {\n await this.loadConfig();\n this.state = \"loaded\";\n } catch (e) {\n this.state = \"failedToLoad\";\n }\n });\n });\n }\n\n @action.bound\n updateIsMobileView = () => {\n this.isMobileView = window.innerWidth <= 1100;\n };\n\n @action.bound\n async loadAppUser() {\n const getAppUserResponse = await this.httpClient.send(new GetAppUserRequest());\n const appUser = getAppUserResponse ? new LoggedInAppUser(getAppUserResponse) : new AnonymousAppUser();\n\n this.user = appUser;\n return appUser;\n }\n\n @action.bound\n async getJoinViaCodeUrl() {\n const url = await this.httpClient.send(new TibetPageToJoinWithCodeRequest());\n return url;\n }\n\n async loadConfig() {\n const response = await this.httpClient.send(new GetSiteConfigRequest({}));\n this.cookiesConsentConfig.setCookiesConsent(response.cookiesConsent);\n this.footerConfig.setFooterLinks(response.footerLinks);\n this.tibetPublicLinks.setLinks(response.tibetPublicLinks);\n this.isPaymentEnabled = response.isPaymentEnabled;\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\nimport { CourseStatsDto } from '../../courseassignments/dto/CourseStatsDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseAssignmentStatsRequest extends IApiRequest\n{\n\tpublic $type = 'GetCourseAssignmentStatsRequest';\n\tconstructor(public data: { companyId: string, courseIds: string[] }) { super(); }\n}\n","import { makeObservable, observable } from \"mobx\";\nimport { CourseStatsDto } from \"../../../infrastructure/types/courseassignments/dto/CourseStatsDto\";\nimport { CourseStatusDto } from \"../../../infrastructure/types/courseassignments/dto/CourseStatusDto\";\n\nexport class CourseAssignmentStats {\n @observable courseId: string;\n\n @observable completedPassedAssignmentsCount: number;\n\n @observable totalAssignmentsCount: number;\n\n @observable activeDaysLeft: number;\n\n @observable status: CourseStatusDto;\n\n constructor(dto: CourseStatsDto) {\n makeObservable(this);\n this.courseId = dto.courseId;\n this.completedPassedAssignmentsCount = dto.completedPassedCount;\n this.totalAssignmentsCount = dto.totalCount;\n this.activeDaysLeft = dto.activeDaysLeft;\n this.status = dto.status;\n }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { GetCourseAssignmentStatsRequest } from \"infrastructure/types/api/courseassignments/GetCourseAssignmentStatsRequest\";\nimport { makeObservable, observable } from \"mobx\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { CourseAssignmentStats } from \"../../models/CourseStats\";\n\nexport class CourseStatsStore {\n @observable courseStats: CourseAssignmentStats[] = [];\n\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n public async loadCourseAssignmentStats(companyId: CompanyId, courseIds: string[]) {\n const result = await this.httpClient.send(\n new GetCourseAssignmentStatsRequest({ companyId: companyId.value, courseIds })\n );\n const loadedCourseStats = result.map(courseStatsDto => new CourseAssignmentStats(courseStatsDto));\n\n this.courseStats = loadedCourseStats;\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\nimport { CourseDto } from '../../courses/dto/CourseDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetAssignableCourseDomainsRequest extends IApiRequest\n{\n\tpublic $type = 'GetAssignableCourseDomainsRequest';\n\tconstructor(public data: { companyId: string }) { super(); }\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\nimport { CourseDto } from '../../courses/dto/CourseDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseDomainsRequest extends IApiRequest\n{\n\tpublic $type = 'GetCourseDomainsRequest';\n\tconstructor(public data: { ids: string[] }) { super(); }\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\nimport { CourseDto } from '../../courses/dto/CourseDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseDomainBySlugRequest extends IApiRequest\n{\n\tpublic $type = 'GetCourseDomainBySlugRequest';\n\tconstructor(public data: { slug: string }) { super(); }\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\nimport { CourseDto } from '../../courses/dto/CourseDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseDomainRequest extends IApiRequest\n{\n\tpublic $type = 'GetCourseDomainRequest';\n\tconstructor(public data: { id: string }) { super(); }\n}\n","import { computed, makeObservable, observable } from \"mobx\";\nimport { CourseContentId } from \"../../../infrastructure/types/content/model/CourseContentId\";\nimport { CourseDto } from \"../../../infrastructure/types/courses/dto/CourseDto\";\nimport { CourseModeDto } from \"../../../infrastructure/types/shared/dto/CourseModeDto\";\n\nexport class CourseDomain {\n @observable id: string;\n\n @observable title: string;\n\n @observable mode: CourseModeDto;\n\n @observable timeEstimate: string;\n\n @observable price: number;\n\n @observable approvedBy: string;\n\n @observable isAssignable: boolean;\n\n @observable sanityCourseId?: CourseContentId;\n\n readonly _type = \"courseDomain\";\n\n @computed get isExam() {\n return this.mode === CourseModeDto.Exam;\n }\n\n constructor(dto: CourseDto) {\n makeObservable(this);\n this.id = dto.id;\n this.title = dto.title;\n this.mode = dto.mode;\n this.timeEstimate = dto.timeEstimate;\n this.price = dto.price;\n this.approvedBy = dto.approvedBy;\n this.isAssignable = dto.isAssignable;\n this.sanityCourseId = dto.sanityCourseId;\n }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { GetAssignableCourseDomainsRequest } from \"infrastructure/types/api/courses/GetAssignableCourseDomainsRequest\";\nimport { GetCourseDomainsRequest } from \"infrastructure/types/api/courses/GetCourseDomainsRequest\";\nimport { makeObservable, observable } from \"mobx\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { GetCourseDomainBySlugRequest } from \"../../../../infrastructure/types/api/courses/GetCourseDomainBySlugRequest\";\nimport { GetCourseDomainRequest } from \"../../../../infrastructure/types/api/courses/GetCourseDomainRequest\";\nimport { CourseDomain } from \"../../models/CourseDomain\";\n\nexport class CourseDomainStore {\n @observable courses: CourseDomain[] = [];\n\n @observable selfAssignableCourses: CourseDomain[] = [];\n\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n public async getAssignableCourses(companyId: CompanyId) {\n await this.loadAssignableCourses(companyId);\n\n return this.courses;\n }\n\n public async getSelfAssignableCourses(companyId: CompanyId) {\n await this.loadSelfAssignableCourses(companyId);\n\n return this.selfAssignableCourses;\n }\n\n public async getCourses(ids: string[]) {\n await this.loadCourses(ids);\n\n return this.courses;\n }\n\n public async loadCourses(ids: string[]) {\n const response = await this.httpClient.send(new GetCourseDomainsRequest({ ids }));\n const loadedCourses = response.map(dto => new CourseDomain(dto));\n this.courses = loadedCourses;\n }\n\n public async loadCourseBySlug(slug: string) {\n const response = await this.httpClient.send(new GetCourseDomainBySlugRequest({ slug }));\n\n const loadedCourse = new CourseDomain(response);\n this.courses.push(loadedCourse);\n return loadedCourse;\n }\n\n public async loadCourse(id: string) {\n const response = await this.httpClient.send(new GetCourseDomainRequest({ id }));\n const loadedCourse = new CourseDomain(response);\n this.courses.push(loadedCourse);\n return loadedCourse;\n }\n\n private async loadAssignableCourses(companyId: CompanyId) {\n const response = await this.httpClient.send(new GetAssignableCourseDomainsRequest({ companyId: companyId.value }));\n const loadedCourses = response.map(dto => new CourseDomain(dto));\n this.courses = loadedCourses;\n }\n\n private async loadSelfAssignableCourses(companyId: CompanyId) {\n const response = await this.httpClient.send(new GetAssignableCourseDomainsRequest({ companyId: companyId.value }));\n const loadedCourses = response.map(dto => new CourseDomain(dto));\n this.selfAssignableCourses = loadedCourses;\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\nimport { CourseAssignmentDto } from '../../courseassignments/dto/CourseAssignmentDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AddSelfAssignedCourseAssignmentRequest extends IApiRequest\n{\n\tpublic $type = 'AddSelfAssignedCourseAssignmentRequest';\n\tconstructor(public data: { companyId: string, courseId: string, activeFrom: string, activeTo: string }) { super(); }\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\nimport { CourseAssignmentDto } from '../../courseassignments/dto/CourseAssignmentDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseAssignmentRequest extends IApiRequest\n{\n\tpublic $type = 'GetCourseAssignmentRequest';\n\tconstructor(public data: { id: string }) { super(); }\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\nimport { CourseAssignmentDto } from '../../courseassignments/dto/CourseAssignmentDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetUserCourseAssignmentsRequest extends IApiRequest\n{\n\tpublic $type = 'GetUserCourseAssignmentsRequest';\n\tconstructor(public data: { userId: string, companyId?: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class StartCourseAssignmentRequest extends IApiRequest\n{\n\tpublic $type = 'StartCourseAssignmentRequest';\n\tconstructor(public data: { id: string }) { super(); }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { action, makeObservable, observable } from \"mobx\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { AddSelfAssignedCourseAssignmentRequest } from \"../../../../infrastructure/types/api/courseassignments/AddSelfAssignedCourseAssignmentRequest\";\nimport { GetCourseAssignmentRequest } from \"../../../../infrastructure/types/api/courseassignments/GetCourseAssignmentRequest\";\nimport { GetUserCourseAssignmentsRequest } from \"../../../../infrastructure/types/api/courseassignments/GetUserCourseAssignmentsRequest\";\nimport { StartCourseAssignmentRequest } from \"../../../../infrastructure/types/api/courseassignments/StartCourseAssignmentRequest\";\nimport { CourseAssignment } from \"../../models/CourseAssignment\";\n\nexport class CourseAssignmentStore {\n @observable courseAssignments: CourseAssignment[] = [];\n\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n @action.bound\n public async getUserAssignments(userId: string, companyId?: CompanyId) {\n const getUserCourseAssignmentsResponse = await this.httpClient.send(\n new GetUserCourseAssignmentsRequest({ userId, companyId: companyId?.value })\n );\n this.courseAssignments = getUserCourseAssignmentsResponse.map(dto => new CourseAssignment(this, dto));\n\n return this.courseAssignments;\n }\n\n @action.bound\n public async getCourseAssignment(id: string) {\n const result = await this.loadCourseAssignment(id);\n return new CourseAssignment(this, result);\n }\n\n @action.bound\n public async loadCourseAssignment(id: string) {\n const result = await this.httpClient.send(new GetCourseAssignmentRequest({ id }));\n return result;\n }\n\n @action.bound\n public async startCourseAssignment(id: string) {\n await this.httpClient.send(new StartCourseAssignmentRequest({ id }));\n }\n\n @action.bound\n public async addSelfAssignedCourseAssignment(courseId: string, companyId: CompanyId) {\n const activeFrom = new Date(Date.now()).toJSON();\n const activeTo = new Date(Date.now().valueOf() + 5259600000).toJSON();\n\n const updatedCourseassignments = await this.httpClient.send(\n new AddSelfAssignedCourseAssignmentRequest({\n courseId,\n companyId: companyId.value,\n activeFrom,\n activeTo,\n })\n );\n return updatedCourseassignments;\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\nimport { AcceptInvitationResultDto } from '../../invitation/dto/AcceptInvitationResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AcceptInvitationRequest extends IApiRequest\n{\n\tpublic $type = 'AcceptInvitationRequest';\n\tconstructor(public data: { userEmail: string, returnUrl: string, companyId?: string }) { super(); }\n}\n","import { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { AcceptInvitationRequest } from \"../../../../infrastructure/types/api/invitation/AcceptInvitationRequest\";\n\nexport class InvitationStore {\n constructor(private httpClient: HttpClient) {}\n\n public async acceptInvitation(userEmail: string, returnUrl: string) {\n const acceptInvitationResult = await this.httpClient.send(new AcceptInvitationRequest({ userEmail, returnUrl }));\n\n return acceptInvitationResult;\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AddCourseAssignmentsRequest extends IApiRequest\n{\n\tpublic $type = 'AddCourseAssignmentsRequest';\n\tconstructor(public data: { companyId: string, courseId: string, userIds: string[], groupIds?: string[], activeFrom: string, activeTo: string }) { super(); }\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\nimport { IndividualCourseAssignmentDto } from '../../courseassignments/dto/IndividualCourseAssignmentDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseAssignmentsForGroupMembersRequest extends IApiRequest>\n{\n\tpublic $type = 'GetCourseAssignmentsForGroupMembersRequest';\n\tconstructor(public data: { groupCourseAssignmentId: string, companyId: string, skip: number, take: number }) { super(); }\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\nimport { CourseAssignmentForGroupAndUserDto } from '../../courseassignments/dto/CourseAssignmentForGroupAndUserDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseAssignmentsRequest extends IApiRequest>\n{\n\tpublic $type = 'GetCourseAssignmentsRequest';\n\tconstructor(public data: { companyId: string, courseId: string, skip: number, take: number, searchQuery?: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RemoveCourseAssignmentRequest extends IApiRequest\n{\n\tpublic $type = 'RemoveCourseAssignmentRequest';\n\tconstructor(public data: { id: string, companyId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RemoveGroupCourseAssignmentRequest extends IApiRequest\n{\n\tpublic $type = 'RemoveGroupCourseAssignmentRequest';\n\tconstructor(public data: { id: string, companyId: string }) { super(); }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { makeObservable, observable } from \"mobx\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { AddCourseAssignmentsRequest } from \"../../../../infrastructure/types/api/courseassignments/AddCourseAssignmentsRequest\";\nimport { GetCourseAssignmentsForGroupMembersRequest } from \"../../../../infrastructure/types/api/courseassignments/GetCourseAssignmentsForGroupMembersRequest\";\nimport { GetCourseAssignmentsRequest } from \"../../../../infrastructure/types/api/courseassignments/GetCourseAssignmentsRequest\";\nimport { RemoveCourseAssignmentRequest } from \"../../../../infrastructure/types/api/courseassignments/RemoveCourseAssignmentRequest\";\nimport { RemoveGroupCourseAssignmentRequest } from \"../../../../infrastructure/types/api/courseassignments/RemoveGroupCourseAssignmentRequest\";\nimport { AssignmentSourceDto } from \"../../../../infrastructure/types/courseassignments/dto/AssignmentSourceDto\";\nimport { assertUnreachable } from \"../../../../utils/utils\";\nimport { GroupCourseAssignment } from \"../../models/GroupCourseAssignment\";\nimport { IndividualCourseAssignment } from \"../../models/IndividualCourseAssignment\";\n\nexport type ManagerCourseAssignment = GroupCourseAssignment | IndividualCourseAssignment;\n\ntype CourseAssignmentsFilters = ConstructorParameters[0];\n\ntype CourseAssignmentsForGroupMembersFilters = ConstructorParameters<\n typeof GetCourseAssignmentsForGroupMembersRequest\n>[0];\n\nexport class ManagerCourseAssignmentStore {\n @observable courseAssignments: ManagerCourseAssignment[] = [];\n\n @observable total = 0;\n\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n public async addCourseAssignmentsToUsersAndGroups(\n companyId: CompanyId,\n courseDomainId: string,\n userIds: string[],\n groupIds: string[] | undefined,\n activeFrom: string,\n activeTo: string\n ) {\n const result = await this.httpClient.send(\n new AddCourseAssignmentsRequest({\n companyId: companyId.value,\n courseId: courseDomainId,\n userIds,\n groupIds,\n activeFrom,\n activeTo,\n })\n );\n return result;\n }\n\n public async load(filters: CourseAssignmentsFilters) {\n const assignmentsWithTotal = await this.loadCourseAssignments(filters);\n this.courseAssignments = assignmentsWithTotal.items;\n this.total = assignmentsWithTotal.total;\n\n return assignmentsWithTotal;\n }\n\n public async loadCourseAssignmentsForGroupMembers(filters: CourseAssignmentsForGroupMembersFilters) {\n const assignmentsWithTotal = await this.httpClient.send(new GetCourseAssignmentsForGroupMembersRequest(filters));\n const individualCourseAssignments = assignmentsWithTotal.results.map(\n ca => new IndividualCourseAssignment(this, ca)\n );\n\n return { items: individualCourseAssignments, total: assignmentsWithTotal.total };\n }\n\n public async removeIndividualCourseAssignment(id: string, companyId: CompanyId) {\n await this.httpClient.send(new RemoveCourseAssignmentRequest({ id, companyId: companyId.value }));\n this.courseAssignments = this.courseAssignments.filter(i => i.id !== id);\n }\n\n public async removeGroupCourseAssignment(id: string, companyId: CompanyId) {\n await this.httpClient.send(new RemoveGroupCourseAssignmentRequest({ id, companyId: companyId.value }));\n this.courseAssignments = this.courseAssignments.filter(i => i.id !== id);\n }\n\n private async loadCourseAssignments(filters: CourseAssignmentsFilters) {\n const getCourseAssignmentsResponse = await this.httpClient.send(new GetCourseAssignmentsRequest({ ...filters }));\n\n const items = getCourseAssignmentsResponse.results.map(dto => {\n if (dto.source === AssignmentSourceDto.Individual && dto.individualCourseAssignment) {\n return new IndividualCourseAssignment(this, dto.individualCourseAssignment);\n }\n\n if (dto.source === AssignmentSourceDto.Group && dto.groupCourseAssignment) {\n return new GroupCourseAssignment(this, dto.groupCourseAssignment);\n }\n\n return assertUnreachable();\n });\n\n return {\n items,\n total: getCourseAssignmentsResponse.total,\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\nimport { CourseContentInfoDto } from '../../coursecontents/dto/CourseContentInfoDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseContentInfoRequest extends IApiRequest\n{\n\tpublic $type = 'GetCourseContentInfoRequest';\n\tconstructor(public data: { courseDomainId: string, companyId: string, lang?: string }) { super(); }\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\nimport { CourseContentDto } from '../../coursecontents/dto/CourseContentDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCourseContentRequest extends IApiRequest\n{\n\tpublic $type = 'GetCourseContentRequest';\n\tconstructor(public data: { courseDomainId: string, lang?: string }) { super(); }\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\nimport { CourseContentInfoDto } from '../../coursecontents/dto/CourseContentInfoDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCoursesContentInfoRequest extends IApiRequest\n{\n\tpublic $type = 'GetCoursesContentInfoRequest';\n\tconstructor(public data: { courseIds: string[], lang?: string }) { super(); }\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\nimport { CourseContentInfoDto } from '../../coursecontents/dto/CourseContentInfoDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetSelfAssignableCourseContentInfoRequest extends IApiRequest\n{\n\tpublic $type = 'GetSelfAssignableCourseContentInfoRequest';\n\tconstructor(public data: { companyId: string, lang?: string }) { super(); }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { action, makeObservable, observable } from \"mobx\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { GetCourseContentInfoRequest } from \"../../../../infrastructure/types/api/coursecontents/GetCourseContentInfoRequest\";\nimport { GetCourseContentRequest } from \"../../../../infrastructure/types/api/coursecontents/GetCourseContentRequest\";\nimport { GetCoursesContentInfoRequest } from \"../../../../infrastructure/types/api/coursecontents/GetCoursesContentInfoRequest\";\nimport { GetSelfAssignableCourseContentInfoRequest } from \"../../../../infrastructure/types/api/coursecontents/GetSelfAssignableCourseContentInfoRequest\";\nimport { ContentCourse, CourseDetailed, CourseInfo } from \"../../models/Course\";\n\nexport class CourseContentStore {\n @observable courses: ContentCourse[] = [];\n\n @observable selfAssignableCourses: ContentCourse[] = [];\n\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n @action.bound\n public async loadCourseInfos(domainIds: string[]) {\n const response = await this.httpClient.send(new GetCoursesContentInfoRequest({ courseIds: domainIds }));\n\n const loadedCourses = response.map(dto => new CourseInfo(dto));\n\n this.courses = loadedCourses;\n }\n\n @action.bound\n public async loadSelfAssignableCourses(companyId: CompanyId) {\n const response = await this.httpClient.send(\n new GetSelfAssignableCourseContentInfoRequest({ companyId: companyId.value })\n );\n\n const loadedCourses = response.map(dto => new CourseInfo(dto));\n this.selfAssignableCourses = loadedCourses;\n }\n\n @action.bound\n private async selectCourse(loadCourse: () => Promise) {\n const loadedCourse = await loadCourse();\n\n const courseCurrentIndex = this.courses.findIndex(c => c.id === loadedCourse.id);\n if (courseCurrentIndex === -1) {\n this.courses.push(loadedCourse);\n } else {\n this.courses[courseCurrentIndex] = loadedCourse;\n }\n return loadedCourse;\n }\n\n async selectCourseDetailed(courseDomainId: string) {\n return this.selectCourse(() => this.loadCourseDetailed(courseDomainId));\n }\n\n async selectCourseInfo(courseDomainId: string, companyId: CompanyId) {\n return this.selectCourse(() => this.loadCourseInfo(courseDomainId, companyId));\n }\n\n async getCourseInfos(domainIds: string[]) {\n this.loadCourseInfos(domainIds);\n\n return this.courses;\n }\n\n private async loadCourseDetailed(courseDomainId: string) {\n const response = await this.httpClient.send(new GetCourseContentRequest({ courseDomainId }));\n return new CourseDetailed(response);\n }\n\n private async loadCourseInfo(courseDomainId: string, companyId: CompanyId) {\n const response = await this.httpClient.send(\n new GetCourseContentInfoRequest({ courseDomainId, companyId: companyId.value })\n );\n return new CourseInfo(response);\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\nimport { IApiRequest } from '../../IApiRequest';\nimport { ModuleContentId } from '../../content/model/ModuleContentId';\n\nexport class CompleteModuleRequest extends IApiRequest\n{\n\tpublic $type = 'CompleteModuleRequest';\n\tconstructor(public data: { courseAssignmentId: string, moduleContentId: ModuleContentId }) { super(); }\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\nimport { ModuleProgressDto } from '../../progress/dto/ModuleProgressDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetModuleProgressByCourseAssignmentRequest extends IApiRequest\n{\n\tpublic $type = 'GetModuleProgressByCourseAssignmentRequest';\n\tconstructor(public data: { courseAssignmentId: string }) { super(); }\n}\n","import { observable, makeObservable } from \"mobx\";\nimport { ModuleContentId } from \"../../../infrastructure/types/content/model/ModuleContentId\";\nimport { ModuleProgressDto } from \"../../../infrastructure/types/progress/dto/ModuleProgressDto\";\n\nexport class ModuleCompletion {\n @observable completedAt: Date;\n\n @observable moduleContentId: ModuleContentId;\n\n constructor(dto: ModuleProgressDto) {\n makeObservable(this);\n this.moduleContentId = dto.moduleContentId;\n this.completedAt = new Date(dto.completedAt);\n }\n}\n","import intersection from \"lodash/intersection\";\nimport { action, makeObservable, observable } from \"mobx\";\nimport { computedFn } from \"mobx-utils\";\nimport { ModuleContentId } from \"../../../infrastructure/types/content/model/ModuleContentId\";\nimport { TestContentId } from \"../../../infrastructure/types/content/model/TestContentId\";\nimport { ModuleProgressDto } from \"../../../infrastructure/types/progress/dto/ModuleProgressDto\";\nimport { calculateProgress } from \"../../../utils/utils\";\nimport { getCourseElementsCount } from \"../../courseContent/utils/getCourseElementsCount\";\nimport { ProgressStore } from \"../stores/ProgressStore\";\nimport { ModuleCompletion } from \"./ModuleCompletion\";\n\ninterface Module {\n id: ModuleContentId;\n testId?: TestContentId;\n}\n\ninterface Course {\n modules: Module[];\n courseTest?: { testId: TestContentId };\n}\n\nexport class CourseProgress {\n @observable courseAssignmentId: string;\n\n @observable private modulesProgress: ModuleCompletion[] = [];\n\n readonly _type = \"loaded\";\n\n progress = computedFn((course: Course) => {\n const completedModuleIds = this.completedModuleIds(course.modules);\n\n const courseElementsCount = getCourseElementsCount(course.modules, course.courseTest);\n return calculateProgress(completedModuleIds.length, courseElementsCount);\n });\n\n areAllModulesWithTestCompleted = computedFn((modules: Module[]) => {\n const completedModuleIds = this.completedModuleIds(modules);\n\n return modules.filter(m => m.testId).every(m => completedModuleIds.find(id => id === m.id.value));\n });\n\n completedModuleIds = computedFn((modules: Module[]) => {\n // We take intersection in case course modules has been deleted in Sanity after user completed it\n return intersection(\n modules.map(module => module.id.value),\n this.modulesProgress.map(moduleProgress => moduleProgress.moduleContentId.value)\n );\n });\n\n constructor(courseAssignmentId: string, private progressStore: ProgressStore) {\n makeObservable(this);\n this.courseAssignmentId = courseAssignmentId;\n }\n\n @action.bound\n async completeModule(moduleContentId: ModuleContentId) {\n if (this.isModuleCompleted(moduleContentId) === false) {\n await this.progressStore.completeModule(moduleContentId, this.courseAssignmentId);\n this.markModuleAsCompleted(moduleContentId);\n }\n }\n\n @action.bound\n markModuleAsCompleted(moduleContentId: ModuleContentId) {\n if (this.modulesProgress.some(mp => mp.moduleContentId.value === moduleContentId.value) === false) {\n this.modulesProgress.push({ moduleContentId, completedAt: new Date(Date.now()) });\n }\n }\n\n @action.bound\n updateFromDto(modulesProgress: ModuleProgressDto[]) {\n this.modulesProgress = modulesProgress.map(module => new ModuleCompletion(module));\n }\n\n isModuleCompleted(moduleContentId: ModuleContentId) {\n return this.modulesProgress.find(mp => mp.moduleContentId.value === moduleContentId.value) !== undefined;\n }\n}\n","import { action, observable } from \"mobx\";\nimport { HttpClient } from \"../../../infrastructure/api/HttpClient\";\nimport { CompleteModuleRequest } from \"../../../infrastructure/types/api/progress/CompleteModuleRequest\";\nimport { GetModuleProgressByCourseAssignmentRequest } from \"../../../infrastructure/types/api/progress/GetModuleProgressByCourseAssignmentRequest\";\nimport { ModuleContentId } from \"../../../infrastructure/types/content/model/ModuleContentId\";\nimport { ModuleProgressDto } from \"../../../infrastructure/types/progress/dto/ModuleProgressDto\";\nimport { CourseAssignment } from \"../../courseAssigning/models/CourseAssignment\";\nimport { CourseProgress } from \"../models/CourseProgress\";\n\nexport class ProgressStore {\n @observable coursesProgress: CourseProgress[] = [];\n\n constructor(private httpClient: HttpClient) {}\n\n @action.bound\n public getCourseProgress(courseAssignment: CourseAssignment) {\n const courseProgress = this.coursesProgress.find(cp => cp.courseAssignmentId === courseAssignment.id);\n\n if (courseProgress) {\n return courseProgress;\n }\n\n return this.addProgress(courseAssignment);\n }\n\n @action\n private addProgress(courseAssignment: CourseAssignment) {\n const newCourseProgress = new CourseProgress(courseAssignment.id, this);\n this.coursesProgress.push(newCourseProgress);\n return newCourseProgress;\n }\n\n async completeModule(moduleContentId: ModuleContentId, courseAssignmentId: string) {\n await this.httpClient.send(new CompleteModuleRequest({ moduleContentId, courseAssignmentId }));\n }\n\n public async loadCourseAssignmentsProgress(courseAssignmentId: string) {\n const response = await this.httpClient.send(new GetModuleProgressByCourseAssignmentRequest({ courseAssignmentId }));\n this.updateFromDto(response);\n }\n\n public isModuleCompleted(courseAssignmentId: string, moduleContendId: ModuleContentId) {\n const course = this.coursesProgress.find(c => c.courseAssignmentId === courseAssignmentId);\n\n if (course !== undefined) {\n return course.isModuleCompleted(moduleContendId);\n }\n\n return false;\n }\n\n private updateFromDto(moduleProgressDtos: ModuleProgressDto[]) {\n const assignmentsIds = new Set(moduleProgressDtos.map(mp => mp.courseAssignmentId));\n const progress: CourseProgress[] = [];\n assignmentsIds.forEach(assignmentId => {\n const assignmentProgress = moduleProgressDtos.filter(mp => mp.courseAssignmentId === assignmentId);\n const courseProgress = new CourseProgress(assignmentProgress[0].courseAssignmentId, this);\n courseProgress.updateFromDto(assignmentProgress);\n progress.push(courseProgress);\n });\n\n this.coursesProgress = progress;\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\nimport { IApiRequest } from '../../IApiRequest';\nimport { FilterValueDto } from './FilterValueDto';\n\nexport class GetCourseAssignmentsReportRequest extends IApiRequest\n{\n\tpublic $type = 'GetCourseAssignmentsReportRequest';\n\tconstructor(public data: { companyId: string, years: number[], groups: FilterValueDto, users: FilterValueDto, courses: FilterValueDto }) { super(); }\n}\n","import { action } from \"mobx\";\nimport { HttpClient } from \"../../infrastructure/api/HttpClient\";\nimport { FilterValueDto } from \"../../infrastructure/types/api/reports/FilterValueDto\";\nimport { GetCourseAssignmentsReportRequest } from \"../../infrastructure/types/api/reports/GetCourseAssignmentsReportRequest\";\nimport { CompanyId } from \"../company/CompanyId\";\n\nexport class ReportStore {\n constructor(private httpClient: HttpClient) {}\n\n @action.bound\n public async getCourseAssignmentsReport(\n companyId: CompanyId,\n years: number[],\n groups: FilterValueDto,\n users: FilterValueDto,\n courses: FilterValueDto\n ) {\n const report = this.loadCourseAssignmentsReport(companyId, years, groups, users, courses);\n\n return report;\n }\n\n @action.bound\n private async loadCourseAssignmentsReport(\n companyId: CompanyId,\n years: number[],\n groups: FilterValueDto,\n users: FilterValueDto,\n courses: FilterValueDto\n ) {\n const response = await this.httpClient.send(\n new GetCourseAssignmentsReportRequest({ companyId: companyId.value, years, groups, users, courses }),\n undefined,\n \"blob\"\n );\n return response;\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\nimport { TaskDto } from '../../test/dto/TaskDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetTaskPreviewRequest extends IApiRequest\n{\n\tpublic $type = 'GetTaskPreviewRequest';\n\tconstructor(public data: { id: string, revision: string, taskType: number, lang?: string }) { super(); }\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\nimport { TestDto } from '../../test/dto/TestDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetTestRequest extends IApiRequest\n{\n\tpublic $type = 'GetTestRequest';\n\tconstructor(public data: { id: string, lang?: string }) { super(); }\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\nimport { TestResultDto } from '../../test/dto/TestResultDto';\nimport { IApiRequest } from '../../IApiRequest';\nimport { CourseContentId } from '../../content/model/CourseContentId';\n\nexport class LockExamRequest extends IApiRequest\n{\n\tpublic $type = 'LockExamRequest';\n\tconstructor(public data: { courseAssignmentId: string, courseContentId: CourseContentId }) { super(); }\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\nimport { TestResultDto } from '../../test/dto/TestResultDto';\nimport { IApiRequest } from '../../IApiRequest';\nimport { UserTaskAnswerDto } from '../../test/dto/UserTaskAnswerDto';\nimport { CourseContentId } from '../../content/model/CourseContentId';\n\nexport class SubmitCourseTestRequest extends IApiRequest\n{\n\tpublic $type = 'SubmitCourseTestRequest';\n\tconstructor(public data: { userTaskAnswers: UserTaskAnswerDto[], courseContentId: CourseContentId, courseAssignmentId: string, useDossier?: boolean }) { super(); }\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\nimport { TestResultDto } from '../../test/dto/TestResultDto';\nimport { IApiRequest } from '../../IApiRequest';\nimport { UserTaskAnswerDto } from '../../test/dto/UserTaskAnswerDto';\nimport { CourseContentId } from '../../content/model/CourseContentId';\n\nexport class SubmitExamTestRequest extends IApiRequest\n{\n\tpublic $type = 'SubmitExamTestRequest';\n\tconstructor(public data: { userTaskAnswers: UserTaskAnswerDto[], courseContentId: CourseContentId, courseAssignmentId: string, useDossier?: boolean }) { super(); }\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\nimport { TestResultDto } from '../../test/dto/TestResultDto';\nimport { IApiRequest } from '../../IApiRequest';\nimport { UserTaskAnswerDto } from '../../test/dto/UserTaskAnswerDto';\nimport { ModuleContentId } from '../../content/model/ModuleContentId';\n\nexport class SubmitModuleTestRequest extends IApiRequest\n{\n\tpublic $type = 'SubmitModuleTestRequest';\n\tconstructor(public data: { userTaskAnswers: UserTaskAnswerDto[], courseAssignmentId: string, moduleContentId: ModuleContentId, useDossier?: boolean }) { super(); }\n}\n","import { observable, makeObservable } from \"mobx\";\nimport { TestContentId } from \"../../../infrastructure/types/content/model/TestContentId\";\nimport { TaskDto } from \"../../../infrastructure/types/test/dto/TaskDto\";\nimport { TestDto } from \"../../../infrastructure/types/test/dto/TestDto\";\n\nexport class Test {\n @observable id: TestContentId;\n\n @observable slug: string;\n\n @observable title: string;\n\n @observable description: string;\n\n @observable threshold: number;\n\n @observable tasks: TaskDto[];\n\n readonly _type = \"test\";\n\n constructor(dto: TestDto) {\n makeObservable(this);\n\n this.id = dto.id;\n this.slug = dto.slug;\n this.title = dto.title;\n this.description = dto.description;\n this.threshold = dto.threshold;\n this.tasks = dto.tasks;\n }\n}\n","import { makeObservable, observable } from \"mobx\";\nimport {\n CourseTestContext,\n ExamTestContext,\n ModuleTestContext,\n TestContext,\n} from \"../../../../application/pages/shared/Test/TestViewModel\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { GetTaskPreviewRequest } from \"../../../../infrastructure/types/api/test/GetTaskPreviewRequest\";\nimport { GetTestRequest } from \"../../../../infrastructure/types/api/test/GetTestRequest\";\nimport { LockExamRequest } from \"../../../../infrastructure/types/api/test/LockExamRequest\";\nimport { SubmitCourseTestRequest } from \"../../../../infrastructure/types/api/test/SubmitCourseTestRequest\";\nimport { SubmitExamTestRequest } from \"../../../../infrastructure/types/api/test/SubmitExamTestRequest\";\nimport { SubmitModuleTestRequest } from \"../../../../infrastructure/types/api/test/SubmitModuleTestRequest\";\nimport { CourseContentId } from \"../../../../infrastructure/types/content/model/CourseContentId\";\nimport { TaskTypeDto } from \"../../../../infrastructure/types/test/dto/TaskTypeDto\";\nimport { UserTaskAnswerDto } from \"../../../../infrastructure/types/test/dto/UserTaskAnswerDto\";\nimport { TaskWithStatus } from \"../../models/TaskWithStatus\";\nimport { Test } from \"../../models/Test\";\n\nexport class TestStore {\n @observable tests: Test[] = [];\n\n // Task type mapping, could be moved somewhere else\n\n taskTypeMapping: { [key in TaskTypeDto]: number } = {\n Choice: 0,\n Match: 1,\n Gap: 2,\n Input: 3,\n };\n\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n async submitTestAsync(userTaskAnswers: UserTaskAnswerDto[], context: TestContext, useDossier?: boolean) {\n switch (context._type) {\n case \"course\":\n return this.submitCourseTest(userTaskAnswers, context, useDossier);\n case \"module\":\n return this.submitModuleTest(userTaskAnswers, context, useDossier);\n case \"exam\":\n return this.submitExamTest(userTaskAnswers, context, useDossier);\n default:\n throw new Error(\"Exam doesn't have implemented submit method yet\");\n }\n }\n\n async selectTest(id: string) {\n const foundTest = this.tests.find(c => c.id.value === id);\n\n if (foundTest) {\n return foundTest;\n }\n\n const loadedTest = await this.loadTest(id);\n return loadedTest;\n }\n\n async loadTask(id: string, revision: string, taskType: TaskTypeDto) {\n const taskTypeNumber = this.taskTypeMapping[taskType];\n const getTaskResponse = await this.httpClient.send(\n new GetTaskPreviewRequest({ id, revision, taskType: taskTypeNumber })\n );\n return new TaskWithStatus(getTaskResponse);\n }\n\n async lockExam(courseAssignmentId: string, courseContentId: CourseContentId) {\n await this.httpClient.send(new LockExamRequest({ courseAssignmentId, courseContentId }));\n }\n\n private async submitCourseTest(\n userTaskAnswers: UserTaskAnswerDto[],\n context: CourseTestContext,\n useDossier?: boolean\n ) {\n const contextRequestParams = {\n courseContentId: context.courseContentId,\n courseAssignmentId: context.courseAssignmentId,\n companyId: context.companyId.value,\n };\n const requestData = {\n userTaskAnswers,\n ...contextRequestParams,\n useDossier: useDossier ?? false,\n };\n const testResult = await this.httpClient.send(new SubmitCourseTestRequest(requestData));\n return testResult;\n }\n\n private async submitModuleTest(\n userTaskAnswers: UserTaskAnswerDto[],\n context: ModuleTestContext,\n useDossier?: boolean\n ) {\n const contextRequestParams = {\n courseContentId: context.courseContentId,\n moduleContentId: context.moduleContentId,\n courseAssignmentId: context.courseAssignmentId,\n companyId: context.companyId.value,\n };\n const requestData = {\n userTaskAnswers,\n ...contextRequestParams,\n useDossier: useDossier ?? false,\n };\n const testResult = await this.httpClient.send(new SubmitModuleTestRequest(requestData));\n return testResult;\n }\n\n private async submitExamTest(userTaskAnswers: UserTaskAnswerDto[], context: ExamTestContext, useDossier?: boolean) {\n const contextRequestParams = {\n courseContentId: context.courseContentId,\n courseAssignmentId: context.courseAssignmentId,\n };\n const requestData = {\n userTaskAnswers,\n ...contextRequestParams,\n useDossier: useDossier ?? false,\n };\n const testResult = await this.httpClient.send(new SubmitExamTestRequest(requestData));\n return testResult;\n }\n\n private async loadTest(id: string) {\n const getTestResponse = await this.httpClient.send(new GetTestRequest({ id }));\n const loadedTest = new Test(getTestResponse);\n this.tests.push(loadedTest);\n return loadedTest;\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class ResendInvitationRequest extends IApiRequest\n{\n\tpublic $type = 'ResendInvitationRequest';\n\tconstructor(public data: { userId: string, companyId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AssignManagerRoleRequest extends IApiRequest\n{\n\tpublic $type = 'AssignManagerRoleRequest';\n\tconstructor(public data: { userId: string, companyId: string }) { super(); }\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\nimport { LicenseUsageDto } from '../../company/dto/LicenseUsageDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCompanyLicenseUsageRequest extends IApiRequest\n{\n\tpublic $type = 'GetCompanyLicenseUsageRequest';\n\tconstructor(public data: { companyId: string }) { super(); }\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\nimport { CompanyDto } from '../../company/dto/CompanyDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCompanyRequest extends IApiRequest\n{\n\tpublic $type = 'GetCompanyRequest';\n\tconstructor(public data: { companyId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RevokeManagerRoleRequest extends IApiRequest\n{\n\tpublic $type = 'RevokeManagerRoleRequest';\n\tconstructor(public data: { userId: string, companyId: string }) { super(); }\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\nimport { ManagerEmployeeConnectionCreatedDto } from '../../users/dto/ManagerEmployeeConnectionCreatedDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AddConnectionsRequest extends IApiRequest\n{\n\tpublic $type = 'AddConnectionsRequest';\n\tconstructor(public data: { managerId: string, userIds: string[], companyId: string }) { super(); }\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\nimport { CompanyMembershipCreatedResultDto } from '../../users/dto/CompanyMembershipCreatedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AddMemberRequest extends IApiRequest\n{\n\tpublic $type = 'AddMemberRequest';\n\tconstructor(public data: { userEmail: string, companyId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RemoveConnectionsRequest extends IApiRequest\n{\n\tpublic $type = 'RemoveConnectionsRequest';\n\tconstructor(public data: { managerId: string, userIds: string[], companyId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RemoveUsersFromCompanyRequest extends IApiRequest\n{\n\tpublic $type = 'RemoveUsersFromCompanyRequest';\n\tconstructor(public data: { userIds: string[], companyId: string }) { super(); }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { makeObservable, observable } from \"mobx\";\nimport { CompanyDto } from \"../../../infrastructure/types/company/dto/CompanyDto\";\nimport { CompanyStore } from \"../stores/companyStore/CompanyStore\";\n\nexport class Company {\n @observable id: CompanyId;\n\n @observable name: string;\n\n @observable allowSelfAssign: boolean;\n\n @observable showCourses: boolean;\n\n @observable canEnableDossier: boolean;\n\n @observable dossierEnabled: boolean;\n\n @observable canEnableMerKompetanse: boolean;\n\n @observable merKompetanseEnabled: boolean;\n\n readonly _type = \"company\";\n\n constructor(dto: CompanyDto, public companyStore: CompanyStore) {\n makeObservable(this);\n this.id = new CompanyId(dto.id);\n this.name = dto.name;\n this.allowSelfAssign = dto.allowSelfAssign;\n this.showCourses = dto.showCourses;\n this.canEnableDossier = dto.canEnableDossierIntegration;\n this.dossierEnabled = dto.dossierIntegration;\n this.canEnableMerKompetanse = dto.canEnableMerKompetanse;\n this.merKompetanseEnabled = dto.merKompetanseIntegration;\n }\n\n addMember(userEmail: string) {\n return this.companyStore.addMemberToCompany(userEmail, this.id);\n }\n\n async deleteMembers(ids: string[]) {\n await this.companyStore.removeUsersFromCompany(ids);\n }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { ResendInvitationRequest } from \"infrastructure/types/api/invitation/ResendInvitationRequest\";\nimport { action, makeObservable, observable } from \"mobx\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { Unloaded } from \"../../../../infrastructure/stores/models/Unloaded\";\nimport { AssignManagerRoleRequest } from \"../../../../infrastructure/types/api/company/AssignManagerRoleRequest\";\nimport { GetCompanyLicenseUsageRequest } from \"../../../../infrastructure/types/api/company/GetCompanyLicenseUsageRequest\";\nimport { GetCompanyRequest } from \"../../../../infrastructure/types/api/company/GetCompanyRequest\";\nimport { RevokeManagerRoleRequest } from \"../../../../infrastructure/types/api/company/RevokeManagerRoleRequest\";\nimport { AddConnectionsRequest } from \"../../../../infrastructure/types/api/users/AddConnectionsRequest\";\nimport { AddMemberRequest } from \"../../../../infrastructure/types/api/users/AddMemberRequest\";\nimport { RemoveConnectionsRequest } from \"../../../../infrastructure/types/api/users/RemoveConnectionsRequest\";\nimport { RemoveUsersFromCompanyRequest } from \"../../../../infrastructure/types/api/users/RemoveUsersFromCompanyRequest\";\nimport { Company } from \"../../models/Company\";\n\nexport class CompanyStore {\n @observable companies: Company[] = [];\n\n @observable currentCompany: Company | Unloaded = new Unloaded();\n\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n @action.bound\n async selectCompany(id: CompanyId) {\n const foundCompany = this.companies.find(c => c.id.value === id.value);\n if (foundCompany) {\n this.currentCompany = foundCompany;\n return foundCompany;\n }\n\n const loadedCompany = await this.getCompany(id);\n if (loadedCompany._type === \"company\") {\n this.companies.push(loadedCompany);\n }\n this.currentCompany = loadedCompany;\n return loadedCompany;\n }\n\n async assignManagerRole(userId: string) {\n if (this.currentCompany._type === \"company\") {\n await this.httpClient.send(new AssignManagerRoleRequest({ userId, companyId: this.currentCompany.id.value }));\n }\n }\n\n async revokeManagerRole(userId: string) {\n if (this.currentCompany._type === \"company\") {\n await this.httpClient.send(new RevokeManagerRoleRequest({ userId, companyId: this.currentCompany.id.value }));\n }\n }\n\n addMemberToCompany(userEmail: string, companyId: CompanyId) {\n return this.httpClient.send(new AddMemberRequest({ userEmail, companyId: companyId.value }));\n }\n\n async removeUsersFromCompany(userIds: string[]) {\n if (this.currentCompany._type === \"company\") {\n await this.httpClient.send(\n new RemoveUsersFromCompanyRequest({ userIds, companyId: this.currentCompany.id.value })\n );\n }\n }\n\n async resendInvitation(userId: string) {\n if (this.currentCompany._type === \"company\") {\n await this.httpClient.send(new ResendInvitationRequest({ userId, companyId: this.currentCompany.id.value }));\n }\n }\n\n async getLicenseUsage() {\n if (this.currentCompany._type !== \"company\") {\n return;\n }\n const licenseUsage = await this.httpClient.send(\n new GetCompanyLicenseUsageRequest({ companyId: this.currentCompany.id.value })\n );\n return licenseUsage;\n }\n\n async addConnections(managerId: string, userIds: string[]) {\n if (this.currentCompany._type !== \"company\") {\n return 0;\n }\n\n const numberAdded = await this.httpClient.send(\n new AddConnectionsRequest({\n managerId,\n userIds,\n companyId: this.currentCompany.id.value,\n })\n );\n\n return numberAdded;\n }\n\n async removeConnections(managerId: string, userIds: string[]) {\n if (this.currentCompany._type !== \"company\") {\n return;\n }\n\n await this.httpClient.send(\n new RemoveConnectionsRequest({\n managerId,\n userIds,\n companyId: this.currentCompany.id.value,\n })\n );\n }\n\n private async getCompany(id: CompanyId) {\n const companyDto = await this.loadCompany(id);\n return new Company(companyDto, this);\n }\n\n private async loadCompany(id: CompanyId) {\n const companyDto = await this.httpClient.send(new GetCompanyRequest({ companyId: id.value }));\n return companyDto;\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\nimport { CompanyUserDto } from '../../company/dto/CompanyUserDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCompanyUserRequest extends IApiRequest\n{\n\tpublic $type = 'GetCompanyUserRequest';\n\tconstructor(public data: { userId: string, companyId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class IsUserMemberOfMyNetworkRequest extends IApiRequest\n{\n\tpublic $type = 'IsUserMemberOfMyNetworkRequest';\n\tconstructor(public data: { userId: string, companyId: string }) { super(); }\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\nimport { CompanyUserDto } from '../../company/dto/CompanyUserDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCompanyManagersRequest extends IApiRequest>\n{\n\tpublic $type = 'GetCompanyManagersRequest';\n\tconstructor(public data: { companyId: string, skip: number, take: number, activeOnly: boolean, invitedOnly: boolean, expiredOnly: boolean }) { super(); }\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\nimport { CompanyUserDto } from '../../company/dto/CompanyUserDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCompanyUsersRequest extends IApiRequest>\n{\n\tpublic $type = 'GetCompanyUsersRequest';\n\tconstructor(public data: { companyId: string, skip: number, take: number, myNetworkOnly: boolean, searchPhrase?: string, activeOnly?: boolean, invitedOnly?: boolean, expiredOnly?: boolean }) { super(); }\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\nimport { PendingInvitationDto } from '../../invitation/dto/PendingInvitationDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetUserPendingInvitationsRequest extends IApiRequest\n{\n\tpublic $type = 'GetUserPendingInvitationsRequest';\n\tconstructor() { super(); }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { GetCompanyUserRequest } from \"infrastructure/types/api/users/GetCompanyUserRequest\";\nimport { IsUserMemberOfMyNetworkRequest } from \"infrastructure/types/api/users/IsUserMemberOfMyNetworkRequest\";\nimport { action, makeObservable } from \"mobx\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { GetCompanyManagersRequest } from \"../../../../infrastructure/types/api/company/GetCompanyManagersRequest\";\nimport { GetCompanyUsersRequest } from \"../../../../infrastructure/types/api/company/GetCompanyUsersRequest\";\nimport { GetUserPendingInvitationsRequest } from \"../../../../infrastructure/types/api/invitation/GetUserPendingInvitationsRequest\";\nimport { PaginationOptions, SearchPhrase } from \"../../../../ui/loadMoreList/PaginatedList\";\nimport { Company } from \"../../models/Company\";\nimport { CompanyUser } from \"../../models/CompanyUser\";\n\nexport class CompanyUserStore {\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n @action.bound\n async getCompanyUsers(\n company: Company,\n searchPhrase: SearchPhrase,\n options: PaginationOptions,\n myNetworkOnly: boolean,\n activeOnly: boolean,\n invitedOnly: boolean,\n expiredOnly: boolean\n ) {\n const response = await this.httpClient.send(\n new GetCompanyUsersRequest({\n companyId: company.id.value,\n searchPhrase,\n ...options,\n myNetworkOnly,\n activeOnly,\n invitedOnly,\n expiredOnly,\n })\n );\n\n return {\n items: response.results.map(dto => new CompanyUser(company.companyStore, dto)),\n total: response.total,\n };\n }\n\n @action.bound\n async getCompanyManagers(company: Company, options: PaginationOptions) {\n const response = await this.httpClient.send(\n new GetCompanyManagersRequest({\n companyId: company.id.value,\n activeOnly: false,\n invitedOnly: false,\n expiredOnly: false,\n ...options,\n })\n );\n\n return {\n items: response.results.map(dto => new CompanyUser(company.companyStore, dto)),\n total: response.total,\n };\n }\n\n @action.bound\n async getCompanyUser(id: string, company: Company) {\n const dto = await this.httpClient.send(new GetCompanyUserRequest({ userId: id, companyId: company.id.value }));\n\n return new CompanyUser(company.companyStore, dto);\n }\n\n @action.bound\n async isUserMemberOfMyNetwork(userId: string, companyId: CompanyId) {\n return this.httpClient.send(new IsUserMemberOfMyNetworkRequest({ userId, companyId: companyId.value }));\n }\n\n @action.bound\n async getUserPendingInvitations() {\n return this.httpClient.send(new GetUserPendingInvitationsRequest());\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\nimport { GroupLeadershipsCreatedResultDto } from '../../group/dto/GroupLeadershipsCreatedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AddLeadersToGroupRequest extends IApiRequest\n{\n\tpublic $type = 'AddLeadersToGroupRequest';\n\tconstructor(public data: { groupId: string, companyId: string, userIds: string[] }) { super(); }\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\nimport { GroupLeaderDto } from '../../group/dto/GroupLeaderDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetGroupLeadersRequest extends IApiRequest>\n{\n\tpublic $type = 'GetGroupLeadersRequest';\n\tconstructor(public data: { companyId: string, groupId: string, skip: number, take: number }) { super(); }\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\nimport { GroupStatsDto } from '../../group/dto/GroupStatsDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetGroupStatsRequest extends IApiRequest>\n{\n\tpublic $type = 'GetGroupStatsRequest';\n\tconstructor(public data: { companyId: string, skip: number, take: number, myNetworkOnly: boolean, searchPhrase?: string }) { super(); }\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\nimport { GroupStatsDto } from '../../group/dto/GroupStatsDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetSingleGroupStatsRequest extends IApiRequest\n{\n\tpublic $type = 'GetSingleGroupStatsRequest';\n\tconstructor(public data: { companyId: string, groupId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RemoveLeadersFromGroupRequest extends IApiRequest\n{\n\tpublic $type = 'RemoveLeadersFromGroupRequest';\n\tconstructor(public data: { groupId: string, companyId: string, userIds: string[] }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RenameGroupRequest extends IApiRequest\n{\n\tpublic $type = 'RenameGroupRequest';\n\tconstructor(public data: { groupId: string, groupName: string, companyId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AddGroupRequest extends IApiRequest\n{\n\tpublic $type = 'AddGroupRequest';\n\tconstructor(public data: { groupName: string, companyId: string, userIds: string[] }) { super(); }\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\nimport { GroupMembershipsCreatedResultDto } from '../../group/dto/GroupMembershipsCreatedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class AddMembersToGroupRequest extends IApiRequest\n{\n\tpublic $type = 'AddMembersToGroupRequest';\n\tconstructor(public data: { groupId: string, companyId: string, userIds: string[] }) { super(); }\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\nimport { GroupCourseAssignmentWithStatsDto } from '../../group/dto/GroupCourseAssignmentWithStatsDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetGroupCourseAssignmentsWithStatsRequest extends IApiRequest\n{\n\tpublic $type = 'GetGroupCourseAssignmentsWithStatsRequest';\n\tconstructor(public data: { groupId: string }) { super(); }\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\nimport { GroupUserDto } from '../../group/dto/GroupUserDto';\nimport { PagedResultDto } from '../../shared/dto/PagedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetGroupUsersRequest extends IApiRequest>\n{\n\tpublic $type = 'GetGroupUsersRequest';\n\tconstructor(public data: { companyId: string, groupId: string, skip: number, take: number }) { super(); }\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\nimport { GroupForLeaderDto } from '../../group/dto/GroupForLeaderDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetGroupsLedByUserRequest extends IApiRequest\n{\n\tpublic $type = 'GetGroupsLedByUserRequest';\n\tconstructor(public data: { userId: string, companyId: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RemoveGroupRequest extends IApiRequest\n{\n\tpublic $type = 'RemoveGroupRequest';\n\tconstructor(public data: { groupId: string, companyId: string }) { super(); }\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\nimport { GroupMembershipsRemovedResultDto } from '../../group/dto/GroupMembershipsRemovedResultDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class RemoveMembersFromGroupRequest extends IApiRequest\n{\n\tpublic $type = 'RemoveMembersFromGroupRequest';\n\tconstructor(public data: { groupId: string, companyId: string, userIds: string[] }) { super(); }\n}\n","import { observable } from \"mobx\";\nimport { GroupCourseAssignmentWithStatsDto } from \"../../../infrastructure/types/group/dto/GroupCourseAssignmentWithStatsDto\";\nimport { CourseAssignmentStats } from \"../../course/models/CourseStats\";\n\nexport class GroupCourseAssignmentWithStats {\n @observable id: string;\n\n @observable courseId: string;\n\n @observable sanityCourseId: string;\n\n @observable activeTo: string;\n\n @observable stats: CourseAssignmentStats;\n\n constructor(groupCourseAssignmentWithStats: GroupCourseAssignmentWithStatsDto) {\n this.id = groupCourseAssignmentWithStats.id;\n this.courseId = groupCourseAssignmentWithStats.courseId;\n this.sanityCourseId = groupCourseAssignmentWithStats.sanityCourseId;\n this.activeTo = groupCourseAssignmentWithStats.activeTo;\n this.stats = new CourseAssignmentStats(groupCourseAssignmentWithStats.stats);\n }\n}\n","import { CompanyId } from \"domain/company/CompanyId\";\nimport { GroupLeader } from \"domain/userManagement/models/GroupLeader\";\nimport { GroupMember } from \"domain/userManagement/models/GroupUser\";\nimport { AddLeadersToGroupRequest } from \"infrastructure/types/api/group/AddLeadersToGroupRequest\";\nimport { GetGroupLeadersRequest } from \"infrastructure/types/api/group/GetGroupLeadersRequest\";\nimport { GetGroupStatsRequest } from \"infrastructure/types/api/group/GetGroupStatsRequest\";\nimport { GetSingleGroupStatsRequest } from \"infrastructure/types/api/group/GetSingleGroupStatsRequest\";\nimport { RemoveLeadersFromGroupRequest } from \"infrastructure/types/api/group/RemoveLeadersFromGroupRequest\";\nimport { RenameGroupRequest } from \"infrastructure/types/api/group/RenameGroupRequest\";\nimport { action, makeObservable } from \"mobx\";\nimport { HttpClient } from \"../../../../infrastructure/api/HttpClient\";\nimport { AddGroupRequest } from \"../../../../infrastructure/types/api/group/AddGroupRequest\";\nimport { AddMembersToGroupRequest } from \"../../../../infrastructure/types/api/group/AddMembersToGroupRequest\";\nimport { GetGroupCourseAssignmentsWithStatsRequest } from \"../../../../infrastructure/types/api/group/GetGroupCourseAssignmentsWithStatsRequest\";\nimport { GetGroupUsersRequest } from \"../../../../infrastructure/types/api/group/GetGroupUsersRequest\";\nimport { GetGroupsLedByUserRequest } from \"../../../../infrastructure/types/api/group/GetGroupsLedByUserRequest\";\nimport { RemoveGroupRequest } from \"../../../../infrastructure/types/api/group/RemoveGroupRequest\";\nimport { RemoveMembersFromGroupRequest } from \"../../../../infrastructure/types/api/group/RemoveMembersFromGroupRequest\";\nimport { PaginationOptions, SearchPhrase } from \"../../../../ui/loadMoreList/PaginatedList\";\nimport { Group } from \"../../models/Group\";\nimport { GroupCourseAssignmentWithStats } from \"../../models/GroupCourseAssignmentWithStats\";\n\nexport class GroupStore {\n constructor(private httpClient: HttpClient) {\n makeObservable(this);\n }\n\n @action.bound\n public addGroup(companyId: CompanyId, groupName: string, userIds: string[]) {\n return this.httpClient.send(new AddGroupRequest({ companyId: companyId.value, groupName, userIds }));\n }\n\n @action.bound\n public addMembersToGroup(groupId: string, companyId: CompanyId, userIds: string[]) {\n return this.httpClient.send(new AddMembersToGroupRequest({ groupId, companyId: companyId.value, userIds }));\n }\n\n @action.bound\n public async removeMembersFromGroup(groupId: string, companyId: CompanyId, userIds: string[]) {\n const result = await this.httpClient.send(\n new RemoveMembersFromGroupRequest({ groupId, companyId: companyId.value, userIds })\n );\n return result;\n }\n\n @action.bound\n public async getGroups(\n companyId: CompanyId,\n options: PaginationOptions,\n searchPhrase: SearchPhrase,\n myNetworkOnly: boolean\n ) {\n const response = await this.httpClient.send(\n new GetGroupStatsRequest({ companyId: companyId.value, ...options, myNetworkOnly, searchPhrase })\n );\n\n return {\n items: response.results.map(dto => new Group(dto, companyId, this)),\n total: response.total,\n };\n }\n\n @action.bound\n public async getGroup(groupId: string, companyId: CompanyId) {\n const dto = await this.loadGroup(groupId, companyId);\n const group = new Group(dto, companyId, this);\n\n if (group?._type === \"group\") {\n return group;\n }\n\n throw new Error(\"Group not found\");\n }\n\n @action.bound\n public async getGroupCourseAssignmentsWithStats(groupId: string) {\n const dtos = await this.httpClient.send(new GetGroupCourseAssignmentsWithStatsRequest({ groupId }));\n\n const groupCourseAssignmentsWithStats = dtos.map(gca => new GroupCourseAssignmentWithStats(gca));\n return groupCourseAssignmentsWithStats;\n }\n\n @action.bound\n public async loadGroup(groupId: string, companyId: CompanyId) {\n const dto = await this.httpClient.send(new GetSingleGroupStatsRequest({ groupId, companyId: companyId.value }));\n return dto;\n }\n\n @action.bound\n public async removeGroup(groupId: string, companyId: CompanyId) {\n await this.httpClient.send(new RemoveGroupRequest({ groupId, companyId: companyId.value }));\n }\n\n @action.bound\n public async renameGroup(groupId: string, groupName: string, companyId: CompanyId) {\n await this.httpClient.send(new RenameGroupRequest({ groupId, groupName, companyId: companyId.value }));\n }\n\n @action.bound\n public addLeadersToGroup(groupId: string, companyId: CompanyId, userIds: string[]) {\n return this.httpClient.send(new AddLeadersToGroupRequest({ groupId, companyId: companyId.value, userIds }));\n }\n\n @action.bound\n public async removeLeadersFromGroup(groupId: string, companyId: CompanyId, userIds: string[]) {\n await this.httpClient.send(new RemoveLeadersFromGroupRequest({ groupId, companyId: companyId.value, userIds }));\n }\n\n @action.bound\n public async getGroupsLedByUser(userId: string, companyId: string) {\n const groups = await this.httpClient.send(new GetGroupsLedByUserRequest({ userId, companyId }));\n\n return groups;\n }\n\n public async getGroupUsers(companyId: CompanyId, groupId: string, options: PaginationOptions) {\n const { results, total } = await this.httpClient.send(\n new GetGroupUsersRequest({ companyId: companyId.value, groupId, ...options })\n );\n\n const items = results.map(dto => new GroupMember(dto));\n\n return { items, total };\n }\n\n public async getGroupLeaders(companyId: CompanyId, groupId: string, options: PaginationOptions) {\n const { results, total } = await this.httpClient.send(\n new GetGroupLeadersRequest({ companyId: companyId.value, groupId, ...options })\n );\n\n const items = results.map(dto => new GroupLeader(dto));\n\n return {\n items,\n total,\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class PostCheckoutRequest extends IApiRequest\n{\n\tpublic $type = 'PostCheckoutRequest';\n\tconstructor() { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetContactPageContentRequest extends IApiRequest\n{\n\tpublic $type = 'GetContactPageContentRequest';\n\tconstructor() { super(); }\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\nimport { CoursePackageInfoDto } from '../../coursepackages/dto/CoursePackageInfoDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCoursePackagesRequest extends IApiRequest\n{\n\tpublic $type = 'GetCoursePackagesRequest';\n\tconstructor(public data: { lang?: string }) { super(); }\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\nimport { CoursePackageDto } from '../../coursepackages/dto/CoursePackageDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetPackageRequest extends IApiRequest\n{\n\tpublic $type = 'GetPackageRequest';\n\tconstructor(public data: { slug: string, lang?: string }) { super(); }\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\nimport { CourseWithPriceOptionDto } from '../../courseslist/dto/CourseWithPriceOptionDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetBuyCourseDetailsRequest extends IApiRequest\n{\n\tpublic $type = 'GetBuyCourseDetailsRequest';\n\tconstructor(public data: { slug: string, lang?: string }) { super(); }\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\nimport { CoursesListDto } from '../../courseslist/dto/CoursesListDto';\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetCoursesListRequest extends IApiRequest\n{\n\tpublic $type = 'GetCoursesListRequest';\n\tconstructor(public data: { lang?: string }) { super(); }\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\nimport { IApiRequest } from '../../IApiRequest';\n\nexport class GetHomePageContentRequest extends IApiRequest\n{\n\tpublic $type = 'GetHomePageContentRequest';\n\tconstructor() { super(); }\n}\n","import { HttpClient } from \"infrastructure/api/HttpClient\";\nimport { paymentFailedUrl, paymentSuccessUrl } from \"infrastructure/paths/AppPaths\";\nimport { CheckoutCourseRequest } from \"infrastructure/types/api/landing/CheckoutCourseRequest\";\nimport { CheckoutPackageRequest } from \"infrastructure/types/api/landing/CheckoutPackageRequest\";\nimport { PostCheckoutRequest } from \"infrastructure/types/api/landing/PostCheckoutRequest\";\nimport { GetContactPageContentRequest } from \"infrastructure/types/landing/contact/GetContactPageContentRequest\";\nimport { GetCoursePackagesRequest } from \"infrastructure/types/landing/coursepackages/GetCoursePackagesRequest\";\nimport { GetPackageRequest } from \"infrastructure/types/landing/coursepackages/GetPackageRequest\";\nimport { GetBuyCourseDetailsRequest } from \"infrastructure/types/landing/courseslist/GetBuyCourseDetailsRequest\";\nimport { GetCoursesListRequest } from \"infrastructure/types/landing/courseslist/GetCoursesListRequest\";\nimport { GetHomePageContentRequest } from \"infrastructure/types/landing/home/GetHomePageContentRequest\";\n\nexport class LandingStore {\n constructor(private httpClient: HttpClient) {}\n\n async getHomePageContent() {\n const response = await this.httpClient.send(new GetHomePageContentRequest());\n return response;\n }\n\n async getContactPageContent() {\n const response = await this.httpClient.send(new GetContactPageContentRequest());\n return response;\n }\n\n async getCoursesListPageContent() {\n const response = await this.httpClient.send(new GetCoursesListRequest({}));\n return response;\n }\n\n async getCourse(slug: string) {\n const response = await this.httpClient.send(new GetBuyCourseDetailsRequest({ slug }));\n return response;\n }\n\n async getCoursePackages() {\n const response = await this.httpClient.send(new GetCoursePackagesRequest({}));\n return response;\n }\n\n async getCoursePackage(slug: string) {\n const response = await this.httpClient.send(new GetPackageRequest({ slug }));\n return response;\n }\n\n async checkoutCourse(courseSlug: string, currentLocation: string) {\n const response = await this.httpClient.send(\n new CheckoutCourseRequest({\n courseSlug,\n checkoutUrls: {\n successUrl: paymentSuccessUrl,\n failUrl: paymentFailedUrl,\n cancelUrl: currentLocation,\n },\n })\n );\n return response;\n }\n\n async checkoutPackage(packageSlug: string, currentLocation: string) {\n const response = await this.httpClient.send(\n new CheckoutPackageRequest({\n packageSlug,\n checkoutUrls: {\n successUrl: paymentSuccessUrl,\n failUrl: paymentFailedUrl,\n cancelUrl: currentLocation,\n },\n })\n );\n return response;\n }\n\n async postCheckout() {\n const response = await this.httpClient.send(new PostCheckoutRequest());\n return response;\n }\n}\n","export interface IGtmService {\n pushCookieConsentChanged(): void;\n}\n\nexport class GtmService implements IGtmService {\n pushCookieConsentChanged() {\n this.push();\n }\n\n private push = () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n };\n}\n","import { GroupSearchStore } from \"domain/userManagement/stores/searchStore/GroupSearchStore\";\nimport { UserSearchStore } from \"domain/userManagement/stores/searchStore/UserSearchStore\";\nimport { configure } from \"mobx\";\nimport { AppStore } from \"../../domain/app/AppStore\";\nimport { CourseStatsStore } from \"../../domain/course/stores/courseStatsStore/CourseStatsStore\";\nimport { CourseDomainStore } from \"../../domain/course/stores/courseStore/CourseDomainStore\";\nimport { CourseAssignmentStore } from \"../../domain/courseAssigning/stores/courseAssignmentStore/CourseAssignmentStore\";\nimport { InvitationStore } from \"../../domain/courseAssigning/stores/invitationStore/InvitationStore\";\nimport { ManagerCourseAssignmentStore } from \"../../domain/courseAssigning/stores/managerCourseAssignmentStore/ManagerCourseAssignmentStore\";\nimport { CourseContentStore } from \"../../domain/courseContent/stores/courseContentStore/CourseContentStore\";\nimport { ProgressStore } from \"../../domain/progress/stores/ProgressStore\";\nimport { ReportStore } from \"../../domain/report/ReportStore\";\nimport { TestStore } from \"../../domain/test/stores/testStore/TestStore\";\nimport { CompanyStore } from \"../../domain/userManagement/stores/companyStore/CompanyStore\";\nimport { CompanyUserStore } from \"../../domain/userManagement/stores/companyStore/CompanyUserStore\";\nimport { GroupStore } from \"../../domain/userManagement/stores/groupStore/GroupStore\";\nimport { UserAndGroupSearchStore } from \"../../domain/userManagement/stores/searchStore/UserAndGroupSearchStore\";\nimport { LandingStore } from \"../../landing/application/LandingStore\";\nimport { HttpClient } from \"../api/HttpClient\";\nimport { GtmService } from \"../gtm/GtmService\";\n\n// THIS IS HERE FOR IE11 SUPPORT PURPOSES. WE HAVE TO ENABLE PROXIES BEFORE INITIALIZING FIRST STORES\nconfigure({\n useProxies: \"never\",\n});\n\nexport default (http: HttpClient) => {\n return {\n appStore: new AppStore(http, new GtmService()),\n courseContentStore: new CourseContentStore(http),\n courseDomainStore: new CourseDomainStore(http),\n testStore: new TestStore(http),\n companyStore: new CompanyStore(http),\n companyUserStore: new CompanyUserStore(http),\n courseAssignmentStore: new CourseAssignmentStore(http),\n managerCourseAssignmentsStore: new ManagerCourseAssignmentStore(http),\n courseStatsStore: new CourseStatsStore(http),\n progressStore: new ProgressStore(http),\n invitationStore: new InvitationStore(http),\n userAndGroupSearchStore: new UserAndGroupSearchStore(http),\n groupSearchStore: new GroupSearchStore(http),\n userSearchStore: new UserSearchStore(http),\n groupStore: new GroupStore(http),\n reportStore: new ReportStore(http),\n landingStore: new LandingStore(http),\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios, { AxiosError } from \"axios\";\nimport axiosInherit from \"axios-inherit\";\nimport { CheckoutLoginRequiredError } from \"infrastructure/errors/CheckoutLoginRequiredError\";\nimport { CheckoutCourseRequest } from \"infrastructure/types/api/landing/CheckoutCourseRequest\";\nimport { CheckoutPackageRequest } from \"infrastructure/types/api/landing/CheckoutPackageRequest\";\nimport { LoginRequiredError } from \"../errors/LoginRequiredError\";\n\nconst generateLoginRequiredError = (err: AxiosError) => {\n const checkoutCourseUrl = new CheckoutCourseRequest({} as any).$type.replace(\"Request\", \"\");\n const checkoutPackageUrl = new CheckoutPackageRequest({} as any).$type.replace(\"Request\", \"\");\n\n if (err.config.url === checkoutCourseUrl) {\n return new CheckoutLoginRequiredError(err.message, err.config.data, \"course\");\n }\n\n if (err.config.url === checkoutPackageUrl) {\n return new CheckoutLoginRequiredError(err.message, err.config.data, \"package\");\n }\n\n return new LoginRequiredError(err.message);\n};\n\nexport const initAxiosGlobalInterceptors = () => {\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 switch (err.response?.status) {\n case 401:\n return Promise.reject(generateLoginRequiredError(err));\n default:\n return Promise.reject(err);\n }\n }\n );\n};\n","import { AppViewModel } from \"application/AppViewModel\";\nimport \"application/i18n\";\nimport { LazyInvitation } from \"application/pages/invitation/LazyInvitation\";\nimport reportWebVitals from \"application/reportWebVitals\";\nimport axios from \"axios\";\nimport \"focus-visible\";\nimport \"intersection-observer\";\nimport { observer } from \"mobx-react\";\nimport React, { Suspense } from \"react\";\nimport \"react-app-polyfill/ie11\";\nimport \"react-app-polyfill/stable\";\nimport ReactDOM from \"react-dom\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { HelmetProvider } from \"react-helmet-async\";\nimport { BrowserRouter as Router, Switch } from \"react-router-dom\";\nimport \"svgxuse\";\nimport { CookiesConsent } from \"./application/layout/cookiesConsent/CookiesConsent\";\nimport { initAxiosGlobalInterceptors } from \"./infrastructure/api/AxiosClient\";\nimport { HttpClient } from \"./infrastructure/api/HttpClient\";\nimport { TypedRoute } from \"./infrastructure/components/TypedRoute\";\nimport { ErrorView } from \"./infrastructure/errors/ErrorView\";\nimport stores from \"./infrastructure/stores/stores\";\nimport { Loader } from \"./ui/loader/Loader\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n// declare const window: any;\n// const { appInsightsInstrumentationKey } = window;\n//\n// if (appInsightsInstrumentationKey) {\n// const appInsights = new ApplicationInsights({\n// config: {\n// instrumentationKey: appInsightsInstrumentationKey,\n// /* ...Other Configuration Options... */\n// },\n// });\n// appInsights.loadAppInsights();\n// appInsights.trackPageView(); // Manually call trackPageView to establish the current user/session/pageview\n// }\n\ninitAxiosGlobalInterceptors();\nconst axiosCustom = axios.create();\n\nconst http = new HttpClient(axiosCustom);\n\nconst {\n courseDomainStore,\n courseContentStore,\n testStore,\n appStore,\n userAndGroupSearchStore,\n groupSearchStore,\n userSearchStore,\n companyStore,\n companyUserStore,\n courseAssignmentStore,\n managerCourseAssignmentsStore,\n courseStatsStore,\n progressStore,\n invitationStore,\n groupStore,\n reportStore,\n landingStore,\n} = stores(http);\n\nconst appViewModel = new AppViewModel(\n courseDomainStore,\n courseContentStore,\n testStore,\n appStore,\n userAndGroupSearchStore,\n groupSearchStore,\n userSearchStore,\n companyStore,\n companyUserStore,\n courseAssignmentStore,\n managerCourseAssignmentsStore,\n courseStatsStore,\n progressStore,\n invitationStore,\n groupStore,\n reportStore,\n http\n);\n\nconst LazyLandingApp = React.memo(() => {\n const Lazy = React.lazy(async () => {\n const { App } = await import(/* webpackChunkName: \"LandingApp\" */ \"./landing/application/App\");\n\n return {\n default: () => ,\n };\n });\n\n return ;\n});\n\nconst LazyMainApp = React.memo(() => {\n const Lazy = React.lazy(async () => {\n const { App } = await import(/* webpackChunkName: \"MainApp\" */ \"./application/App\");\n\n return {\n default: () => ,\n };\n });\n\n return ;\n});\n\nconst Application = observer(() => {\n return (\n \n \n } />\n (\n <>\n \n \n } />\n } />\n \n \n )}\n />\n \n \n );\n});\n\nReactDOM.render(\n \n }>\n \n }>\n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","import { GroupSearchStore } from \"domain/userManagement/stores/searchStore/GroupSearchStore\";\nimport { UserSearchStore } from \"domain/userManagement/stores/searchStore/UserSearchStore\";\nimport { AppStore } from \"../domain/app/AppStore\";\nimport { CourseStatsStore } from \"../domain/course/stores/courseStatsStore/CourseStatsStore\";\nimport { CourseDomainStore } from \"../domain/course/stores/courseStore/CourseDomainStore\";\nimport { CourseAssignmentStore } from \"../domain/courseAssigning/stores/courseAssignmentStore/CourseAssignmentStore\";\nimport { InvitationStore } from \"../domain/courseAssigning/stores/invitationStore/InvitationStore\";\nimport { ManagerCourseAssignmentStore } from \"../domain/courseAssigning/stores/managerCourseAssignmentStore/ManagerCourseAssignmentStore\";\nimport { CourseContentStore } from \"../domain/courseContent/stores/courseContentStore/CourseContentStore\";\nimport { ProgressStore } from \"../domain/progress/stores/ProgressStore\";\nimport { ReportStore } from \"../domain/report/ReportStore\";\nimport { TestStore } from \"../domain/test/stores/testStore/TestStore\";\nimport { CompanyStore } from \"../domain/userManagement/stores/companyStore/CompanyStore\";\nimport { CompanyUserStore } from \"../domain/userManagement/stores/companyStore/CompanyUserStore\";\nimport { GroupStore } from \"../domain/userManagement/stores/groupStore/GroupStore\";\nimport { UserAndGroupSearchStore } from \"../domain/userManagement/stores/searchStore/UserAndGroupSearchStore\";\nimport { HttpClient } from \"../infrastructure/api/HttpClient\";\n\nexport class AppViewModel {\n constructor(\n public courseDomainStore: CourseDomainStore,\n public courseContentStore: CourseContentStore,\n public testStore: TestStore,\n public appStore: AppStore,\n public userAndGroupSearchStore: UserAndGroupSearchStore,\n public groupSearchStore: GroupSearchStore,\n public userSearchStore: UserSearchStore,\n public companyStore: CompanyStore,\n public companyUserStore: CompanyUserStore,\n public courseAssignmentStore: CourseAssignmentStore,\n public managerCourseAssignmentsStore: ManagerCourseAssignmentStore,\n public courseStatsStore: CourseStatsStore,\n public progressStore: ProgressStore,\n public invitationStore: InvitationStore,\n public groupStore: GroupStore,\n public reportStore: ReportStore,\n public httpClient: HttpClient\n ) {}\n}\n"],"sourceRoot":""}