{"version":3,"mappings":"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","names":["factory","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","p","_isNativeReflectConstruct","e","_assertThisInitialized","self","_possibleConstructorReturn","call","_createSuper","Derived","hasNativeReflectConstruct","Super","result","NewTarget","_superPropBase","object","property","_get","receiver","base","desc","Emitter","type","callback","options","stack","i","l","event","stackToCall","listener","AbortSignal","_Emitter","_super","_this","AbortController","reason","signalReason","err","polyfillNeeded","abortableFetchDecorator","patchTargets","_patchTargets","fetch","_patchTargets$Request","NativeRequest","NativeAbortController","_patchTargets$__FORCE","__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL","Request","input","init","signal","request","realFetch","abortableFetch","abortError","cancellation","_","reject","_abortableFetch","global","check","it","this","fails","exec","error","require$$0","descriptors","functionBindNative","test","NATIVE_BIND","functionCall","$propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","objectPropertyIsEnumerable","V","createPropertyDescriptor","bitmap","value","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","uncurryThis","toString","stringSlice","classofRaw","require$$1","classof","require$$2","$Object","split","indexedObject","isNullOrUndefined","$TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","documentAll","IS_HTMLDDA","documentAll_1","$documentAll","isCallable","argument","isObject","aFunction","getBuiltIn","namespace","method","objectIsPrototypeOf","engineUserAgent","userAgent","process","Deno","versions","v8","match","version","engineV8Version","V8_VERSION","$String","symbolConstructorDetection","symbol","NATIVE_SYMBOL","useSymbolAsUid","isPrototypeOf","USE_SYMBOL_AS_UID","require$$3","isSymbol","$Symbol","tryToString","aCallable","getMethod","P","func","ordinaryToPrimitive","pref","val","defineProperty","defineGlobalProperty","key","SHARED","store","sharedStore","sharedModule","toObject","hasOwnProperty","hasOwnProperty_1","id","postfix","uid","shared","hasOwn","require$$4","require$$5","Symbol","WellKnownSymbolsStore","createWellKnownSymbol","wellKnownSymbol","name","TO_PRIMITIVE","toPrimitive","exoticToPrim","toPropertyKey","document","EXISTS","documentCreateElement","DESCRIPTORS","createElement","ie8DomDefine","propertyIsEnumerableModule","require$$6","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","O","v8PrototypeDefineBug","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","Attributes","current","definePropertyModule","createNonEnumerableProperty","getDescriptor","PROPER","functionName","functionToString","inspectSource","WeakMap","weakMapBasicDetection","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","TypeError","set","get","has","enforce","getterFor","TYPE","state","metadata","STATE","internalState","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","defineBuiltIn","simple","ceil","floor","mathTrunc","x","n","trunc","toIntegerOrInfinity","number","max","min","toAbsoluteIndex","index","length","integer","toLength","lengthOfArrayLike","obj","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","indexOf","push","objectKeysInternal","names","enumBugKeys","internalObjectKeys","objectGetOwnPropertyNames","objectGetOwnPropertySymbols","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptorModule","copyConstructorProperties","source","exceptions","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","isForced_1","_export","TARGET","GLOBAL","STATIC","FORCED","targetProperty","sourceProperty","correctPrototypeGetter","F","CORRECT_PROTOTYPE_GETTER","IE_PROTO","ObjectPrototype","objectGetPrototypeOf","constructor","objectKeys","propertyIsEnumerable","IE_BUG","TO_ENTRIES","IE_WORKAROUND","objectToArray","$","$values","path","thisArg","Pagination$3","locale","TimePicker$4","_extends","CalendarLocale","TimePickerLocale","DatePicker$4","localeValues","Pagination","DatePicker","TimePicker","Calendar","idID","Pagination$2","TimePicker$3","DatePicker$3","typeTemplate","ukUA","Pagination$1","TimePicker$2","DatePicker$2","esES","TimePicker$1","DatePicker$1","zhTW","zhCN","plural","word","num","forms","relativeTimeWithPlural","withoutSuffix","format","monthsParse","moment","now","hour","minute","isLower","period","weekdaysCaseReplace","m","weekdays","nounCase","processHoursFunction","str","meridiem","hours","minutes","monthsShortDot","monthsShort","monthsRegex","hm","StudentCourseFilter","ContactCourseFilter","filter","changes","_Student","Contact","student","json","StudentSession","_a","_b","_c","Student","__decorateClass","observable","action","_StudentSession","Entity","session","item","isEmpty","computed","_School","BaseSchool","settings","entity","SchoolProfileSettings","School","_SchoolCourse","course","StudentCourse","ContactCert","allowUndefined","SchoolCourse","_StudentCourse","ContactCourse","Course","CourseItem","studentCourse","StudentCourseProgress","progress","StudentCourseItemProgress","StudentCourseItemBaseProgress","_StudentCourseItemProgress","SchoolContentItemProgressRating","StudentCourseSectionProgress","root","module","VERSION","zones","links","countries","guesses","cachedGuess","logError","momentVersion","major","minor","charCodeToInt","charCode","unpackBase60","parts","whole","fractional","multiplier","out","sign","arrayToInt","array","intToUntil","mapIndices","indices","unpack","offsets","untils","Zone","packedString","unpacked","timestamp","zone_name","country_code","offset","offsetNext","offsetPrev","tz","mom","Country","country_name","zone_names","OffsetAt","at","timeString","abbr","ZoneScore","zone","offsetAt","findChange","low","high","mid","diff","userOffsets","startYear","last","change","next","sortZoneScores","a","b","addToGuesses","guessesForUserOffsets","offsetsLength","filteredGuesses","j","guessesOffset","rebuildGuess","intlName","normalizeName","zoneScores","zoneScore","getZone","guess","ignoreCache","addZone","packed","normalized","caller","link","getNames","getCountryNames","addLink","aliases","alias","normal0","normal1","addCountries","country_zones","getCountry","zonesForCountry","country","with_offset","loadData","zoneExists","needsOffset","isUnixTimestamp","message","args","keepTime","z","abbrWrap","old","resetZoneWrap","resetZoneWrap2","momentProperties","momentTimezoneModule","_StudentCourseItem","prevItemSection","_d","_e","CourseItemType","count","child","isEveryChildCompleted","position","section","parent","parentAvailability","FlowTimeDelayCondition","delay","prevSection","targetDate","RegularTimeDelayCondition","CourseItemAvailability","prevRequiredItem","previousItem","studentCourseItem","CoursePlan","AccelFile","StudentCourseItemTask","StudentCourseItemTest","isNil","TimeSpan","baseDate","timeDelayValue","timeActive","waitUntilTime","daysOfWeekActive","waitUntilDaysOfWeek","targetTime","adjustedDelay","targetDays","day","dayOfWeekMap","currentTz","StudentCourseItem","StudentCourseItemFilter","BaseFilter","SortingDirection","_StudentCourseItemTest","_StudentCourseItemTask","CourseItemTask","CourseItemTaskAnswerStatus","CourseItemTaskAnswer","CourseItemTaskField","task","_SchoolLibrary","library","SchoolLibrary","_SchoolLibraryItemProgress","SchoolLibraryItemProgress","_SchoolLibraryItem","LibraryItem","LibraryItemType","step","steps","schoolLibraryItem","SchoolLibraryItem","SchoolLibraryItemFilter","_SchoolContentItem","SchoolContentSectionType","SchoolContentItemType","SchoolContentItem","SchoolContentItemFilter","FetchStudentCoursesResponse","ApiResponse","response","ApiRequest","courseItemId","fields","HttpMethod","StartCourseRequest","courseId","StartCourseResponse","SendFeedbackRequest","studentCourseId","text","SendFeedbackResponse","StudentCourseApi","api","FetchStudentCourseResponse","FetchSchoolCoursesRequest","FetchSchoolCoursesResponse","SchoolCourseApi","CompleteCourseItemTheoryRequest","studentCourseItemProgressId","CompleteCourseItemTheoryResponse","CreateTaskAnswerRequest","model","CreateTaskAnswerResponse","SaveTaskAnswerRequest","SaveTaskAnswerResponse","CreateTaskAnswerCommentRequest","CreateTaskAnswerCommentResponse","ResetTaskAnswerStatusRequest","answerId","ResetTaskAnswerStatusResponse","DeleteTaskAnswerCommentRequest","commentId","DeleteTaskAnswerCommentResponse","SaveTaskAnswerCommentRequest","SaveTaskAnswerCommentResponse","FetchTaskAnswerCommentsRequest","FetchTaskAnswerCommentsResponse","CourseItemTaskAnswerCommentFilter","CourseItemTaskAnswerComment","StudentCourseItemApi","courseItemTestId","isRight","FetchStudentCourseItemsResponse","FetchStudentCourseItemResponse","FetchSchoolSettingsRequest","FetchSchoolSettingsResponse","SchoolSettingsApi","SaveStudentRequest","SaveStudentResponse","ResendEmailConfirmationRequest","ResendEmailConfirmationResponse","SelectLangRequest","lang","SelectLangResponse","UpdatePasswordRequest","UpdatePasswordResponse","SubscriptionApi","FetchSubcriptionsResponse","FetchSubcriptionResponse","SaveSubscriptionResponse","FetchSubscriptionRequest","ContactLicense","FetchSubscriptionsRequest","ContactLicenseFilter","LicenseApi","FetchLicensesResponse","StudentApi","OrderApi","BonusTransactionApi","CrudApi","PurchaseOrder","StudentBonusTransaction","ContactInFilterRequest","filterId","contactId","ContactInFilterResponse","KeepaliveRequest","KeepaliveResponse","RunCustomEventRequest","RunCustomEventResponse","TrackFormRequest","TrackFormResponse","UpdateLocalizationRequest","UpdateLocalizationResponse","ServiceApi","FetchCourseItemsRequest","planId","FetchCourseItemsResponse","FetchCourseItemRequest","itemId","FetchCourseItemResponse","FetchCourseRequest","FetchCourseResponse","FetchCoursePlansRequest","FetchCoursePlansResponse","CoursePlanFilter","CoursePreviewApi","FetchStudentCourseRequest","FetchStudentCourseItemRequest","FetchStudentCourseItemsRequest","CompleteStudentCourseItemRequest","CompleteStudentCourseItemResponse","ResetStudentCourseItemRequest","ResetStudentCourseItemResponse","UnblockStudentCourseItemRequest","UnblockStudentCourseItemResponse","BlockStudentCourseItemRequest","BlockStudentCourseItemResponse","StudentCoursePreviewApi","FetchForumThreadRequest","threadId","FetchForumThreadResponse","ForumThread","ForumTopic","CreateTopicRequest","CreateTopicResponse","replyCommentFields","commentFields","FetchTopicCommentsRequest","FetchTopicCommentsResponse","TopicComment","TopicCommentFilter","FetchTopicRequest","topicId","FetchTopicResponse","CreateTopicCommentRequest","CreateTopicCommentResponse","UpdateTopicCommentRequest","UpdateTopicCommentResponse","DeleteTopicCommentRequest","DeleteTopicCommentResponse","UpdateTopicRequest","UpdateTopicResponse","FetchTopicCommentPositionRequest","sequenceNumber","FetchTopicCommentPositionResponse","DeleteTopicRequest","DeleteTopicResponse","BlockStudentRequest","BlockStudentResponse","CreateReactionRequest","CreateReactionResponse","ForumReaction","DeleteReactionRequest","reactionId","DeleteReactionResponse","ForumApi","FetchStatusRequest","studentId","messageId","FetchStatusResponse","UnsubscribeRequest","UnsubscribeResponse","StudentEmailBroadcastApi","FetchSchoolLibraryItemsRequest","libraryId","FetchSchoolLibraryItemsResponse","FetchSchoolLibraryItemRequest","FetchSchoolLibraryItemResponse","FetchSchoolLibraryRequest","FetchSchoolLibraryResponse","SchoolLibraryApi","FetchCourseItemRatingRequest","FetchCourseItemRatingsResponse","SchoolContentItemProgressRatingFilter","SaveCourseItemRatingRequest","rating","SaveCourseItemRatingResponse","CreateCourseItemRatingRequest","sectionType","targetItemId","targerProgressId","CreateCourseItemRatingResponse","CourseItemRatingApi","FetchCourseItemCommentsRequest","progressId","FetchCourseItemCommentsResponse","SchoolContentItemCommentFilter","SchoolContentItemComment","SaveCourseItemCommentRequest","comment","SaveCourseItemCommentResponse","CreateCourseItemCommentRequest","targetProgressId","ratingId","CreateCourseItemCommentResponse","RemoveCourseItemCommentRequest","RemoveCourseItemCommentResponse","CourseItemCommentApi","LoginRequest","email","password","LoginResponse","RefreshTokenRequest","refreshToken","RefreshTokenResponse","RegisterRequest","RegisterResponse","ResetPasswordRequest","token","confirmPassword","ResetPasswordResponse","ForgotPasswordRequest","ForgotPasswordResponse","ConfirmEmailRequest","ConfirmEmailResponse","ConfirmInviteRequest","ConfirmInviteResponse","CheckInviteRequest","CheckInviteResponse","LoginTokenRequest","LoginTokenResponse","LogoutRequest","LogoutResponse","ProlongSessionRequest","ProlongSessionResponse","FetchMeRequest","FetchMeResponse","LoginAsRequest","LoginAsResponse","SendInviteRequest","SendInviteResponse","FetchContactRequest","FetchContactResponse","RegisterContactResponse","FetchEmailNotificationsSubscriptionStatusRequest","FetchEmailNotificationsSubscriptionStatusResponse","UnsubscribeEmailNotificationsRequest","UnsubscribeEmailNotificationsResponse","AuthApi","SaveNotificationRequest","notification","toOptional","SaveNotificationResponse","FetchNotificationsRequest","FetchNotificationsResponse","ApiListResponse","UserNotification","UserNotificationFilter","DeleteNotificationRequest","DeleteNotificationResponse","FetchNotificationSettingsRequest","FetchNotificationSettingsResponse","UserNotificationSettings","SaveNotificationSettingsRequest","SaveNotificationSettingsResponse","NotificationSettingsApi","FetchCountNotificationsRequest","FetchCountNotificationsResponse","MarkAllAsReadNotificationsRequest","MarkAllAsReadNotificationsResponse","CreateNotificationChannelRequest","CreateNotificationChannelResponse","SaveNotificationChannelRequest","SaveNotificationChannelResponse","NotificationChannelApi","NotificationApi","PartnershipApi","MemberApi","TransactionApi","TransactionRequestApi","OfferApi","PartnershipOrderApi","UtmTagApi","PartnershipTotalsFilter","PartnershipTransaction","PartnershipMember","PartnershipOffer","PartnershipTransactionRequest","AnnouncementApi","Announcement","GamificationApi","body","GamificationAchievement","GamificationAchievementFilter","GamificationLeader","GamificationLeaderFilter","GamificationProductApi","GamificationTransactionApi","GamificationProduct","GamificationTransaction","Api","BaseApi","client","FileApi","FileManagerApi","LocalizationApi","JwtApiClient","HttpApiClient","apiUrl","userStore","hub","headers","ResponseType","attempt","HttpStatusCode","UserStore","TokenStore","jwtDecoder","cookieClient","user","score","ServiceStore","locStore","inject","LocalizationStore","reloadPageIfSuccess","UIStore","langDetector","deviceStore","LangDetector","DeviceStore","defaultTab","Lang","includeTime","includeSeconds","chatController","phoneController","SchoolStore","runInAction","Action","PopStateEventType","createBrowserHistory","createBrowserLocation","window","globalHistory","pathname","search","hash","createLocation","createBrowserHref","to","createPath","getUrlBasedHistory","invariant","warning","cond","createKey","getHistoryState","location","parsePath","_ref","parsedPath","hashIndex","searchIndex","getLocation","createHref","validateLocation","v5Compat","getIndex","handlePop","nextIndex","delta","history","historyState","url","createURL","href","ResultType","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","rankRouteBranches","matches","matchRouteBranch","safelyDecodeURI","parentsMeta","parentPath","flattenRoute","route","relativePath","meta","joinPaths","routesMeta","computeScore","_route$path","exploded","explodeOptionalSegments","segments","first","rest","isOptional","required","restExploded","subpath","compareIndexes","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","s","initialScore","segment","branch","matchedParams","matchedPathname","end","remainingPathname","matchPath","normalizePathname","pattern","matcher","compiledParams","compilePath","pathnameBase","captureGroups","memo","paramName","splatValue","safelyDecodeURIComponent","caseSensitive","params","regexpSource","startIndex","nextChar","resolvePath","fromPathname","toPathname","resolvePathname","normalizeSearch","normalizeHash","getInvalidPathError","char","field","dest","getPathContributingMatches","getResolveToMatches","v7_relativeSplatPath","pathMatches","idx","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","from","routePathnameIndex","toSegments","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","isRouteErrorResponse","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","React.createContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","RouteErrorContext","useHref","_temp","relative","useInRouterContext","UNSAFE_invariant","navigator","React.useContext","useResolvedPath","joinedPathname","useLocation","useMatch","React.useMemo","useIsomorphicLayoutEffect","cb","React.useLayoutEffect","useNavigate","isDataRoute","useNavigateStable","useNavigateUnstable","dataRouterContext","future","routePathnamesJson","UNSAFE_getResolveToMatches","activeRef","React.useRef","React.useCallback","OutletContext","useOutlet","context","outlet","React.createElement","useParams","routeMatch","_temp2","useRoutes","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","renderedMatches","_renderMatches","DefaultErrorComponent","useRouteError","preStyles","devInfo","React.Fragment","defaultErrorElement","RenderErrorBoundary","React.Component","errorInfo","RenderedRoute","routeContext","children","_dataRouterState2","_dataRouterState","errors","errorIndex","renderFallback","fallbackIndex","loaderData","needsToRunLoader","shouldRenderHydrateFallback","errorElement","hydrateFallbackElement","warningOnce","getChildren","DataRouterHook","DataRouterStateHook","useDataRouterContext","hookName","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","_state$errors","routeId","router","alreadyWarned","Navigate","_ref4","isStatic","navigate","jsonPath","React.useEffect","Outlet","Router","_ref5","basenameProp","locationProp","navigationType","staticProp","navigationContext","locationContext","trailingPathname","useLoc","useInstance","Localization","PageContent","margin","backgroundColor","transparent","flex1","className","customStyles","useMemo","styles","jsx","combineClasses","PageContent$1","observer","useSchool","useLang","serviceStore","schoolStore","selectLang","useCallback","opts","ApiSettings","LocalizationSettings","AWSSettings","HubSettings","ChatSettings","NewRelicSettings","QuizSettings","CheckoutSettings","AppSettings","envSettings","env","Env","sharedSettings","devSettings","prodSettings","appSettings","useSettings","Price","price","precision","currency","label","colon","priceClassName","fractionalClassname","truncateIfFractionalZero","school","c","priceComponent","NumberFormat","isUsd","Currency","curLoc","Loc","jsxs","Space","EZEditorView","React","__vitePreload","SchoolEZEditorView","useEffect","axlData","Suspense","ScriptInjection","script","executeJs","UtmTagFilter","UtmTagsStore","CRUDListStore","UtmTagSelect","loc","selectRef","SelectAsync","combineRefs","UtmTagSelect$1","provider","useApi","AnalyticStatistic","hideSubtitle","titleExtra","titleClassName","onClick","clickable","useState","formattedValue","Duration","Humanize","Statistic","Fragment","AnalyticStatisticSkeleton","Skeleton","ItemTreeSearch","wrapperClassName","inputClassName","onSearch","searchOpen","setSearchOpen","handleSearch","useUpdateEffect","InputSearch","Button","CloseOutlined","SearchOutlined","ItemTreeSearch$1","MissingWords","words","languages","project","onCancel","newWordState","setNewWordState","setState","setFilter","openWord","Typography","Checkbox","Table","CheckOutlined","EditOutlined","PlusCircleOutlined","DevActions","missingWordsDrawer","useDrawer","menu","Menu","Tooltip","Dropdown","InfoOutlined","Drawer","_objectWithoutPropertiesLoose","excluded","sourceKeys","isModifiedEvent","shouldProcessLinkClick","_excluded","START_TRANSITION","startTransitionImpl","BrowserRouter","historyRef","setStateImpl","React.useState","v7_startTransition","newState","isBrowser","ABSOLUTE_URL_REGEX","Link","React.forwardRef","_ref7","ref","reloadDocument","preventScrollReset","unstable_viewTransition","UNSAFE_NavigationContext","absoluteHref","isExternal","currentUrl","targetUrl","internalOnClick","useLinkClickHandler","handleClick","replaceProp","useBeforeUnload","capture","AuthLayout","BasicLayout","LearnLayout","Login","LoginToken","Register","ForgotPassword","ResetPassword","LearnPage","ConfirmEmail","ConfirmInvite","PreviewPage","StudentPreviewPage","ForumPage","UnsubscribeEmails","LearnLibraryPage","SchoolMaterialsPage","LoginAs","AuthContactPage","BillingPage","UnsubscribeEmailNotifications","AccessPage","PartnershipPage","GamificationPage","BasicLayoutRouting","isAuthenticated","LoadingOverlay","LayoutSelector","LocProvider","ready","setReady","targetLang","LocProvider$1","UserProvider","updateTokenTimer","useTimer","UserProvider$1","defineProperties","linkEl","faviconSize","drawIcon","src","img","canvas","top","left","bottom","right","radius","Favicon","_React$Component","_ret","_len","_key","activeInstance","prevProps","head","isAnimated","intervalId","animateFavicon","nextAnimationIndex","reactFavicon","exports","_react","_propTypes","_interopRequireDefault","_typeof","_defineProperty","MetaTagsContext","_Component","_default","utils","filterAndArrangeTags","getDuplicateTitle","getDuplicateCanonical","getDuplicateMeta","appendChild","removeChild","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","arr2","camelCaseProps","uniqueIdentifiersI","uniqueIdentifiers","uniqueIdentifiersAll","filterOutMetaWithId","metas","headElms","title","canonicalLink","elm","removeDuplicateMetas","addedMeta","identifier","filteredMetas","_loop","addMeta","identifierValue","existing","duplicates","childrens","docFrag","ln","_interopRequireWildcard","_reactDom","_utils","newObj","MetaTags","oldProps","extract","headComponent","childStr","tempHead","childNodes","headHtml","tag","_meta_tags","ReactTitle","_meta_tags_context","_react_title","SchoolSupportChatChangedSubscription","HubSubscription","SchoolProvider","fileProvider","FileProvider","HubClient","sub","payload","SchoolProvider$1","GamificationBalanceSubscription","GamificationBalanceProvider","res","GamificationBalanceProvider$1","NotificationPayload","Updatable","GamificationAchievementPayload","NotificationSubscription","NotificationCenterStore","Disposable","clear","GamificationCard","header","onTitleClick","Card","ArrowRightOutlined","GamificationAchievementPreview","achievement","headerExtra","hideDate","hideInfo","useContext","Context","Image","ValuePlaceholder","HelpText","DateTime","GamificationAchievementsCardPlaceholder","TrophyOutlined","GamificationAchievementsCard","drawer","Modal","Row","Col","main","isWorker","workerSize","canUseWorker","canUsePaths","canDrawBitmap","noop","promise","ModulePromise","Prom","bitmapMapper","skipTransform","map","raf","TIME","frame","cancel","frames","lastFrameTime","onFrame","time","timer","getWorker","worker","prom","resolves","decorate","execute","offscreen","size","done","resolve","workerDone","msg","code","defaults","convert","transform","isOk","prop","onlyPositiveInt","randomInt","toDecimal","colorsToRgb","colors","hexToRgb","getOrigin","origin","setCanvasWindowSize","setCanvasRectSize","rect","getCanvas","zIndex","ellipse","y","radiusX","radiusY","rotation","startAngle","endAngle","antiClockwise","randomPhysics","radAngle","radSpread","updateFetti","fetti","x1","y1","x2","y2","transformPath2D","scaleX","scaleY","width","height","matrix","rot","innerRadius","outerRadius","spikes","animate","fettis","resizer","animatingFettis","animationFrame","destroy","onDone","update","confettiCannon","globalOpts","isLibCanvas","allowResize","hasResizeEventRegistered","globalDisableForReducedMotion","shouldUseWorker","initialized","preferLessMotion","animationObj","fireLocal","particleCount","angle","spread","startVelocity","decay","gravity","drift","ticks","shapes","scalar","flat","temp","startX","startY","fire","disableForReducedMotion","onResize","defaultFire","getDefaultFire","pathString","pathMatrix","path2d","t1","t2","shapeFromPath","pathData","tempCanvas","tempCtx","maxSize","minX","minY","maxX","maxY","maxDesiredSize","scale","shapeFromText","textData","color","fontFamily","fontSize","font","padding","confetti","GamificationAchievementNotification","onClose","contextHolder","fireConfetti","particleRatio","GamificationAchievementNotification$1","NotificationCenter","renderNotification","NotificationCenter$1","App","NewRelic","AppConfig","keygen","geoLocator","useInstances","KeyGenerator","GeoLocator","antLocale","enUS","ruRU","ConfigProvider","AccelProvider","App$1","toValue","toFactory","JwtDecoder","CookieStorage","storage","ApiClient","toExisting","AuthCookieClient","decoder","mobxConfigure","ReactDOM"],"sources":["../../../node_modules/.pnpm/abortcontroller-polyfill@1.7.5/node_modules/abortcontroller-polyfill/dist/polyfill-patch-fetch.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/global.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/fails.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/descriptors.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/function-bind-native.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/function-call.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/function-uncurry-this.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/classof-raw.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/indexed-object.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/is-null-or-undefined.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/document-all.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/is-callable.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/is-object.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/get-built-in.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-is-prototype-of.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-user-agent.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-v8-version.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/symbol-constructor-detection.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/is-symbol.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/try-to-string.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/a-callable.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/get-method.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/ordinary-to-primitive.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/define-global-property.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/shared-store.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/shared.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/to-object.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/has-own-property.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/uid.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/to-primitive.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/to-property-key.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/document-create-element.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/v8-prototype-define-bug.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/an-object.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-define-property.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/function-name.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/inspect-source.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/weak-map-basic-detection.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/shared-key.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/hidden-keys.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/internal-state.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/make-built-in.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/define-built-in.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/math-trunc.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/to-integer-or-infinity.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/to-length.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/length-of-array-like.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/array-includes.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/own-keys.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/is-forced.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/export.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/correct-prototype-getter.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-get-prototype-of.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-keys.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/object-to-array.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/modules/es.object.values.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/path.js","../../../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/es/object/values.js","../../src/polyfills.ts","../../../node_modules/.pnpm/rc-pagination@3.1.17_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-pagination/es/locale/id_ID.js","../../../node_modules/.pnpm/rc-picker@2.6.11_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-picker/es/locale/id_ID.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/time-picker/locale/id_ID.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/date-picker/locale/id_ID.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/locale/id_ID.js","../../../node_modules/.pnpm/rc-pagination@3.1.17_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-pagination/es/locale/uk_UA.js","../../../node_modules/.pnpm/rc-picker@2.6.11_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-picker/es/locale/uk_UA.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/time-picker/locale/uk_UA.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/date-picker/locale/uk_UA.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/locale/uk_UA.js","../../../node_modules/.pnpm/rc-pagination@3.1.17_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-pagination/es/locale/es_ES.js","../../../node_modules/.pnpm/rc-picker@2.6.11_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-picker/es/locale/es_ES.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/time-picker/locale/es_ES.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/date-picker/locale/es_ES.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/locale/es_ES.js","../../../node_modules/.pnpm/rc-pagination@3.1.17_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-pagination/es/locale/zh_TW.js","../../../node_modules/.pnpm/rc-picker@2.6.11_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-picker/es/locale/zh_TW.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/time-picker/locale/zh_TW.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/date-picker/locale/zh_TW.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/locale/zh_TW.js","../../../node_modules/.pnpm/rc-picker@2.6.11_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/rc-picker/es/locale/zh_CN.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/time-picker/locale/zh_CN.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/date-picker/locale/zh_CN.js","../../../node_modules/.pnpm/antd@4.23.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/antd/es/locale/zh_CN.js","../../../node_modules/.pnpm/moment@2.29.4/node_modules/moment/dist/locale/ru.js","../../../node_modules/.pnpm/moment@2.29.4/node_modules/moment/dist/locale/uk.js","../../../node_modules/.pnpm/moment@2.29.4/node_modules/moment/dist/locale/id.js","../../../node_modules/.pnpm/moment@2.29.4/node_modules/moment/dist/locale/es.js","../../../node_modules/.pnpm/moment@2.29.4/node_modules/moment/dist/locale/zh-tw.js","../../../node_modules/.pnpm/moment@2.29.4/node_modules/moment/dist/locale/zh-cn.js","../../src/models/student-course/student-course-filter.ts","../../src/models/student/student.ts","../../src/models/student/student-session.ts","../../src/models/school/school.ts","../../src/models/school-course/school-course.ts","../../src/models/student-course/student-course.ts","../../src/models/student-course/student-course-progress/student-course-progress.ts","../../src/models/student-course-item/student-course-item-progress/student-course-item-progress.ts","../../../node_modules/.pnpm/moment-timezone@0.5.43/node_modules/moment-timezone/moment-timezone.js","../../../node_modules/.pnpm/moment-timezone@0.5.43/node_modules/moment-timezone/index.js","../../src/models/student-course-item/student-course-item.ts","../../src/models/student-course-item/student-course-item-filter.ts","../../src/models/student-course-item/student-course-item-test/student-course-item-test.ts","../../src/models/student-course-item/student-course-item-task/student-course-item-task.ts","../../src/models/school-library/school-library.ts","../../src/models/school-library/school-library-item-progress/school-library-item-progress.ts","../../src/models/school-library/school-library-item/school-library-item.ts","../../src/models/school-library/school-library-item/school-library-item-filter.ts","../../src/models/SchoolContent/SchoolContentItem.ts","../../src/api/methods/student/student-course/types/fetch-student-courses.ts","../../src/api/methods/student/student-course/types/fetch-student-course.ts","../../src/api/methods/student/student-course/types/start-course.ts","../../src/api/methods/student/student-course/types/send-feedback.ts","../../src/api/methods/student/student-course/index.ts","../../src/api/methods/school-course/types/fetch.ts","../../src/api/methods/school-course/index.ts","../../src/api/methods/student/student-course-item/types/fetch-student-course-items.ts","../../src/api/methods/student/student-course-item/types/fetch-student-course-item.ts","../../src/api/methods/student/student-course-item/types/complete-course-item-theory.ts","../../src/api/methods/student/student-course-item/types/create-task-answer.ts","../../src/api/methods/student/student-course-item/types/save-task-answer.ts","../../src/api/methods/student/student-course-item/types/create-task-answer-comment.ts","../../src/api/methods/student/student-course-item/types/reset-task-answer-status.ts","../../src/api/methods/student/student-course-item/types/delete-task-answer-comment.ts","../../src/api/methods/student/student-course-item/types/save-task-answer-comment.ts","../../src/api/methods/student/student-course-item/types/fetch-task-answer-comments.ts","../../src/api/methods/student/student-course-item/index.ts","../../src/api/methods/school-settings/types/fetch-school-settings.ts","../../src/api/methods/school-settings/types/index.ts","../../src/api/methods/student/student/types/save-student.ts","../../src/api/methods/student/student/types/resend-email-confirmation.ts","../../src/api/methods/student/student/types/select-lang.ts","../../src/api/methods/student/student/types/update-password.ts","../../src/api/methods/student/student/subscription/index.ts","../../src/api/methods/student/student/license/index.ts","../../src/api/methods/student/student/index.ts","../../src/api/methods/service/types/contact-in-filter.ts","../../src/api/methods/service/types/keepalive.ts","../../src/api/methods/service/types/run-custom-event.ts","../../src/api/methods/service/types/track-form.ts","../../src/api/methods/service/types/update-localization.ts","../../src/api/methods/service/index.ts","../../src/api/methods/course-preview/types/fetch-course-items.ts","../../src/api/methods/course-preview/types/fetch-course-item.ts","../../src/api/methods/course-preview/types/fetch-course.ts","../../src/api/methods/course-preview/types/fetch-course-plans.ts","../../src/api/methods/course-preview/index.ts","../../src/api/methods/student-course-preview/types/fetch-student-course.ts","../../src/api/methods/student-course-preview/types/fetch-student-course-item.ts","../../src/api/methods/student-course-preview/types/fetch-student-course-items.ts","../../src/api/methods/student-course-preview/types/complete-student-course-item.ts","../../src/api/methods/student-course-preview/types/reset-student-course-item.ts","../../src/api/methods/student-course-preview/types/unblock-student-course-item.ts","../../src/api/methods/student-course-preview/types/block-student-course-item.ts","../../src/api/methods/student-course-preview/index.ts","../../src/api/methods/forum/types/fetch-forum-thread.ts","../../src/api/methods/forum/types/create-topic.ts","../../src/api/methods/forum/types/fetch-topic-comments.ts","../../src/api/methods/forum/types/fetch-topic.ts","../../src/api/methods/forum/types/create-topic-comment.ts","../../src/api/methods/forum/types/update-topic-comment.ts","../../src/api/methods/forum/types/delete-topic-comment.ts","../../src/api/methods/forum/types/update-topic.ts","../../src/api/methods/forum/types/fetch-topic-comment-position.ts","../../src/api/methods/forum/types/delete-topic.ts","../../src/api/methods/forum/types/block-student.ts","../../src/api/methods/forum/types/create-reaction.ts","../../src/api/methods/forum/types/delete-reaction.ts","../../src/api/methods/forum/index.ts","../../src/api/methods/student/email-broadcast/types/fetch-status.ts","../../src/api/methods/student/email-broadcast/types/unsubscribe.ts","../../src/api/methods/student/email-broadcast/index.ts","../../src/api/methods/school-library/types/fetch-school-library-items.ts","../../src/api/methods/school-library/types/fetch-school-library-item.ts","../../src/api/methods/school-library/types/fetch-school-library.ts","../../src/api/methods/school-library/index.ts","../../src/api/methods/student/course-item-rating/types/fetch-course-item-ratings.ts","../../src/api/methods/student/course-item-rating/types/save-course-item-rating.ts","../../src/api/methods/student/course-item-rating/types/create-course-item-rating.ts","../../src/api/methods/student/course-item-rating/index.ts","../../src/api/methods/student/course-item-comment/types/fetch-course-item-comments.ts","../../src/api/methods/student/course-item-comment/types/save-course-item-comment.ts","../../src/api/methods/student/course-item-comment/types/create-course-item-comment.ts","../../src/api/methods/student/course-item-comment/types/remove-course-item-comment.ts","../../src/api/methods/student/course-item-comment/index.ts","../../src/api/methods/auth/types/login.ts","../../src/api/methods/auth/types/refresh-token.ts","../../src/api/methods/auth/types/register.ts","../../src/api/methods/auth/types/reset-password.ts","../../src/api/methods/auth/types/forgot-password.ts","../../src/api/methods/auth/types/confirm-email.ts","../../src/api/methods/auth/types/confirm-invite.ts","../../src/api/methods/auth/types/check-invite.ts","../../src/api/methods/auth/types/login-token.ts","../../src/api/methods/auth/types/logout.ts","../../src/api/methods/auth/types/prolong-session.ts","../../src/api/methods/auth/types/me.ts","../../src/api/methods/auth/types/login-as.ts","../../src/api/methods/auth/types/send-invite.ts","../../src/api/methods/auth/types/contact.ts","../../src/api/methods/auth/types/register-contact.ts","../../src/api/methods/auth/types/email-notifications-subscription-status.ts","../../src/api/methods/auth/types/unsubscribe-email-notifications.ts","../../src/api/methods/auth/index.ts","../../src/api/methods/Notification/types/save.ts","../../src/api/methods/Notification/types/fetch.ts","../../src/api/methods/Notification/types/delete.ts","../../src/api/methods/Notification/Settings/types/fetch.ts","../../src/api/methods/Notification/Settings/types/save.ts","../../src/api/methods/Notification/Settings/index.ts","../../src/api/methods/Notification/types/fetch-count.ts","../../src/api/methods/Notification/types/mark-all-as-read.ts","../../src/api/methods/Notification/Channel/types/create.ts","../../src/api/methods/Notification/Channel/types/save.ts","../../src/api/methods/Notification/Channel/index.ts","../../src/api/methods/Notification/index.ts","../../src/api/methods/partnership/index.ts","../../src/api/methods/announcement/index.ts","../../src/api/methods/gamification/index.ts","../../src/api/Api.ts","../../src/api/clients/JwtApiClient.ts","../../src/stores/UserStore/UserStore.ts","../../src/stores/ServiceStore/ServiceStore.ts","../../src/stores/UIStore/UIStore.ts","../../src/stores/SchoolStore/SchoolStore.ts","../../../node_modules/.pnpm/@remix-run+router@1.14.2/node_modules/@remix-run/router/dist/router.js","../../../node_modules/.pnpm/react-router@6.21.2_react@17.0.2/node_modules/react-router/dist/index.js","../../src/components/hooks/useLoc/useLoc.tsx","../../src/components/PageContent/PageContent.tsx","../../src/components/hooks/useSchool/useSchool.tsx","../../src/components/hooks/useLang/useLang.tsx","../../src/models/app-settings/api-settings.ts","../../src/models/app-settings/localization-settings.ts","../../src/models/app-settings/aws-settings.ts","../../src/models/app-settings/hub-settings.ts","../../src/models/app-settings/chat-settings.ts","../../src/models/app-settings/newrelic-settings.ts","../../src/models/app-settings/QuizSettings.ts","../../src/models/app-settings/checkout.ts","../../src/models/app-settings/app-settings.ts","../../src/models/app-settings/index.ts","../../src/components/hooks/useSettings/useSettings.tsx","../../src/components/Price/Price.tsx","../../src/components/EZEditor/SchoolEZEditorView.tsx","../../src/components/ScriptInjector/ScriptInjection.tsx","../../src/components/selects/UtmTagSelect/UtmTagSelect.tsx","../../src/components/hooks/useApi.tsx","../../src/components/AnalyticStatistic/AnalyticStatistic.tsx","../../src/components/ItemTreeSearch/ItemTreeSearch.tsx","../../src/App/shared/DevActions/MissingWords/MissingWords.tsx","../../src/App/shared/DevActions/DevActions.tsx","../../../node_modules/.pnpm/react-router-dom@6.21.2_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-router-dom/dist/index.js","../../src/App/Router.tsx","../../src/App/shared/providers/LocProvider/LocProvider.tsx","../../src/App/shared/providers/UserProvider/UserProvider.tsx","../../../node_modules/.pnpm/react-favicon@0.0.18_react@17.0.2/node_modules/react-favicon/dist/react-favicon.js","../../../node_modules/.pnpm/react-meta-tags@0.7.4_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-meta-tags/lib/meta_tags_context.js","../../../node_modules/.pnpm/react-meta-tags@0.7.4_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-meta-tags/lib/utils.js","../../../node_modules/.pnpm/react-meta-tags@0.7.4_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-meta-tags/lib/meta_tags.js","../../../node_modules/.pnpm/react-meta-tags@0.7.4_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-meta-tags/lib/react_title.js","../../../node_modules/.pnpm/react-meta-tags@0.7.4_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-meta-tags/lib/index.js","../../src/hub-client/subscriptions/SchoolSupportChatChangedSubscription.ts","../../src/App/shared/providers/SchoolProvider/SchoolProvider.tsx","../../src/hub-client/subscriptions/gamification.ts","../../src/App/shared/providers/GamificationBalanceProvider/GamificationBalanceProvider.tsx","../../src/hub-client/payloads/notifications/index.ts","../../src/hub-client/subscriptions/NotificationSubscription.ts","../../src/App/shared/NotificationCenter/NotificationCenterStore.ts","../../src/views/gamification/pages/GamificationCard.tsx","../../src/views/gamification/pages/components/GamificationAchievementsCard/GamificationAchievementsCard.tsx","../../../node_modules/.pnpm/canvas-confetti@1.9.2/node_modules/canvas-confetti/dist/confetti.module.mjs","../../src/App/shared/NotificationCenter/Notifications/GamificationAchievement/GamificationAchievementNotification.tsx","../../src/App/shared/NotificationCenter/NotificationCenter.tsx","../../src/App/App.tsx","../../src/index.tsx"],"sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(factory) :\n factory();\n})((function () { 'use strict';\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n }\n\n var Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n Object.defineProperty(this, 'listeners', {\n value: {},\n writable: true,\n configurable: true\n });\n }\n\n _createClass(Emitter, [{\n key: \"addEventListener\",\n value: function addEventListener(type, callback, options) {\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push({\n callback: callback,\n options: options\n });\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i].callback === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[event.type];\n var stackToCall = stack.slice();\n\n for (var i = 0, l = stackToCall.length; i < l; i++) {\n var listener = stackToCall[i];\n\n try {\n listener.callback.call(this, event);\n } catch (e) {\n Promise.resolve().then(function () {\n throw e;\n });\n }\n\n if (listener.options && listener.options.once) {\n this.removeEventListener(event.type, listener.callback);\n }\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return Emitter;\n }();\n\n var AbortSignal = /*#__PURE__*/function (_Emitter) {\n _inherits(AbortSignal, _Emitter);\n\n var _super = _createSuper(AbortSignal);\n\n function AbortSignal() {\n var _this;\n\n _classCallCheck(this, AbortSignal);\n\n _this = _super.call(this); // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent\n // constructor has failed to run, then \"this.listeners\" will still be undefined and then we call\n // the parent constructor directly instead as a workaround. For general details, see babel bug:\n // https://github.com/babel/babel/issues/3041\n // This hack was added as a fix for the issue described here:\n // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042\n\n if (!_this.listeners) {\n Emitter.call(_assertThisInitialized(_this));\n } // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'aborted', {\n value: false,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'onabort', {\n value: null,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'reason', {\n value: undefined,\n writable: true,\n configurable: true\n });\n return _this;\n }\n\n _createClass(AbortSignal, [{\n key: \"toString\",\n value: function toString() {\n return '[object AbortSignal]';\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (event.type === 'abort') {\n this.aborted = true;\n\n if (typeof this.onabort === 'function') {\n this.onabort.call(this, event);\n }\n }\n\n _get(_getPrototypeOf(AbortSignal.prototype), \"dispatchEvent\", this).call(this, event);\n }\n }]);\n\n return AbortSignal;\n }(Emitter);\n var AbortController = /*#__PURE__*/function () {\n function AbortController() {\n _classCallCheck(this, AbortController);\n\n // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController()) to be [] for compat with the native impl\n Object.defineProperty(this, 'signal', {\n value: new AbortSignal(),\n writable: true,\n configurable: true\n });\n }\n\n _createClass(AbortController, [{\n key: \"abort\",\n value: function abort(reason) {\n var event;\n\n try {\n event = new Event('abort');\n } catch (e) {\n if (typeof document !== 'undefined') {\n if (!document.createEvent) {\n // For Internet Explorer 8:\n event = document.createEventObject();\n event.type = 'abort';\n } else {\n // For Internet Explorer 11:\n event = document.createEvent('Event');\n event.initEvent('abort', false, false);\n }\n } else {\n // Fallback where document isn't available:\n event = {\n type: 'abort',\n bubbles: false,\n cancelable: false\n };\n }\n }\n\n var signalReason = reason;\n\n if (signalReason === undefined) {\n if (typeof document === 'undefined') {\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n } else {\n try {\n signalReason = new DOMException('signal is aborted without reason');\n } catch (err) {\n // IE 11 does not support calling the DOMException constructor, use a\n // regular error object on it instead.\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n }\n }\n }\n\n this.signal.reason = signalReason;\n this.signal.dispatchEvent(event);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return '[object AbortController]';\n }\n }]);\n\n return AbortController;\n }();\n\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n // These are necessary to make sure that we get correct output for:\n // Object.prototype.toString.call(new AbortController())\n AbortController.prototype[Symbol.toStringTag] = 'AbortController';\n AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal';\n }\n\n function polyfillNeeded(self) {\n if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill');\n return true;\n } // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // so the below feature detection needs the !self.AbortController part.\n // The Request.prototype check is also needed because Safari versions 11.1.2\n // up to and including 12.1.x has a window.AbortController present but still\n // does NOT correctly implement abortable fetch:\n // https://bugs.webkit.org/show_bug.cgi?id=174980#c2\n\n\n return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController;\n }\n\n /**\n * Note: the \"fetch.Request\" default value is available for fetch imported from\n * the \"node-fetch\" package and not in browsers. This is OK since browsers\n * will be importing umd-polyfill.js from that path \"self\" is passed the\n * decorator so the default value will not be used (because browsers that define\n * fetch also has Request). One quirky setup where self.fetch exists but\n * self.Request does not is when the \"unfetch\" minimal fetch polyfill is used\n * on top of IE11; for this case the browser will try to use the fetch.Request\n * default value which in turn will be undefined but then then \"if (Request)\"\n * will ensure that you get a patched fetch but still no Request (as expected).\n * @param {fetch, Request = fetch.Request}\n * @returns {fetch: abortableFetch, Request: AbortableRequest}\n */\n\n function abortableFetchDecorator(patchTargets) {\n if ('function' === typeof patchTargets) {\n patchTargets = {\n fetch: patchTargets\n };\n }\n\n var _patchTargets = patchTargets,\n fetch = _patchTargets.fetch,\n _patchTargets$Request = _patchTargets.Request,\n NativeRequest = _patchTargets$Request === void 0 ? fetch.Request : _patchTargets$Request,\n NativeAbortController = _patchTargets.AbortController,\n _patchTargets$__FORCE = _patchTargets.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL,\n __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL = _patchTargets$__FORCE === void 0 ? false : _patchTargets$__FORCE;\n\n if (!polyfillNeeded({\n fetch: fetch,\n Request: NativeRequest,\n AbortController: NativeAbortController,\n __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL: __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL\n })) {\n return {\n fetch: fetch,\n Request: Request\n };\n }\n\n var Request = NativeRequest; // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // hence we only patch it if it's available. Also we don't patch it if signal\n // is already available on the Request prototype because in this case support\n // is present and the patching below can cause a crash since it assigns to\n // request.signal which is technically a read-only property. This latter error\n // happens when you run the main5.js node-fetch example in the repo\n // \"abortcontroller-polyfill-examples\". The exact error is:\n // request.signal = init.signal;\n // ^\n // TypeError: Cannot set property signal of # which has only a getter\n\n if (Request && !Request.prototype.hasOwnProperty('signal') || __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n Request = function Request(input, init) {\n var signal;\n\n if (init && init.signal) {\n signal = init.signal; // Never pass init.signal to the native Request implementation when the polyfill has\n // been installed because if we're running on top of a browser with a\n // working native AbortController (i.e. the polyfill was installed due to\n // __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL being set), then passing our\n // fake AbortSignal to the native fetch will trigger:\n // TypeError: Failed to construct 'Request': member signal is not of type AbortSignal.\n\n delete init.signal;\n }\n\n var request = new NativeRequest(input, init);\n\n if (signal) {\n Object.defineProperty(request, 'signal', {\n writable: false,\n enumerable: false,\n configurable: true,\n value: signal\n });\n }\n\n return request;\n };\n\n Request.prototype = NativeRequest.prototype;\n }\n\n var realFetch = fetch;\n\n var abortableFetch = function abortableFetch(input, init) {\n var signal = Request && Request.prototype.isPrototypeOf(input) ? input.signal : init ? init.signal : undefined;\n\n if (signal) {\n var abortError;\n\n try {\n abortError = new DOMException('Aborted', 'AbortError');\n } catch (err) {\n // IE 11 does not support calling the DOMException constructor, use a\n // regular error object on it instead.\n abortError = new Error('Aborted');\n abortError.name = 'AbortError';\n } // Return early if already aborted, thus avoiding making an HTTP request\n\n\n if (signal.aborted) {\n return Promise.reject(abortError);\n } // Turn an event into a promise, reject it once `abort` is dispatched\n\n\n var cancellation = new Promise(function (_, reject) {\n signal.addEventListener('abort', function () {\n return reject(abortError);\n }, {\n once: true\n });\n });\n\n if (init && init.signal) {\n // Never pass .signal to the native implementation when the polyfill has\n // been installed because if we're running on top of a browser with a\n // working native AbortController (i.e. the polyfill was installed due to\n // __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL being set), then passing our\n // fake AbortSignal to the native fetch will trigger:\n // TypeError: Failed to execute 'fetch' on 'Window': member signal is not of type AbortSignal.\n delete init.signal;\n } // Return the fastest promise (don't need to wait for request to finish)\n\n\n return Promise.race([cancellation, realFetch(input, init)]);\n }\n\n return realFetch(input, init);\n };\n\n return {\n fetch: abortableFetch,\n Request: Request\n };\n }\n\n (function (self) {\n\n if (!polyfillNeeded(self)) {\n return;\n }\n\n if (!self.fetch) {\n console.warn('fetch() is not available, cannot install abortcontroller-polyfill');\n return;\n }\n\n var _abortableFetch = abortableFetchDecorator(self),\n fetch = _abortableFetch.fetch,\n Request = _abortableFetch.Request;\n\n self.fetch = fetch;\n self.Request = Request;\n Object.defineProperty(self, 'AbortController', {\n writable: true,\n enumerable: false,\n configurable: true,\n value: AbortController\n });\n Object.defineProperty(self, 'AbortSignal', {\n writable: true,\n enumerable: false,\n configurable: true,\n value: AbortSignal\n });\n })(typeof self !== 'undefined' ? self : global);\n\n}));\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.31.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.31.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys\n// of `null` prototype objects\nvar IE_BUG = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-create -- safe\n var O = Object.create(null);\n O[2] = 2;\n return !propertyIsEnumerable(O, 2);\n});\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","// abortcontroller-polyfill обеспечивает поддержку функциональности AbortController и метода fetch в старых браузерах (Chrome 66 и ниже)\r\nimport 'abortcontroller-polyfill/dist/polyfill-patch-fetch';\r\n\r\n// #region Chrome 49\r\nimport 'core-js/features/object/values';\r\nif (window.NodeList && !NodeList.prototype.forEach) {\r\n NodeList.prototype.forEach = function (callback, thisArg) {\r\n thisArg = thisArg || window;\r\n for (var i = 0; i < this.length; i++) {\r\n callback.call(thisArg, this[i], i, this);\r\n }\r\n };\r\n}\r\n// #endregion","export default {\n // Options.jsx\n items_per_page: '/ halaman',\n jump_to: 'Menuju',\n jump_to_confirm: 'konfirmasi',\n page: 'Halaman',\n // Pagination.jsx\n prev_page: 'Halaman Sebelumnya',\n next_page: 'Halaman Berikutnya',\n prev_5: '5 Halaman Sebelumnya',\n next_5: '5 Halaman Berikutnya',\n prev_3: '3 Halaman Sebelumnya',\n next_3: '3 Halaman Berikutnya',\n page_size: 'ukuran halaman'\n};","var locale = {\n locale: 'id_ID',\n today: 'Hari ini',\n now: 'Sekarang',\n backToToday: 'Kembali ke hari ini',\n ok: 'Baik',\n clear: 'Bersih',\n month: 'Bulan',\n year: 'Tahun',\n timeSelect: 'pilih waktu',\n dateSelect: 'pilih tanggal',\n weekSelect: 'Pilih satu minggu',\n monthSelect: 'Pilih satu bulan',\n yearSelect: 'Pilih satu tahun',\n decadeSelect: 'Pilih satu dekade',\n yearFormat: 'YYYY',\n dateFormat: 'D/M/YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Bulan sebelumnya (PageUp)',\n nextMonth: 'Bulan selanjutnya (PageDown)',\n previousYear: 'Tahun lalu (Control + kiri)',\n nextYear: 'Tahun selanjutnya (Kontrol + kanan)',\n previousDecade: 'Dekade terakhir',\n nextDecade: 'Dekade berikutnya',\n previousCentury: 'Abad terakhir',\n nextCentury: 'Abad berikutnya'\n};\nexport default locale;","var locale = {\n placeholder: 'Pilih waktu'\n};\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from \"rc-picker/es/locale/id_ID\";\nimport TimePickerLocale from '../../time-picker/locale/id_ID'; // Merge into a locale object\n\nvar locale = {\n lang: _extends({\n placeholder: 'Pilih tanggal',\n rangePlaceholder: ['Mulai tanggal', 'Tanggal akhir']\n }, CalendarLocale),\n timePickerLocale: _extends({}, TimePickerLocale)\n}; // All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;","import Pagination from \"rc-pagination/es/locale/id_ID\";\nimport Calendar from '../calendar/locale/id_ID';\nimport DatePicker from '../date-picker/locale/id_ID';\nimport TimePicker from '../time-picker/locale/id_ID';\nvar localeValues = {\n locale: 'id',\n Pagination: Pagination,\n DatePicker: DatePicker,\n TimePicker: TimePicker,\n Calendar: Calendar,\n Table: {\n filterTitle: 'Saring',\n filterConfirm: 'OK',\n filterReset: 'Hapus',\n selectAll: 'Pilih semua di halaman ini',\n selectInvert: 'Balikkan pilihan di halaman ini',\n sortTitle: 'Urutkan'\n },\n Modal: {\n okText: 'OK',\n cancelText: 'Batal',\n justOkText: 'OK'\n },\n Popconfirm: {\n okText: 'OK',\n cancelText: 'Batal'\n },\n Transfer: {\n titles: ['', ''],\n searchPlaceholder: 'Cari',\n itemUnit: 'item',\n itemsUnit: 'item'\n },\n Upload: {\n uploading: 'Mengunggah...',\n removeFile: 'Hapus file',\n uploadError: 'Kesalahan pengunggahan',\n previewFile: 'File pratinjau',\n downloadFile: 'Unduh berkas'\n },\n Empty: {\n description: 'Tidak ada data'\n }\n};\nexport default localeValues;","export default {\n // Options.jsx\n items_per_page: '/ сторінці',\n jump_to: 'Перейти',\n jump_to_confirm: 'підтвердити',\n page: '',\n // Pagination.jsx\n prev_page: 'Попередня сторінка',\n next_page: 'Наступна сторінка',\n prev_5: 'Попередні 5 сторінок',\n next_5: 'Наступні 5 сторінок',\n prev_3: 'Попередні 3 сторінки',\n next_3: 'Наступні 3 сторінки',\n page_size: 'Page Size'\n};","var locale = {\n locale: 'uk_UA',\n today: 'Сьогодні',\n now: 'Зараз',\n backToToday: 'Поточна дата',\n ok: 'OK',\n clear: 'Очистити',\n month: 'Місяць',\n year: 'Рік',\n timeSelect: 'Обрати час',\n dateSelect: 'Обрати дату',\n monthSelect: 'Обрати місяць',\n yearSelect: 'Обрати рік',\n decadeSelect: 'Обрати десятиріччя',\n yearFormat: 'YYYY',\n dateFormat: 'D-M-YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'D-M-YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Попередній місяць (PageUp)',\n nextMonth: 'Наступний місяць (PageDown)',\n previousYear: 'Попередній рік (Control + left)',\n nextYear: 'Наступний рік (Control + right)',\n previousDecade: 'Попереднє десятиріччя',\n nextDecade: 'Наступне десятиріччя',\n previousCentury: 'Попереднє століття',\n nextCentury: 'Наступне століття'\n};\nexport default locale;","var locale = {\n placeholder: 'Оберіть час'\n};\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from \"rc-picker/es/locale/uk_UA\";\nimport TimePickerLocale from '../../time-picker/locale/uk_UA'; // Merge into a locale object\n\nvar locale = {\n lang: _extends({\n placeholder: 'Оберіть дату',\n rangePlaceholder: ['Початкова дата', 'Кінцева дата']\n }, CalendarLocale),\n timePickerLocale: _extends({}, TimePickerLocale)\n}; // All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/uk_UA\";\nimport Calendar from '../calendar/locale/uk_UA';\nimport DatePicker from '../date-picker/locale/uk_UA';\nimport TimePicker from '../time-picker/locale/uk_UA';\nvar typeTemplate = '${label} не є типом ${type}';\nvar localeValues = {\n locale: 'uk',\n Pagination: Pagination,\n DatePicker: DatePicker,\n TimePicker: TimePicker,\n Calendar: Calendar,\n global: {\n placeholder: 'Будь ласка, оберіть'\n },\n Table: {\n filterTitle: 'Фільтрувати',\n filterConfirm: 'OK',\n filterReset: 'Скинути',\n filterEmptyText: 'Фільтри відсутні',\n filterCheckall: 'Обрати всі',\n filterSearchPlaceholder: 'Пошук у фільтрах',\n emptyText: 'Даних немає',\n selectAll: 'Обрати всі на сторінці',\n selectInvert: 'Інвертувати вибір',\n selectNone: 'Очистити вибір',\n selectionAll: 'Обрати всі',\n sortTitle: 'Сортувати',\n expand: 'Розгорнути рядок',\n collapse: 'Згорнути рядок',\n triggerDesc: 'Сортувати за спаданням',\n triggerAsc: 'Сортувати за зростанням',\n cancelSort: 'Відмінити сортування'\n },\n Modal: {\n okText: 'Гаразд',\n cancelText: 'Скасувати',\n justOkText: 'Гаразд'\n },\n Popconfirm: {\n okText: 'Гаразд',\n cancelText: 'Скасувати'\n },\n Transfer: {\n titles: ['', ''],\n searchPlaceholder: 'Введіть текст для пошуку',\n itemUnit: 'елем.',\n itemsUnit: 'елем.',\n remove: 'Видалити',\n selectCurrent: 'Вибрати поточну сторінку',\n removeCurrent: 'Скасувати вибір на сторінці',\n selectAll: 'Вибрати всі дані',\n removeAll: 'Скасувати вибір',\n selectInvert: 'Інвертувати поточну сторінку'\n },\n Upload: {\n uploading: 'Завантаження ...',\n removeFile: 'Видалити файл',\n uploadError: 'Помилка завантаження',\n previewFile: 'Попередній перегляд файлу',\n downloadFile: 'Завантажити файл'\n },\n Empty: {\n description: 'Даних немає'\n },\n Icon: {\n icon: 'іконка'\n },\n Text: {\n edit: 'Редагувати',\n copy: 'Скопіювати',\n copied: 'Скопійовано',\n expand: 'Розширити'\n },\n PageHeader: {\n back: 'Назад'\n },\n Form: {\n optional: '(опціонально)',\n defaultValidateMessages: {\n \"default\": 'Помилка валідації для поля ${label}',\n required: 'Будь ласка, заповніть ${label}',\n \"enum\": 'Лише одне зі значень [${enum}] доступне для ${label}',\n whitespace: 'Значення у полі ${label} не може бути пробілом',\n date: {\n format: 'Не валідний формат дати у ${label}',\n parse: 'Значення ${label} не може бути приведене до дати',\n invalid: 'Не валідна дата у ${label}'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n \"boolean\": typeTemplate,\n integer: typeTemplate,\n \"float\": typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label} має містити ${len} символів',\n min: '${label} має містити не менш, ніж ${min} символів',\n max: '${label} має містити не більш, ніж ${max} символів',\n range: '${label} має містити ${min}-${max} символів'\n },\n number: {\n len: '${label} має дорівнювати ${len}',\n min: '${label} має бути не менш, ніж ${min}',\n max: '${label} має бути не більш, ніж ${max}',\n range: '${label} має бути в межах ${min}-${max}'\n },\n array: {\n len: '${label} має містити ${len} елементи',\n min: '${label} має містити не менш, ніж ${min} елементи',\n max: '${label} має містити не більш, ніж ${max} елементи',\n range: 'Кількість елементів в ${label} має бути в межах ${min}-${max}'\n },\n pattern: {\n mismatch: '${label} не відповідає шаблону ${pattern}'\n }\n }\n },\n Image: {\n preview: 'Попередній перегляд'\n }\n};\nexport default localeValues;","export default {\n // Options.jsx\n items_per_page: '/ página',\n jump_to: 'Ir a',\n jump_to_confirm: 'confirmar',\n page: 'Página',\n // Pagination.jsx\n prev_page: 'Página anterior',\n next_page: 'Página siguiente',\n prev_5: '5 páginas previas',\n next_5: '5 páginas siguientes',\n prev_3: '3 páginas previas',\n next_3: '3 páginas siguientes',\n page_size: 'tamaño de página'\n};","var locale = {\n locale: 'es_ES',\n today: 'Hoy',\n now: 'Ahora',\n backToToday: 'Volver a hoy',\n ok: 'Aceptar',\n clear: 'Limpiar',\n month: 'Mes',\n year: 'Año',\n timeSelect: 'Seleccionar hora',\n dateSelect: 'Seleccionar fecha',\n monthSelect: 'Elegir un mes',\n yearSelect: 'Elegir un año',\n decadeSelect: 'Elegir una década',\n yearFormat: 'YYYY',\n dateFormat: 'D/M/YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Mes anterior (PageUp)',\n nextMonth: 'Mes siguiente (PageDown)',\n previousYear: 'Año anterior (Control + left)',\n nextYear: 'Año siguiente (Control + right)',\n previousDecade: 'Década anterior',\n nextDecade: 'Década siguiente',\n previousCentury: 'Siglo anterior',\n nextCentury: 'Siglo siguiente'\n};\nexport default locale;","var locale = {\n placeholder: 'Seleccionar hora'\n};\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from \"rc-picker/es/locale/es_ES\";\nimport TimePickerLocale from '../../time-picker/locale/es_ES'; // Merge into a locale object\n\nvar locale = {\n lang: _extends({\n placeholder: 'Seleccionar fecha',\n rangePlaceholder: ['Fecha inicial', 'Fecha final']\n }, CalendarLocale),\n timePickerLocale: _extends({}, TimePickerLocale)\n}; // All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/es_ES\";\nimport Calendar from '../calendar/locale/es_ES';\nimport DatePicker from '../date-picker/locale/es_ES';\nimport TimePicker from '../time-picker/locale/es_ES';\nvar typeTemplate = '${label} no es un ${type} válido';\nvar localeValues = {\n locale: 'es',\n Pagination: Pagination,\n DatePicker: DatePicker,\n TimePicker: TimePicker,\n Calendar: Calendar,\n global: {\n placeholder: 'Seleccione'\n },\n Table: {\n filterTitle: 'Filtrar menú',\n filterConfirm: 'Aceptar',\n filterReset: 'Reiniciar',\n filterEmptyText: 'Sin filtros',\n filterCheckall: 'Seleccionar todo',\n filterSearchPlaceholder: 'Buscar en filtros',\n emptyText: 'Sin datos',\n selectAll: 'Seleccionar todo',\n selectInvert: 'Invertir selección',\n selectNone: 'Vacíe todo',\n selectionAll: 'Seleccionar todos los datos',\n sortTitle: 'Ordenar',\n expand: 'Expandir fila',\n collapse: 'Colapsar fila',\n triggerDesc: 'Click para ordenar en orden descendente',\n triggerAsc: 'Click para ordenar en orden ascendente',\n cancelSort: 'Click para cancelar ordenamiento'\n },\n Modal: {\n okText: 'Aceptar',\n cancelText: 'Cancelar',\n justOkText: 'Aceptar'\n },\n Popconfirm: {\n okText: 'Aceptar',\n cancelText: 'Cancelar'\n },\n Transfer: {\n titles: ['', ''],\n searchPlaceholder: 'Buscar aquí',\n itemUnit: 'elemento',\n itemsUnit: 'elementos',\n remove: 'Eliminar',\n selectCurrent: 'Seleccionar página actual',\n removeCurrent: 'Remover página actual',\n selectAll: 'Seleccionar todos los datos',\n removeAll: 'Eliminar todos los datos',\n selectInvert: 'Invertir página actual'\n },\n Upload: {\n uploading: 'Subiendo...',\n removeFile: 'Eliminar archivo',\n uploadError: 'Error al subir el archivo',\n previewFile: 'Vista previa',\n downloadFile: 'Descargar archivo'\n },\n Empty: {\n description: 'No hay datos'\n },\n Icon: {\n icon: 'ícono'\n },\n Text: {\n edit: 'Editar',\n copy: 'Copiar',\n copied: 'Copiado',\n expand: 'Expandir'\n },\n PageHeader: {\n back: 'Volver'\n },\n Form: {\n optional: '(opcional)',\n defaultValidateMessages: {\n \"default\": 'Error de validación del campo ${label}',\n required: 'Por favor ingresar ${label}',\n \"enum\": '${label} debe ser uno de [${enum}]',\n whitespace: '${label} no puede ser un carácter en blanco',\n date: {\n format: 'El formato de fecha de ${label} es inválido',\n parse: '${label} no se puede convertir a una fecha',\n invalid: '${label} es una fecha inválida'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n \"boolean\": typeTemplate,\n integer: typeTemplate,\n \"float\": typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label} debe tener ${len} caracteres',\n min: '${label} debe tener al menos ${min} caracteres',\n max: '${label} debe tener hasta ${max} caracteres',\n range: '${label} debe tener entre ${min}-${max} caracteres'\n },\n number: {\n len: '${label} debe ser igual a ${len}',\n min: '${label} valor mínimo es ${min}',\n max: '${label} valor máximo es ${max}',\n range: '${label} debe estar entre ${min}-${max}'\n },\n array: {\n len: 'Debe ser ${len} ${label}',\n min: 'Al menos ${min} ${label}',\n max: 'A lo mucho ${max} ${label}',\n range: 'El monto de ${label} debe estar entre ${min}-${max}'\n },\n pattern: {\n mismatch: '${label} no coincide con el patrón ${pattern}'\n }\n }\n },\n Image: {\n preview: 'Previsualización'\n }\n};\nexport default localeValues;","export default {\n // Options.jsx\n items_per_page: '條/頁',\n jump_to: '跳至',\n jump_to_confirm: '確定',\n page: '頁',\n // Pagination.jsx\n prev_page: '上一頁',\n next_page: '下一頁',\n prev_5: '向前 5 頁',\n next_5: '向後 5 頁',\n prev_3: '向前 3 頁',\n next_3: '向後 3 頁',\n page_size: '頁碼'\n};","var locale = {\n locale: 'zh_TW',\n today: '今天',\n now: '此刻',\n backToToday: '返回今天',\n ok: '確定',\n timeSelect: '選擇時間',\n dateSelect: '選擇日期',\n weekSelect: '選擇周',\n clear: '清除',\n month: '月',\n year: '年',\n previousMonth: '上個月 (翻頁上鍵)',\n nextMonth: '下個月 (翻頁下鍵)',\n monthSelect: '選擇月份',\n yearSelect: '選擇年份',\n decadeSelect: '選擇年代',\n yearFormat: 'YYYY年',\n dayFormat: 'D日',\n dateFormat: 'YYYY年M月D日',\n dateTimeFormat: 'YYYY年M月D日 HH時mm分ss秒',\n previousYear: '上一年 (Control鍵加左方向鍵)',\n nextYear: '下一年 (Control鍵加右方向鍵)',\n previousDecade: '上一年代',\n nextDecade: '下一年代',\n previousCentury: '上一世紀',\n nextCentury: '下一世紀'\n};\nexport default locale;","var locale = {\n placeholder: '請選擇時間'\n};\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from \"rc-picker/es/locale/zh_TW\";\nimport TimePickerLocale from '../../time-picker/locale/zh_TW'; // 统一合并为完整的 Locale\n\nvar locale = {\n lang: _extends({\n placeholder: '請選擇日期',\n yearPlaceholder: '請選擇年份',\n quarterPlaceholder: '請選擇季度',\n monthPlaceholder: '請選擇月份',\n weekPlaceholder: '請選擇周',\n rangePlaceholder: ['開始日期', '結束日期'],\n rangeYearPlaceholder: ['開始年份', '結束年份'],\n rangeMonthPlaceholder: ['開始月份', '結束月份'],\n rangeQuarterPlaceholder: ['開始季度', '結束季度'],\n rangeWeekPlaceholder: ['開始周', '結束周']\n }, CalendarLocale),\n timePickerLocale: _extends({}, TimePickerLocale)\n};\nlocale.lang.ok = '確 定'; // All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/zh_TW\";\nimport Calendar from '../calendar/locale/zh_TW';\nimport DatePicker from '../date-picker/locale/zh_TW';\nimport TimePicker from '../time-picker/locale/zh_TW';\nvar typeTemplate = '${label}不是一個有效的${type}';\nvar localeValues = {\n locale: 'zh-tw',\n Pagination: Pagination,\n DatePicker: DatePicker,\n TimePicker: TimePicker,\n Calendar: Calendar,\n global: {\n placeholder: '請選擇'\n },\n Table: {\n filterTitle: '篩選器',\n filterConfirm: '確定',\n filterReset: '重置',\n filterEmptyText: '無篩選項',\n selectAll: '全部選取',\n selectInvert: '反向選取',\n selectNone: '清空所有',\n selectionAll: '全選所有',\n sortTitle: '排序',\n expand: '展開行',\n collapse: '關閉行',\n triggerDesc: '點擊降序',\n triggerAsc: '點擊升序',\n cancelSort: '取消排序'\n },\n Modal: {\n okText: '確定',\n cancelText: '取消',\n justOkText: '知道了'\n },\n Popconfirm: {\n okText: '確定',\n cancelText: '取消'\n },\n Transfer: {\n searchPlaceholder: '搜尋資料',\n itemUnit: '項目',\n itemsUnit: '項目',\n remove: '删除',\n selectCurrent: '全選當頁',\n removeCurrent: '删除當頁',\n selectAll: '全選所有',\n removeAll: '删除全部',\n selectInvert: '反選當頁'\n },\n Upload: {\n uploading: '正在上傳...',\n removeFile: '刪除檔案',\n uploadError: '上傳失敗',\n previewFile: '檔案預覽',\n downloadFile: '下载文件'\n },\n Empty: {\n description: '無此資料'\n },\n Icon: {\n icon: '圖標'\n },\n Text: {\n edit: '編輯',\n copy: '複製',\n copied: '複製成功',\n expand: '展開'\n },\n PageHeader: {\n back: '返回'\n },\n Form: {\n optional: '(可選)',\n defaultValidateMessages: {\n \"default\": '字段驗證錯誤${label}',\n required: '請輸入${label}',\n \"enum\": '${label}必須是其中一個[${enum}]',\n whitespace: '${label}不能為空字符',\n date: {\n format: '${label}日期格式無效',\n parse: '${label}不能轉換為日期',\n invalid: '${label}是一個無效日期'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n \"boolean\": typeTemplate,\n integer: typeTemplate,\n \"float\": typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label}須為${len}個字符',\n min: '${label}最少${min}個字符',\n max: '${label}最多${max}個字符',\n range: '${label}須在${min}-${max}字符之間'\n },\n number: {\n len: '${label}必須等於${len}',\n min: '${label}最小值為${min}',\n max: '${label}最大值為${max}',\n range: '${label}須在${min}-${max}之間'\n },\n array: {\n len: '須為${len}個${label}',\n min: '最少${min}個${label}',\n max: '最多${max}個${label}',\n range: '${label}數量須在${min}-${max}之間'\n },\n pattern: {\n mismatch: '${label}與模式不匹配${pattern}'\n }\n }\n },\n Image: {\n preview: '預覽'\n }\n};\nexport default localeValues;","var locale = {\n locale: 'zh_CN',\n today: '今天',\n now: '此刻',\n backToToday: '返回今天',\n ok: '确定',\n timeSelect: '选择时间',\n dateSelect: '选择日期',\n weekSelect: '选择周',\n clear: '清除',\n month: '月',\n year: '年',\n previousMonth: '上个月 (翻页上键)',\n nextMonth: '下个月 (翻页下键)',\n monthSelect: '选择月份',\n yearSelect: '选择年份',\n decadeSelect: '选择年代',\n yearFormat: 'YYYY年',\n dayFormat: 'D日',\n dateFormat: 'YYYY年M月D日',\n dateTimeFormat: 'YYYY年M月D日 HH时mm分ss秒',\n previousYear: '上一年 (Control键加左方向键)',\n nextYear: '下一年 (Control键加右方向键)',\n previousDecade: '上一年代',\n nextDecade: '下一年代',\n previousCentury: '上一世纪',\n nextCentury: '下一世纪'\n};\nexport default locale;","var locale = {\n placeholder: '请选择时间',\n rangePlaceholder: ['开始时间', '结束时间']\n};\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from \"rc-picker/es/locale/zh_CN\";\nimport TimePickerLocale from '../../time-picker/locale/zh_CN'; // 统一合并为完整的 Locale\n\nvar locale = {\n lang: _extends({\n placeholder: '请选择日期',\n yearPlaceholder: '请选择年份',\n quarterPlaceholder: '请选择季度',\n monthPlaceholder: '请选择月份',\n weekPlaceholder: '请选择周',\n rangePlaceholder: ['开始日期', '结束日期'],\n rangeYearPlaceholder: ['开始年份', '结束年份'],\n rangeMonthPlaceholder: ['开始月份', '结束月份'],\n rangeQuarterPlaceholder: ['开始季度', '结束季度'],\n rangeWeekPlaceholder: ['开始周', '结束周']\n }, CalendarLocale),\n timePickerLocale: _extends({}, TimePickerLocale)\n}; // should add whitespace between char in Button\n\nlocale.lang.ok = '确定'; // All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/zh_CN\";\nimport Calendar from '../calendar/locale/zh_CN';\nimport DatePicker from '../date-picker/locale/zh_CN';\nimport TimePicker from '../time-picker/locale/zh_CN';\nvar typeTemplate = '${label}不是一个有效的${type}';\nvar localeValues = {\n locale: 'zh-cn',\n Pagination: Pagination,\n DatePicker: DatePicker,\n TimePicker: TimePicker,\n Calendar: Calendar,\n // locales for all components\n global: {\n placeholder: '请选择'\n },\n Table: {\n filterTitle: '筛选',\n filterConfirm: '确定',\n filterReset: '重置',\n filterEmptyText: '无筛选项',\n filterCheckall: '全选',\n filterSearchPlaceholder: '在筛选项中搜索',\n selectAll: '全选当页',\n selectInvert: '反选当页',\n selectNone: '清空所有',\n selectionAll: '全选所有',\n sortTitle: '排序',\n expand: '展开行',\n collapse: '关闭行',\n triggerDesc: '点击降序',\n triggerAsc: '点击升序',\n cancelSort: '取消排序'\n },\n Modal: {\n okText: '确定',\n cancelText: '取消',\n justOkText: '知道了'\n },\n Popconfirm: {\n cancelText: '取消',\n okText: '确定'\n },\n Transfer: {\n searchPlaceholder: '请输入搜索内容',\n itemUnit: '项',\n itemsUnit: '项',\n remove: '删除',\n selectCurrent: '全选当页',\n removeCurrent: '删除当页',\n selectAll: '全选所有',\n removeAll: '删除全部',\n selectInvert: '反选当页'\n },\n Upload: {\n uploading: '文件上传中',\n removeFile: '删除文件',\n uploadError: '上传错误',\n previewFile: '预览文件',\n downloadFile: '下载文件'\n },\n Empty: {\n description: '暂无数据'\n },\n Icon: {\n icon: '图标'\n },\n Text: {\n edit: '编辑',\n copy: '复制',\n copied: '复制成功',\n expand: '展开'\n },\n PageHeader: {\n back: '返回'\n },\n Form: {\n optional: '(可选)',\n defaultValidateMessages: {\n \"default\": '字段验证错误${label}',\n required: '请输入${label}',\n \"enum\": '${label}必须是其中一个[${enum}]',\n whitespace: '${label}不能为空字符',\n date: {\n format: '${label}日期格式无效',\n parse: '${label}不能转换为日期',\n invalid: '${label}是一个无效日期'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n \"boolean\": typeTemplate,\n integer: typeTemplate,\n \"float\": typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label}须为${len}个字符',\n min: '${label}最少${min}个字符',\n max: '${label}最多${max}个字符',\n range: '${label}须在${min}-${max}字符之间'\n },\n number: {\n len: '${label}必须等于${len}',\n min: '${label}最小值为${min}',\n max: '${label}最大值为${max}',\n range: '${label}须在${min}-${max}之间'\n },\n array: {\n len: '须为${len}个${label}',\n min: '最少${min}个${label}',\n max: '最多${max}个${label}',\n range: '${label}数量须在${min}-${max}之间'\n },\n pattern: {\n mismatch: '${label}与模式不匹配${pattern}'\n }\n }\n },\n Image: {\n preview: '预览'\n }\n};\nexport default localeValues;","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\nimport moment from '../moment';\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n}\nvar monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n];\n\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\nexport default moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n});\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\nimport moment from '../moment';\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n}\nfunction weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n}\nfunction processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n}\n\nexport default moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n});\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\nimport moment from '../moment';\n\nexport default moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n});\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\nimport moment from '../moment';\n\nvar monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\nexport default moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n});\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\nimport moment from '../moment';\n\nexport default moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n});\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\nimport moment from '../moment';\n\nexport default moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n});\n","import { ContactCourseFilter } from '@axl/accel-framework/models';\r\n\r\nexport default class StudentCourseFilter extends ContactCourseFilter {\r\n constructor(filter?: Partial) {\r\n super(filter);\r\n if (filter) this.update(filter);\r\n }\r\n\r\n update(changes: Partial) {\r\n super.update(changes);\r\n }\r\n}\r\n","import { action, observable } from 'mobx';\r\nimport { Contact } from '@axl/accel-framework/models';\r\nimport { StudentSession } from 'models';\r\n\r\nexport declare type StudentTag = {\r\n id: string;\r\n name: string;\r\n}\r\nexport declare type StudentGroup = {\r\n id: string;\r\n name: string;\r\n}\r\nexport default class Student extends Contact {\r\n constructor(student?: Partial) {\r\n super(student);\r\n if (student)\r\n this.update(student);\r\n }\r\n\r\n @observable session: StudentSession;\r\n @observable tags: StudentTag[];\r\n @observable groups: StudentGroup[];\r\n @observable bonusBalance: number;\r\n\r\n static fromJson(json: any) {\r\n return new Student({\r\n ...Contact.fromJson(json),\r\n session: json.session ? StudentSession.fromJson(json.session) : undefined,\r\n tags: json.tags ?? [],\r\n groups: json.groups ?? [],\r\n bonusBalance: json.bonusBalance ?? 0\r\n });\r\n }\r\n\r\n @action update(student: Partial) {\r\n super.update(student);\r\n }\r\n}","import { Entity } from '@axl/accel-framework/models';\r\nimport { isEmpty } from 'lodash';\r\nimport { observable, action, computed } from 'mobx';\r\n\r\nexport default class StudentSession extends Entity {\r\n constructor(session?: Partial) {\r\n super(session);\r\n if (session) this.update(session);\r\n }\r\n\r\n @observable adminId: string;\r\n @observable expiredDate?: Date;\r\n\r\n static fromJson(json: any): StudentSession {\r\n return new StudentSession({\r\n ...json,\r\n expiredDate: json.expiredDate ? new Date(json.expiredDate) : undefined\r\n });\r\n }\r\n\r\n @action update(item: Partial) {\r\n super.update(item);\r\n }\r\n\r\n @computed get isAdmin() {\r\n return !isEmpty(this.adminId);\r\n }\r\n}","import { action } from \"mobx\";\r\nimport { School as BaseSchool, SchoolProfileSettings } from \"@axl/accel-framework/models\";\r\n\r\nexport default class School extends BaseSchool {\r\n constructor(settings: Partial) {\r\n super();\r\n if (settings)\r\n this.update(settings);\r\n }\r\n\r\n isLocked: boolean;\r\n\r\n @action\r\n update(entity: Partial) {\r\n super.update(entity);\r\n }\r\n\r\n static fromJson(json: any): School {\r\n return new School({\r\n ...BaseSchool.fromJson(json),\r\n // TODO rename response model to admin naming 'StudentProfileSettings'\r\n profileSettings: SchoolProfileSettings.fromJson(json.profileSettings),\r\n isLocked: json.isLocked,\r\n });\r\n }\r\n}","import { observable, action, computed } from 'mobx';\r\nimport { ContactCert, Entity } from '@axl/accel-framework/models';\r\nimport { StudentCourse } from 'models';\r\n\r\nexport default class SchoolCourse extends Entity {\r\n constructor(course?: Partial) {\r\n super(course);\r\n if (course) this.update(course);\r\n }\r\n\r\n @observable title: string;\r\n @observable shortDescription: string;\r\n @observable freeAccess: boolean;\r\n @observable isCompleteAnyCourseRequirement: boolean;\r\n @observable primaryImageCloudKey: string;\r\n @observable studentCourse?: StudentCourse;\r\n @observable studentAccessDate?: Date;\r\n @observable studentHasAccess: boolean;\r\n @observable categories: string[];\r\n @observable requirements: string[];\r\n @observable cert: ContactCert | null;\r\n\r\n @computed get hasRequirements() {\r\n return this.requirements && this.requirements.length > 0;\r\n }\r\n\r\n @computed get hasCourseItem() {\r\n return this.studentCourse && this.studentCourse.currentCourseItem;\r\n }\r\n\r\n static fromJson(json: any): SchoolCourse {\r\n return new SchoolCourse({\r\n ...json,\r\n studentAccessDate: json.studentAccessDate ? new Date(json.studentAccessDate) : undefined,\r\n studentCourse: json.studentCourse ? StudentCourse.fromJson(json.studentCourse) : undefined,\r\n cert: json.cert ? ContactCert.fromJson(json.cert) : undefined,\r\n });\r\n }\r\n\r\n @action\r\n update(course: Partial, allowUndefined = false) {\r\n super.update(course, allowUndefined);\r\n }\r\n}\r\n\r\n","import { ContactCourse, Contact, Course, CourseItem } from '@axl/accel-framework/models';\r\nimport { action, computed, observable } from 'mobx';\r\nimport moment from 'moment';\r\n\r\nexport default class StudentCourse extends ContactCourse {\r\n constructor(item?: Partial) {\r\n super(item);\r\n if (item) this.update(item);\r\n }\r\n\r\n /**\r\n * sections excluded\r\n */\r\n totalItemCount: number;\r\n initialCourseItemId: string;\r\n @observable flowBeginDate?: moment.Moment;\r\n @observable accessBeginDate?: moment.Moment;\r\n @observable accessEndDate?: moment.Moment;\r\n @observable isSubscription: boolean;\r\n\r\n static fromJson(json: any): StudentCourse {\r\n return new StudentCourse({\r\n id: json.id,\r\n softDeleted: json.softDeleted,\r\n state: json.state,\r\n progress: json.progress,\r\n feedback: json.feedback,\r\n score: json.score,\r\n lastActivityDate: json.lastActivityDate ? new Date(json.lastActivityDate) : undefined,\r\n contact: json.student ? Contact.fromJson(json.student) : undefined,\r\n course: json.course ? Course.fromJson(json.course) : undefined,\r\n initialCourseItemId: json.currentCourseItem?.id,\r\n createdDate: json.createdDate ? new Date(json.createdDate) : undefined,\r\n updatedDate: json.updatedDate ? new Date(json.updatedDate) : undefined,\r\n beginDate: json.beginDate ? new Date(json.beginDate) : undefined,\r\n endDate: json.endDate ? new Date(json.endDate) : undefined,\r\n flowBeginDate: json.flowBeginDate ? moment(json.flowBeginDate) : undefined,\r\n accessBeginDate: json.accessBeginDate ? moment(json.accessBeginDate) : undefined,\r\n accessEndDate: json.accessEndDate ? moment(json.accessEndDate) : undefined,\r\n isSubscription: json.isSubscription ?? false,\r\n currentCourseItem: json.currentCourseItem ? CourseItem.fromJson(json.currentCourseItem) : undefined,\r\n });\r\n }\r\n\r\n @action\r\n update(studentCourse: Partial) {\r\n super.update(studentCourse);\r\n }\r\n\r\n @computed\r\n get isInFlow() {\r\n return this.flowBeginDate != null;\r\n }\r\n}\r\n","import { ContactCourse } from '@axl/accel-framework/models';\r\nimport { StudentCourseItemProgress } from 'models';\r\n\r\nexport default class StudentCourseProgress {\r\n constructor(progress?: Partial) {\r\n if (progress) Object.assign(this, progress);\r\n }\r\n\r\n courseItemId: string;\r\n contactCourse: ContactCourse;\r\n courseItemProgress: StudentCourseItemProgress;\r\n\r\n static fromJson(json: any): StudentCourseProgress {\r\n return new StudentCourseProgress({\r\n courseItemId: json.courseItemId,\r\n contactCourse: json.studentCourse ? ContactCourse.fromJson(json.studentCourse) : undefined,\r\n courseItemProgress: json.courseItemProgress ? StudentCourseItemProgress.fromJson(json.courseItemProgress) : undefined,\r\n });\r\n }\r\n}\r\n\r\n","import { action, observable, computed } from 'mobx';\r\nimport { Entity, SchoolContentItemProgressRating } from '@axl/accel-framework/models';\r\n\r\nexport declare type CourseItemProgressStatus = 'default' | 'opened';\r\nexport declare type CourseItemProgressTaskStatus = 'default' | 'started' | 'pending' | 'completed';\r\n\r\nexport class StudentCourseItemBaseProgress extends Entity {\r\n @observable beginDate: Date | null;\r\n @observable completeDate: Date | null;\r\n @observable numberUncheckedTasks: number = 0;\r\n @observable numberCorrectTasks: number = 0;\r\n @observable numberIncorrectTasks: number = 0;\r\n}\r\n\r\nexport default class StudentCourseItemProgress extends StudentCourseItemBaseProgress {\r\n constructor(progress?: Partial) {\r\n super(progress);\r\n if (progress) this.update(progress);\r\n }\r\n\r\n @observable precompleteDate: Date | null;\r\n @observable theoryStatus?: boolean;\r\n @observable testStatus?: boolean;\r\n @observable taskStatus?: CourseItemProgressTaskStatus;\r\n @observable status: CourseItemProgressStatus;\r\n @observable rating: SchoolContentItemProgressRating;\r\n\r\n @computed get theoryCompleted() {\r\n return this.theoryStatus == true;\r\n }\r\n @computed get testsCompleted() {\r\n return this.testStatus == true;\r\n }\r\n @computed get tasksCompleted() {\r\n return this.taskStatus == 'completed';\r\n }\r\n\r\n static fromJson(json: any): StudentCourseItemProgress {\r\n return new StudentCourseItemProgress({\r\n ...json,\r\n beginDate: new Date(json.beginDate),\r\n completeDate: json.completeDate ? new Date(json.completeDate) : null,\r\n precompleteDate: json.precompleteDate ? new Date(json.precompleteDate) : null,\r\n rating: json.rating ? SchoolContentItemProgressRating.fromJson(json.rating) : null,\r\n });\r\n }\r\n\r\n @action update(progress: Partial) {\r\n super.update(progress);\r\n }\r\n}\r\n\r\nexport class StudentCourseSectionProgress extends StudentCourseItemBaseProgress {\r\n constructor(progress?: Partial) {\r\n super();\r\n if (progress) this.update(progress);\r\n }\r\n\r\n @action update(progress: Partial) {\r\n super.update(progress);\r\n }\r\n}","//! moment-timezone.js\n//! version : 0.5.43\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.43\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz._countries\t= countries;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","import { observable, action, computed } from 'mobx';\r\nimport { AccelFile, Course, CourseItemType, Entity, CoursePlan } from '@axl/accel-framework/models';\r\nimport { StudentCourseItemTest, StudentCourseItemTask, StudentCourse, StudentCourseItemProgress } from 'models';\r\nimport { FlowTimeDelayCondition, RegularTimeDelayCondition, CourseItemAvailability } from '@axl/accel-framework/models/course/item/course-item';\r\nimport { StudentCourseItemBaseProgress, StudentCourseSectionProgress } from './student-course-item-progress/student-course-item-progress';\r\nimport type { TimeMeasure, Timezone } from '@axl/accel-framework/models';\r\nimport { isNil } from 'lodash';\r\nimport { TimeSpan } from '@axl/accel-framework/utils';\r\nimport { DayOfWeek } from '@axl/accel-framework/enums';\r\nimport moment from 'moment-timezone';\r\nimport { dayOfWeekMap } from '@axl/accel-framework/enums/DayOfWeek';\r\n\r\n/**\r\n * DO NOT FORGET TO UPDATE TYPE IN SCHOOL SDK client\\site\\src\\school-sdk\\index.ts\r\n */\r\nexport declare type CourseItemTab = 'theory' | 'tests' | 'tasks' | 'rating';\r\nexport declare type CourseItemAction = 'select' | 'complete' | 'reset' | 'block' | 'unblock';\r\n\r\nexport type StudentCourseItemAvailability = {\r\n result: boolean,\r\n isSection?: boolean,\r\n willBeAvailableOn?: moment.Moment,\r\n willBeAvailableIf?: { in?: TimeSpan, item?: StudentCourseItem, condition: 'afterStart' | 'afterComplete' };\r\n needToCompletePrevStep?: boolean,\r\n needToCompletePrevSteps?: boolean,\r\n blockingCourseItem?: StudentCourseItem,\r\n requiredPlans?: string[]\r\n}\r\n\r\nexport default class StudentCourseItem extends Entity {\r\n constructor(item?: Partial) {\r\n super(item);\r\n this._tab = this.defaultTab;\r\n if (item) this.update(item);\r\n }\r\n\r\n @observable title: string;\r\n @observable position: number;\r\n @observable isDraft: boolean;\r\n @observable isOptional: boolean;\r\n @observable type: CourseItemType;\r\n @observable comment: string;\r\n\r\n // restrictions and availability\r\n @observable allowComments: boolean;\r\n @observable showComments: boolean; // TODO\r\n @observable disableCommentModeration: boolean; // TODO\r\n @observable ratingEnabled: boolean;\r\n @observable ratingRequired: boolean;\r\n @observable ratingCommentRequired: boolean;\r\n @observable availability: CourseItemAvailability;\r\n\r\n @observable disableTimeLimits: boolean;\r\n @observable regularTimeDelayActive: boolean;\r\n @observable regularTimeDelay: number;\r\n @observable regularTimeDelayCondition: RegularTimeDelayCondition;\r\n @observable regularTimeDelayMeasureType: TimeMeasure;\r\n @observable regularWaitUntilTimeActive: boolean;\r\n @observable regularWaitUntilTime: moment.Moment;\r\n @observable regularWaitUntilTimeDaysOfWeekActive: boolean;\r\n @observable regularWaitUntilDaysOfWeek: DayOfWeek[];\r\n\r\n @observable flowTimeDelayActive: boolean;\r\n @observable flowTimeDelay: number;\r\n @observable flowTimeDelayCondition: FlowTimeDelayCondition;\r\n @observable flowTimeDelayMeasureType: TimeMeasure;\r\n @observable flowWaitUntilTimeActive: boolean;\r\n @observable flowWaitUntilTime: moment.Moment;\r\n @observable flowWaitUntilTimeDaysOfWeekActive: boolean;\r\n @observable flowWaitUntilDaysOfWeek: DayOfWeek[];\r\n\r\n @observable dateDelayActive: boolean;\r\n @observable dateDelay: moment.Moment;\r\n\r\n @observable preventCopingAndSelectingText: boolean; // TODO\r\n\r\n @observable designHTMLPublished: string;\r\n @observable designStylePublished: string;\r\n\r\n @observable blockCourseUntilTasksApproved: boolean;\r\n @observable theoryVisible: boolean;\r\n @observable tasksVisible: boolean;\r\n @observable testsVisible: boolean;\r\n @computed get ratingVisible(): boolean {\r\n return this.allowComments || this.ratingEnabled;\r\n }\r\n\r\n @observable score: number; // TODO\r\n\r\n @observable files: AccelFile[];\r\n\r\n @observable progress: StudentCourseItemProgress;\r\n @observable tests: StudentCourseItemTest[] = [];\r\n @observable tasks: StudentCourseItemTask[] = [];\r\n @observable requiredPlans: string[];\r\n\r\n @observable currentTest: StudentCourseItemTest | null = null;\r\n\r\n @observable parent: StudentCourseItem | null;\r\n @observable parentItemId?: string | null;\r\n\r\n @observable children: StudentCourseItem[] = [];\r\n\r\n @observable previousItem: StudentCourseItem | null;\r\n @observable nextItem: StudentCourseItem | null;\r\n @observable studentCourse: StudentCourse;\r\n @observable course: Course;\r\n\r\n @observable fetching: boolean;\r\n\r\n /** \r\n * position regarding all steps\r\n */\r\n globalPosition: number;\r\n /**\r\n * level of the item in the tree\r\n */\r\n level: number;\r\n\r\n schoolTimezone: Timezone;\r\n\r\n\r\n /**\r\n * returns the nearest previous section on the same level is exists\r\n */\r\n @computed get previousSection(): StudentCourseItem | null {\r\n let prevItemSection = this.previousItem?.parent ?? null;\r\n while (prevItemSection != null) {\r\n if (prevItemSection.parent?.id === this.parent?.id)\r\n return prevItemSection;\r\n prevItemSection = prevItemSection.parent ?? null;\r\n }\r\n return null;\r\n }\r\n\r\n @computed get firstAvailableTab() {\r\n if (this.theoryVisible) return 'theory';\r\n if (this.testsVisible) return 'tests';\r\n if (this.tasksVisible) return 'tasks';\r\n if (this.ratingVisible) return 'rating';\r\n return 'theory';\r\n }\r\n\r\n @computed get itemCount() {\r\n if (this.type == CourseItemType.Step) return 0;\r\n let count = this.children.length;\r\n for (const child of this.children) {\r\n count += child.itemCount;\r\n }\r\n return count;\r\n }\r\n\r\n @computed get itemCompletedCount() {\r\n if (this.type == CourseItemType.Step) return 0;\r\n let count = this.children.filter(x => x.completed).length;\r\n for (const child of this.children) {\r\n count += child.itemCompletedCount;\r\n }\r\n return count;\r\n }\r\n\r\n @computed get stepCount() {\r\n if (this.type == CourseItemType.Step) return 0;\r\n let count = this.children.count(x => x.type == CourseItemType.Step);\r\n for (const child of this.children) {\r\n count += child.stepCount;\r\n }\r\n return count;\r\n }\r\n\r\n @computed get taskCount() {\r\n if (this.type == CourseItemType.Step)\r\n return this.tasks.length;\r\n return this.children.reduce((a, b) => a + b.taskCount, 0);\r\n }\r\n\r\n @computed get taskCompletedCount() {\r\n if (this.type == CourseItemType.Step)\r\n return this.progress?.numberCorrectTasks ?? 0;\r\n return this.children.reduce((a, b) => a + b.taskCompletedCount, 0);\r\n }\r\n\r\n @computed get sectionProgress(): StudentCourseSectionProgress {\r\n const p = new StudentCourseSectionProgress();\r\n let isEveryChildCompleted = true;\r\n // use accessibleChildren to skip prohibited items due to plan access\r\n for (const child of this.accessibleChildren) {\r\n const progress: StudentCourseItemBaseProgress | undefined =\r\n child.type == CourseItemType.Section\r\n ? child.sectionProgress\r\n : child.progress;\r\n\r\n if (!progress) {\r\n isEveryChildCompleted = false;\r\n p.completeDate = null;\r\n continue;\r\n }\r\n\r\n p.numberCorrectTasks += progress.numberCorrectTasks;\r\n p.numberIncorrectTasks += progress.numberIncorrectTasks;\r\n p.numberUncheckedTasks += progress.numberUncheckedTasks;\r\n\r\n if (isEveryChildCompleted) {\r\n if (!progress.completeDate) {\r\n isEveryChildCompleted = false;\r\n p.completeDate = null;\r\n }\r\n else if (!p.completeDate || p.completeDate < progress.completeDate)\r\n p.completeDate = progress.completeDate;\r\n }\r\n\r\n if (progress.beginDate) {\r\n if (!p.beginDate || p.beginDate > progress.beginDate)\r\n p.beginDate = progress.beginDate;\r\n }\r\n }\r\n return p;\r\n }\r\n\r\n @computed get ratingCompleted() {\r\n if (!this.ratingEnabled || !this.ratingRequired) return true;\r\n // has required rating\r\n if (this.progress?.rating == null) return false;\r\n if (!this.ratingCommentRequired)\r\n return true;\r\n // comment required\r\n return this.progress.rating.comment?.length > 0;\r\n }\r\n\r\n @computed get completed(): boolean {\r\n if (this.type == CourseItemType.Step)\r\n return this.progress?.completeDate != null;\r\n return this.sectionProgress?.completeDate != null;\r\n }\r\n\r\n @computed get beginDate(): Date | null {\r\n if (this.type == CourseItemType.Step)\r\n return this.progress?.beginDate;\r\n return this.sectionProgress?.beginDate;\r\n }\r\n\r\n @computed get completeDate(): Date | null {\r\n if (this.type == CourseItemType.Step)\r\n return this.progress?.completeDate;\r\n return this.sectionProgress?.completeDate;\r\n }\r\n\r\n @computed get precompleted() { return this.progress?.precompleteDate != null; }\r\n @computed get fullPosition() {\r\n let position = '';\r\n let section = this.parent;\r\n while (section != null) {\r\n position += `${section.position}.`;\r\n section = section.parent;\r\n }\r\n position += this.position;\r\n return position;\r\n }\r\n\r\n @observable private _tab: CourseItemTab;\r\n @computed get tab() { return this._tab; }\r\n set tab(value: CourseItemTab) {\r\n switch (value) {\r\n case 'theory': {\r\n if (this.theoryVisible) {\r\n this._tab = 'theory';\r\n return;\r\n }\r\n break;\r\n }\r\n case 'tests': {\r\n if (this.testsVisible) {\r\n this._tab = 'tests';\r\n return;\r\n }\r\n break;\r\n }\r\n case 'tasks': {\r\n if (this.tasksVisible) {\r\n this._tab = 'tasks';\r\n return;\r\n }\r\n break;\r\n }\r\n case 'rating': {\r\n if (this.allowComments || this.ratingEnabled) {\r\n this._tab = 'rating';\r\n return;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n @computed get defaultTab(): CourseItemTab {\r\n if (this.progress == null) return 'theory';\r\n if (this.theoryVisible && !this.progress.theoryCompleted) return 'theory';\r\n else if (this.testsVisible && !this.progress.testsCompleted) return 'tests'\r\n else if (this.tasksVisible && !this.progress.tasksCompleted) return 'tasks';\r\n return 'theory';\r\n }\r\n\r\n @computed get canSelect() { return this.courseItemAvailability.result; }\r\n\r\n @computed get previousRequiredItem(): StudentCourseItem | null {\r\n if (this.previousAccessibleItem == null)\r\n return null;\r\n if (this.previousAccessibleItem.canSkip)\r\n return this.previousAccessibleItem.previousRequiredItem;\r\n return this.previousAccessibleItem;\r\n }\r\n\r\n @computed get previousAccessibleItem(): StudentCourseItem | null {\r\n if (this.previousItem == null)\r\n return null;\r\n if (!this.previousItem.hasPlanAccess)\r\n return this.previousItem.previousAccessibleItem;\r\n return this.previousItem;\r\n }\r\n\r\n /**\r\n * returns the next item regarding to plan access (skip unavalaible items)\r\n */\r\n @computed get nextAccessibleItem(): StudentCourseItem | null {\r\n if (this.nextItem == null)\r\n return null;\r\n if (!this.nextItem.hasPlanAccess)\r\n return this.nextItem.nextAccessibleItem;\r\n return this.nextItem;\r\n }\r\n\r\n @computed get hasAccessibleItems(): boolean {\r\n if (this.type != CourseItemType.Section || this.children.length == 0)\r\n return false;\r\n for (const child of this.children) {\r\n // skip unavaialble steps & sections (we can skip section due to strict inherited access to all children)\r\n if (!child.hasPlanAccess) continue;\r\n // no plan limit => if step available OR section has available step inside (recursion) return true\r\n if (child.type == CourseItemType.Step || child.hasAccessibleItems)\r\n return true;\r\n }\r\n // no avaialble steps\r\n return false;\r\n }\r\n\r\n /**\r\n * returns all children (sections and steps) that have plan access\r\n */\r\n @computed get accessibleChildren(): StudentCourseItem[] {\r\n return this.children.filter(i => i.hasPlanAccess);\r\n }\r\n\r\n hasAncestor(item: StudentCourseItem) {\r\n let parent = this.parent;\r\n while (parent) {\r\n if (parent == item) return true;\r\n parent = parent.parent;\r\n }\r\n return false;\r\n }\r\n\r\n @computed get courseItemAvailability(): StudentCourseItemAvailability {\r\n // if the step has progress then it's available by default\r\n if (this.progress != null && this.progress.status == 'opened')\r\n return { result: true };\r\n if (!this.hasPlanAccess)\r\n return { result: false, requiredPlans: this.requiredPlans }\r\n\r\n if (!this.availabilityRelativeToTimeDelay.result)\r\n return this.availabilityRelativeToTimeDelay;\r\n\r\n const parentAvailability = this.parentAvailability;\r\n // check parent section availability first\r\n if (!parentAvailability.result) {\r\n return { ...parentAvailability, isSection: true };\r\n }\r\n if (!this.availabilityRelativeToOther.result)\r\n return this.availabilityRelativeToOther;\r\n return { result: true };\r\n }\r\n\r\n @computed private get parentAvailability(): StudentCourseItemAvailability {\r\n if (this.parent != null)\r\n return this.parent.courseItemAvailability;\r\n // if it doesn't exist\r\n return { result: true };\r\n }\r\n\r\n @computed private get availabilityRelativeToTimeDelay(): StudentCourseItemAvailability {\r\n\r\n if (this.disableTimeLimits) return { result: true };\r\n\r\n const checkFlowTimeDelay = this.flowTimeDelayActive && this.studentCourse.isInFlow;\r\n if (checkFlowTimeDelay) {\r\n switch (this.flowTimeDelayCondition) {\r\n case FlowTimeDelayCondition.CourseStart: {\r\n const now = moment();\r\n const delay = this.calculateDelay(\r\n moment(this.studentCourse.beginDate!),\r\n this.flowTimeDelayValue,\r\n this.flowWaitUntilTimeActive,\r\n this.flowWaitUntilTime,\r\n this.flowWaitUntilTimeDaysOfWeekActive,\r\n this.flowWaitUntilDaysOfWeek\r\n );\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n break;\r\n }\r\n case FlowTimeDelayCondition.FlowStart: {\r\n if (this.studentCourse.flowBeginDate == null)\r\n break;\r\n const now = moment();\r\n const delay = this.calculateDelay(\r\n moment(this.studentCourse.flowBeginDate),\r\n this.flowTimeDelayValue,\r\n this.flowWaitUntilTimeActive,\r\n this.flowWaitUntilTime,\r\n this.flowWaitUntilTimeDaysOfWeekActive,\r\n this.flowWaitUntilDaysOfWeek\r\n );\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n break;\r\n }\r\n case FlowTimeDelayCondition.PreviousStep: {\r\n if (!this.previousAccessibleItem)\r\n break;\r\n if (!this.previousAccessibleItem.precompleted)\r\n return { result: false, needToCompletePrevStep: true };\r\n\r\n const now = moment();\r\n const delay = this.calculateDelay(\r\n moment(this.previousAccessibleItem.progress.precompleteDate!),\r\n this.flowTimeDelayValue,\r\n this.flowWaitUntilTimeActive,\r\n this.flowWaitUntilTime,\r\n this.flowWaitUntilTimeDaysOfWeekActive,\r\n this.flowWaitUntilDaysOfWeek\r\n );\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n break;\r\n }\r\n case FlowTimeDelayCondition.PreviousSectionStarted:\r\n case FlowTimeDelayCondition.PreviousSectionCompleted: {\r\n const prevSection = this.previousSection;\r\n if (prevSection && prevSection.hasAccessibleItems) {\r\n const targetDate = this.flowTimeDelayCondition == FlowTimeDelayCondition.PreviousSectionStarted\r\n ? prevSection.beginDate\r\n : prevSection.completeDate;\r\n if (targetDate) {\r\n const now = moment();\r\n const delay = this.calculateDelay(\r\n moment(targetDate),\r\n this.flowTimeDelayValue,\r\n this.flowWaitUntilTimeActive,\r\n this.flowWaitUntilTime,\r\n this.flowWaitUntilTimeDaysOfWeekActive,\r\n this.flowWaitUntilDaysOfWeek\r\n );\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n } else {\r\n return {\r\n result: false,\r\n willBeAvailableIf: {\r\n in: this.flowTimeDelayValue,\r\n item: prevSection,\r\n condition: this.flowTimeDelayCondition == FlowTimeDelayCondition.PreviousSectionStarted ? 'afterStart' : 'afterComplete',\r\n }\r\n };\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (this.regularTimeDelayActive) {\r\n switch (this.regularTimeDelayCondition) {\r\n case RegularTimeDelayCondition.AccessStart: {\r\n const now = moment();\r\n const delay = this.calculateDelay(\r\n moment(this.studentCourse.accessBeginDate),\r\n this.regularTimeDelayValue,\r\n this.regularWaitUntilTimeActive,\r\n this.regularWaitUntilTime,\r\n this.regularWaitUntilTimeDaysOfWeekActive,\r\n this.regularWaitUntilDaysOfWeek\r\n );\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n break;\r\n }\r\n case RegularTimeDelayCondition.CourseStart: {\r\n const now = moment();\r\n const delay = this.calculateDelay(\r\n moment(this.studentCourse.beginDate),\r\n this.regularTimeDelayValue,\r\n this.regularWaitUntilTimeActive,\r\n this.regularWaitUntilTime,\r\n this.regularWaitUntilTimeDaysOfWeekActive,\r\n this.regularWaitUntilDaysOfWeek\r\n );\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n break;\r\n }\r\n case RegularTimeDelayCondition.PreviousStep: {\r\n if (!this.previousAccessibleItem)\r\n break;\r\n if (!this.previousAccessibleItem.precompleted)\r\n return { result: false, needToCompletePrevStep: true };\r\n const now = moment();\r\n const delay = this.calculateDelay(\r\n moment(this.previousAccessibleItem.progress.precompleteDate!),\r\n this.regularTimeDelayValue,\r\n this.regularWaitUntilTimeActive,\r\n this.regularWaitUntilTime,\r\n this.regularWaitUntilTimeDaysOfWeekActive,\r\n this.regularWaitUntilDaysOfWeek\r\n );\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n break;\r\n }\r\n case RegularTimeDelayCondition.PreviousSectionStarted:\r\n case RegularTimeDelayCondition.PreviousSectionCompleted: {\r\n const prevSection = this.previousSection;\r\n if (prevSection && prevSection.hasAccessibleItems) {\r\n const targetDate = this.regularTimeDelayCondition == RegularTimeDelayCondition.PreviousSectionStarted\r\n ? prevSection.beginDate\r\n : prevSection.completeDate;\r\n if (targetDate) {\r\n const now = moment();\r\n const delay = this.calculateDelay(\r\n moment(targetDate),\r\n this.regularTimeDelayValue,\r\n this.regularWaitUntilTimeActive,\r\n this.regularWaitUntilTime,\r\n this.regularWaitUntilTimeDaysOfWeekActive,\r\n this.regularWaitUntilDaysOfWeek\r\n );\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n } else {\r\n return {\r\n result: false,\r\n willBeAvailableIf: {\r\n in: this.regularTimeDelayValue,\r\n item: prevSection,\r\n condition: this.regularTimeDelayCondition == RegularTimeDelayCondition.PreviousSectionStarted ? 'afterStart' : 'afterComplete',\r\n }\r\n };\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const useDateDelay = this.dateDelayActive && this.dateDelay != null;\r\n if (useDateDelay) {\r\n const available = moment().isAfter(this.dateDelay);\r\n if (!available)\r\n return { result: false, willBeAvailableOn: this.dateDelay };\r\n }\r\n\r\n return { result: true };\r\n }\r\n\r\n @computed private get availabilityRelativeToOther(): StudentCourseItemAvailability {\r\n switch (this.availability) {\r\n case CourseItemAvailability.RegardlessOfPreviousSteps: {\r\n // if there is any previous item which is NOT completed\r\n // AND blocks the course until all it's tasks are finished\r\n let prevRequiredItem = this.previousRequiredItem;\r\n while (prevRequiredItem) {\r\n if (prevRequiredItem.blockCourseUntilTasksApproved == true) {\r\n if (prevRequiredItem.completed == false) {\r\n // if the next item has progress, then the previous item doesn't block the others\r\n if (prevRequiredItem.nextAccessibleItem?.progress != null) break;\r\n return { result: false, blockingCourseItem: prevRequiredItem };\r\n }\r\n break;\r\n }\r\n prevRequiredItem = prevRequiredItem.previousRequiredItem;\r\n }\r\n break;\r\n }\r\n case CourseItemAvailability.AllPreviousStepsCompleted: {\r\n let previousItem = this.previousRequiredItem;\r\n while (previousItem) {\r\n if (previousItem.blockCourseUntilTasksApproved == true && previousItem.completed == false) {\r\n return { result: false, blockingCourseItem: previousItem };\r\n }\r\n if (previousItem.blockCourseUntilTasksApproved == false && previousItem.precompleted == false) {\r\n return { result: false, blockingCourseItem: previousItem };\r\n }\r\n previousItem = previousItem.previousRequiredItem;\r\n }\r\n break;\r\n }\r\n case CourseItemAvailability.PreviousStepCompleted: {\r\n if (!this.previousRequiredItem)\r\n break;\r\n if (this.previousRequiredItem.blockCourseUntilTasksApproved == true && this.previousRequiredItem.completed == false) {\r\n return { result: false, blockingCourseItem: this.previousRequiredItem };\r\n }\r\n if (this.previousRequiredItem.blockCourseUntilTasksApproved == false && this.previousRequiredItem.precompleted == false) {\r\n return { result: false, blockingCourseItem: this.previousRequiredItem };\r\n }\r\n break;\r\n }\r\n }\r\n return { result: true };\r\n }\r\n\r\n @computed get hasPlanAccess() {\r\n return this.hasAccessGrantedByAdmin || this.requiredPlans?.length == 0;\r\n }\r\n\r\n @computed get hasAccessGrantedByAdmin(): boolean {\r\n if (this.type == CourseItemType.Step) {\r\n return this.progress?.status == 'opened';\r\n } else {\r\n return this.children.some(i => i.hasAccessGrantedByAdmin);\r\n }\r\n }\r\n\r\n @computed get canSkip() {\r\n return this.isOptional == true || !this.hasPlanAccess;\r\n }\r\n\r\n static fromJson(json: any): StudentCourseItem {\r\n const studentCourseItem = new StudentCourseItem({\r\n ...json,\r\n plans: json.plans ? json.plans.map((x: any) => CoursePlan.fromJson(x.coursePlan)) : undefined,\r\n parent: json.parentItem ? StudentCourseItem.fromJson(json.parentItem) : undefined,\r\n children: json.children ? json.children.map((x: any) => StudentCourseItem.fromJson(x)) : undefined,\r\n course: json.course ? Course.fromJson(json.course) : undefined,\r\n files: json.files ? json.files.map((x: any) => AccelFile.fromJson(x)) : [],\r\n progress: json.progress ? StudentCourseItemProgress.fromJson(json.progress) : undefined,\r\n tests: [],\r\n tasks: [],\r\n dateDelay: json.dateDelay ? moment(json.dateDelay) : undefined,\r\n regularWaitUntilTime: json.regularWaitUntilTime ? moment(json.regularWaitUntilTime) : undefined,\r\n flowWaitUntilTime: json.flowWaitUntilTime ? moment(json.flowWaitUntilTime) : undefined,\r\n });\r\n if (json.tasks)\r\n studentCourseItem.tasks = json.tasks.map((x: any) => StudentCourseItemTask.fromJson(x, studentCourseItem));\r\n if (json.tests)\r\n studentCourseItem.tests = json.tests.map((x: any) => StudentCourseItemTest.fromJson(x, studentCourseItem));\r\n return studentCourseItem;\r\n }\r\n\r\n @action\r\n update(course: Partial) {\r\n super.update(course);\r\n }\r\n\r\n @computed private get regularTimeDelayValue() {\r\n if (isNil(this.regularTimeDelay))\r\n return TimeSpan.zero;\r\n\r\n return TimeSpan.fromTimeMeasure(this.regularTimeDelay, this.regularTimeDelayMeasureType ?? 'days');\r\n }\r\n\r\n @computed private get flowTimeDelayValue() {\r\n if (isNil(this.flowTimeDelay))\r\n return TimeSpan.zero;\r\n\r\n return TimeSpan.fromTimeMeasure(this.flowTimeDelay, this.flowTimeDelayMeasureType ?? 'days');\r\n }\r\n\r\n private calculateDelay(\r\n baseDate: moment.Moment,\r\n timeDelayValue: TimeSpan,\r\n timeActive: boolean,\r\n waitUntilTime: moment.Moment,\r\n daysOfWeekActive: boolean,\r\n waitUntilDaysOfWeek: null | DayOfWeek[],\r\n ): moment.Moment {\r\n // converting baseDate to school timezone\r\n let delay = moment(baseDate).utc().tz(this.schoolTimezone.id);\r\n\r\n // add delay due to wait conditions (hours, days, weeks, etc.)\r\n delay.add(timeDelayValue, 'milliseconds');\r\n\r\n if (timeActive) {\r\n // converting to school timezone and extract hours and minutes from target time\r\n const targetTime = moment(waitUntilTime).utc().tz(this.schoolTimezone.id);\r\n const hours = targetTime.hours();\r\n const minutes = targetTime.minutes();\r\n\r\n // adding hours and minutes from target time to delay\r\n let adjustedDelay = delay.clone().hours(hours).minutes(minutes).seconds(0).milliseconds(0);\r\n\r\n // checking if date is before target time and skipping to the next day\r\n if (adjustedDelay.isBefore(delay)) {\r\n adjustedDelay.add(1, 'day');\r\n }\r\n\r\n delay = adjustedDelay;\r\n }\r\n\r\n if (daysOfWeekActive && (waitUntilDaysOfWeek && waitUntilDaysOfWeek.length > 0)) {\r\n const targetDays = waitUntilDaysOfWeek.map(day => dayOfWeekMap[day]);\r\n\r\n // looking for the first matching day of daysOfWeek\r\n while (!targetDays.includes(delay.day()))\r\n delay.add(1, 'day');\r\n\r\n }\r\n\r\n // returning to local timezone after all calculations to match the current time (fixing the issue with day change in case of timezone difference)\r\n const currentTz = moment.tz.guess();\r\n return delay.tz(currentTz);\r\n }\r\n}\r\n\r\n","import { BaseFilter } from '@axl/accel-framework/models';\r\nimport { StudentCourseItem } from '..';\r\nimport { SortingDirection } from '@axl/accel-framework/enums';\r\n\r\nexport default class StudentCourseItemFilter extends BaseFilter {\r\n constructor(filter?: Partial) {\r\n super();\r\n this.sortName = 'position';\r\n this.sortType = SortingDirection.asc;\r\n if (filter) this.update(filter);\r\n }\r\n studentCourseId: string;\r\n /**\r\n * Item we'd like to select\r\n * In addition to root branch, request the item section branch\r\n */\r\n courseItemId: string;\r\n /**\r\n * Request only the section items\r\n */\r\n sectionId: string;\r\n\r\n update(changes: Partial) {\r\n super.update(changes);\r\n }\r\n}","import { action, observable } from 'mobx';\r\nimport { AccelFile, Entity } from '@axl/accel-framework/models';\r\nimport { StudentCourseItem } from 'models';\r\n\r\n\r\nexport declare type CourseItemTestCountingMethod = 'percent' | 'score';\r\n\r\nexport default class StudentCourseItemTest extends Entity {\r\n constructor(test?: Partial) {\r\n super(test);\r\n if (test) this.update(test);\r\n }\r\n\r\n @observable title: string;\r\n @observable description: string;\r\n @observable position: number;\r\n @observable minPercentageCompletion: number;\r\n @observable minScoreCompletion: number;\r\n @observable questions: any[];\r\n @observable files: AccelFile[];\r\n @observable countingMethod: CourseItemTestCountingMethod;\r\n @observable shuffle: boolean;\r\n @observable isCompleted: boolean;\r\n @observable parent: StudentCourseItem;\r\n\r\n @action\r\n update(test: Partial) {\r\n super.update(test);\r\n }\r\n\r\n static fromJson(json: any, parent?: StudentCourseItem): StudentCourseItemTest {\r\n return new StudentCourseItemTest({\r\n ...json,\r\n files: json.files ? json.files.map(AccelFile.fromJson) : undefined,\r\n parent\r\n });\r\n }\r\n}","import { AccelFile, CourseItemTask, CourseItemTaskAnswer, CourseItemTaskAnswerStatus, CourseItemTaskField } from '@axl/accel-framework/models';\r\nimport { observable, computed, action } from 'mobx';\r\nimport { StudentCourseItem } from 'models';\r\n\r\nexport default class StudentCourseItemTask extends CourseItemTask {\r\n constructor(item?: Partial) {\r\n super(item);\r\n if (item) this.update(item);\r\n }\r\n\r\n @observable answer: CourseItemTaskAnswer;\r\n @observable parent: StudentCourseItem;\r\n\r\n @computed get status(): CourseItemTaskAnswerStatus {\r\n return this.answer?.status || CourseItemTaskAnswerStatus.Default;\r\n }\r\n\r\n @computed get isCompleted() {\r\n return this.status === CourseItemTaskAnswerStatus.Correct;\r\n }\r\n\r\n static fromJson(json: any, parent?: StudentCourseItem): StudentCourseItemTask {\r\n return new StudentCourseItemTask({\r\n ...json,\r\n files: json.files ? json.files.map(AccelFile.fromJson) : undefined,\r\n answer: json.answer ? CourseItemTaskAnswer.fromJson(json.answer) : undefined,\r\n fields: json.fields ? json.fields.map(CourseItemTaskField.fromJson) : undefined,\r\n parent\r\n });\r\n }\r\n\r\n @action\r\n update(task: Partial) {\r\n super.update(task);\r\n }\r\n}\r\n","import { observable, action } from 'mobx';\r\nimport { Entity } from '@axl/accel-framework/models';\r\n\r\nexport default class SchoolLibrary extends Entity {\r\n constructor(library?: Partial) {\r\n super(library);\r\n }\r\n\r\n @observable title: string;\r\n @observable shortDescription: string;\r\n @observable freeAccess: boolean;\r\n @observable primaryImageCloudKey: string;\r\n @observable studentAccessDate?: Date;\r\n @observable flowBeginDate?: Date;\r\n @observable studentHasAccess: boolean;\r\n @observable categories: string[];\r\n\r\n static fromJson(json: any): SchoolLibrary {\r\n return new SchoolLibrary({\r\n ...json,\r\n studentAccessDate: json.studentAccessDate ? new Date(json.studentAccessDate) : undefined,\r\n flowBeginDate: json.flowBeginDate ? new Date(json.flowBeginDate) : undefined,\r\n });\r\n }\r\n\r\n @action\r\n update(library: Partial) {\r\n super.update(library);\r\n }\r\n}\r\n\r\n","import { Entity, SchoolContentItemProgressRating } from \"@axl/accel-framework/models\";\r\nimport { action, observable } from \"mobx\";\r\nimport moment from \"moment\";\r\n\r\nexport default class SchoolLibraryItemProgress extends Entity {\r\n constructor(progress?: Partial) {\r\n super(progress);\r\n if (progress) this.update(progress);\r\n }\r\n\r\n @observable beginDate: moment.Moment;\r\n @observable rating: SchoolContentItemProgressRating;\r\n\r\n static fromJson(json: any): SchoolLibraryItemProgress {\r\n return new SchoolLibraryItemProgress({\r\n ...json,\r\n beginDate: json.createdDate ? moment(json.createdDate) : undefined,\r\n rating: json.rating ? SchoolContentItemProgressRating.fromJson(json.rating) : null,\r\n });\r\n }\r\n\r\n @action update(progress: Partial) {\r\n super.update(progress);\r\n }\r\n}\r\n","import { observable, action, computed } from 'mobx';\r\nimport { LibraryItem } from '@axl/accel-framework/models';\r\nimport moment from 'moment';\r\nimport { LibraryItemType } from '@axl/accel-framework/models/library/item/library-item';\r\nimport { isNil } from 'lodash';\r\nimport { TimeSpan, isEmpty } from '@axl/accel-framework/utils';\r\nimport SchoolLibraryItemProgress from '../school-library-item-progress/school-library-item-progress';\r\n\r\nexport declare type LibraryItemTab = 'article' | 'rating';\r\n\r\nexport type SchoolLibraryItemAvailability = {\r\n result: boolean,\r\n isSection?: boolean,\r\n willBeAvailableOn?: moment.Moment,\r\n}\r\n\r\nexport default class SchoolLibraryItem extends LibraryItem {\r\n constructor(item?: Partial) {\r\n super(item);\r\n if (item) this.update(item);\r\n }\r\n\r\n @observable parentItem: SchoolLibraryItem | null;\r\n @observable children: SchoolLibraryItem[] = [];\r\n @observable section: SchoolLibraryItem | null;\r\n @observable previousItem: SchoolLibraryItem | null;\r\n @observable nextItem: SchoolLibraryItem | null;\r\n @observable studentHasAccess: boolean;\r\n @observable flowBeginDate?: Date | null;\r\n @observable progress: SchoolLibraryItemProgress;\r\n\r\n @computed get ratingVisible(): boolean {\r\n return this.allowComments || this.ratingEnabled;\r\n }\r\n\r\n @observable private _tab: LibraryItemTab;\r\n @computed get tab() { return this._tab; }\r\n set tab(value: LibraryItemTab) {\r\n switch (value) {\r\n case 'article': {\r\n this._tab = 'article';\r\n return;\r\n }\r\n case 'rating': {\r\n if (this.allowComments || this.ratingEnabled) {\r\n this._tab = 'rating';\r\n return;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n @computed get completed() {\r\n return !isEmpty(this.progress);\r\n }\r\n\r\n @computed get fullPosition() {\r\n let position = '';\r\n let section = this.section;\r\n while (section != null) {\r\n position += `${section.position}.`;\r\n section = section.section;\r\n }\r\n position += this.position;\r\n return position;\r\n }\r\n\r\n @computed get lastChild() {\r\n return this.getLastNestedStep();\r\n }\r\n\r\n getLastNestedStep(): SchoolLibraryItem | null {\r\n if (this.type == LibraryItemType.Article || this.children.length == 0)\r\n return null;\r\n\r\n for (const child of this.children.slice().reverse()) {\r\n if (child.type == LibraryItemType.Article)\r\n return child;\r\n\r\n const step = child.getLastNestedStep();\r\n if (step != null)\r\n return step;\r\n }\r\n return null;\r\n }\r\n\r\n @computed get firstChild() {\r\n return this.getFirstNestedStep();\r\n }\r\n\r\n getFirstNestedStep(): SchoolLibraryItem | null {\r\n if (this.type == LibraryItemType.Article || this.children.length == 0)\r\n return null;\r\n\r\n const steps = this.children.filter(i => i.type == LibraryItemType.Article);\r\n if (steps.length > 0)\r\n return steps[0];\r\n\r\n for (const child of this.children) {\r\n const step = child.getFirstNestedStep();\r\n if (step != null)\r\n return step;\r\n }\r\n return null;\r\n }\r\n\r\n @computed private get parentAvailability(): SchoolLibraryItemAvailability {\r\n if (this.section != null)\r\n return this.section.availability;\r\n return { result: true };\r\n }\r\n\r\n @computed get canSelect() { return this.availability.result; }\r\n @computed get availability(): SchoolLibraryItemAvailability {\r\n const parentAvailability = this.parentAvailability;\r\n if (!parentAvailability.result)\r\n return { ...parentAvailability, isSection: true };\r\n if (!this.availabilityRelativeToTimeDelay.result)\r\n return this.availabilityRelativeToTimeDelay;\r\n if (!this.studentHasAccess)\r\n return { result: false };\r\n return { result: true };\r\n }\r\n\r\n @computed private get availabilityRelativeToTimeDelay(): SchoolLibraryItemAvailability {\r\n if (this.flowTimeDelayActive) {\r\n switch (this.flowTimeDelayCondition) {\r\n case 'flowStart': {\r\n if (this.flowBeginDate == null)\r\n break;\r\n const now = moment();\r\n const delay = moment(this.flowBeginDate)\r\n .add(this.flowTimeDelayValue.milliseconds, 'milliseconds');\r\n if (now <= delay)\r\n return { result: false, willBeAvailableOn: delay };\r\n break;\r\n }\r\n }\r\n }\r\n return { result: true };\r\n }\r\n\r\n static fromJson(json: any): SchoolLibraryItem {\r\n const base = LibraryItem.fromJson(json);\r\n const item = new SchoolLibraryItem({\r\n ...base,\r\n studentHasAccess: json.studentHasAccess,\r\n parentItem: json.parentItem ? SchoolLibraryItem.fromJson(json.parentItem) : null,\r\n progress: json.progress ? SchoolLibraryItemProgress.fromJson(json.progress) : undefined,\r\n });\r\n return item;\r\n }\r\n\r\n @action\r\n update(schoolLibraryItem: Partial) {\r\n super.update(schoolLibraryItem);\r\n }\r\n\r\n @computed private get flowTimeDelayValue() {\r\n if (isNil(this.flowTimeDelay))\r\n return TimeSpan.zero;\r\n\r\n return TimeSpan.fromTimeMeasure(this.flowTimeDelay, this.flowTimeDelayMeasureType ?? 'days');\r\n }\r\n}\r\n\r\n","import { BaseFilter } from '@axl/accel-framework/models';\r\nimport { SortingDirection } from '@axl/accel-framework/enums';\r\nimport SchoolLibraryItem from './school-library-item';\r\n\r\nexport default class SchoolLibraryItemFilter extends BaseFilter {\r\n constructor(filter?: Partial) {\r\n super();\r\n this.sortName = 'position';\r\n this.sortType = SortingDirection.asc;\r\n if (filter) this.update(filter);\r\n }\r\n libraryId: string;\r\n /**\r\n * Item we'd like to select\r\n * In addition to root branch, request the item section branch\r\n */\r\n libraryItemId: string;\r\n /**\r\n * Request only the section items\r\n */\r\n sectionId: string;\r\n\r\n update(changes: Partial) {\r\n super.update(changes);\r\n }\r\n}","import { BaseFilter, Entity, SchoolContentItemType, SchoolContentSectionType } from '@axl/accel-framework/models';\r\nimport { observable, action, computed } from 'mobx';\r\nimport SchoolCourse from '../school-course/school-course';\r\nimport SchoolLibrary from '../school-library/school-library';\r\nimport { SchoolCourseType } from '../school-course/school-course-filter';\r\n\r\n\r\nexport class SchoolContentItem extends Entity {\r\n constructor(item?: Partial) {\r\n super(item);\r\n if (item) this.update(item);\r\n }\r\n\r\n @observable title: string;\r\n @observable description: string;\r\n @observable coverCloudKey: string;\r\n\r\n @observable createdDate: Date;\r\n @observable updatedDate: Date;\r\n @observable position: number;\r\n @observable parentId: string | null;\r\n @observable parent: SchoolContentItem | null;\r\n @observable course?: SchoolCourse;\r\n @observable library?: SchoolLibrary;\r\n @observable type: SchoolContentItemType;\r\n @observable sectionType: SchoolContentSectionType;\r\n @observable children: SchoolContentItem[];\r\n\r\n @computed get progress(): number {\r\n if(this.sectionType == SchoolContentSectionType.Library) return 0;\r\n if (this.type == SchoolContentItemType.Item)\r\n return this.course?.studentCourse?.progress ?? 0;\r\n\r\n let progress = 0;\r\n this.children.forEach(x => progress += x.progress);\r\n progress /= this.children.length;\r\n return progress;\r\n }\r\n\r\n @computed get itemCount() {\r\n if (this.type == SchoolContentItemType.Item) return 1;\r\n let count = 0;\r\n for (const child of this.children) {\r\n count += child.itemCount;\r\n }\r\n return count;\r\n }\r\n\r\n static fromJson(json: any): SchoolContentItem {\r\n const item = new SchoolContentItem({\r\n id: json.id,\r\n title: json.title,\r\n description: json.description,\r\n type: json.type,\r\n sectionType: json.sectionType,\r\n position: json.position,\r\n createdDate: json.createdDate ? new Date(json.createdDate) : undefined,\r\n updatedDate: json.updatedDate ? new Date(json.updatedDate) : undefined,\r\n coverCloudKey: json.coverCloudKey,\r\n parentId: json.parentId,\r\n parent: json.parent ? SchoolContentItem.fromJson(json.parent) : json.parent === null ? null : undefined,\r\n course: json.course ? SchoolCourse.fromJson(json.course) : undefined,\r\n library: json.library ? SchoolLibrary.fromJson(json.library) : undefined,\r\n children: json.children ? json.children.map(SchoolContentItem.fromJson) : []\r\n });\r\n item.children.forEach(x => x.update({ parent: item }));\r\n return item;\r\n }\r\n\r\n @action\r\n update(changes: Partial) {\r\n super.update(changes);\r\n }\r\n}\r\n\r\nexport class SchoolContentItemFilter extends BaseFilter {\r\n constructor(filter?: Partial) {\r\n super();\r\n if (filter) this.update(filter);\r\n }\r\n\r\n courseType: SchoolCourseType;\r\n onlyAvailable: boolean;\r\n sectionType: SchoolContentSectionType;\r\n \r\n update(changes: Partial) {\r\n super.update(changes);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport StudentCourseFilter from 'models/student-course/student-course-filter';\r\nimport { StudentCourse } from 'models';\r\n\r\nexport class FetchStudentCoursesRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n id,\r\n state,\r\n progress,\r\n course{\r\n id,\r\n name,\r\n shortDescription,\r\n primaryImage{\r\n file{\r\n id,\r\n cloudKey\r\n }\r\n }\r\n }\r\n }`;\r\n public url: string = '/student-course';\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public filter?: StudentCourseFilter) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchStudentCoursesResponse extends ApiResponse {\r\n public filter: StudentCourseFilter;\r\n public items: StudentCourse[];\r\n constructor(response: any) {\r\n super(response);\r\n this.filter = new StudentCourseFilter(this.body.filter);\r\n this.items = this.body.items.map(StudentCourse.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourse } from 'models';\r\n\r\nexport class FetchStudentCourseRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n id,\r\n beginDate,\r\n endDate,\r\n state,\r\n flowBeginDate,\r\n accessBeginDate,\r\n accessEndDate,\r\n isSubscription,\r\n course{\r\n id,\r\n name,\r\n dontAskFeedback\r\n },\r\n currentCourseItem{\r\n id\r\n }, \r\n feedback,\r\n progress,\r\n student{\r\n id\r\n }\r\n }`;\r\n public url: string = `/student-course/${this.courseItemId}`;\r\n\r\n constructor(public courseItemId: string, fields?: string) {\r\n super();\r\n this.fields = fields || this.fields;\r\n }\r\n}\r\n\r\nexport class FetchStudentCourseResponse extends ApiResponse {\r\n public studentCourse: StudentCourse;\r\n public hasItemAccess: boolean;\r\n constructor(response: any) {\r\n super(response);\r\n this.studentCourse = StudentCourse.fromJson(this.body.studentCourse);\r\n this.hasItemAccess = this.body.hasItemAccess;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class StartCourseRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public body = {\r\n courseId: this.courseId\r\n }\r\n public url: string = `/student-course`;\r\n\r\n constructor(public courseId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class StartCourseResponse extends ApiResponse {\r\n public studentCourseId: string;\r\n public currentCourseItemId: string;\r\n constructor(response: any) {\r\n super(response);\r\n this.studentCourseId = this.body.studentCourseId;\r\n this.currentCourseItemId = this.body.currentCourseItemId;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class SendFeedbackRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public body = {\r\n studentCourseId: this.studentCourseId,\r\n text: this.text\r\n }\r\n public url: string = `/student-course/send-feedback`;\r\n\r\n constructor(public studentCourseId: string, public text: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SendFeedbackResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchStudentCoursesRequest, FetchStudentCoursesResponse } from './types/fetch-student-courses';\r\nimport { FetchStudentCourseRequest, FetchStudentCourseResponse } from './types/fetch-student-course';\r\nimport { StartCourseRequest, StartCourseResponse } from './types/start-course';\r\nimport { SendFeedbackRequest, SendFeedbackResponse } from './types/send-feedback';\r\n\r\nexport default class StudentCourseApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetch(request: FetchStudentCoursesRequest) {\r\n return await this.api.execute(request, FetchStudentCoursesResponse);\r\n }\r\n\r\n public async fetchItem(request: FetchStudentCourseRequest) {\r\n return await this.api.execute(request, FetchStudentCourseResponse);\r\n }\r\n\r\n public async startCourse(request: StartCourseRequest) {\r\n return await this.api.execute(request, StartCourseResponse);\r\n }\r\n\r\n public async sendFeedback(request: SendFeedbackRequest) {\r\n return await this.api.execute(request, SendFeedbackResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolContentItem, SchoolContentItemFilter } from 'models';\r\n\r\nexport class FetchSchoolCoursesRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/school-course`;\r\n public body = {\r\n ...this.filter\r\n }\r\n\r\n constructor(public filter: SchoolContentItemFilter, fields?: string) {\r\n super();\r\n if (fields)\r\n this.fields = fields;\r\n }\r\n}\r\n\r\nexport class FetchSchoolCoursesResponse extends ApiResponse {\r\n public items: SchoolContentItem[];\r\n public filter: SchoolContentItemFilter;\r\n constructor(response: any) {\r\n super(response);\r\n this.items = this.body.items.map(SchoolContentItem.fromJson);\r\n this.filter = new SchoolContentItemFilter(this.body.filter);\r\n }\r\n}\r\n","import Api from 'api';\r\nimport { FetchSchoolCoursesRequest, FetchSchoolCoursesResponse } from './types/fetch';\r\n\r\nexport default class SchoolCourseApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetch(request: FetchSchoolCoursesRequest) {\r\n return await this.api.execute(request, FetchSchoolCoursesResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseItemFilter, StudentCourseItem } from 'models';\r\n\r\nexport class FetchStudentCourseItemsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = '/student-course-item';\r\n public body = {\r\n ...this.filter,\r\n }\r\n public fields = `{\r\n id,\r\n parentItemId,\r\n title,\r\n type,\r\n position,\r\n availability,\r\n disableTimeLimits,\r\n regularTimeDelayActive,\r\n regularTimeDelay,\r\n regularTimeDelayCondition,\r\n regularTimeDelayMeasureType,\r\n regularWaitUntilTimeActive,\r\n regularWaitUntilTime,\r\n regularWaitUntilTimeDaysOfWeekActive,\r\n regularWaitUntilDaysOfWeek,\r\n flowTimeDelayActive,\r\n flowTimeDelay,\r\n flowTimeDelayCondition,\r\n flowTimeDelayMeasureType,\r\n flowWaitUntilTimeActive,\r\n flowWaitUntilTime,\r\n flowWaitUntilTimeDaysOfWeekActive,\r\n flowWaitUntilDaysOfWeek,\r\n dateDelayActive,\r\n dateDelay,\r\n preventCopingAndSelectingText,\r\n blockCourseUntilTasksApproved,\r\n isOptional,\r\n allowComments,\r\n showComments,\r\n ratingEnabled,\r\n ratingRequired,\r\n ratingCommentRequired,\r\n theoryVisible,\r\n testsVisible,\r\n tasksVisible,\r\n requiredPlans,\r\n progress{\r\n id,\r\n beginDate,\r\n completeDate,\r\n precompleteDate,\r\n status,\r\n theoryStatus,\r\n testStatus,\r\n taskStatus,\r\n numberUncheckedTasks,\r\n numberCorrectTasks,\r\n numberIncorrectTasks,\r\n },\r\n tasks{\r\n id,\r\n }\r\n }`;\r\n\r\n\r\n constructor(public filter?: StudentCourseItemFilter) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchStudentCourseItemsResponse extends ApiResponse {\r\n public filter: StudentCourseItemFilter;\r\n public items: StudentCourseItem[];\r\n constructor(response: any) {\r\n super(response);\r\n this.filter = new StudentCourseItemFilter(this.body.filter);\r\n this.items = this.body.items.map(StudentCourseItem.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseItem } from 'models';\r\n\r\nexport class FetchStudentCourseItemRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n \r\n public url: string = `/student-course-item/${this.studentCourseId}/${this.courseItemId}`;\r\n\r\n constructor(public studentCourseId: string, public courseItemId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchStudentCourseItemResponse extends ApiResponse {\r\n public studentCourseItem: StudentCourseItem;\r\n constructor(response: any) {\r\n super(response);\r\n this.studentCourseItem = StudentCourseItem.fromJson(this.body);\r\n }\r\n}\r\n","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseProgress } from 'models';\r\n\r\nexport class CompleteCourseItemTheoryRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = `/student-course-item/complete-theory`;\r\n public body = {\r\n studentCourseItemProgressId: this.studentCourseItemProgressId\r\n }\r\n\r\n constructor(public studentCourseItemProgressId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CompleteCourseItemTheoryResponse extends ApiResponse {\r\n progress: StudentCourseProgress;\r\n constructor(response: any) {\r\n super(response);\r\n this.progress = StudentCourseProgress.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { CourseItemTaskAnswerStatus } from '@axl/accel-framework/models';\r\nimport { StudentCourseProgress } from 'models';\r\n\r\ntype CourseItemTaskFieldModel = {\r\n id: string;\r\n value: any;\r\n}\r\n\r\nexport type CreateTaskAnswerRequestModel = {\r\n courseItemTaskId: string,\r\n studentCourseItemProgressId: string,\r\n text: string,\r\n files: string[],\r\n fields: CourseItemTaskFieldModel[]\r\n}\r\nexport class CreateTaskAnswerRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/student-course-item/task-answer`;\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: CreateTaskAnswerRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CreateTaskAnswerResponse extends ApiResponse {\r\n id: string;\r\n status: CourseItemTaskAnswerStatus;\r\n progress: StudentCourseProgress;\r\n constructor(response: any) {\r\n super(response);\r\n this.id = this.body.answerId;\r\n this.status = this.body.answerStatus;\r\n this.progress = StudentCourseProgress.fromJson(this.body.progress);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseProgress } from 'models';\r\nimport { CourseItemTaskAnswerStatus } from '@axl/accel-framework/models';\r\n\r\ntype CourseItemTaskFieldModel = {\r\n id: string;\r\n value: any;\r\n}\r\n\r\nexport type SaveTaskAnswerRequestModel = {\r\n id: string,\r\n text: string,\r\n files: string[],\r\n fields: CourseItemTaskFieldModel[]\r\n}\r\nexport class SaveTaskAnswerRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = `/student-course-item/task-answer`;\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: SaveTaskAnswerRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SaveTaskAnswerResponse extends ApiResponse {\r\n progress: StudentCourseProgress;\r\n status: CourseItemTaskAnswerStatus;\r\n\r\n constructor(response: any) {\r\n super(response);\r\n this.status = this.body.answerStatus;\r\n this.progress = StudentCourseProgress.fromJson(this.body.progress);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type CreateTaskAnswerCommentRequestModel = {\r\n answerId: string,\r\n comment: string,\r\n files: string[]\r\n}\r\nexport class CreateTaskAnswerCommentRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/student-course-item/task-answer/comment`;\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: CreateTaskAnswerCommentRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CreateTaskAnswerCommentResponse extends ApiResponse {\r\n id: string;\r\n constructor(response: any) {\r\n super(response);\r\n this.id = this.body;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseProgress } from 'models';\r\n\r\nexport class ResetTaskAnswerStatusRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = `/student-course-item/task-answer/reset-status`;\r\n public body = {\r\n answerId: this.answerId,\r\n }\r\n\r\n constructor(public answerId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class ResetTaskAnswerStatusResponse extends ApiResponse {\r\n progress: StudentCourseProgress;\r\n constructor(response: any) {\r\n super(response);\r\n this.progress = StudentCourseProgress.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class DeleteTaskAnswerCommentRequest extends ApiRequest {\r\n public method = HttpMethod.DELETE;\r\n public url: string = `/student-course-item/task-answer/comment/${this.commentId}`;\r\n\r\n constructor(public commentId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class DeleteTaskAnswerCommentResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type SaveTaskAnswerCommentRequestModel = {\r\n commentId: string,\r\n comment: string,\r\n files: string[]\r\n}\r\nexport class SaveTaskAnswerCommentRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = `/student-course-item/task-answer/comment`;\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: SaveTaskAnswerCommentRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SaveTaskAnswerCommentResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { CourseItemTaskAnswerComment, CourseItemTaskAnswerCommentFilter } from '@axl/accel-framework/models';\r\n\r\nexport class FetchTaskAnswerCommentsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n \r\n public url: string = `/student-course-item/task-answer/comment`;\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public filter?: CourseItemTaskAnswerCommentFilter) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchTaskAnswerCommentsResponse extends ApiResponse {\r\n public items: CourseItemTaskAnswerComment[];\r\n public filter: CourseItemTaskAnswerCommentFilter;\r\n\r\n constructor(response: any) {\r\n super(response);\r\n this.filter = new CourseItemTaskAnswerCommentFilter(this.body.filter);\r\n this.items = this.body.items.map(CourseItemTaskAnswerComment.fromJson);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchStudentCourseItemsRequest, FetchStudentCourseItemsResponse } from './types/fetch-student-course-items';\r\nimport { FetchStudentCourseItemRequest, FetchStudentCourseItemResponse } from './types/fetch-student-course-item';\r\nimport { CompleteCourseItemTheoryRequest, CompleteCourseItemTheoryResponse } from './types/complete-course-item-theory';\r\nimport { CreateTaskAnswerRequest, CreateTaskAnswerResponse } from './types/create-task-answer';\r\nimport { SaveTaskAnswerRequest, SaveTaskAnswerResponse } from './types/save-task-answer';\r\nimport { CreateTaskAnswerCommentRequest, CreateTaskAnswerCommentResponse } from './types/create-task-answer-comment';\r\nimport { ResetTaskAnswerStatusRequest, ResetTaskAnswerStatusResponse } from './types/reset-task-answer-status';\r\nimport { DeleteTaskAnswerCommentRequest, DeleteTaskAnswerCommentResponse } from './types/delete-task-answer-comment';\r\nimport { SaveTaskAnswerCommentRequest, SaveTaskAnswerCommentResponse } from './types/save-task-answer-comment';\r\nimport { FetchTaskAnswerCommentsRequest, FetchTaskAnswerCommentsResponse } from './types/fetch-task-answer-comments';\r\nimport StudentCourseProgress from 'models/student-course/student-course-progress/student-course-progress';\r\n\r\nexport default class StudentCourseItemApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetch(request: FetchStudentCourseItemsRequest) {\r\n return await this.api.execute(request, FetchStudentCourseItemsResponse);\r\n }\r\n\r\n public async fetchItem(request: FetchStudentCourseItemRequest) {\r\n return await this.api.execute(request, FetchStudentCourseItemResponse);\r\n }\r\n\r\n public async completeTheory(request: CompleteCourseItemTheoryRequest) {\r\n return await this.api.execute(request, CompleteCourseItemTheoryResponse);\r\n }\r\n\r\n completeTest = (studentCourseItemProgressId: string, courseItemTestId: string, isRight: boolean) =>\r\n this.api.post(`/student-course-item/complete-test`, { studentCourseItemProgressId, courseItemTestId, isRight }, json => StudentCourseProgress.fromJson(json));\r\n\r\n public async createTaskAnswer(request: CreateTaskAnswerRequest) {\r\n return await this.api.execute(request, CreateTaskAnswerResponse);\r\n }\r\n\r\n public async saveTaskAnswer(request: SaveTaskAnswerRequest) {\r\n return await this.api.execute(request, SaveTaskAnswerResponse);\r\n }\r\n\r\n public async createTaskAnswerComment(request: CreateTaskAnswerCommentRequest) {\r\n return await this.api.execute(request, CreateTaskAnswerCommentResponse);\r\n }\r\n\r\n public async saveTaskAnswerComment(request: SaveTaskAnswerCommentRequest) {\r\n return await this.api.execute(request, SaveTaskAnswerCommentResponse);\r\n }\r\n\r\n public async deleteTaskAnswerComment(request: DeleteTaskAnswerCommentRequest) {\r\n return await this.api.execute(request, DeleteTaskAnswerCommentResponse);\r\n }\r\n\r\n public async resetTaskAnswerStatus(request: ResetTaskAnswerStatusRequest) {\r\n return await this.api.execute(request, ResetTaskAnswerStatusResponse);\r\n }\r\n\r\n public async fetchTaskAnswerComments(request: FetchTaskAnswerCommentsRequest) {\r\n return await this.api.execute(request, FetchTaskAnswerCommentsResponse);\r\n }\r\n}\r\n","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { School } from 'models';\r\n\r\nexport class FetchSchoolSettingsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/school-setting`;\r\n\r\n constructor(fields?: string) {\r\n super();\r\n this.fields = fields || this.fields;\r\n }\r\n}\r\n\r\nexport class FetchSchoolSettingsResponse extends ApiResponse {\r\n public school: School;\r\n constructor(response: any) {\r\n super(response);\r\n this.school = School.fromJson(this.body);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchSchoolSettingsRequest, FetchSchoolSettingsResponse } from './fetch-school-settings';\r\n\r\nexport default class SchoolSettingsApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetch(request: FetchSchoolSettingsRequest) {\r\n return await this.api.execute(request, FetchSchoolSettingsResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { Gender } from '@axl/accel-framework/enums';\r\nimport moment from 'moment';\r\n\r\nexport type SaveStudentModel = {\r\n avatarId?: string;\r\n email?: string;\r\n firstName?: string;\r\n middleName?: string;\r\n lastName?: string;\r\n phone?: string;\r\n gender?: Gender;\r\n birthday?: moment.Moment;\r\n password?: string;\r\n};\r\n\r\nexport class SaveStudentRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public body = {\r\n ...this.model\r\n }\r\n public url: string = `/student`;\r\n\r\n constructor(public model: SaveStudentModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SaveStudentResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class ResendEmailConfirmationRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/student/resend-email-confirmation`;\r\n}\r\n\r\nexport class ResendEmailConfirmationResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { Lang } from '@axl/accel-framework/enums';\r\n\r\nexport class SelectLangRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/student/select-lang';\r\n public body: any = {\r\n lang: this.lang\r\n };\r\n\r\n constructor(public lang: Lang) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SelectLangResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type UpdatePasswordModel = {\r\n password: string;\r\n};\r\n\r\nexport class UpdatePasswordRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public body = {\r\n ...this.model\r\n }\r\n public url: string = `/student/update-password`;\r\n\r\n constructor(public model: UpdatePasswordModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class UpdatePasswordResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { ApiRequest, ApiResponse, HttpMethod, toOptional } from '@axl/accel-framework/api';\r\nimport { ContactLicense, ContactLicenseFilter } from '@axl/accel-framework/models';\r\n\r\nexport default class SubscriptionApi {\r\n constructor(private api: Api) { }\r\n\r\n public async fetch(request: FetchSubscriptionsRequest) {\r\n return await this.api.execute(request, FetchSubcriptionsResponse);\r\n }\r\n\r\n public async fetchItem(request: FetchSubscriptionRequest) {\r\n return await this.api.execute(request, FetchSubcriptionResponse);\r\n }\r\n\r\n public async save(request: SaveSubscriptionRequest) {\r\n return await this.api.execute(request, SaveSubscriptionResponse);\r\n }\r\n}\r\n\r\n\r\nexport class FetchSubscriptionRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/student/subscription/${this.id}`;\r\n\r\n constructor(public id: string, fields?: string) {\r\n super();\r\n this.fields = fields ?? `{\r\n id,\r\n beginDate,\r\n endDate,\r\n creditEndDate,\r\n type,\r\n state,\r\n product{\r\n id,\r\n name,\r\n subsPrice,\r\n subsDuration,\r\n subsDurationType,\r\n image{\r\n id,\r\n name,\r\n cloudKey,\r\n extension,\r\n size,\r\n type\r\n }\r\n },\r\n currentSuspension{\r\n id,\r\n beginDate,\r\n endDate\r\n }\r\n }`;\r\n }\r\n\r\n}\r\n\r\nexport class FetchSubcriptionResponse extends ApiResponse {\r\n public subscription: ContactLicense;\r\n constructor(response: any) {\r\n super(response);\r\n this.subscription = ContactLicense.fromJson(this.body);\r\n }\r\n}\r\n\r\n\r\nexport class FetchSubscriptionsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = '/student/subscription';\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public filter: ContactLicenseFilter, fields?: string) {\r\n super();\r\n this.fields = fields ?? `{\r\n id,\r\n beginDate,\r\n endDate,\r\n creditEndDate,\r\n type,\r\n state,\r\n product{\r\n id,\r\n name,\r\n subsPrice,\r\n subsDuration,\r\n subsDurationType,\r\n image{\r\n id,\r\n name,\r\n cloudKey,\r\n extension,\r\n size,\r\n type\r\n }\r\n },\r\n currentSuspension{\r\n id,\r\n beginDate,\r\n endDate\r\n }\r\n }`;\r\n }\r\n\r\n}\r\n\r\nexport class FetchSubcriptionsResponse extends ApiResponse {\r\n public filter: ContactLicenseFilter;\r\n public items: ContactLicense[];\r\n constructor(response: any) {\r\n super(response);\r\n this.filter = new ContactLicenseFilter(this.body.filter);\r\n this.items = this.body.items.map(ContactLicense.fromJson);\r\n }\r\n}\r\n\r\nexport class SaveSubscriptionRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/student/subscription';\r\n public body = {\r\n id: this.license.id,\r\n state: toOptional(this.license.state)\r\n }\r\n\r\n constructor(public license: PartialBut) {\r\n super();\r\n }\r\n\r\n}\r\n\r\nexport class SaveSubscriptionResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { ContactLicense, ContactLicenseFilter } from '@axl/accel-framework/models';\r\n\r\nexport default class LicenseApi {\r\n constructor(private api: Api) { }\r\n\r\n public async fetch(request: FetchLicensesRequest) {\r\n return await this.api.execute(request, FetchLicensesResponse);\r\n }\r\n}\r\n\r\n\r\nexport class FetchLicensesRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = '/student/license';\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public filter: ContactLicenseFilter, fields?: string) {\r\n super();\r\n this.fields = fields ?? `{\r\n id,\r\n beginDate,\r\n endDate,\r\n type,\r\n coursePlan {\r\n id,\r\n name,\r\n softDeleted,\r\n course {\r\n id,\r\n name,\r\n softDeleted\r\n }\r\n },\r\n course {\r\n id,\r\n name,\r\n softDeleted,\r\n primaryImage{\r\n id,\r\n file{\r\n id,\r\n name,\r\n cloudKey,\r\n extension,\r\n size,\r\n type\r\n }\r\n }\r\n },\r\n libraryAccess{\r\n library{\r\n id,\r\n name,\r\n softDeleted,\r\n primaryImage{\r\n id,\r\n file{\r\n id,\r\n name,\r\n cloudKey,\r\n extension,\r\n size,\r\n type\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n }\r\n\r\n}\r\n\r\nexport class FetchLicensesResponse extends ApiResponse {\r\n public filter: ContactLicenseFilter;\r\n public items: ContactLicense[];\r\n constructor(response: any) {\r\n super(response);\r\n this.filter = new ContactLicenseFilter(this.body.filter);\r\n this.items = this.body.items.map(ContactLicense.fromJson);\r\n }\r\n}","import Api from 'api';\r\nimport { SaveStudentRequest, SaveStudentResponse } from './types/save-student';\r\nimport { ResendEmailConfirmationRequest, ResendEmailConfirmationResponse } from './types/resend-email-confirmation';\r\nimport { SelectLangRequest, SelectLangResponse } from './types/select-lang';\r\nimport { UpdatePasswordRequest, UpdatePasswordResponse } from './types/update-password';\r\nimport SubscriptionApi from './subscription';\r\nimport { CrudApi } from '@axl/accel-framework/api';\r\nimport { PurchaseOrder, StudentBonusTransaction } from '@axl/accel-framework/models';\r\nimport LicenseApi from './license';\r\n\r\nexport default class StudentApi {\r\n constructor(private api: Api) { }\r\n\r\n public async save(request: SaveStudentRequest) {\r\n return await this.api.execute(request, SaveStudentResponse);\r\n }\r\n\r\n public async updatePassword(request: UpdatePasswordRequest) {\r\n return await this.api.execute(request, UpdatePasswordResponse);\r\n }\r\n\r\n public async resendEmailConfirmation(request: ResendEmailConfirmationRequest) {\r\n return await this.api.execute(request, ResendEmailConfirmationResponse);\r\n }\r\n\r\n public async selectLang(request: SelectLangRequest) {\r\n return await this.api.execute(request, SelectLangResponse);\r\n }\r\n\r\n public license = new LicenseApi(this.api);\r\n public subscription = new SubscriptionApi(this.api);\r\n public order = new OrderApi(this.api);\r\n bonusTransaction = new BonusTransactionApi(this.api);\r\n}\r\n\r\nexport class OrderApi extends CrudApi {\r\n\r\n constructor(api: Api) {\r\n super(api, {\r\n endpoint: '/student/order',\r\n parse: e => PurchaseOrder.fromJson(e),\r\n defaultFields: `{\r\n id,\r\n createdDate,\r\n paidDate,\r\n currency,\r\n isDigitalDelivery,\r\n fullyPaid,\r\n shippingPrice,\r\n totalAmount,\r\n paidAmount,\r\n savingsAmount,\r\n status,\r\n completed,\r\n number,\r\n contents{\r\n id,\r\n quantity,\r\n product{\r\n id,\r\n name,\r\n type,\r\n price,\r\n softDeleted\r\n }\r\n }\r\n }`\r\n });\r\n }\r\n}\r\n\r\nexport class BonusTransactionApi extends CrudApi {\r\n constructor(api: Api) {\r\n super(api, {\r\n endpoint: '/student/bonus-transaction',\r\n parse: e => StudentBonusTransaction.fromJson(e),\r\n defaultFields: `{\r\n id,\r\n amount,\r\n comment,\r\n createdDate,\r\n order{\r\n id,\r\n number\r\n },\r\n type,\r\n transaction{\r\n id\r\n },\r\n validUntilDate\r\n }`\r\n });\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class ContactInFilterRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = '/service/contact-in-filter';\r\n\r\n public body: any = {\r\n f: this.filterId,\r\n c: this.contactId\r\n };\r\n\r\n constructor(public filterId: string, public contactId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class ContactInFilterResponse extends ApiResponse {\r\n public isInFilter: boolean;\r\n constructor(response?: any) {\r\n super(response);\r\n this.isInFilter = response.body.isInFilter;\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class KeepaliveRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = '/service/keepalive';\r\n}\r\n\r\nexport class KeepaliveResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type RunCustomEventRequestModel = {\r\n courseItemId: string,\r\n sitePageId: string,\r\n widgetId: string,\r\n eventName: string\r\n}\r\n\r\nexport class RunCustomEventRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/service/run-custom-event';\r\n \r\n public body = {\r\n ...this.model\r\n }\r\n\r\n\r\n constructor(public model: Partial) {\r\n super();\r\n }\r\n}\r\n\r\nexport class RunCustomEventResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type TrackFormModel = {\r\n courseId?: string;\r\n courseItemId?: string;\r\n libraryItemId?: string;\r\n libraryId?: string;\r\n name?: string;\r\n fields: any;\r\n}\r\n\r\nexport class TrackFormRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/t/f`;\r\n\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: Partial) {\r\n super();\r\n }\r\n}\r\n\r\nexport class TrackFormResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class UpdateLocalizationRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = '/service/update-localization';\r\n}\r\n\r\nexport class UpdateLocalizationResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { ContactInFilterRequest, ContactInFilterResponse } from './types/contact-in-filter';\r\nimport { KeepaliveRequest, KeepaliveResponse } from './types/keepalive';\r\nimport { RunCustomEventRequest, RunCustomEventResponse } from './types/run-custom-event';\r\nimport { TrackFormRequest, TrackFormResponse } from './types/track-form';\r\nimport { UpdateLocalizationRequest, UpdateLocalizationResponse } from './types/update-localization';\r\n\r\nexport default class ServiceApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async keepalive(request: KeepaliveRequest) {\r\n return await this.api.execute(request, KeepaliveResponse);\r\n }\r\n\r\n public async updateLocalization(request: UpdateLocalizationRequest) {\r\n return await this.api.execute(request, UpdateLocalizationResponse);\r\n }\r\n\r\n public async runCustomEvent(request: RunCustomEventRequest) {\r\n return await this.api.execute(request, RunCustomEventResponse);\r\n }\r\n\r\n public async contactInFilter(request: ContactInFilterRequest) {\r\n return await this.api.execute(request, ContactInFilterResponse);\r\n }\r\n\r\n public async trackForm(request: TrackFormRequest) {\r\n return await this.api.execute(request, TrackFormResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseItem } from 'models';\r\n\r\nexport class FetchCourseItemsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n\r\n public url: string = `/course-preview/${this.courseId}/items`;\r\n public body: any = {\r\n planId: this.planId\r\n };\r\n\r\n constructor(public courseId: string, public planId?: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchCourseItemsResponse extends ApiResponse {\r\n items: StudentCourseItem[];\r\n constructor(response: any) {\r\n super(response);\r\n this.items = this.body.items.map(StudentCourseItem.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseItem } from 'models';\r\n\r\nexport class FetchCourseItemRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n \r\n public url: string = `/course-preview/${this.courseId}/items/${this.itemId}`;\r\n\r\n constructor(public courseId: string, public itemId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchCourseItemResponse extends ApiResponse {\r\n courseItem: StudentCourseItem;\r\n constructor(response: any) {\r\n super(response);\r\n this.courseItem = StudentCourseItem.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { Course } from '@axl/accel-framework/models';\r\n\r\nexport class FetchCourseRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n id,\r\n name\r\n }`;\r\n public url: string = `/course-preview/${this.id}`;\r\n\r\n constructor(public id: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchCourseResponse extends ApiResponse {\r\n course: Course;\r\n constructor(response: any) {\r\n super(response);\r\n this.course = Course.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { CoursePlanFilter, CoursePlan } from '@axl/accel-framework/models';\r\n\r\nexport class FetchCoursePlansRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n id,\r\n name,\r\n disableTimeLimits,\r\n softDeleted\r\n }`;\r\n public url: string = `/course-preview/${this.courseId}/plans`;\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public courseId: string, public filter?: CoursePlanFilter, fields?: string) {\r\n super();\r\n this.fields = fields || this.fields;\r\n }\r\n}\r\n\r\nexport class FetchCoursePlansResponse extends ApiResponse {\r\n public filter: CoursePlanFilter;\r\n public items: CoursePlan[];\r\n constructor(response: any) {\r\n super(response);\r\n this.filter = new CoursePlanFilter(this.body.filter);\r\n this.items = this.body.items.map(CoursePlan.fromJson);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchCourseItemsRequest, FetchCourseItemsResponse } from './types/fetch-course-items';\r\nimport { FetchCourseItemRequest, FetchCourseItemResponse } from './types/fetch-course-item';\r\nimport { FetchCourseRequest, FetchCourseResponse } from './types/fetch-course';\r\nimport { FetchCoursePlansRequest, FetchCoursePlansResponse } from './types/fetch-course-plans';\r\n\r\nexport default class CoursePreviewApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetchCourse(request: FetchCourseRequest) {\r\n return await this.api.execute(request, FetchCourseResponse);\r\n }\r\n\r\n public async fetchCourseItem(request: FetchCourseItemRequest) {\r\n return await this.api.execute(request, FetchCourseItemResponse);\r\n }\r\n\r\n public async fetchCourseItems(request: FetchCourseItemsRequest) {\r\n return await this.api.execute(request, FetchCourseItemsResponse);\r\n }\r\n\r\n public async fetchCoursePlans(request: FetchCoursePlansRequest){\r\n return await this.api.execute(request, FetchCoursePlansResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourse } from 'models';\r\n\r\nexport class FetchStudentCourseRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n id,\r\n beginDate,\r\n endDate,\r\n state,\r\n flowBeginDate,\r\n accessBeginDate,\r\n course{\r\n id,\r\n name,\r\n dontAskFeedback\r\n },\r\n currentCourseItem{\r\n id\r\n }, \r\n student{\r\n id,\r\n firstName,\r\n lastName\r\n },\r\n progress\r\n }`;\r\n public url: string = `/student-course-preview/${this.studentCourseId}`;\r\n\r\n constructor(public studentCourseId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchStudentCourseResponse extends ApiResponse {\r\n studentCourse: StudentCourse;\r\n constructor(response: any) {\r\n super(response);\r\n this.studentCourse = StudentCourse.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseItem } from 'models';\r\n\r\nexport class FetchStudentCourseItemRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n\r\n constructor(public studentCourseId: string, public itemId: string) {\r\n super();\r\n this.url = `/student-course-preview/${this.studentCourseId}/items/${this.itemId}`;\r\n }\r\n}\r\n\r\nexport class FetchStudentCourseItemResponse extends ApiResponse {\r\n studentCourseItem: StudentCourseItem;\r\n constructor(response: any) {\r\n super(response);\r\n this.studentCourseItem = StudentCourseItem.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseItem } from 'models';\r\n\r\nexport class FetchStudentCourseItemsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n\r\n public url: string = `/student-course-preview/${this.studentCourseId}/items`;\r\n\r\n constructor(public studentCourseId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchStudentCourseItemsResponse extends ApiResponse {\r\n items: StudentCourseItem[];\r\n constructor(response: any) {\r\n super(response);\r\n this.items = this.body.items.map(StudentCourseItem.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseProgress } from 'models';\r\n\r\nexport class CompleteStudentCourseItemRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/student-course-preview/item/complete`;\r\n public body = {\r\n studentCourseId: this.studentCourseId,\r\n courseItemId: this.courseItemId\r\n }\r\n\r\n constructor(public studentCourseId: string, public courseItemId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CompleteStudentCourseItemResponse extends ApiResponse {\r\n progresses: StudentCourseProgress[];\r\n constructor(response: any) {\r\n super(response);\r\n this.progresses = this.body.map(StudentCourseProgress.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseProgress } from 'models';\r\n\r\nexport class ResetStudentCourseItemRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/student-course-preview/item/uncomplete`;\r\n public body = {\r\n studentCourseId: this.studentCourseId,\r\n courseItemId: this.courseItemId\r\n }\r\n\r\n constructor(public studentCourseId: string, public courseItemId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class ResetStudentCourseItemResponse extends ApiResponse {\r\n progresses: StudentCourseProgress[];\r\n constructor(response: any) {\r\n super(response);\r\n this.progresses = this.body.map(StudentCourseProgress.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseProgress } from 'models';\r\n\r\nexport class UnblockStudentCourseItemRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/student-course-preview/item/open`;\r\n public body = {\r\n studentCourseId: this.studentCourseId,\r\n courseItemId: this.courseItemId\r\n }\r\n\r\n constructor(public studentCourseId: string, public courseItemId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class UnblockStudentCourseItemResponse extends ApiResponse {\r\n progresses: StudentCourseProgress[];\r\n constructor(response: any) {\r\n super(response);\r\n this.progresses = this.body.map(StudentCourseProgress.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { StudentCourseProgress } from 'models';\r\n\r\nexport class BlockStudentCourseItemRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/student-course-preview/item/close`;\r\n public body = {\r\n studentCourseId: this.studentCourseId,\r\n courseItemId: this.courseItemId\r\n }\r\n\r\n constructor(public studentCourseId: string, public courseItemId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class BlockStudentCourseItemResponse extends ApiResponse {\r\n progresses: StudentCourseProgress[];\r\n constructor(response: any) {\r\n super(response);\r\n this.progresses = this.body.map(StudentCourseProgress.fromJson);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchStudentCourseRequest, FetchStudentCourseResponse } from './types/fetch-student-course';\r\nimport { FetchStudentCourseItemRequest, FetchStudentCourseItemResponse } from './types/fetch-student-course-item';\r\nimport { FetchStudentCourseItemsRequest, FetchStudentCourseItemsResponse } from './types/fetch-student-course-items';\r\nimport { CompleteStudentCourseItemRequest, CompleteStudentCourseItemResponse } from './types/complete-student-course-item';\r\nimport { ResetStudentCourseItemRequest, ResetStudentCourseItemResponse } from './types/reset-student-course-item';\r\nimport { UnblockStudentCourseItemRequest, UnblockStudentCourseItemResponse } from './types/unblock-student-course-item';\r\nimport { BlockStudentCourseItemRequest, BlockStudentCourseItemResponse } from './types/block-student-course-item';\r\n\r\n\r\nexport default class StudentCoursePreviewApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetchStudentCourse(request: FetchStudentCourseRequest) {\r\n return await this.api.execute(request, FetchStudentCourseResponse);\r\n }\r\n\r\n public async fetchStudentCourseItem(request: FetchStudentCourseItemRequest) {\r\n return await this.api.execute(request, FetchStudentCourseItemResponse);\r\n }\r\n\r\n public async fetchStudentCourseItems(request: FetchStudentCourseItemsRequest) {\r\n return await this.api.execute(request, FetchStudentCourseItemsResponse);\r\n }\r\n\r\n public async completeStudentCourseItem(request: CompleteStudentCourseItemRequest) {\r\n return await this.api.execute(request, CompleteStudentCourseItemResponse);\r\n }\r\n\r\n public async resetStudentCourseItem(request: ResetStudentCourseItemRequest) {\r\n return await this.api.execute(request, ResetStudentCourseItemResponse);\r\n }\r\n\r\n public async unblockStudentCourseItem(request: UnblockStudentCourseItemRequest) {\r\n return await this.api.execute(request, UnblockStudentCourseItemResponse);\r\n }\r\n\r\n public async blockStudentCourseItem(request: BlockStudentCourseItemRequest) {\r\n return await this.api.execute(request, BlockStudentCourseItemResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { ForumThread, ForumTopic } from '@axl/accel-framework/models';\r\nimport type { BanStatus } from '../models/ban-status';\r\n\r\nexport class FetchForumThreadRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n canModerate,\r\n thread{\r\n id,\r\n title,\r\n description,\r\n designHTMLPublished,\r\n designStylePublished,\r\n canStudentCreateTopics,\r\n createdDate,\r\n updatedDate,\r\n lastActivityDate,\r\n topicCount,\r\n commentCount\r\n },\r\n threads{\r\n id,\r\n title,\r\n description,\r\n createdDate,\r\n updatedDate,\r\n lastActivityDate,\r\n topicCount,\r\n commentCount\r\n },\r\n topics{\r\n id,\r\n title,\r\n text,\r\n createdDate,\r\n updatedDate,\r\n lastActivityDate,\r\n commentCount,\r\n lastComment{\r\n id,\r\n createdDate,\r\n student{\r\n id,\r\n firstName,\r\n lastName\r\n }\r\n },\r\n student{\r\n id,\r\n firstName,\r\n lastName,\r\n email\r\n }\r\n },\r\n breadcrumbs(filter:\"{useSort:false}\"){\r\n id, \r\n title\r\n },\r\n banStatus{\r\n type,\r\n untilDate\r\n }\r\n }`;\r\n public url: string = this.threadId ? `/forum/thread/${this.threadId}` : '/forum/thread';\r\n\r\n constructor(public threadId: string | null) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchForumThreadResponse extends ApiResponse {\r\n canModerate: boolean;\r\n thread: ForumThread | null;\r\n threads: ForumThread[];\r\n topics: ForumTopic[];\r\n breadcrumbs: ForumThread[];\r\n banStatus: BanStatus | null;\r\n constructor(response: any) {\r\n super(response);\r\n this.canModerate = this.body.canModerate;\r\n this.thread = this.body.thread ? ForumThread.fromJson(this.body.thread) : null;\r\n this.threads = this.body.threads.map(ForumThread.fromJson);\r\n this.topics = this.body.topics.map(ForumTopic.fromJson);\r\n this.breadcrumbs = this.body.breadcrumbs.map(ForumThread.fromJson);\r\n this.banStatus = this.body.banStatus\r\n ? {\r\n ...this.body.banStatus,\r\n untilDate: this.body.banStatus.untilDate ? new Date(this.body.banStatus.untilDate) : null\r\n } : null\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type CreateTopicRequestModel = {\r\n threadId: string,\r\n title: string,\r\n text: string,\r\n files: string[]\r\n}\r\nexport class CreateTopicRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/forum/topic';\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: CreateTopicRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CreateTopicResponse extends ApiResponse {\r\n id: string;\r\n constructor(response: any) {\r\n super(response);\r\n this.id = this.body;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { TopicComment, TopicCommentFilter } from '@axl/accel-framework/models';\r\n\r\nconst replyCommentFields = `\r\n id,\r\n text,\r\n createdDate,\r\n sequenceNumber,\r\n student{\r\n id,\r\n firstName,\r\n lastName,\r\n email,\r\n avatar {\r\n id,\r\n cloudKey\r\n }\r\n }\r\n `;\r\nconst commentFields = `{\r\n id,\r\n text,\r\n createdDate,\r\n updatedDate,\r\n sequenceNumber,\r\n replyToComment{\r\n ${replyCommentFields}\r\n }\r\n student{\r\n id,\r\n firstName,\r\n lastName,\r\n email,\r\n avatar {\r\n id,\r\n cloudKey\r\n }\r\n },\r\n files{\r\n id,\r\n name,\r\n cloudKey,\r\n extension,\r\n size,\r\n type\r\n },\r\n likeCount,\r\n dislikeCount,\r\n currentUserReaction{\r\n id,\r\n type\r\n }\r\n }`;\r\nexport { commentFields };\r\n\r\nexport class FetchTopicCommentsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = commentFields;\r\n public url: string = '/forum/topic/comment';\r\n public body = {\r\n ...this.filter\r\n }\r\n\r\n constructor(public filter: TopicCommentFilter) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchTopicCommentsResponse extends ApiResponse {\r\n public items: TopicComment[];\r\n public filter: TopicCommentFilter;\r\n constructor(response: any) {\r\n super(response);\r\n this.items = this.body.items.map(TopicComment.fromJson);\r\n this.filter = new TopicCommentFilter(this.body.filter);\r\n }\r\n}\r\n","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { ForumTopic, ForumThread } from '@axl/accel-framework/models';\r\nimport type { BanStatus } from '../models/ban-status';\r\n\r\nexport class FetchTopicRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n canModerate,\r\n topic{\r\n id,\r\n title,\r\n text,\r\n createdDate,\r\n updatedDate,\r\n lastActivityDate,\r\n commentCount,\r\n student{\r\n id,\r\n firstName,\r\n lastName,\r\n email,\r\n avatar {\r\n id,\r\n cloudKey\r\n }\r\n },\r\n files{\r\n id,\r\n name,\r\n cloudKey,\r\n extension,\r\n size,\r\n type\r\n },\r\n likeCount,\r\n dislikeCount,\r\n currentUserReaction{\r\n id,\r\n type\r\n }\r\n },\r\n breadcrumbs(filter:\"{useSort:false}\"){\r\n id, \r\n title\r\n },\r\n banStatus{\r\n type,\r\n untilDate\r\n }\r\n }`;\r\n public url: string = `/forum/topic/${this.topicId}`;\r\n\r\n constructor(public topicId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchTopicResponse extends ApiResponse {\r\n canModerate: boolean;\r\n topic: ForumTopic;\r\n breadcrumbs: ForumThread[];\r\n banStatus: BanStatus | null;\r\n constructor(response: any) {\r\n super(response);\r\n this.canModerate = this.body.canModerate;\r\n this.topic = ForumTopic.fromJson(this.body.topic);\r\n this.breadcrumbs = this.body.breadcrumbs.map(ForumTopic.fromJson);\r\n this.banStatus = this.body.banStatus\r\n ? {\r\n ...this.body.banStatus,\r\n untilDate: this.body.banStatus.untilDate ? new Date(this.body.banStatus.untilDate) : null\r\n }\r\n : null;\r\n }\r\n}\r\n","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { TopicComment } from '@axl/accel-framework/models';\r\nimport { commentFields } from './fetch-topic-comments';\r\n\r\nexport type CreateTopicCommentRequestModel = {\r\n topicId: string,\r\n replyId?: string,\r\n text: string,\r\n files: string[]\r\n}\r\nexport class CreateTopicCommentRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/forum/topic/comment';\r\n public body = {\r\n ...this.model,\r\n fields: commentFields\r\n }\r\n\r\n constructor(public model: CreateTopicCommentRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CreateTopicCommentResponse extends ApiResponse {\r\n comment: TopicComment;\r\n itemsTotal: number;\r\n constructor(response: any) {\r\n super(response);\r\n this.comment = TopicComment.fromJson(this.body.comment);\r\n this.itemsTotal = this.body.itemsTotal;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type UpdateTopicCommentRequestModel = {\r\n commentId: string,\r\n text: string,\r\n files: string[]\r\n replyId?: string;\r\n}\r\nexport class UpdateTopicCommentRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/forum/topic/comment';\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: UpdateTopicCommentRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class UpdateTopicCommentResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class DeleteTopicCommentRequest extends ApiRequest {\r\n public method = HttpMethod.DELETE;\r\n public url: string = `/forum/topic/comment/${this.commentId}`;\r\n\r\n constructor(public commentId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class DeleteTopicCommentResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type UpdateTopicRequestModel = {\r\n id: string,\r\n text: string,\r\n files: string[]\r\n}\r\n\r\nexport class UpdateTopicRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/forum/topic';\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: UpdateTopicRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class UpdateTopicResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class FetchTopicCommentPositionRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/forum/topic/${this.topicId}/comment-position/${this.sequenceNumber}`;\r\n\r\n constructor(public topicId: string, public sequenceNumber: number) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchTopicCommentPositionResponse extends ApiResponse {\r\n public position: number;\r\n constructor(response: any) {\r\n super(response);\r\n this.position = this.body;\r\n }\r\n}\r\n","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class DeleteTopicRequest extends ApiRequest {\r\n public method = HttpMethod.DELETE;\r\n public url: string = `/forum/topic/${this.topicId}`;\r\n\r\n constructor(public topicId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class DeleteTopicResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type BlockStudentRequestModel = {\r\n threadId: string;\r\n studentId: string;\r\n reason: string;\r\n beginDate: Date;\r\n endDate: Date | null;\r\n topicId?: string;\r\n commentId?: string;\r\n}\r\n\r\nexport class BlockStudentRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/forum/block-student`;\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: BlockStudentRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class BlockStudentResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport type { ForumReactionType } from '@axl/accel-framework/models/forum/reaction/ForumReactionType';\r\nimport { ForumReaction } from '@axl/accel-framework/models';\r\n\r\nexport type CreateReactionRequestModel = {\r\n topicId?: string;\r\n commentId?: string;\r\n type: ForumReactionType;\r\n}\r\nexport class CreateReactionRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/forum/reaction';\r\n public body = {\r\n ...this.model\r\n }\r\n\r\n constructor(public model: CreateReactionRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CreateReactionResponse extends ApiResponse {\r\n reaction: ForumReaction;\r\n constructor(response: any) {\r\n super(response);\r\n this.reaction = ForumReaction.fromJson(response.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class DeleteReactionRequest extends ApiRequest {\r\n public method = HttpMethod.DELETE;\r\n public url: string = `/forum/reaction/${this.reactionId}`;\r\n\r\n constructor(public reactionId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class DeleteReactionResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchForumThreadRequest, FetchForumThreadResponse } from './types/fetch-forum-thread';\r\nimport { CreateTopicRequest, CreateTopicResponse } from './types/create-topic';\r\nimport { FetchTopicCommentsRequest, FetchTopicCommentsResponse } from './types/fetch-topic-comments';\r\nimport { FetchTopicRequest, FetchTopicResponse } from './types/fetch-topic';\r\nimport { CreateTopicCommentRequest, CreateTopicCommentResponse } from './types/create-topic-comment';\r\nimport { UpdateTopicCommentRequest, UpdateTopicCommentResponse } from './types/update-topic-comment';\r\nimport { DeleteTopicCommentRequest, DeleteTopicCommentResponse } from './types/delete-topic-comment';\r\nimport { UpdateTopicRequest, UpdateTopicResponse } from './types/update-topic';\r\nimport { FetchTopicCommentPositionRequest, FetchTopicCommentPositionResponse } from './types/fetch-topic-comment-position';\r\nimport { DeleteTopicRequest, DeleteTopicResponse } from './types/delete-topic';\r\nimport { BlockStudentRequest, BlockStudentResponse } from './types/block-student';\r\nimport { CreateReactionRequest, CreateReactionResponse } from './types/create-reaction';\r\nimport { DeleteReactionRequest, DeleteReactionResponse } from './types/delete-reaction';\r\n\r\nexport default class ForumApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetchThread(request: FetchForumThreadRequest) {\r\n return await this.api.execute(request, FetchForumThreadResponse);\r\n }\r\n\r\n public async fetchTopic(request: FetchTopicRequest) {\r\n return await this.api.execute(request, FetchTopicResponse);\r\n }\r\n\r\n public async createTopic(request: CreateTopicRequest) {\r\n return await this.api.execute(request, CreateTopicResponse);\r\n }\r\n\r\n public async updateTopic(request: UpdateTopicRequest) {\r\n return await this.api.execute(request, UpdateTopicResponse);\r\n }\r\n\r\n public async fetchTopicComments(request: FetchTopicCommentsRequest) {\r\n return await this.api.execute(request, FetchTopicCommentsResponse);\r\n }\r\n\r\n public async createTopicComment(request: CreateTopicCommentRequest) {\r\n return await this.api.execute(request, CreateTopicCommentResponse);\r\n }\r\n\r\n public async updateTopicComment(request: UpdateTopicCommentRequest) {\r\n return await this.api.execute(request, UpdateTopicCommentResponse);\r\n }\r\n\r\n public async deleteTopicComment(request: DeleteTopicCommentRequest) {\r\n return await this.api.execute(request, DeleteTopicCommentResponse);\r\n }\r\n\r\n public async fetchTopicCommentPosition(request: FetchTopicCommentPositionRequest) {\r\n return await this.api.execute(request, FetchTopicCommentPositionResponse);\r\n }\r\n\r\n public async deleteTopic(request: DeleteTopicRequest) {\r\n return await this.api.execute(request, DeleteTopicResponse);\r\n }\r\n\r\n public async blockStudent(request: BlockStudentRequest) {\r\n return await this.api.execute(request, BlockStudentResponse);\r\n }\r\n\r\n public async createReaction(request: CreateReactionRequest) {\r\n return await this.api.execute(request, CreateReactionResponse);\r\n }\r\n\r\n public async updateReaction(request: CreateReactionRequest) {\r\n return await this.api.execute(request, CreateReactionResponse);\r\n }\r\n\r\n public async deleteReaction(request: DeleteReactionRequest) {\r\n return await this.api.execute(request, DeleteReactionResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type FetchStatusResponseModel = {\r\n email: string;\r\n unsubscribed: boolean;\r\n}\r\n\r\nexport class FetchStatusRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/student/email-broadcast-subscription-status/${this.studentId}/${this.messageId}`;\r\n\r\n constructor(public studentId: string, public messageId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchStatusResponse extends ApiResponse {\r\n status: FetchStatusResponseModel;\r\n constructor(response: any) {\r\n super(response);\r\n this.status = this.body;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport type UnsubscribeModel = {\r\n messageId: string;\r\n studentId: string;\r\n timestamp: number;\r\n hash: string;\r\n}\r\n\r\nexport class UnsubscribeRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public body = {\r\n ...this.model\r\n }\r\n public url: string = `/student/unsubscribe-email-broadcast`;\r\n\r\n constructor(public model: UnsubscribeModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class UnsubscribeResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchStatusRequest, FetchStatusResponse } from './types/fetch-status';\r\nimport { UnsubscribeRequest, UnsubscribeResponse } from './types/unsubscribe';\r\n\r\nexport default class StudentEmailBroadcastApi {\r\n constructor(private api: Api) { }\r\n\r\n public async fetchStatus(request: FetchStatusRequest) {\r\n return await this.api.execute(request, FetchStatusResponse);\r\n }\r\n\r\n public async unsubscribe(request: UnsubscribeRequest) {\r\n return await this.api.execute(request, UnsubscribeResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolLibraryItem, SchoolLibraryItemFilter } from 'models';\r\n\r\nexport class FetchSchoolLibraryItemsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n id,\r\n title,\r\n type,\r\n flowTimeDelayActive,\r\n flowTimeDelay,\r\n flowTimeDelayCondition,\r\n flowTimeDelayMeasureType,\r\n preventCopingAndSelectingText,\r\n allowComments,\r\n showComments,\r\n ratingEnabled,\r\n ratingCommentRequired,\r\n studentHasAccess,\r\n position,\r\n parentItem {\r\n id,\r\n }\r\n progress {\r\n id\r\n }\r\n }`;\r\n\r\n public url: string = `/school-library-item`;\r\n\r\n constructor(public libraryId: string) {\r\n super();\r\n this.body = {\r\n ... new SchoolLibraryItemFilter({ libraryId: libraryId, useBaseFilter: false })\r\n };\r\n }\r\n}\r\n\r\nexport class FetchSchoolLibraryItemsResponse extends ApiResponse {\r\n items: SchoolLibraryItem[];\r\n constructor(response: any) {\r\n super(response);\r\n this.items = this.body.items.map(SchoolLibraryItem.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolLibraryItem } from 'models';\r\n\r\nexport class FetchSchoolLibraryItemRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n private filesSelector = `files(filter:\"{take:0}\") {\r\n id,\r\n name,\r\n cloudKey,\r\n extension,\r\n size,\r\n type\r\n }`;\r\n public fields = `{\r\n id,\r\n title,\r\n type,\r\n designHTMLPublished,\r\n designStylePublished,\r\n ratingEnabled,\r\n progress{\r\n id,\r\n beginDate,\r\n rating {\r\n id,\r\n comment,\r\n rating,\r\n createdDate,\r\n updatedDate,\r\n ${this.filesSelector}\r\n }\r\n },\r\n\r\n }`;\r\n public url: string = `/school-library-item/${this.libraryId}/${this.itemId}`;\r\n\r\n constructor(public libraryId: string, public itemId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchSchoolLibraryItemResponse extends ApiResponse {\r\n libraryItem: SchoolLibraryItem;\r\n constructor(response: any) {\r\n super(response);\r\n this.libraryItem = SchoolLibraryItem.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolLibrary } from 'models';\r\n\r\nexport class FetchSchoolLibraryRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n id,\r\n title,\r\n flowBeginDate\r\n }`;\r\n public url: string = `/school-library/${this.id}`;\r\n\r\n constructor(public id: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchSchoolLibraryResponse extends ApiResponse {\r\n library: SchoolLibrary;\r\n constructor(response: any) {\r\n super(response);\r\n this.library = SchoolLibrary.fromJson(this.body);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchSchoolLibraryItemsRequest, FetchSchoolLibraryItemsResponse } from './types/fetch-school-library-items';\r\nimport { FetchSchoolLibraryItemRequest, FetchSchoolLibraryItemResponse } from './types/fetch-school-library-item';\r\nimport { FetchSchoolLibraryRequest, FetchSchoolLibraryResponse } from './types/fetch-school-library';\r\n\r\nexport default class SchoolLibraryApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetchLibrary(request: FetchSchoolLibraryRequest) {\r\n return await this.api.execute(request, FetchSchoolLibraryResponse);\r\n }\r\n\r\n public async fetchLibraryItem(request: FetchSchoolLibraryItemRequest) {\r\n return await this.api.execute(request, FetchSchoolLibraryItemResponse);\r\n }\r\n\r\n public async fetchLibraryItems(request: FetchSchoolLibraryItemsRequest) {\r\n return await this.api.execute(request, FetchSchoolLibraryItemsResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolContentItemProgressRating, SchoolContentItemProgressRatingFilter } from '@axl/accel-framework/models';\r\n\r\nexport class FetchCourseItemRatingRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = '/school-content-item-rating';\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public filter: SchoolContentItemProgressRatingFilter, fields?: string) {\r\n super();\r\n this.fields = fields ?? `{\r\n id,\r\n comment,\r\n rating,\r\n createdDate,\r\n updatedDate,\r\n student{\r\n id,\r\n email,\r\n firstName,\r\n lastName\r\n },\r\n comments(filter:\"{take:5}\"){\r\n id,\r\n text,\r\n createdDate,\r\n student{\r\n id,\r\n email,\r\n firstName,\r\n lastName,\r\n avatar {\r\n id,\r\n cloudKey\r\n },\r\n },\r\n admin{\r\n id,\r\n email,\r\n firstName,\r\n lastName,\r\n avatar {\r\n id,\r\n cloudKey\r\n },\r\n },\r\n files{\r\n id,\r\n name,\r\n cloudKey,\r\n extension,\r\n size,\r\n type\r\n },\r\n _count\r\n },\r\n courseItem{\r\n id,\r\n title,\r\n position,\r\n parentItem{\r\n id,\r\n title,\r\n position\r\n },\r\n course{\r\n id,\r\n name\r\n }\r\n }\r\n }`;\r\n }\r\n}\r\n\r\nexport class FetchCourseItemRatingsResponse extends ApiResponse {\r\n public filter: SchoolContentItemProgressRatingFilter;\r\n public items: SchoolContentItemProgressRating[];\r\n constructor(response: any) {\r\n super(response);\r\n this.filter = new SchoolContentItemProgressRatingFilter(this.body.filter);\r\n this.items = this.body.items.map(SchoolContentItemProgressRating.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolContentItemProgressRating } from '@axl/accel-framework/models';\r\n\r\nexport class SaveCourseItemRatingRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = `/school-content-item-rating`;\r\n public body = {\r\n ...this.rating,\r\n fileIds: this.rating.files?.map(i => i.id) ?? [],\r\n }\r\n\r\n constructor(public rating: Partial) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SaveCourseItemRatingResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolContentItemProgressRating, SchoolContentSectionType } from '@axl/accel-framework/models';\r\nimport { StudentCourseProgress } from 'models';\r\n\r\nexport type CreateCourseItemRating = {\r\n sectionType: SchoolContentSectionType;\r\n targetItemId: string;\r\n targetProgressId: string;\r\n text: string;\r\n fileIds: string[];\r\n rating?: number;\r\n}\r\nexport class CreateCourseItemRatingRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/school-content-item-rating';\r\n public body: CreateCourseItemRating = {\r\n sectionType: this.sectionType,\r\n targetItemId: this.targetItemId,\r\n targetProgressId: this.targerProgressId,\r\n fileIds: this.rating.files?.map(x => x.id) ?? [],\r\n text: this.rating.comment,\r\n rating: this.rating.rating,\r\n };\r\n\r\n constructor(\r\n public rating: SchoolContentItemProgressRating, \r\n public sectionType: SchoolContentSectionType, \r\n public targetItemId: string, \r\n public targerProgressId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CreateCourseItemRatingResponse extends ApiResponse {\r\n public id: string;\r\n public progress: StudentCourseProgress;\r\n constructor(response: any) {\r\n super(response);\r\n this.id = this.body.ratingId;\r\n this.progress = StudentCourseProgress.fromJson(this.body.progress);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchCourseItemRatingRequest, FetchCourseItemRatingsResponse } from './types/fetch-course-item-ratings';\r\nimport { SaveCourseItemRatingRequest, SaveCourseItemRatingResponse } from './types/save-course-item-rating';\r\nimport { CreateCourseItemRatingRequest, CreateCourseItemRatingResponse } from './types/create-course-item-rating';\r\n\r\nexport default class CourseItemRatingApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetch(request: FetchCourseItemRatingRequest) {\r\n return await this.api.execute(request, FetchCourseItemRatingsResponse);\r\n }\r\n\r\n public async save(request: SaveCourseItemRatingRequest) {\r\n return await this.api.execute(request, SaveCourseItemRatingResponse);\r\n }\r\n\r\n public async create(request: CreateCourseItemRatingRequest) {\r\n return await this.api.execute(request, CreateCourseItemRatingResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolContentItemComment, SchoolContentItemCommentFilter } from '@axl/accel-framework/models';\r\n\r\nexport class FetchCourseItemCommentsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/school-content-item-comment/${this.progressId}`;\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public progressId: string, public filter: SchoolContentItemCommentFilter) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchCourseItemCommentsResponse extends ApiResponse {\r\n public filter: SchoolContentItemCommentFilter;\r\n public items: SchoolContentItemComment[];\r\n constructor(response: any) {\r\n super(response);\r\n this.filter = new SchoolContentItemCommentFilter(this.body.filter);\r\n this.items = this.body.items.map(SchoolContentItemComment.fromJson);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolContentItemComment, CourseItemCommentState } from '@axl/accel-framework/models';\r\n\r\nexport type SaveCourseItemComment = {\r\n id: string;\r\n text: string;\r\n replyId?: string;\r\n fileIds: string[];\r\n state: CourseItemCommentState;\r\n}\r\n\r\nexport class SaveCourseItemCommentRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = `/school-content-item-comment`;\r\n public body: SaveCourseItemComment = {\r\n id: this.comment.id,\r\n text: this.comment.text,\r\n fileIds: this.comment.files?.map(x => x.id),\r\n state: this.comment.state,\r\n replyId: this.comment.replyId\r\n }\r\n\r\n constructor(public comment: SchoolContentItemComment) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SaveCourseItemCommentResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { SchoolContentItemComment, SchoolContentSectionType } from '@axl/accel-framework/models';\r\n\r\nexport type CreateCourseItemComment = {\r\n targetItemId: string;\r\n sectionType: SchoolContentSectionType;\r\n targetProgressId: string;\r\n ratingId?: string;\r\n parentId?: string;\r\n replyId?: string;\r\n text: string;\r\n fileIds: string[];\r\n}\r\nexport class CreateCourseItemCommentRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/school-content-item-comment';\r\n public body: CreateCourseItemComment = {\r\n targetItemId: this.targetItemId,\r\n sectionType: this.sectionType,\r\n targetProgressId: this.targetProgressId,\r\n ratingId: this.ratingId,\r\n parentId: this.comment.parentId,\r\n replyId: this.comment.replyId,\r\n text: this.comment.text,\r\n fileIds: this.comment.files?.map(x => x.id)\r\n };\r\n\r\n constructor(public comment: SchoolContentItemComment,\r\n public sectionType: SchoolContentSectionType,\r\n public targetItemId: string,\r\n public targetProgressId: string,\r\n public ratingId?: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CreateCourseItemCommentResponse extends ApiResponse {\r\n public id: string;\r\n constructor(response: any) {\r\n super(response);\r\n this.id = this.body;\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class RemoveCourseItemCommentRequest extends ApiRequest {\r\n public method = HttpMethod.DELETE;\r\n public url: string = `/school-content-item-comment/${this.commentId}`;\r\n\r\n constructor(public commentId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class RemoveCourseItemCommentResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchCourseItemCommentsRequest, FetchCourseItemCommentsResponse } from './types/fetch-course-item-comments';\r\nimport { SaveCourseItemCommentRequest, SaveCourseItemCommentResponse } from './types/save-course-item-comment';\r\nimport { CreateCourseItemCommentRequest, CreateCourseItemCommentResponse } from './types/create-course-item-comment';\r\nimport { RemoveCourseItemCommentRequest, RemoveCourseItemCommentResponse } from './types/remove-course-item-comment';\r\n\r\nexport default class CourseItemCommentApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetch(request: FetchCourseItemCommentsRequest) {\r\n return await this.api.execute(request, FetchCourseItemCommentsResponse);\r\n }\r\n\r\n public async save(request: SaveCourseItemCommentRequest) {\r\n return await this.api.execute(request, SaveCourseItemCommentResponse);\r\n }\r\n\r\n public async create(request: CreateCourseItemCommentRequest) {\r\n return await this.api.execute(request, CreateCourseItemCommentResponse);\r\n }\r\n\r\n public async remove(request: RemoveCourseItemCommentRequest) {\r\n return await this.api.execute(request, RemoveCourseItemCommentResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class LoginRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/authorization/login';\r\n public body: any = {\r\n contactId: this.contactId,\r\n email: this.email,\r\n password: this.password,\r\n rememberMe: true\r\n };\r\n public authorized = false;\r\n\r\n constructor(public email: string, public password: string, public contactId?: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class LoginResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class RefreshTokenRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/authorization/refresh';\r\n public body: any = {\r\n token: this.refreshToken\r\n };\r\n public authorized = false;\r\n\r\n constructor(public refreshToken: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class RefreshTokenResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { Lang } from '@axl/accel-framework/enums';\r\n\r\nexport type RegisterRequestModel = {\r\n contactId?: string;\r\n email: string;\r\n password: string;\r\n confirmPassword: string;\r\n lang: Lang;\r\n timezoneOffset: string;\r\n urlParameters: any;\r\n isAgreementAccepted: boolean;\r\n inviteToken?: string;\r\n}\r\n\r\nexport class RegisterRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/authorization/register';\r\n public body: any = {\r\n ...this.model\r\n };\r\n public authorized = false;\r\n\r\n constructor(public model: RegisterRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class RegisterResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class ResetPasswordRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/authorization/reset-password';\r\n public body: any = {\r\n token: this.token,\r\n password: this.password,\r\n confirmPassword: this.confirmPassword,\r\n };\r\n public authorized = false;\r\n\r\n constructor(public token: string,\r\n public password: string,\r\n public confirmPassword: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class ResetPasswordResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class ForgotPasswordRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/authorization/forgot-password';\r\n public body: any = {\r\n email: this.email\r\n };\r\n public authorized = false;\r\n\r\n constructor(public email: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class ForgotPasswordResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\ntype ConfirmEmailModel = {\r\n token: string,\r\n userId: string,\r\n}\r\n\r\nexport class ConfirmEmailRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/authorization/confirm-email';\r\n public body: any = {\r\n ...this.model\r\n };\r\n\r\n constructor(public model: ConfirmEmailModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class ConfirmEmailResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class ConfirmInviteModel {\r\n token: string\r\n password: string;\r\n confirmPassword: string;\r\n}\r\n\r\nexport class ConfirmInviteRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/authorization/confirm-invite';\r\n public body: any = {\r\n ...this.model\r\n };\r\n\r\n constructor(public model: ConfirmInviteModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class ConfirmInviteResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { InviteStatus } from '@axl/accel-framework/enums';\r\n\r\nexport class CheckInviteRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/authorization/check-invite/${this.token}`;\r\n\r\n constructor(public token: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class CheckInviteResponse extends ApiResponse {\r\n public status: InviteStatus;\r\n constructor(response?: any) {\r\n super(response);\r\n this.status = this.body;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class LoginTokenRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/authorization/login-token';\r\n public body = {\r\n token: this.token,\r\n }\r\n\r\n constructor(public token: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class LoginTokenResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}\r\n","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class LogoutRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/authorization/logout';\r\n public body: any = {\r\n token: this.refreshToken\r\n };\r\n public authorized = true;\r\n\r\n constructor(public refreshToken: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class LogoutResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class ProlongSessionRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/authorization/prolong-session';\r\n public body: any = {\r\n token: this.refreshToken\r\n };\r\n public authorized = true;\r\n\r\n constructor(public refreshToken: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class ProlongSessionResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { Student } from 'models';\r\n\r\nexport class FetchMeRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = '/authorization/me';\r\n}\r\n\r\nexport class FetchMeResponse extends ApiResponse {\r\n public student: Student;\r\n constructor(response: any) {\r\n super(response);\r\n this.student = Student.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class LoginAsModel {\r\n sessionId: string;\r\n studentId: string;\r\n timestamp: number;\r\n signature: string;\r\n}\r\n\r\nexport class LoginAsRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/authorization/login-as';\r\n public body: any = {\r\n ...this.model\r\n };\r\n\r\n constructor(public model: Partial) {\r\n super();\r\n }\r\n}\r\n\r\nexport class LoginAsResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class SendInviteRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/authorization/send-invite';\r\n public body: any = {\r\n email: this.email\r\n };\r\n\r\n constructor(public email: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SendInviteResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class FetchContactRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/authorization/contact/${this.contactId}`;\r\n\r\n constructor(public contactId: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchContactResponse extends ApiResponse {\r\n public id: string;\r\n public email: string;\r\n public isRegistered: boolean;\r\n constructor(response: any) {\r\n super(response);\r\n this.id = this.body.id,\r\n this.email = this.body.email,\r\n this.isRegistered = this.body.isRegistered\r\n }\r\n}\r\n","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\nimport { Lang } from '@axl/accel-framework/enums';\r\n\r\nexport type RegisterContactRequestModel = {\r\n contactId: string;\r\n email: string;\r\n password: string;\r\n confirmPassword: string;\r\n lang: Lang;\r\n timezoneOffset: string;\r\n urlParameters: any;\r\n isAgreementAccepted: boolean;\r\n}\r\n\r\nexport class RegisterContactRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/authorization/register-contact';\r\n public body: any = {\r\n ...this.model\r\n };\r\n public authorized = false;\r\n\r\n constructor(public model: RegisterContactRequestModel) {\r\n super();\r\n }\r\n}\r\n\r\nexport class RegisterContactResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class FetchEmailNotificationsSubscriptionStatusRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/authorization/email-notifications-subscription-status?studentId=${this.studentId}&email=${this.email}`;\r\n\r\n constructor(public studentId: string, public email:string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchEmailNotificationsSubscriptionStatusResponse extends ApiResponse {\r\n public subscribed: boolean;\r\n constructor(response: any) {\r\n super(response);\r\n this.subscribed = this.body;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class UnsubscribeEmailNotificationsRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/authorization/unsubscribe-email-notifications';\r\n public body: any = {\r\n studentId: this.studentId,\r\n email: this.email\r\n };\r\n\r\n constructor(public studentId: string, public email:string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class UnsubscribeEmailNotificationsResponse extends ApiResponse {\r\n constructor(response?: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { LoginRequest, LoginResponse } from './types/login';\r\nimport { RefreshTokenRequest, RefreshTokenResponse } from './types/refresh-token';\r\nimport { RegisterRequest, RegisterResponse } from './types/register';\r\nimport { ResetPasswordResponse, ResetPasswordRequest } from './types/reset-password';\r\nimport { ForgotPasswordRequest, ForgotPasswordResponse } from './types/forgot-password';\r\nimport { ConfirmEmailRequest, ConfirmEmailResponse } from './types/confirm-email';\r\nimport { ConfirmInviteRequest, ConfirmInviteResponse } from './types/confirm-invite';\r\nimport { CheckInviteRequest, CheckInviteResponse } from './types/check-invite';\r\nimport { LoginTokenRequest, LoginTokenResponse } from './types/login-token';\r\nimport { LogoutRequest, LogoutResponse } from './types/logout';\r\nimport { ProlongSessionRequest, ProlongSessionResponse } from './types/prolong-session';\r\nimport { FetchMeRequest, FetchMeResponse } from './types/me';\r\nimport { LoginAsRequest, LoginAsResponse } from './types/login-as';\r\nimport { SendInviteRequest, SendInviteResponse } from './types/send-invite';\r\nimport { FetchContactRequest, FetchContactResponse } from './types/contact';\r\nimport { RegisterContactRequest, RegisterContactResponse } from './types/register-contact';\r\nimport { FetchEmailNotificationsSubscriptionStatusRequest, FetchEmailNotificationsSubscriptionStatusResponse } from './types/email-notifications-subscription-status';\r\nimport { UnsubscribeEmailNotificationsRequest, UnsubscribeEmailNotificationsResponse } from './types/unsubscribe-email-notifications';\r\n\r\nexport default class AuthApi {\r\n constructor(protected api: Api) {\r\n }\r\n\r\n public async login(request: LoginRequest) {\r\n return await this.api.execute(request, LoginResponse);\r\n }\r\n\r\n public async logout(request: LogoutRequest) {\r\n return await this.api.execute(request, LogoutResponse);\r\n }\r\n\r\n public async refreshToken(request: RefreshTokenRequest) {\r\n return await this.api.execute(request, RefreshTokenResponse);\r\n }\r\n\r\n public async register(request: RegisterRequest) {\r\n return await this.api.execute(request, RegisterResponse);\r\n }\r\n\r\n public async registerContact(request: RegisterContactRequest) {\r\n return await this.api.execute(request, RegisterContactResponse);\r\n }\r\n\r\n public async resetPassword(request: ResetPasswordRequest) {\r\n return await this.api.execute(request, ResetPasswordResponse);\r\n }\r\n\r\n public async confirmEmail(request: ConfirmEmailRequest) {\r\n return await this.api.execute(request, ConfirmEmailResponse);\r\n }\r\n\r\n public async checkInvite(request: CheckInviteRequest) {\r\n return await this.api.execute(request, CheckInviteResponse);\r\n }\r\n\r\n public async confirmInvite(request: ConfirmInviteRequest) {\r\n return await this.api.execute(request, ConfirmInviteResponse);\r\n }\r\n\r\n public async sendInvite(request: SendInviteRequest) {\r\n return await this.api.execute(request, SendInviteResponse);\r\n }\r\n\r\n public async forgotPassword(request: ForgotPasswordRequest) {\r\n return await this.api.execute(request, ForgotPasswordResponse);\r\n }\r\n\r\n public async loginToken(request: LoginTokenRequest) {\r\n return await this.api.execute(request, LoginTokenResponse);\r\n }\r\n\r\n public async loginAs(request: LoginAsRequest) {\r\n return await this.api.execute(request, LoginAsResponse);\r\n }\r\n\r\n public async prolongSession(request: ProlongSessionRequest) {\r\n return await this.api.execute(request, ProlongSessionResponse);\r\n }\r\n\r\n public async fetchContact(request: FetchContactRequest) {\r\n return await this.api.execute(request, FetchContactResponse);\r\n }\r\n\r\n public async fetchMe(request: FetchMeRequest) {\r\n return await this.api.execute(request, FetchMeResponse);\r\n }\r\n\r\n public async fetchEmailNotificationsSubscriptionStatus(request: FetchEmailNotificationsSubscriptionStatusRequest) {\r\n return await this.api.execute(request, FetchEmailNotificationsSubscriptionStatusResponse);\r\n }\r\n\r\n public async unsubscribeEmailNotifications(request: UnsubscribeEmailNotificationsRequest) {\r\n return await this.api.execute(request, UnsubscribeEmailNotificationsResponse);\r\n }\r\n}","import { HttpMethod, ApiRequest, ApiResponse, Optional, toOptional } from '@axl/accel-framework/api';\r\nimport { UserNotification } from '@axl/accel-framework/models';\r\nimport { type Moment } from 'moment';\r\n\r\nexport type SaveNotificationModel = {\r\n id: string;\r\n seenDate: Optional;\r\n}\r\n\r\nexport class SaveNotificationRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public url: string = '/notification';\r\n\r\n public body: SaveNotificationModel = {\r\n id: this.notification.id!,\r\n seenDate: toOptional(this.notification.seenDate),\r\n }\r\n\r\n constructor(public notification: Partial) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SaveNotificationResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiListResponse, ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { UserNotification, UserNotificationFilter } from '@axl/accel-framework/models';\r\n\r\nexport class FetchNotificationsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n id,\r\n type,\r\n payloadJson,\r\n createdDate,\r\n seenDate,\r\n adminId,\r\n studentId,\r\n adminTaskId,\r\n courseItemId,\r\n libraryItemId,\r\n orderId,\r\n orderPaymentId,\r\n scenarioId,\r\n chatConversationId,\r\n courseId,\r\n libraryId,\r\n courseItemTaskId,\r\n schoolContentItemCommentId,\r\n }`;\r\n //TODO taskAnswerId\r\n public url: string = `/notification`;\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public filter?: UserNotificationFilter, fields?: string) {\r\n super();\r\n this.fields = fields || this.fields;\r\n }\r\n}\r\n\r\nexport class FetchNotificationsResponse extends ApiListResponse {\r\n constructor(response: any) {\r\n super(response);\r\n this.items = this.body.items.map(UserNotification.fromJson);\r\n this.filter = new UserNotificationFilter(this.body.filter);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class DeleteNotificationRequest extends ApiRequest {\r\n public method = HttpMethod.DELETE;\r\n public url: string = `/notification/${this.id}`;\r\n\r\n constructor(public id: string) {\r\n super();\r\n }\r\n}\r\n\r\nexport class DeleteNotificationResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { UserNotificationSettings } from '@axl/accel-framework/models';\r\n\r\nexport class FetchNotificationSettingsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public fields = `{\r\n useEmail,\r\n email,\r\n customEmail,\r\n useTg,\r\n tgId,\r\n tgLink,\r\n channels {\r\n id,\r\n useSite,\r\n useEmail,\r\n useTg,\r\n notificationType,\r\n subscriptionId\r\n }\r\n }`;\r\n public url: string = `/notification/settings`;\r\n\r\n constructor(fields?: string) {\r\n super();\r\n this.fields = fields || this.fields;\r\n }\r\n}\r\n\r\nexport class FetchNotificationSettingsResponse extends ApiResponse {\r\n public settings: UserNotificationSettings;\r\n constructor(response: any) {\r\n super(response);\r\n this.settings = UserNotificationSettings.fromJson(this.body);\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod, Optional, toOptional } from '@axl/accel-framework/api';\r\nimport { UserNotificationSettings } from '@axl/accel-framework/models';\r\n\r\nexport type SaveNotificationSettingsModel = {\r\n useEmail: Optional;\r\n customEmail: Optional;\r\n useTg: Optional;\r\n}\r\n\r\nexport class SaveNotificationSettingsRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public body: SaveNotificationSettingsModel = {\r\n useEmail: toOptional(this.settings.useEmail),\r\n customEmail: toOptional(this.settings.customEmail ?? undefined),\r\n useTg: toOptional(this.settings.useTg),\r\n }\r\n public url: string = `/notification/settings`;\r\n\r\n constructor(public settings: UserNotificationSettings) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SaveNotificationSettingsResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { FetchNotificationSettingsRequest, FetchNotificationSettingsResponse } from './types/fetch';\r\nimport { SaveNotificationSettingsRequest, SaveNotificationSettingsResponse } from './types/save';\r\n\r\nexport default class NotificationSettingsApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetch(request: FetchNotificationSettingsRequest) {\r\n return await this.api.execute(request, FetchNotificationSettingsResponse);\r\n }\r\n\r\n public async save(request: SaveNotificationSettingsRequest) {\r\n return await this.api.execute(request, SaveNotificationSettingsResponse);\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\nimport { UserNotificationFilter } from '@axl/accel-framework/models';\r\n\r\nexport class FetchCountNotificationsRequest extends ApiRequest {\r\n public method = HttpMethod.GET;\r\n public url: string = `/notification/count`;\r\n public body = {\r\n ...this.filter,\r\n }\r\n\r\n constructor(public filter?: UserNotificationFilter) {\r\n super();\r\n }\r\n}\r\n\r\nexport class FetchCountNotificationsResponse extends ApiResponse {\r\n public count: number;\r\n constructor(response: any) {\r\n super(response);\r\n this.count = this.body;\r\n }\r\n}","import { ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { HttpMethod } from '@axl/accel-framework/api';\r\n\r\nexport class MarkAllAsReadNotificationsRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = `/notification/markAllAsRead`;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\nexport class MarkAllAsReadNotificationsResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import { HttpMethod, ApiRequest, ApiResponse } from '@axl/accel-framework/api';\r\nimport { UserNotificationType } from '@axl/accel-framework/models';\r\n\r\ntype CreateNotificationChannelModel = {\r\n notificationType: UserNotificationType;\r\n useSite: boolean;\r\n useEmail: boolean;\r\n useTg: boolean;\r\n}\r\n\r\nexport class CreateNotificationChannelRequest extends ApiRequest {\r\n public method = HttpMethod.POST;\r\n public url: string = '/notification/channel';\r\n\r\n constructor(public model: CreateNotificationChannelModel) {\r\n super();\r\n this.body = model;\r\n }\r\n}\r\n\r\nexport class CreateNotificationChannelResponse extends ApiResponse {\r\n public id: string;\r\n constructor(response: any) {\r\n super(response);\r\n this.id = this.body;\r\n }\r\n}","import { ApiRequest, ApiResponse, HttpMethod, Optional, toOptional } from '@axl/accel-framework/api';\r\nimport { UserNotificationChannel } from '@axl/accel-framework/models';\r\n\r\nexport type SaveNotificationChannelModel = {\r\n id: string;\r\n useSite: Optional;\r\n useEmail: Optional;\r\n useTg: Optional;\r\n}\r\n\r\nexport class SaveNotificationChannelRequest extends ApiRequest {\r\n public method = HttpMethod.PUT;\r\n public body: SaveNotificationChannelModel = {\r\n id: this.id,\r\n useSite: toOptional(this.changes.useSite),\r\n useEmail: toOptional(this.changes.useEmail),\r\n useTg: toOptional(this.changes.useTg),\r\n }\r\n public url: string = `/notification/channel`;\r\n\r\n constructor(public id: string, public changes: Partial) {\r\n super();\r\n }\r\n}\r\n\r\nexport class SaveNotificationChannelResponse extends ApiResponse {\r\n constructor(response: any) {\r\n super(response);\r\n }\r\n}","import Api from 'api';\r\nimport { CreateNotificationChannelRequest, CreateNotificationChannelResponse } from './types/create';\r\nimport { SaveNotificationChannelRequest, SaveNotificationChannelResponse, } from './types/save';\r\n\r\nexport default class NotificationChannelApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async create(request: CreateNotificationChannelRequest) {\r\n return await this.api.execute(request, CreateNotificationChannelResponse);\r\n }\r\n\r\n public async save(request: SaveNotificationChannelRequest) {\r\n return await this.api.execute(request, SaveNotificationChannelResponse);\r\n }\r\n}","import { SaveNotificationRequest, SaveNotificationResponse } from './types/save';\r\nimport { FetchNotificationsRequest, FetchNotificationsResponse } from './types/fetch';\r\nimport Api from 'api';\r\nimport { DeleteNotificationRequest, DeleteNotificationResponse } from './types/delete';\r\nimport NotificationSettingsApi from './Settings';\r\nimport { FetchCountNotificationsRequest, FetchCountNotificationsResponse } from './types/fetch-count';\r\nimport { MarkAllAsReadNotificationsRequest, MarkAllAsReadNotificationsResponse } from './types/mark-all-as-read';\r\nimport NotificationChannelApi from './Channel';\r\n\r\nexport default class NotificationApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n public async fetch(request: FetchNotificationsRequest) {\r\n return await this.api.execute(request, FetchNotificationsResponse);\r\n }\r\n\r\n public async save(request: SaveNotificationRequest) {\r\n return await this.api.execute(request, SaveNotificationResponse);\r\n }\r\n\r\n public async delete(request: DeleteNotificationRequest) {\r\n return await this.api.execute(request, DeleteNotificationResponse);\r\n }\r\n\r\n public async fetchCount(request: FetchCountNotificationsRequest) {\r\n return await this.api.execute(request, FetchCountNotificationsResponse);\r\n }\r\n\r\n public async markAllAsRead(request: MarkAllAsReadNotificationsRequest) {\r\n return await this.api.execute(request, MarkAllAsReadNotificationsResponse);\r\n }\r\n\r\n public settings = new NotificationSettingsApi(this.api);\r\n public channel = new NotificationChannelApi(this.api);\r\n}","import Api from 'api';\r\nimport { BaseFilter, PartnershipMember, PartnershipOffer, PartnershipTransaction, PartnershipTransactionFilter, PartnershipTransactionRequest, PurchaseOrder } from '@axl/accel-framework/models';\r\nimport { CrudApi } from '@axl/accel-framework/api';\r\nimport { UtmTag } from 'components/selects/UtmTagSelect/UtmTagSelect';\r\n\r\nexport type TotalItem = {\r\n value: number;\r\n type: string;\r\n valueType: 'value' | 'currency' | 'percent'\r\n}\r\n\r\nexport default class PartnershipApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n member = new MemberApi(this.api);\r\n transaction = new TransactionApi(this.api);\r\n transactionRequest = new TransactionRequestApi(this.api);\r\n offer = new OfferApi(this.api);\r\n order = new PartnershipOrderApi(this.api);\r\n utm = new UtmTagApi(this.api);\r\n\r\n fetchTotals = (filter: PartnershipTotalsFilter) => this.api.post<{ items: TotalItem[] }>('/partnership/totals', { filter }, json => ({ items: json.items }))\r\n fetchMaxAmount = () => this.api.get('/partnership/max-amount');\r\n}\r\n\r\nexport class PartnershipTotalsFilter extends BaseFilter {\r\n constructor(filter?: Partial) {\r\n super();\r\n if (filter) this.update(filter);\r\n }\r\n\r\n dateFrom: moment.Moment | null;\r\n dateTo: moment.Moment | null;\r\n\r\n utmSources: string[] = [];\r\n utmMediums: string[] = [];\r\n utmCampaigns: string[] = [];\r\n utmTerms: string[] = [];\r\n utmContents: string[] = [];\r\n\r\n get hasChanges() {\r\n return this.dateFrom != null\r\n || this.dateTo != null\r\n || this.utmSources.length > 0\r\n || this.utmMediums.length > 0\r\n || this.utmCampaigns.length > 0\r\n || this.utmTerms.length > 0\r\n || this.utmContents.length > 0;\r\n }\r\n\r\n update(changes: Partial) {\r\n super.update(changes);\r\n }\r\n}\r\n\r\n\r\nexport type PartnershipTransactionTotals = {\r\n depositAmount: number;\r\n pendingAmount: number;\r\n withdrawalAmount: number;\r\n requestedAmount: number;\r\n}\r\nexport class TransactionApi extends CrudApi {\r\n constructor(private api: Api) {\r\n super(api, {\r\n endpoint: '/partnership/transaction',\r\n parse: e => PartnershipTransaction.fromJson(e),\r\n defaultFields: `{\r\n id,\r\n createdDate,\r\n amount,\r\n fee,\r\n comment,\r\n partner{\r\n id,\r\n firstName,\r\n lastName,\r\n email\r\n },\r\n student{\r\n id,\r\n firstName,\r\n lastName,\r\n email\r\n },\r\n type,\r\n order{\r\n id,\r\n number\r\n },\r\n validAfterDate,\r\n level,\r\n levelPartner{\r\n id,\r\n firstName,\r\n lastName,\r\n email\r\n }\r\n }`\r\n });\r\n }\r\n\r\n fetchTotals = (filter?: PartnershipTransactionFilter) => this.api.post<{ items: TotalItem[] }>(this.settings.endpoint + '/totals', { filter }, json => ({ items: json.items }));\r\n}\r\n\r\n\r\nexport class MemberApi extends CrudApi {\r\n constructor(private api: Api) {\r\n super(api, {\r\n endpoint: '/partnership/member',\r\n parse: e => PartnershipMember.fromJson(e),\r\n defaultFields: `{\r\n id,\r\n acceptedDate\r\n }`\r\n });\r\n }\r\n accept = () => this.api.put(this.settings.endpoint, { accepted: true });\r\n}\r\n\r\nexport class OfferApi extends CrudApi {\r\n constructor(api: Api) {\r\n super(api, {\r\n endpoint: '/partnership/offer',\r\n parse: e => PartnershipOffer.fromJson(e),\r\n defaultFields: `{\r\n id,\r\n title,\r\n url,\r\n urlsJson,\r\n description,\r\n fee,\r\n feeType,\r\n productType,\r\n levels,\r\n productLinks{\r\n product{\r\n id,\r\n name,\r\n }\r\n }\r\n }`\r\n });\r\n }\r\n}\r\n\r\nexport class PartnershipOrderApi extends CrudApi {\r\n constructor(api: Api) {\r\n super(api, {\r\n endpoint: '/partnership/order',\r\n parse: e => PurchaseOrder.fromJson(e),\r\n });\r\n }\r\n}\r\n\r\nexport class TransactionRequestApi extends CrudApi {\r\n constructor(api: Api) {\r\n super(api, {\r\n endpoint: '/partnership/transaction/request',\r\n parse: e => PartnershipTransactionRequest.fromJson(e),\r\n defaultFields: `{\r\n id,\r\n amount,\r\n partnerComment,\r\n adminComment,\r\n status,\r\n createdDate,\r\n partner{\r\n id,\r\n firstName,\r\n lastName,\r\n email\r\n },\r\n }`\r\n });\r\n }\r\n}\r\n\r\n//@ts-ignore\r\nexport class UtmTagApi extends CrudApi {\r\n constructor(api: Api) {\r\n super(api, {\r\n endpoint: '/partnership/utm',\r\n parse: e => e,\r\n });\r\n }\r\n}","import { Announcement } from '@axl/accel-framework/models';\r\nimport Api from 'api';\r\n\r\nexport default class AnnouncementApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n fetch = async () => {\r\n return await this.api.get(`/announcement`,\r\n '',\r\n json => json.map((item: any) => Announcement.fromJson(item)));\r\n }\r\n close = async (id: string) => {\r\n return await this.api.post(`/announcement/close`, { id });\r\n }\r\n}","import { Api } from \"@axl/accel-framework\";\r\nimport { CrudApi } from \"@axl/accel-framework/api\";\r\nimport { GamificationAchievement, GamificationAchievementFilter, GamificationLeader, GamificationLeaderFilter, GamificationProduct, GamificationProductFilter, GamificationTransaction } from \"@axl/accel-framework/models\";\r\nimport { AnalyticsItem } from \"models\";\r\n\r\nexport default class GamificationApi {\r\n constructor(private api: Api) {\r\n }\r\n\r\n fetchTotals = () => this.api.get<{ items: AnalyticsItem[] }>('/gamification/totals');\r\n fetchBalance = () => this.api.get('/gamification/balance');\r\n\r\n fetchAchievements = (filter: GamificationAchievementFilter) => this.api.getList('/gamification/achievement', undefined, filter,\r\n body => ({\r\n items: body.items.map(GamificationAchievement.fromJson),\r\n filter: new GamificationAchievementFilter(body.filter)\r\n }));\r\n\r\n fetchLeaders = (filter: GamificationLeaderFilter) => this.api.getList('/gamification/leaders', undefined, filter,\r\n body => ({\r\n items: body.items.map(GamificationLeader.fromJson),\r\n filter: new GamificationLeaderFilter(body.filter),\r\n }));\r\n\r\n product = new GamificationProductApi(this.api);\r\n transaction = new GamificationTransactionApi(this.api);\r\n}\r\n\r\nexport class GamificationProductApi extends CrudApi {\r\n constructor(private api: Api) {\r\n super(api, {\r\n endpoint: '/gamification/product',\r\n parse: e => GamificationProduct.fromJson(e),\r\n defaultFields: ``\r\n });\r\n }\r\n\r\n pay = (id: string) => this.api.post(this.settings.endpoint, { productId: id });\r\n}\r\n\r\nexport class GamificationTransactionApi extends CrudApi {\r\n constructor(private api: Api) {\r\n super(api, {\r\n endpoint: '/gamification/transaction',\r\n parse: e => GamificationTransaction.fromJson(e),\r\n defaultFields: ``\r\n });\r\n }\r\n}","import BaseApi, { ApiClient, FileApi, FileManagerApi, LocalizationApi } from '@axl/accel-framework/api';\r\nimport StudentCourseApi from './methods/student/student-course';\r\nimport SchoolCourseApi from './methods/school-course';\r\nimport StudentCourseItemApi from './methods/student/student-course-item';\r\nimport SchoolSettingsApi from './methods/school-settings/types/index';\r\nimport StudentApi from './methods/student/student';\r\nimport ServiceApi from './methods/service';\r\nimport CoursePreviewApi from './methods/course-preview';\r\nimport StudentCoursePreviewApi from './methods/student-course-preview';\r\nimport ForumApi from './methods/forum';\r\nimport StudentEmailBroadcastApi from './methods/student/email-broadcast';\r\nimport SchoolLibraryApi from './methods/school-library';\r\nimport CourseItemRatingApi from './methods/student/course-item-rating';\r\nimport CourseItemCommentApi from './methods/student/course-item-comment';\r\nimport AuthApi from './methods/auth';\r\nimport NotificationApi from './methods/Notification';\r\nimport PartnershipApi from './methods/partnership';\r\nimport { SchoolContentItem, SchoolContentItemFilter } from 'models';\r\nimport AnnouncementApi from './methods/announcement';\r\nimport GamificationApi from './methods/gamification';\r\n\r\nexport default class Api extends BaseApi {\r\n constructor(client: ApiClient) {\r\n super(client);\r\n }\r\n\r\n file: FileApi = new FileApi(this);\r\n fileManager: FileManagerApi = new FileManagerApi(this);\r\n loc: LocalizationApi = new LocalizationApi(this);\r\n auth = new AuthApi(this);\r\n student = new StudentApi(this);\r\n\r\n schoolContent = {\r\n fetch: (filter: SchoolContentItemFilter) => this.getList('/school-content-item', '', filter,\r\n (json: any) => {\r\n return {\r\n items: json.items.map(SchoolContentItem.fromJson),\r\n filter: new SchoolContentItemFilter(json.filter)\r\n }\r\n })\r\n }\r\n\r\n studentCourse = new StudentCourseApi(this);\r\n schoolCourses = new SchoolCourseApi(this);\r\n schoolLibraries = new SchoolLibraryApi(this);\r\n studentEmailBroadcast = new StudentEmailBroadcastApi(this);\r\n studentCourseItem = new StudentCourseItemApi(this);\r\n courseItemRating = new CourseItemRatingApi(this);\r\n courseItemComment = new CourseItemCommentApi(this);\r\n schoolSettings = new SchoolSettingsApi(this);\r\n service = new ServiceApi(this);\r\n coursePreview = new CoursePreviewApi(this);\r\n studentCoursePreview = new StudentCoursePreviewApi(this);\r\n forum = new ForumApi(this);\r\n notification = new NotificationApi(this);\r\n partnership = new PartnershipApi(this);\r\n announcement = new AnnouncementApi(this);\r\n gamification = new GamificationApi(this);\r\n}","import { ApiRequest, ApiResponse, ApiResult, HttpApiClient } from '@axl/accel-framework/api';\r\nimport { HttpStatusCode } from '@axl/accel-framework/enums';\r\nimport { HubClient } from '@axl/accel-framework/hub-client';\r\nimport { FetchMeRequest, FetchMeResponse } from 'api/methods/auth/types/me';\r\nimport { RefreshTokenRequest, RefreshTokenResponse } from 'api/methods/auth/types/refresh-token';\r\nimport { UserStore } from 'stores';\r\n\r\nexport default class JwtApiClient extends HttpApiClient {\r\n private readonly MaxAttempts = 3;\r\n\r\n constructor(apiUrl: string,\r\n private userStore: UserStore,\r\n private hub: HubClient) {\r\n super(apiUrl);\r\n }\r\n\r\n buildHeaders(request: ApiRequest) {\r\n const headers: any = {\r\n 'Content-Type': 'application/json',\r\n 'X-Timezone-Offset': new Date().getTimezoneOffset()\r\n };\r\n if (!request.authorized)\r\n return headers;\r\n if (this.userStore.accessToken)\r\n headers['Authorization'] = `Bearer ${this.userStore.accessToken}`;\r\n if (this.hub.connectionId)\r\n headers['ConnectionId'] = this.hub.connectionId;\r\n return headers;\r\n }\r\n\r\n public async execute(request: ApiRequest, ResponseType: ({ new(json: any): T }) | undefined = undefined, attempt = 1): Promise> {\r\n let result = await this.processRequest(request, ResponseType);\r\n if (request.authorized) {\r\n // 401 - refresh tokens and repeat request\r\n if (result.status == HttpStatusCode.Unauthorized) {\r\n if (attempt == this.MaxAttempts || !await this.refreshTokens())\r\n return result;\r\n // repeat prev request\r\n result = await this.execute(request, ResponseType, attempt + 1);\r\n } else\r\n // e.g. access token is expired => refresh tokens\r\n if (result.response.resetToken)\r\n await this.refreshTokens();\r\n }\r\n if (result.response.hasTokens) {\r\n this.userStore.updateTokens(result.response.accessToken, result.response.refreshToken);\r\n\r\n if (request.autoUpdateUser)\r\n // it is important to refresh the user after every token change\r\n await this.fetchMe();\r\n }\r\n return result;\r\n }\r\n\r\n private async refreshTokens(): Promise {\r\n const result = await this.execute(new RefreshTokenRequest(this.userStore.refreshToken!), RefreshTokenResponse);\r\n if (!result.success) {\r\n this.userStore.reset();\r\n return false;\r\n }\r\n return result.success;\r\n }\r\n\r\n private async fetchMe(): Promise {\r\n const result = await this.execute(new FetchMeRequest(), FetchMeResponse);\r\n if (result.success)\r\n this.userStore.updateUser(result.response.student);\r\n return result.success;\r\n }\r\n}\r\n","import { computed, observable, action } from 'mobx';\r\nimport { TokenStore } from '@axl/accel-framework/stores';\r\nimport { Student } from 'models';\r\nimport { AuthCookieClient, JwtDecoder } from '@axl/accel-framework/utils';\r\n\r\nexport default class UserStore extends TokenStore {\r\n\r\n constructor(jwtDecoder: JwtDecoder,\r\n cookieClient: AuthCookieClient) {\r\n super(jwtDecoder, cookieClient);\r\n }\r\n\r\n @observable currentUser: Student;\r\n @action updateUser(user: Student) {\r\n this.currentUser = user;\r\n }\r\n\r\n @observable gamificationScore: number;\r\n @action setGamificationBalance(score: number) {\r\n this.gamificationScore = score;\r\n }\r\n\r\n /**\r\n * isAuthenticated & current user fetched\r\n */\r\n @computed get isAuthorized() {\r\n return this.isAuthenticated && this.currentUser != null;\r\n }\r\n\r\n /**\r\n * has an access token\r\n */\r\n @computed get isAuthenticated() {\r\n return this.decodedAccessToken != null;\r\n }\r\n\r\n @action reset() {\r\n this.clearTokens();\r\n // @ts-ignore\r\n this.currentUser = null;\r\n }\r\n}","import { inject } from 'react-ioc';\r\nimport Api from 'api';\r\nimport { ContactInFilterRequest } from 'api/methods/service/types/contact-in-filter';\r\nimport { RunCustomEventRequest, RunCustomEventRequestModel } from 'api/methods/service/types/run-custom-event';\r\nimport { UpdateLocalizationRequest } from 'api/methods/service/types/update-localization';\r\nimport { LocalizationStore } from '@axl/accel-framework/stores';\r\nimport UserStore from 'stores/UserStore/UserStore';\r\nimport { RefreshTokenRequest } from 'api/methods/auth/types/refresh-token';\r\nimport { Lang } from '@axl/accel-framework/enums';\r\nimport { FetchMeRequest } from 'api/methods/auth/types/me';\r\nimport { KeepaliveRequest } from 'api/methods/service/types/keepalive';\r\nimport { SelectLangRequest } from 'api/methods/student/student/types/select-lang';\r\nimport { ProlongSessionRequest } from 'api/methods/auth/types/prolong-session';\r\n\r\nexport default class ServiceStore {\r\n\r\n constructor(private api: Api,\r\n private locStore: LocalizationStore,\r\n private userStore: UserStore) {\r\n this.api = api || inject(this, Api);\r\n this.locStore = locStore || inject(this, LocalizationStore);\r\n this.userStore = userStore || inject(this, UserStore);\r\n }\r\n\r\n async runCustomEvent(model: Partial) {\r\n const result = await this.api.service.runCustomEvent(new RunCustomEventRequest(model));\r\n return result.success;\r\n }\r\n\r\n async contactInFilter(contactId: string, filterId: string) {\r\n const result = await this.api.service.contactInFilter(new ContactInFilterRequest(filterId, contactId));\r\n if (result.response.isInFilter == true) return true;\r\n return false;\r\n }\r\n\r\n async updateLocalization(reloadPageIfSuccess: boolean = true) {\r\n const result = await this.api.service.updateLocalization(new UpdateLocalizationRequest());\r\n if (result.success) {\r\n this.locStore.clear();\r\n if (reloadPageIfSuccess)\r\n document.location.reload();\r\n }\r\n return result;\r\n }\r\n\r\n async refreshTokens() {\r\n if (!this.userStore.refreshToken)\r\n return false;\r\n const result = await this.api.auth.refreshToken(new RefreshTokenRequest(this.userStore.refreshToken));\r\n return result.success;\r\n }\r\n\r\n async updateUser() {\r\n const result = await this.api.auth.fetchMe(new FetchMeRequest());\r\n if (result.success)\r\n this.userStore.updateUser(result.response.student);\r\n return result.success;\r\n }\r\n\r\n async keepAlive() {\r\n if (!this.userStore.refreshToken)\r\n return false;\r\n const result = await this.api.service.keepalive(new KeepaliveRequest());\r\n return result.success;\r\n }\r\n\r\n async selectLang(lang: Lang): Promise {\r\n const result = await this.api.student.selectLang(new SelectLangRequest(lang));\r\n return result.success;\r\n }\r\n\r\n async prolongSession() {\r\n if (!this.userStore.refreshToken)\r\n return false;\r\n const result = await this.api.auth.prolongSession(new ProlongSessionRequest(this.userStore.refreshToken));\r\n return result.success;\r\n }\r\n}","import { observable, action, computed } from 'mobx';\r\nimport { inject } from 'react-ioc';\r\nimport { Lang } from '@axl/accel-framework/enums';\r\nimport { DeviceStore } from '@axl/accel-framework/stores';\r\nimport { LangDetector } from '@axl/accel-framework/utils';\r\nimport type { IEZChatController, IEZPhoneController } from '@axl/ez-chat';\r\n\r\nexport default class UIStore {\r\n @observable isMenuCollapsed: boolean;\r\n @action async toggleMenu() {\r\n this.isMenuCollapsed = !this.isMenuCollapsed;\r\n }\r\n\r\n @observable isEmailConfirmationModalVisible: boolean = false;\r\n @action setIsEmailConfirmationModalVisible(val: boolean) { this.isEmailConfirmationModalVisible = val; }\r\n\r\n @observable isPhoneConfirmationModalVisible: boolean = false;\r\n @action setIsPhoneConfirmationModalVisible(val: boolean) { this.isPhoneConfirmationModalVisible = val; }\r\n\r\n @observable isProfileDrawerVisible: boolean = false;\r\n @observable defaultProfileTab: 'common' | 'notifications' | 'bonus' = 'common';\r\n @action setIsProfileDrawerVisible(val: boolean, defaultTab?: UIStore['defaultProfileTab']) {\r\n this.isProfileDrawerVisible = val;\r\n this.defaultProfileTab = defaultTab ?? 'common';\r\n }\r\n\r\n @computed get isMobile() {\r\n return this.deviceStore.width <= 600;\r\n }\r\n\r\n @computed get deviceSize() {\r\n return this.deviceStore.size;\r\n }\r\n\r\n get device() {\r\n return this.deviceStore;\r\n }\r\n\r\n constructor(private langDetector: LangDetector,\r\n private deviceStore: DeviceStore) {\r\n this.langDetector = langDetector || inject(this, LangDetector);\r\n this.deviceStore = deviceStore || inject(this, DeviceStore);\r\n this.isMenuCollapsed = this.deviceSize != 'desktop';\r\n }\r\n\r\n\r\n\r\n @computed get dateFormat(): string {\r\n switch (this.langDetector.lang) {\r\n case Lang.en: return 'DD MMMM YYYY';\r\n case Lang.ru: return 'DD MMMM YYYY';\r\n default: return 'DD MMMM YYYY';\r\n }\r\n }\r\n\r\n @computed get dateTimeFormat(): string {\r\n return `${this.dateFormat} HH:mm`;\r\n }\r\n\r\n getDateTimeFormat(includeTime: boolean = true, includeSeconds: boolean = false): string {\r\n let format = this.dateFormat;\r\n if (includeTime)\r\n format = `${format} ${this.dateTimeFormat}`;\r\n if (includeSeconds) format += ':ss';\r\n return format;\r\n }\r\n\r\n @observable chatController: IEZChatController;\r\n @action setChatController(chatController: IEZChatController) {\r\n this.chatController = chatController;\r\n }\r\n\r\n @observable phoneController: IEZPhoneController;\r\n @action setPhoneController(phoneController: IEZPhoneController) {\r\n this.phoneController = phoneController;\r\n }\r\n}","import { runInAction } from 'mobx';\r\nimport { observable, action, computed } from 'mobx';\r\nimport { inject } from 'react-ioc';\r\nimport Api from 'api';\r\nimport { FetchSchoolSettingsRequest } from 'api/methods/school-settings/types/fetch-school-settings';\r\nimport { School } from 'models';\r\n\r\nexport default class SchoolStore {\r\n @observable ready: boolean = false;\r\n @observable school: School;\r\n\r\n constructor(private api: Api) {\r\n this.api = api || inject(this, Api);\r\n }\r\n\r\n @computed get hasUserFooter() {\r\n return this.school.settings.isPageFooterEnabled;\r\n }\r\n\r\n @action async fetchSchool() {\r\n this.ready = false;\r\n const result = await this.api.schoolSettings.fetch(new FetchSchoolSettingsRequest());\r\n if (result.success)\r\n runInAction(() => {\r\n this.school = result.response.school;\r\n this.ready = true;\r\n });\r\n }\r\n}\r\n","/**\n * @remix-run/router v1.14.2\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname));\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname) {\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n if (!match) return null;\n Object.assign(matchedParams, match.params);\n let route = meta.route;\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = safelyDecodeURIComponent(value || \"\", paramName);\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction safelyDecodeURI(value) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\nfunction safelyDecodeURIComponent(value, paramName) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(false, \"The value for the URL param \\\"\" + paramName + \"\\\" will not be decoded because\" + (\" the string \\\"\" + value + \"\\\" is a malformed URL segment. This is probably\") + (\" due to a bad percent encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n let pathMatches = getPathContributingMatches(matches);\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) => idx === matches.length - 1 ? match.pathname : match.pathnameBase);\n }\n return pathMatches.map(match => match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n let initialized;\n let hasLazyRoutes = initialMatches.some(m => m.route.lazy);\n let hasLoaders = initialMatches.some(m => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n initialized = initialMatches.every(m => m.route.loader && m.route.loader.hydrate !== true && (loaderData && loaderData[m.route.id] !== undefined || errors && errors[m.route.id] !== undefined));\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a
\n // which will default to a navigation to /page\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionData;\n let pendingError;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError\n };\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(request, location, opts.submission, matches, {\n replace: opts.replace,\n flushSync\n });\n if (actionOutput.shortCircuited) {\n return;\n }\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // Create a GET request for the loaders\n request = new Request(request.url, {\n signal: request.signal\n });\n }\n // Call loaders\n let {\n shortCircuited,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionData, pendingError);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches\n }, pendingActionData ? {\n actionData: pendingActionData\n } : {}, {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n result = await callLoaderOrAction(\"action\", request, actionMatch, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace = result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: {\n [boundaryMatch.route.id]: result.error\n }\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n return {\n pendingActionData: {\n [actionMatch.route.id]: result.data\n }\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionData, pendingError) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionData, pendingError);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null\n }, pendingActionData ? {\n actionData: pendingActionData\n } : {}, updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since iot's not a \"navigation\"\n if (!isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration)) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData ? Object.keys(actionData).length === 0 ? {\n actionData: null\n } : {\n actionData\n } : {}, revalidatingFetchers.length > 0 ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n results,\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, flushSync, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, flushSync, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\"action\", fetchRequest, match, requestMatches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath);\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, {\n [match.route.id]: actionResult.data\n }, undefined // No need to send through errors since we short circuit above\n );\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n results,\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let result = await callLoaderOrAction(\"loader\", fetchRequest, match, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath);\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(state, redirect, _temp2) {\n let {\n submission,\n fetcherSubmission,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true\n });\n invariant(redirectLocation, \"Expected a location on the redirect navigation\");\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: redirect.location\n }),\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n }\n }\n async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath)), ...fetchersToLoad.map(f => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\"loader\", createClientSideRequest(init.history, f.path, f.controller.signal), f.match, f.matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath);\n } else {\n let error = {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n };\n return error;\n }\n })]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, loaderResults.map(() => request.signal), false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(f => f.match), fetcherResults, fetchersToLoad.map(f => f.controller ? f.controller.signal : null), true)]);\n return {\n results,\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, \"Expected fetch controller: \" + key);\n controller.abort();\n fetchControllers.delete(key);\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref2) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref2;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future = _extends({\n v7_relativeSplatPath: false\n }, opts ? opts.future : null);\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(request, _temp3) {\n let {\n requestContext\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n result = await callLoaderOrAction(\"action\", request, actionMatch, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath, {\n isStaticRequest: true,\n isRouteRequest,\n requestContext\n });\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(request, matches, requestContext, undefined, {\n [boundaryMatch.route.id]: result.error\n });\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n return _extends({}, context, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionData: {\n [actionMatch.route.id]: result.data\n },\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n async function loadRouteData(request, matches, requestContext, routeMatch, pendingActionError) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : getLoaderMatchesUntilBoundary(matches, Object.keys(pendingActionError || {})[0]);\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath, {\n isStaticRequest: true,\n isRouteRequest,\n requestContext\n }))]);\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionError, activeDeferreds);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Add an ?index param for matched index routes if we don't already have one\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch && activeRouteMatch.route.index && !hasNakedIndexQuery(path.search)) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref3) => {\n let [name, value] = _ref3;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, isInitialLoad, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionData, pendingError) {\n let actionResult = pendingError ? Object.values(pendingError)[0] : pendingActionData ? Object.values(pendingActionData)[0] : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let {\n route\n } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (route.loader == null) {\n return false;\n }\n if (isInitialLoad) {\n if (route.loader.hydrate) {\n return true;\n }\n return state.loaderData[route.id] === undefined && (\n // Don't re-run if the loader ran and threw an error\n !state.errors || state.errors[route.id] === undefined);\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (isInitialLoad || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\nasync function callLoaderOrAction(type, request, match, matches, manifest, mapRouteProperties, basename, v7_relativeSplatPath, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let resultType;\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([handler({\n request,\n params: match.params,\n context: opts.requestContext\n }), abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n data: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n if (isResponse(result)) {\n let status = result.status;\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(new URL(request.url), matches.slice(0, matches.indexOf(match) + 1), basename, true, location, v7_relativeSplatPath);\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\") ? new URL(currentUrl.protocol + location) : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null\n };\n }\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse = {\n type: resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result\n };\n throw queryRouteResponse;\n }\n let data;\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return {\n type: ResultType.error,\n error: e\n };\n }\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: result\n };\n }\n if (isDeferredData(result)) {\n var _result$init, _result$init2;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n headers: ((_result$init2 = result.init) == null ? void 0 : _result$init2.headers) && new Headers(result.init.headers)\n };\n }\n return {\n type: ResultType.data,\n data: result\n };\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n errors = errors || {};\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds);\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n match,\n controller\n } = revalidatingFetchers[index];\n invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n let result = fetcherResults[index];\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return {\n result,\n idx: i\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isQueryRouteResponse(obj) {\n return obj && isResponse(obj.response) && (obj.type === ResultType.data || obj.type === ResultType.error);\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signals, isFetcher, currentLoaderData) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(signal, \"Expected an AbortSignal for revalidating fetcher deferred result\");\n await resolveDeferredData(result, signal, isFetcher).then(result => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, defer, generatePath, getStaticContextFromError, getToPathname, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","/**\n * React Router v6.21.2\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_invariant, joinPaths, matchPath, UNSAFE_getResolveToMatches, UNSAFE_warning, resolveTo, parsePath, matchRoutes, Action, UNSAFE_convertRouteMatchToUiMatch, stripBasename, IDLE_BLOCKER, isRouteErrorResponse, createMemoryHistory, AbortedDeferredError, createRouter } from '@remix-run/router';\nexport { AbortedDeferredError, Action as NavigationType, createPath, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, resolvePath } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nconst DataRouterContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n DataRouterContext.displayName = \"DataRouter\";\n}\nconst DataRouterStateContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\nconst AwaitContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n AwaitContext.displayName = \"Await\";\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\n\nconst NavigationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n NavigationContext.displayName = \"Navigation\";\n}\nconst LocationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n LocationContext.displayName = \"Location\";\n}\nconst RouteContext = /*#__PURE__*/React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n RouteContext.displayName = \"Route\";\n}\nconst RouteErrorContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n RouteErrorContext.displayName = \"RouteError\";\n}\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nfunction useHref(to, _temp) {\n let {\n relative\n } = _temp === void 0 ? {} : _temp;\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useHref() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n let {\n basename,\n navigator\n } = React.useContext(NavigationContext);\n let {\n hash,\n pathname,\n search\n } = useResolvedPath(to, {\n relative\n });\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n return navigator.createHref({\n pathname: joinedPathname,\n search,\n hash\n });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nfunction useInRouterContext() {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nfunction useLocation() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useLocation() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nfunction useNavigationType() {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nfunction useMatch(pattern) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useMatch() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n let {\n pathname\n } = useLocation();\n return React.useMemo(() => matchPath(pattern, pathname), [pathname, pattern]);\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\n\nconst navigateEffectWarning = \"You should call navigate() in a React.useEffect(), not when \" + \"your component is first rendered.\";\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(cb) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nfunction useNavigate() {\n let {\n isDataRoute\n } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useNavigate() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n let dataRouterContext = React.useContext(DataRouterContext);\n let {\n basename,\n future,\n navigator\n } = React.useContext(NavigationContext);\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React.useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n let path = resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === \"path\");\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);\n }, [basename, navigator, routePathnamesJson, locationPathname, dataRouterContext]);\n return navigate;\n}\nconst OutletContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nfunction useOutletContext() {\n return React.useContext(OutletContext);\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nfunction useOutlet(context) {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return /*#__PURE__*/React.createElement(OutletContext.Provider, {\n value: context\n }, outlet);\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nfunction useParams() {\n let {\n matches\n } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? routeMatch.params : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nfunction useResolvedPath(to, _temp2) {\n let {\n relative\n } = _temp2 === void 0 ? {} : _temp2;\n let {\n future\n } = React.useContext(NavigationContext);\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n return React.useMemo(() => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, relative === \"path\"), [to, routePathnamesJson, locationPathname, relative]);\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nfunction useRoutes(routes, locationArg) {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nfunction useRoutesImpl(routes, locationArg, dataRouterState, future) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useRoutes() may be used only in the context of a component.\") : UNSAFE_invariant(false) : void 0;\n let {\n navigator\n } = React.useContext(NavigationContext);\n let {\n matches: parentMatches\n } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n if (process.env.NODE_ENV !== \"production\") {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = parentRoute && parentRoute.path || \"\";\n warningOnce(parentPathname, !parentRoute || parentPath.endsWith(\"*\"), \"You rendered descendant (or called `useRoutes()`) at \" + (\"\\\"\" + parentPathname + \"\\\" (under ) but the \") + \"parent route path has no trailing \\\"*\\\". This means if you navigate \" + \"deeper, the parent won't match anymore and therefore the child \" + \"routes will never render.\\n\\n\" + (\"Please change the parent to .\"));\n }\n let locationFromContext = useLocation();\n let location;\n if (locationArg) {\n var _parsedLocationArg$pa;\n let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n !(parentPathnameBase === \"/\" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"When overriding the location using `` or `useRoutes(routes, location)`, \" + \"the location pathname must begin with the portion of the URL pathname that was \" + (\"matched by all parent routes. The current pathname base is \\\"\" + parentPathnameBase + \"\\\" \") + (\"but pathname \\\"\" + parsedLocationArg.pathname + \"\\\" was given in the `location` prop.\")) : UNSAFE_invariant(false) : void 0;\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n let pathname = location.pathname || \"/\";\n let remainingPathname = parentPathnameBase === \"/\" ? pathname : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, {\n pathname: remainingPathname\n });\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(parentRoute || matches != null, \"No routes matched location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \") : void 0;\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(matches == null || matches[matches.length - 1].route.element !== undefined || matches[matches.length - 1].route.Component !== undefined || matches[matches.length - 1].route.lazy !== undefined, \"Matched leaf route at location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \" + \"does not have an element or Component. This means it will render an with a \" + \"null value by default resulting in an \\\"empty\\\" page.\") : void 0;\n }\n let renderedMatches = _renderMatches(matches && matches.map(match => Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname]),\n pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase])\n })), parentMatches, dataRouterState, future);\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return /*#__PURE__*/React.createElement(LocationContext.Provider, {\n value: {\n location: _extends({\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\"\n }, location),\n navigationType: Action.Pop\n }\n }, renderedMatches);\n }\n return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error) ? error.status + \" \" + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = {\n padding: \"0.5rem\",\n backgroundColor: lightgrey\n };\n let codeStyles = {\n padding: \"2px 4px\",\n backgroundColor: lightgrey\n };\n let devInfo = null;\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Error handled by React Router default ErrorBoundary:\", error);\n devInfo = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"p\", null, \"\\uD83D\\uDCBF Hey developer \\uD83D\\uDC4B\"), /*#__PURE__*/React.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /*#__PURE__*/React.createElement(\"code\", {\n style: codeStyles\n }, \"ErrorBoundary\"), \" or\", \" \", /*#__PURE__*/React.createElement(\"code\", {\n style: codeStyles\n }, \"errorElement\"), \" prop on your route.\"));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", null, \"Unexpected Application Error!\"), /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n fontStyle: \"italic\"\n }\n }, message), stack ? /*#__PURE__*/React.createElement(\"pre\", {\n style: preStyles\n }, stack) : null, devInfo);\n}\nconst defaultErrorElement = /*#__PURE__*/React.createElement(DefaultErrorComponent, null);\nclass RenderErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error\n };\n }\n static getDerivedStateFromError(error) {\n return {\n error: error\n };\n }\n static getDerivedStateFromProps(props, state) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation\n };\n }\n componentDidCatch(error, errorInfo) {\n console.error(\"React Router caught the following error during render\", error, errorInfo);\n }\n render() {\n return this.state.error !== undefined ? /*#__PURE__*/React.createElement(RouteContext.Provider, {\n value: this.props.routeContext\n }, /*#__PURE__*/React.createElement(RouteErrorContext.Provider, {\n value: this.state.error,\n children: this.props.component\n })) : this.props.children;\n }\n}\nfunction RenderedRoute(_ref) {\n let {\n routeContext,\n match,\n children\n } = _ref;\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n return /*#__PURE__*/React.createElement(RouteContext.Provider, {\n value: routeContext\n }, children);\n}\nfunction _renderMatches(matches, parentMatches, dataRouterState, future) {\n var _dataRouterState2;\n if (parentMatches === void 0) {\n parentMatches = [];\n }\n if (dataRouterState === void 0) {\n dataRouterState = null;\n }\n if (future === void 0) {\n future = null;\n }\n if (matches == null) {\n var _dataRouterState;\n if ((_dataRouterState = dataRouterState) != null && _dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches;\n } else {\n return null;\n }\n }\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = (_dataRouterState2 = dataRouterState) == null ? void 0 : _dataRouterState2.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(m => m.route.id && (errors == null ? void 0 : errors[m.route.id]));\n !(errorIndex >= 0) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"Could not find a matching route for errors on route IDs: \" + Object.keys(errors).join(\",\")) : UNSAFE_invariant(false) : void 0;\n renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n if (match.route.id) {\n let {\n loaderData,\n errors\n } = dataRouterState;\n let needsToRunLoader = match.route.loader && loaderData[match.route.id] === undefined && (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error;\n let shouldRenderHydrateFallback = false;\n let errorElement = null;\n let hydrateFallbackElement = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\"route-fallback\", false, \"No `HydrateFallback` element provided to render during initial hydration\");\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = /*#__PURE__*/React.createElement(match.route.Component, null);\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return /*#__PURE__*/React.createElement(RenderedRoute, {\n match: match,\n routeContext: {\n outlet,\n matches,\n isDataRoute: dataRouterState != null\n },\n children: children\n });\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /*#__PURE__*/React.createElement(RenderErrorBoundary, {\n location: dataRouterState.location,\n revalidation: dataRouterState.revalidation,\n component: errorElement,\n error: error,\n children: getChildren(),\n routeContext: {\n outlet: null,\n matches,\n isDataRoute: true\n }\n }) : getChildren();\n }, null);\n}\nvar DataRouterHook = /*#__PURE__*/function (DataRouterHook) {\n DataRouterHook[\"UseBlocker\"] = \"useBlocker\";\n DataRouterHook[\"UseRevalidator\"] = \"useRevalidator\";\n DataRouterHook[\"UseNavigateStable\"] = \"useNavigate\";\n return DataRouterHook;\n}(DataRouterHook || {});\nvar DataRouterStateHook = /*#__PURE__*/function (DataRouterStateHook) {\n DataRouterStateHook[\"UseBlocker\"] = \"useBlocker\";\n DataRouterStateHook[\"UseLoaderData\"] = \"useLoaderData\";\n DataRouterStateHook[\"UseActionData\"] = \"useActionData\";\n DataRouterStateHook[\"UseRouteError\"] = \"useRouteError\";\n DataRouterStateHook[\"UseNavigation\"] = \"useNavigation\";\n DataRouterStateHook[\"UseRouteLoaderData\"] = \"useRouteLoaderData\";\n DataRouterStateHook[\"UseMatches\"] = \"useMatches\";\n DataRouterStateHook[\"UseRevalidator\"] = \"useRevalidator\";\n DataRouterStateHook[\"UseNavigateStable\"] = \"useNavigate\";\n DataRouterStateHook[\"UseRouteId\"] = \"useRouteId\";\n return DataRouterStateHook;\n}(DataRouterStateHook || {});\nfunction getDataRouterConsoleError(hookName) {\n return hookName + \" must be used within a data router. See https://reactrouter.com/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React.useContext(DataRouterContext);\n !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React.useContext(DataRouterStateContext);\n !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return state;\n}\nfunction useRouteContext(hookName) {\n let route = React.useContext(RouteContext);\n !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n !thisRoute.route.id ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, hookName + \" can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nfunction useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nfunction useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nfunction useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(() => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation\n }), [dataRouterContext.router.revalidate, state.revalidation]);\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nfunction useMatches() {\n let {\n matches,\n loaderData\n } = useDataRouterState(DataRouterStateHook.UseMatches);\n return React.useMemo(() => matches.map(m => UNSAFE_convertRouteMatchToUiMatch(m, loaderData)), [matches, loaderData]);\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nfunction useLoaderData() {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n if (state.errors && state.errors[routeId] != null) {\n console.error(\"You cannot `useLoaderData` in an errorElement (routeId: \" + routeId + \")\");\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nfunction useRouteLoaderData(routeId) {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nfunction useActionData() {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nfunction useRouteError() {\n var _state$errors;\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return (_state$errors = state.errors) == null ? void 0 : _state$errors[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nfunction useAsyncValue() {\n let value = React.useContext(AwaitContext);\n return value == null ? void 0 : value._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nfunction useAsyncError() {\n let value = React.useContext(AwaitContext);\n return value == null ? void 0 : value._error;\n}\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nfunction useBlocker(shouldBlock) {\n let {\n router,\n basename\n } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(arg => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = arg;\n return shouldBlock({\n currentLocation: _extends({}, currentLocation, {\n pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n }),\n nextLocation: _extends({}, nextLocation, {\n pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n }),\n historyAction\n });\n }, [basename, shouldBlock]);\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable() {\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React.useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, _extends({\n fromRouteId: id\n }, options));\n }\n }, [router, id]);\n return navigate;\n}\nconst alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, message) : void 0;\n }\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n let {\n fallbackElement,\n router,\n future\n } = _ref;\n let [state, setStateImpl] = React.useState(router.state);\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n }, [setStateImpl, v7_startTransition]);\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n React.useEffect(() => {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n let navigator = React.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: n => router.navigate(n),\n push: (to, state, opts) => router.navigate(to, {\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n }),\n replace: (to, state, opts) => router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React.useMemo(() => ({\n router,\n navigator,\n static: false,\n basename\n }), [router, navigator, basename]);\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a