@novx/portal 0.3.1 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../libs/portal/src/lib/component-registry.ts","../../../../libs/portal/src/lib/feature-decorator.ts","../../../node_modules/.pnpm/@rollup+plugin-typescript@12.3.0_rollup@4.59.0_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js","../../../../libs/portal/src/lib/client-detector.ts","../../../../libs/portal/src/lib/deployment-manager.ts","../../../../libs/portal/src/lib/module.ts","../../../../libs/portal/src/lib/model/ClientConstraints.ts","../../../../libs/portal/src/lib/model/FeatureDescriptor.ts","../../../../libs/portal/src/lib/model/Manifest.ts","../../../../libs/portal/src/lib/model/Deployment.ts","../../../../libs/portal/src/lib/model/ClientInfo.ts","../../../../libs/portal/src/lib/model/DeploymentRequest.ts","../../../../libs/portal/src/lib/loader/empty-loader.ts","../../../../libs/portal/src/lib/loader/service-loader.ts","../../../../libs/portal/src/lib/loader/remote-loader.ts","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react.production.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react.development.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/index.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js","../../../node_modules/.pnpm/react-router@7.13.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-router/dist/development/chunk-LFPYN7LY.mjs","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/args.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/of.js","../../../../libs/portal/src/lib/feature-registry.ts","../../../../libs/portal/src/lib/environment/environment.context.ts","../../../../libs/portal/src/lib/component/error-display.tsx","../../../../libs/portal/src/lib/component/error-page.tsx","../../../../libs/portal/src/lib/component/horizontal-spinner.tsx","../../../../libs/portal/src/lib/feature-outlet.tsx","../../../../libs/portal/src/lib/session/session-manager.ts","../../../../libs/portal/src/lib/route-manager.tsx","../../../../libs/portal/src/lib/manifest-filter.ts","../../../node_modules/.pnpm/keycloak-js@26.2.3/node_modules/keycloak-js/lib/keycloak.js","../../../../libs/portal/src/lib/session/oidc-authentication.ts","../../../../libs/portal/src/lib/i18n/i18n-context.ts","../../../../libs/portal/src/lib/i18n/i18n-provider.tsx","../../../../libs/portal/src/lib/i18n/use-i18n.ts","../../../../libs/portal/src/lib/service/PortalService.ts","../../../../libs/portal/src/lib/outlet-loader/component-loader.ts","../../../../libs/portal/src/lib/outlet-loader/remote-component-loader.ts","../../../../libs/portal/src/lib/outlet-loader/i18n-loader.ts","../../../../libs/portal/src/lib/ui/icon.tsx","../../../../libs/portal/src/lib/ui/svg-sprite-registry.ts"],"sourcesContent":["export type ComponentLoader = () => Promise<{ default: React.ComponentClass<any> }>;\n\nexport class ComponentRegistry {\n private static map = new Map<string, ComponentLoader>();\n\n static register(name: string, loader: ComponentLoader) {\n this.map.set(name, loader);\n }\n\n static get(name: string) {\n const loader = ComponentRegistry.map.get(name);\n if (!loader) throw new Error(`Component ${name} not registered`);\n return loader;\n }\n}","import { ClientConstraints } from './model';\nimport React from 'react';\n\nimport { ComponentRegistry } from './component-registry';\nimport { TraceLevel, Tracer } from '@novx/core';\n\nexport interface FeatureOptions {\n id: string;\n icon?: string;\n permissions?: string[];\n description?: string;\n tags?: string[];\n features?: string[];\n visibility?: ('public' | 'private')[];\n i18n?: string;\n label?: string;\n path?: string;\n parent?: string;\n clients?: ClientConstraints;\n}\n\nexport function Feature(opts: FeatureOptions) {\n return function <T extends { new (...args: any[]): React.Component<any> }>(\n cls: T,\n ) {\n let fqn = opts.id;\n if (opts.parent) fqn = opts.parent + '.' + fqn;\n\n if (Tracer.ENABLED)\n Tracer.Trace('portal', TraceLevel.HIGH, 'register feature {0}', fqn);\n\n // is done via the deployment manager featureRegistry.register([featureMeta]);\n\n ComponentRegistry.register(fqn, async () => ({ default: cls }));\n\n // done\n\n return cls;\n };\n}","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import {ClientConstraints, ClientInfo} from \"./model\";\n\nexport type { ClientInfo } from \"./model\";\nexport type ScreenSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"*\";\nexport type Orientation = \"portrait\" | \"landscape\" | \"*\";\nexport type Platform = \"ios\" | \"android\" | \"macos\" | \"windows\" | \"linux\" | \"web\" | \"*\";\n\nexport function detectClient(): ClientInfo {\n const width = window.innerWidth;\n const height = window.innerHeight;\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n\n // Determine screen size category\n const screenSize = getScreenSize(width);\n\n // Determine orientation\n const orientation: Orientation = width > height ? \"landscape\" : \"portrait\";\n\n // Detect platform (check Capacitor first, then fallback to user agent)\n const platformInfo = detectPlatformWithCapacitor(ua, platform);\n\n // Detect capabilities\n const capabilities = detectCapabilities();\n\n return {\n width,\n height,\n screen_size: screenSize,\n orientation,\n pixel_ratio: window.devicePixelRatio || 1,\n platform: platformInfo.platform,\n browser: platformInfo.browser,\n os: platformInfo.os,\n os_version: platformInfo.osVersion,\n capabilities,\n device_type: inferDeviceType(width, platformInfo.platform),\n };\n}\n\nfunction detectPlatformWithCapacitor(ua: string, platform: string) {\n // Check if running in Capacitor\n const isCapacitor = !!(window as any).Capacitor;\n\n if (isCapacitor) {\n const Capacitor = (window as any).Capacitor;\n const nativePlatform = Capacitor.getPlatform(); // 'ios', 'android', or 'web'\n\n if (nativePlatform === 'ios') {\n return {\n platform: \"ios\" as Platform,\n os: Capacitor.isNativePlatform() ? \"iOS (Native)\" : \"iOS\",\n osVersion: extractIOSVersion(ua),\n browser: \"capacitor\",\n };\n }\n\n if (nativePlatform === 'android') {\n return {\n platform: \"android\" as Platform,\n os: \"Android (Native)\",\n osVersion: extractAndroidVersion(ua),\n browser: \"capacitor\",\n };\n }\n }\n\n // Fallback to regular platform detection\n return detectPlatform(ua, platform);\n}\n\nfunction getScreenSize(width: number): ScreenSize {\n if (width <= 480) return \"xs\";\n if (width <= 768) return \"sm\";\n if (width <= 1024) return \"md\";\n if (width <= 1440) return \"lg\";\n return \"xl\";\n}\n\nfunction detectPlatform(ua: string, platform: string) {\n // iOS Detection (including iPad on iPadOS 13+)\n if (/iPhone/.test(ua)) {\n return {\n platform: \"ios\" as Platform,\n os: \"iOS\",\n osVersion: extractIOSVersion(ua),\n browser: detectBrowser(ua),\n };\n }\n\n if (/iPad/.test(ua) || (platform === \"MacIntel\" && navigator.maxTouchPoints > 1)) {\n return {\n platform: \"ios\" as Platform,\n os: \"iPadOS\",\n osVersion: extractIOSVersion(ua),\n browser: detectBrowser(ua),\n };\n }\n\n // Android\n if (/Android/.test(ua)) {\n return {\n platform: \"android\" as Platform,\n os: \"Android\",\n osVersion: extractAndroidVersion(ua),\n browser: detectBrowser(ua),\n };\n }\n\n // Desktop platforms\n if (/Mac/.test(platform)) {\n return {\n platform: \"macos\" as Platform,\n os: \"macOS\",\n osVersion: \"\",\n browser: detectBrowser(ua),\n };\n }\n\n if (/Win/.test(platform)) {\n return {\n platform: \"windows\" as Platform,\n os: \"Windows\",\n osVersion: \"\",\n browser: detectBrowser(ua),\n };\n }\n\n if (/Linux/.test(platform)) {\n return {\n platform: \"linux\" as Platform,\n os: \"Linux\",\n osVersion: \"\",\n browser: detectBrowser(ua),\n };\n }\n\n return {\n platform: \"web\" as Platform,\n os: \"Unknown\",\n osVersion: \"\",\n browser: detectBrowser(ua),\n };\n}\n\nfunction detectBrowser(ua: string): string {\n if (/Safari/.test(ua) && !/Chrome/.test(ua)) return \"safari\";\n if (/Chrome/.test(ua)) return \"chrome\";\n if (/Firefox/.test(ua)) return \"firefox\";\n if (/Edg/.test(ua)) return \"edge\";\n return \"web\";\n}\n\nfunction detectCapabilities(): string[] {\n const caps: string[] = [];\n\n if (\"ontouchstart\" in window) caps.push(\"touch\");\n if (navigator.maxTouchPoints > 0) caps.push(\"multitouch\");\n\n // Check for stylus support (approximation)\n if (navigator.maxTouchPoints > 1 && window.devicePixelRatio > 1) {\n caps.push(\"stylus\");\n }\n\n return caps;\n}\n\nfunction inferDeviceType(width: number, platform: Platform): \"phone\" | \"tablet\" | \"desktop\" {\n // Mobile platforms\n if (platform === \"ios\" || platform === \"android\") {\n return width < 768 ? \"phone\" : \"tablet\";\n }\n\n // Desktop platforms\n return \"desktop\";\n}\n\nfunction extractIOSVersion(ua: string): string {\n const match = ua.match(/OS (\\d+)_(\\d+)/);\n return match ? `${match[1]}.${match[2]}` : \"\";\n}\n\nfunction extractAndroidVersion(ua: string): string {\n const match = ua.match(/Android (\\d+\\.?\\d*)/);\n return match ? match[1] : \"\";\n}\n\n/**\n * Check if client matches the given constraints\n */\nexport function clientMatchesConstraints(\n client: ClientInfo,\n constraints?: ClientConstraints\n): boolean {\n if (!constraints) return true;\n\n // Check screen size\n if (constraints.screenSizes && constraints.screenSizes.length > 0) {\n if (\n !constraints.screenSizes.includes(\"*\") &&\n !constraints.screenSizes.includes(client.screen_size)\n ) {\n return false;\n }\n }\n\n // Check orientation\n if (constraints.orientation && constraints.orientation.length > 0) {\n if (\n !constraints.orientation.includes(\"*\") &&\n !constraints.orientation.includes(client.orientation)\n ) {\n return false;\n }\n }\n\n // Check platform\n if (constraints.platforms && constraints.platforms.length > 0) {\n if (\n !constraints.platforms.includes(\"*\") &&\n !constraints.platforms.includes(client.platform)\n ) {\n return false;\n }\n }\n\n // Check precise width constraints\n if (constraints.minWidth !== undefined && client.width < constraints.minWidth!) {\n return false;\n }\n if (constraints.maxWidth !== undefined && client.width > constraints.maxWidth!) {\n return false;\n }\n\n // Check precise height constraints\n if (constraints.minHeight !== undefined && client.height < constraints.minHeight!) {\n return false;\n }\n if (constraints.maxHeight !== undefined && client.height > constraints.maxHeight!) {\n return false;\n }\n\n // Check capabilities\n if (constraints.capabilities && constraints.capabilities.length > 0) {\n const hasAllCapabilities = constraints.capabilities.every((cap) =>\n client.capabilities.includes(cap)\n );\n if (!hasAllCapabilities) {\n return false;\n }\n }\n\n return true;\n}\n","\nimport { FeatureMetadata } from './feature-registry';\nimport { ClientInfo, Deployment, DeploymentRequest } from './model';\nimport type { Manifest } from './model';\n\nimport { TraceLevel, Tracer } from '@novx/core';\nimport { detectClient } from './client-detector';\nimport { FeatureRegistry } from './feature-registry';\nimport { FilterContext, ManifestProcessor } from './manifest-filter';\nimport { ComponentRegistry } from './component-registry';\n\nexport abstract class DeploymentLoader {\n abstract load(request: DeploymentRequest): Promise<Deployment>;\n}\n\nexport function toWebpackContextKey(path: string): string {\n // normalize slashes (important on Windows)\n const normalized = path.replace(/\\\\/g, '/');\n\n const srcIndex = normalized.lastIndexOf('/src/');\n if (srcIndex === -1) {\n throw new Error(`Path does not contain /src/: ${path}`);\n }\n\n const relative = normalized.slice(srcIndex + '/src/'.length);\n\n return `./${relative}`;\n}\n\nexport interface DeploymentManagerOptions {\n featureRegistry: FeatureRegistry,\n loader: DeploymentLoader,\n localManifest: Manifest,\n\n processor?: ManifestProcessor,\n hasPermission?: (permission: string) => boolean,\n hasFeature?: (feature: string) => boolean,\n}\n\nexport class DeploymentManager {\n // instance data\n\n deployment?: Deployment;\n\n private featureRegistry: FeatureRegistry\n private loader: DeploymentLoader\n private localManifest: Manifest\n private processor?: ManifestProcessor\n private hasPermissionFn: (permission: string) => boolean\n private hasFeatureFn: (feature: string) => boolean\n\n // constructor\n\n constructor(options : DeploymentManagerOptions) {\n this.featureRegistry = options.featureRegistry\n this.loader = options.loader\n this.localManifest = options.localManifest\n\n this.processor = options.processor\n this.hasPermissionFn = options.hasPermission ?? ((permission: string) => true)\n this.hasFeatureFn = options.hasPermission ?? ((feature: string) => true)\n }\n\n checkLazyFeatures(module: string, context : __WebpackModuleApi.RequireContext) {\n if ( Tracer.ENABLED)\n Tracer.Trace(\"portal\", TraceLevel.HIGH, \"check lazy features for {0}\", module)\n\n const manifest = this.getModule(module);\n\n for (const feature of manifest.features || [] as FeatureMetadata[])\n if (feature.lazy) {\n const key = toWebpackContextKey(feature.sourceFile!)\n\n if ( context.keys().includes(key))\n try {\n if ( Tracer.ENABLED)\n Tracer.Trace(\"portal\", TraceLevel.HIGH, \"register lazy feature {0}\", feature.id)\n\n ComponentRegistry.register(feature.id, async () => {\n if ( Tracer.ENABLED)\n Tracer.Trace(\"portal\", TraceLevel.HIGH, \"load lazy feature {0}\", feature.id)\n\n const mod = await context(key);\n return mod; // { default: React.lazy(() => Promise.resolve(mod)) };\n });\n }\n catch (e) {\n console.warn(`failed to load lazy feature ${feature.id}:`, e);\n }\n else console.warn(`no matching webpack component for ${feature.id}:`);\n } // for\n }\n\n // public\n\n loaded(module: string) {\n if (this.deployment && this.deployment.modules[module])\n this.getModule(module).loaded = true;\n }\n\n getDeployment(): Deployment {\n if ( this.deployment )\n return this.deployment;\n\n throw new Error('deployment not loaded yet');\n }\n\n getModule(module: string): Manifest {\n const manifest = this.getDeployment().modules[module]\n if (manifest)\n return manifest;\n\n throw new Error(`module ${module} not found`);\n }\n\n clientInfo(): ClientInfo {\n return detectClient();\n }\n\n async loadDeployment(request: DeploymentRequest): Promise<Deployment> {\n if (Tracer.ENABLED)\n Tracer.Trace(\n 'portal',\n TraceLevel.HIGH,\n 'load deployment for application {0}',\n request.application,\n );\n\n this.deployment = await this.loader.load(request);\n\n // add local features\n\n this.deployment.modules[this.localManifest.id!] = this.localManifest;\n\n // apply manifest processor if available\n\n if (this.processor) {\n const filterContext: FilterContext = {\n clientInfo: this.clientInfo(),\n hasPermission: this.hasPermissionFn || (() => true),\n hasFeature: this.hasFeatureFn || (() => true),\n };\n\n for (const moduleName in this.deployment.modules) {\n const module = this.deployment.modules[moduleName];\n this.deployment.modules[moduleName] = this.processor.process(module, filterContext);\n }\n }\n\n this.deployment.modules[this.localManifest.id!].loaded = true;\n\n // copy module / uri\n\n for (const moduleName in this.deployment.modules) {\n const module = this.deployment.modules[moduleName];\n\n for (const feature of module.features as FeatureMetadata[]) {\n // copy module / uri\n\n feature.uri = module.uri;\n // Use the module key from the deployment (moduleName), not the module.module property\n // The moduleName is the webpack module federation container name\n feature.module = moduleName;\n\n // check label\n\n if (!feature.label) feature.label = feature.id;\n }\n }\n\n // merge all features from deployment\n\n const features = Object.values(this.deployment.modules).flatMap(\n (m) => m.features,\n );\n\n // register features in the registry\n\n this.featureRegistry.register(...features);\n\n // done\n\n console.log('### deployment ', this.deployment);\n\n return this.deployment;\n }\n}","import { FeatureMetadata } from './feature-registry';\nimport { Environment, inject, injectable, ModuleOptions, onRunning, Providers, TraceLevel, Tracer, TypeDescriptor } from '@novx/core';\nimport { DeploymentManager } from './deployment-manager';\nimport { Module as DIModule } from '@novx/core';\n\nconst MODULE_META = Symbol(\"module:meta\");\n\n/**\n * Remote module configuration\n */\nexport interface RemoteConfig {\n url: string;\n scope: string;\n module: string;\n}\n\n/**\n * Base metadata interface\n */\nexport interface Metadata {\n id: string;\n label?: string;\n icon?: string;\n description?: string;\n sourceFile?: string;\n}\n\n/**\n * Module metadata with features and permissions\n */\nexport interface ModuleMetadata extends Metadata {\n remote?: RemoteConfig;\n version: string;\n features?: FeatureMetadata[];\n permissions?: string[];\n moduleName?: string;\n}\n\n/**\n * Module decorator for marking and configuring module metadata\n *\n * Usage:\n * @Module({\n * id: \"product-module\",\n * label: \"Product Management\",\n * version: \"1.0.0\",\n * remote: {\n * url: \"http://localhost:3001/remoteEntry.js\",\n * scope: \"productModule\",\n * module: \"./Module\",\n * },\n * })\n * export class ProductModule {}\n */\nexport function Module(config: Omit<ModuleMetadata & ModuleOptions, 'sourceFile'>) {\n return function decorator(target: any) { \n const metadata: ModuleMetadata = {\n ...config,\n sourceFile: target.name,\n };\n\n config.type = target\n\n if (!config.imports)\n config.imports = []\n\n if (config.name === undefined)\n config.name = config.id;\n\n Reflect.defineMetadata(MODULE_META, metadata, target);\n\n TypeDescriptor.forType(target).addDecorator(injectable, true, \"singleton\");\n TypeDescriptor.forType(target).addDecorator(Module);\n \n Providers.registerClass(config.name, target, true, \"singleton\");\n\n DIModule.register(target, config)\n \n // Queue for setup processing\n\n AbstractModule.enqueue(target);\n\n return target;\n };\n}\n\nexport abstract class AbstractModule extends DIModule {\n // static\n\n static getMetadata(target: Function): ModuleMetadata {\n return Reflect.getMetadata(MODULE_META, target);\n }\n\n static queue: Array<{\n moduleClass: any,\n status: 'pending' | 'loading' | 'loaded' | 'failed'\n }> = [];\n\n static enqueue(moduleClass: any) { \n if ( Tracer.ENABLED)\n Tracer.Trace('portal', TraceLevel.FULL, \"enqueue module {0}\", moduleClass.name);\n\n this.queue.push({ moduleClass, status: 'pending' });\n }\n\n static reset() {\n this.queue = [];\n }\n\n // instance data\n\n protected environment!: Environment;\n\n // protected\n\n protected getModuleName(): string {\n return this.getMetadata().id;\n }\n\n protected getMetadata(): ModuleMetadata {\n return AbstractModule.getMetadata(this.constructor);\n }\n\n protected get<T>(type: new(...args: any[]) => T) : T {\n return this.environment.get<T>(type);\n }\n\n // lifecycle\n\n @inject()\n injectEnvironment(environment: Environment) {\n this.environment = environment;\n }\n\n @onRunning()\n async setup(): Promise<void> {\n this.get(DeploymentManager).loaded(this.getMetadata().id)\n }\n}","/**\n * This is a generated file, do NOT edit manually!\n * Generator: AxiosClientGenerator V1.0 based on (OpenAPI-Generator https://openapi-generator.tech)\n */\n\n\nimport { schema, enumeration, oneOf, string, object, boolean, number, array, record, reference, date } from \"@novx/core\"\n\n\n\nexport interface ClientConstraints {\n screenSizes?: Array<string> | null\n orientation?: Array<string> | null\n platforms?: Array<string> | null\n minWidth?: number | null\n maxWidth?: number | null\n minHeight?: number | null\n maxHeight?: number | null\n capabilities?: Array<string> | null\n}\n\n\n/**\n* the schema for {@link ClientConstraints}\n*/\nexport const ClientConstraintsSchema = schema(\"ClientConstraints\", object({\n screenSizes: array(string()).optional().nullable(),\n orientation: array(string()).optional().nullable(),\n platforms: array(string()).optional().nullable(),\n minWidth: number().optional().nullable(),\n maxWidth: number().optional().nullable(),\n minHeight: number().optional().nullable(),\n maxHeight: number().optional().nullable(),\n capabilities: array(string()).optional().nullable(),\n}))\n\n\n\n\n","/**\n * This is a generated file, do NOT edit manually!\n * Generator: AxiosClientGenerator V1.0 based on (OpenAPI-Generator https://openapi-generator.tech)\n */\n\nimport { ClientConstraints, ClientConstraintsSchema } from './ClientConstraints'\nimport { schema, enumeration, oneOf, string, object, boolean, number, array, record, reference, date } from \"@novx/core\"\n\n\n\nexport interface FeatureDescriptor {\n id: string;\n i18n?: string;\n preloadI18n?: string[];\n label?: string;\n path?: string | null;\n icon?: string;\n lazy?: boolean;\n enabled?: boolean;\n component: string;\n tags?: Array<string>;\n permissions?: Array<string>;\n visibility?: Array<string>;\n sourceFile?: string;\n features?: Array<string>;\n clients?: ClientConstraints | null;\n}\n\n\n/**\n* the schema for {@link FeatureDescriptor}\n*/\nexport const FeatureDescriptorSchema = schema(\n 'Feature',\n object({\n id: string().required(),\n label: string().required(),\n path: string().optional().nullable(),\n icon: string().optional(),\n i18n: string().optional(),\n enabled: boolean().optional(),\n lazy: boolean().optional(),\n component: string().required(),\n tags: array(string()).optional(),\n permissions: array(string()).optional(),\n visibility: array(string()).optional(),\n sourceFile: string().optional(),\n features: array(string()).optional(),\n clients: reference(ClientConstraintsSchema).optional().nullable(),\n }),\n);\n\n\n\n\n","/**\n * This is a generated file, do NOT edit manually!\n * Generator: AxiosClientGenerator V1.0 based on (OpenAPI-Generator https://openapi-generator.tech)\n */\n\nimport { FeatureDescriptor, FeatureDescriptorSchema } from './FeatureDescriptor'\nimport { schema, enumeration, oneOf, string, object, boolean, number, array, record, reference, date } from \"@novx/core\"\n\n\n\nexport interface Manifest {\n id?: string;\n loaded?: boolean;\n enabled?: boolean;\n label?: string;\n description?: string;\n version?: string;\n uri?: string; // TODO?\n module?: string; // TODO ?\n features: Array<FeatureDescriptor>;\n}\n\n\n/**\n* the schema for {@link Manifest}\n*/\nexport const ManifestSchema = schema(\n 'Manifest',\n object({\n id: string().optional(),\n enabled: boolean().optional(),\n loaded: boolean().optional(),\n label: string().optional(),\n description: string().optional(),\n name: string().optional(),\n uri: string().optional(),\n module: string().optional(),\n features: array(FeatureDescriptorSchema).required(),\n }),\n);\n\n\n\n\n","/**\n * This is a generated file, do NOT edit manually!\n * Generator: AxiosClientGenerator V1.0 based on (OpenAPI-Generator https://openapi-generator.tech)\n */\n\nimport { Manifest, ManifestSchema } from './Manifest'\nimport { schema, enumeration, oneOf, string, object, boolean, number, array, record, reference, date } from \"@novx/core\"\n\n\n\nexport interface Deployment {\n modules: { [key: string]: Manifest; }\n}\n\n\n/**\n* the schema for {@link Deployment}\n*/\nexport const DeploymentSchema = schema(\"Deployment\", object({\n modules: record(ManifestSchema).required(),\n}))\n\n\n\n\n","/**\n * This is a generated file, do NOT edit manually!\n * Generator: AxiosClientGenerator V1.0 based on (OpenAPI-Generator https://openapi-generator.tech)\n */\n\nimport { schema, enumeration, oneOf, string, object, boolean, number, array, record, reference, date } from \"@novx/core\"\n\n\n\nexport interface ClientInfo {\n width: number\n height: number\n screen_size: string\n orientation: string\n pixel_ratio: number\n platform: string\n browser: string\n os: string\n os_version: string\n capabilities: Array<string>\n device_type?: string | null\n}\n\n\n/**\n* the schema for {@link ClientInfo}\n*/\nexport const ClientInfoSchema = schema(\"ClientInfo\", object({\n width: number().required(),\n height: number().required(),\n screen_size: string().required(),\n orientation: string().required(),\n pixel_ratio: number().required(),\n platform: string().required(),\n browser: string().required(),\n os: string().required(),\n os_version: string().required(),\n capabilities: array(string()).required(),\n device_type: oneOf('phone', 'tablet', 'desktop').optional().nullable(),\n}))\n\n\n\n\n","/**\n * This is a generated file, do NOT edit manually!\n * Generator: AxiosClientGenerator V1.0 based on (OpenAPI-Generator https://openapi-generator.tech)\n */\n\nimport { ClientInfo, ClientInfoSchema } from './ClientInfo'\nimport { schema, enumeration, oneOf, string, object, boolean, number, array, record, reference, date } from \"@novx/core\"\n\n\n\nexport interface DeploymentRequest {\n application: string\n client: ClientInfo\n}\n\n\n/**\n* the schema for {@link DeploymentRequest}\n*/\nexport const DeploymentRequestSchema = schema(\"DeploymentRequest\", object({\n application: string().required(),\n client: reference(ClientInfoSchema).required(),\n}))\n\n\n\n\n","import { DeploymentLoader } from '../deployment-manager';\nimport { Deployment, DeploymentRequest } from \"../model\"\n\nexport class EmptyDeploymentLoader implements DeploymentLoader {\n // implement DeploymentLoader\n\n load(request: DeploymentRequest): Promise<Deployment> {\n return Promise.resolve({\n modules: {},\n });\n }\n}","import { DeploymentLoader } from '../deployment-manager';\nimport { Deployment, DeploymentRequest } from \"../model\"\nimport { PortalService } from '../service/PortalService';\n\n\nexport class ServiceDeploymentLoader implements DeploymentLoader {\n \n // constructor\n\n constructor(private portalService: PortalService) {\n }\n\n // implement DeploymentLoader\n\n async load(request: DeploymentRequest): Promise<Deployment> {\n return await this.portalService.computeDeployment(request);\n }\n}","import { DeploymentLoader } from '../deployment-manager';\nimport { Deployment, DeploymentRequest, Manifest } from '../model';\n\nexport interface RemoteManifestUrl {\n name: string;\n url: string;\n}\n\nexport class RemoteDeploymentLoader implements DeploymentLoader {\n // instance data\n\n private remoteUrls: RemoteManifestUrl[];\n\n // constructor\n\n constructor(remoteUrls: RemoteManifestUrl[]) {\n this.remoteUrls = remoteUrls;\n }\n\n // implement DeploymentLoader\n\n async load(request: DeploymentRequest): Promise<Deployment> {\n const modules: Record<string, Manifest> = {};\n\n // Fetch all manifests in parallel\n const manifestPromises = this.remoteUrls.map(async (remote) => {\n try {\n const response = await fetch(`${remote.url}/manifest.json`);\n if (!response.ok) {\n console.error(\n `Failed to fetch manifest from ${remote.url}: ${response.statusText}`,\n );\n return null;\n }\n\n const manifest: Manifest = await response.json();\n\n // Set the module name and URI\n manifest.id = remote.name;\n manifest.uri = remote.url;\n manifest.module = remote.name;\n\n return { name: remote.name, manifest };\n } catch (error) {\n console.error(`Error fetching manifest from ${remote.url}:`, error);\n return null;\n }\n });\n\n // Wait for all fetches to complete\n const results = await Promise.all(manifestPromises);\n\n // Add successfully fetched manifests to modules\n for (const result of results) {\n if (result) {\n modules[result.name] = result.manifest;\n }\n }\n\n return {\n modules,\n };\n }\n}\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.4\";\n","/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n oldElement.props,\n oldElement._owner,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ioInfo = payload._ioInfo;\n null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());\n ioInfo = payload._result;\n var thenable = ioInfo();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 1;\n payload._result = moduleObject;\n var _ioInfo = payload._ioInfo;\n null != _ioInfo && (_ioInfo.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n }\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 2;\n payload._result = error;\n var _ioInfo2 = payload._ioInfo;\n null != _ioInfo2 && (_ioInfo2.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n }\n );\n ioInfo = payload._ioInfo;\n if (null != ioInfo) {\n ioInfo.value = thenable;\n var displayName = thenable.displayName;\n \"string\" === typeof displayName && (ioInfo.name = displayName);\n }\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status)\n return (\n (ioInfo = payload._result),\n void 0 === ioInfo &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ioInfo\n ),\n \"default\" in ioInfo ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ioInfo\n ),\n ioInfo.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function releaseAsyncTransition() {\n ReactSharedInternals.asyncTransitions--;\n }\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n };\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n actQueue: null,\n asyncTransitions: 0,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(\n deprecatedAPIs,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n var fnName = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Activity = REACT_ACTIVITY_TYPE;\n exports.Children = fnName;\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.cacheSignal = function () {\n return null;\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n props,\n owner,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n validateChildKeys(arguments[key]);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++)\n validateChildKeys(arguments[i]);\n i = {};\n var key = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n key &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n key,\n i,\n getOwner(),\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n ctor = { _status: -1, _result: ctor };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: ctor,\n _init: lazyInitializer\n },\n ioInfo = {\n name: \"lazy\",\n start: -1,\n end: -1,\n value: null,\n owner: null,\n debugStack: Error(\"react-stack-top-frame\"),\n debugTask: console.createTask ? console.createTask(\"lazy()\") : null\n };\n ctor._ioInfo = ioInfo;\n lazyType._debugInfo = [{ awaited: ioInfo }];\n return lazyType;\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition._updatedFibers = new Set();\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n (ReactSharedInternals.asyncTransitions++,\n returnValue.then(releaseAsyncTransition, releaseAsyncTransition),\n returnValue.then(noop, reportGlobalError));\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (null !== prevTransition.types &&\n prevTransition.types !== currentTransition.types &&\n console.error(\n \"We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React.\"\n ),\n (prevTransition.types = currentTransition.types)),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useEffect(create, deps);\n };\n exports.useEffectEvent = function (callback) {\n return resolveDispatcher().useEffectEvent(callback);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.2.4\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * react-router v7.13.1\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 */\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n\n// lib/router/history.ts\nvar Action = /* @__PURE__ */ ((Action2) => {\n Action2[\"Pop\"] = \"POP\";\n Action2[\"Push\"] = \"PUSH\";\n Action2[\"Replace\"] = \"REPLACE\";\n return Action2;\n})(Action || {});\nvar PopStateEventType = \"popstate\";\nfunction isLocation(obj) {\n return typeof obj === \"object\" && obj != null && \"pathname\" in obj && \"search\" in obj && \"hash\" in obj && \"state\" in obj && \"key\" in obj;\n}\nfunction createMemoryHistory(options = {}) {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries;\n entries = initialEntries.map(\n (entry, index2) => createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index2 === 0 ? \"default\" : void 0,\n typeof entry === \"string\" ? void 0 : entry.unstable_mask\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = \"POP\" /* 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 = null, key, unstable_mask) {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key,\n unstable_mask\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n function createHref2(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: createHref2,\n createURL(to) {\n return new URL(createHref2(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 = \"PUSH\" /* Push */;\n let nextLocation = isLocation(to) ? to : createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = \"REPLACE\" /* Replace */;\n let nextLocation = isLocation(to) ? to : createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = \"POP\" /* Pop */;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\nfunction createBrowserHistory(options = {}) {\n function createBrowserLocation(window2, globalHistory) {\n let maskedLocation = globalHistory.state?.masked;\n let { pathname, search, hash } = maskedLocation || window2.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null,\n globalHistory.state && globalHistory.state.key || \"default\",\n maskedLocation ? {\n pathname: window2.location.pathname,\n search: window2.location.search,\n hash: window2.location.hash\n } : void 0\n );\n }\n function createBrowserHref(window2, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\nfunction createHashHistory(options = {}) {\n function createHashLocation(window2, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window2.location.hash.substring(1));\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null,\n globalHistory.state && globalHistory.state.key || \"default\"\n );\n }\n function createHashHref(window2, to) {\n let base = window2.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window2.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(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\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 if (typeof console !== \"undefined\") console.warn(message);\n try {\n throw new Error(message);\n } catch (e) {\n }\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substring(2, 10);\n}\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n masked: location.unstable_mask ? {\n pathname: location.pathname,\n search: location.search,\n hash: location.hash\n } : void 0\n };\n}\nfunction createLocation(current, to, state = null, key, unstable_mask) {\n let location = {\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 unstable_mask\n };\n return location;\n}\nfunction createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n}) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substring(hashIndex);\n path = path.substring(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substring(searchIndex);\n path = path.substring(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref2, validateLocation, options = {}) {\n let { window: window2 = document.defaultView, v5Compat = false } = options;\n let globalHistory = window2.history;\n let action = \"POP\" /* Pop */;\n let listener = null;\n let index = getIndex();\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n function getIndex() {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n function handlePop() {\n action = \"POP\" /* Pop */;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n function push(to, state) {\n action = \"PUSH\" /* Push */;\n let location = isLocation(to) ? to : 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.unstable_mask || location);\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n window2.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n function replace2(to, state) {\n action = \"REPLACE\" /* Replace */;\n let location = isLocation(to) ? to : 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.unstable_mask || location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n function createURL(to) {\n return createBrowserURLImpl(to);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window2, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window2.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window2.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref2(window2, to);\n },\n createURL,\n encodeLocation(to) {\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: replace2,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\nfunction createBrowserURLImpl(to, isAbsolute = false) {\n let base = \"http://localhost\";\n if (typeof window !== \"undefined\") {\n base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n }\n invariant(base, \"No window.location.(origin|href) available to create URL\");\n let href = typeof to === \"string\" ? to : createPath(to);\n href = href.replace(/ $/, \"%20\");\n if (!isAbsolute && href.startsWith(\"//\")) {\n href = base + href;\n }\n return new URL(href, base);\n}\n\n// lib/router/utils.ts\nfunction createContext(defaultValue) {\n return { defaultValue };\n}\nvar _map;\nvar RouterContextProvider = class {\n /**\n * Create a new `RouterContextProvider` instance\n * @param init An optional initial context map to populate the provider with\n */\n constructor(init) {\n __privateAdd(this, _map, /* @__PURE__ */ new Map());\n if (init) {\n for (let [context, value] of init) {\n this.set(context, value);\n }\n }\n }\n /**\n * Access a value from the context. If no value has been set for the context,\n * it will return the context's `defaultValue` if provided, or throw an error\n * if no `defaultValue` was set.\n * @param context The context to get the value for\n * @returns The value for the context, or the context's `defaultValue` if no\n * value was set\n */\n get(context) {\n if (__privateGet(this, _map).has(context)) {\n return __privateGet(this, _map).get(context);\n }\n if (context.defaultValue !== void 0) {\n return context.defaultValue;\n }\n throw new Error(\"No value found for context\");\n }\n /**\n * Set a value for the context. If the context already has a value set, this\n * will overwrite it.\n *\n * @param context The context to set the value for\n * @param value The value to set for the context\n * @returns {void}\n */\n set(context, value) {\n __privateGet(this, _map).set(context, value);\n }\n};\n_map = new WeakMap();\nvar unsupportedLazyRouteObjectKeys = /* @__PURE__ */ new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\"\n]);\nfunction isUnsupportedLazyRouteObjectKey(key) {\n return unsupportedLazyRouteObjectKeys.has(\n key\n );\n}\nvar unsupportedLazyRouteFunctionKeys = /* @__PURE__ */ new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"middleware\",\n \"children\"\n]);\nfunction isUnsupportedLazyRouteFunctionKey(key) {\n return unsupportedLazyRouteFunctionKeys.has(\n key\n );\n}\nfunction isIndexRoute(route) {\n return route.index === true;\n}\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties2, parentPath = [], manifest = {}, allowInPlaceMutations = false) {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n allowInPlaceMutations || !manifest[id],\n `Found a route id collision on id \"${id}\". Route id's must be globally unique within Data Router usages`\n );\n if (isIndexRoute(route)) {\n let indexRoute = {\n ...route,\n id\n };\n manifest[id] = mergeRouteUpdates(\n indexRoute,\n mapRouteProperties2(indexRoute)\n );\n return indexRoute;\n } else {\n let pathOrLayoutRoute = {\n ...route,\n id,\n children: void 0\n };\n manifest[id] = mergeRouteUpdates(\n pathOrLayoutRoute,\n mapRouteProperties2(pathOrLayoutRoute)\n );\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties2,\n treePath,\n manifest,\n allowInPlaceMutations\n );\n }\n return pathOrLayoutRoute;\n }\n });\n}\nfunction mergeRouteUpdates(route, updates) {\n return Object.assign(route, {\n ...updates,\n ...typeof updates.lazy === \"object\" && updates.lazy != null ? {\n lazy: {\n ...route.lazy,\n ...updates.lazy\n }\n } : {}\n });\n}\nfunction matchRoutes(routes, locationArg, basename = \"/\") {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\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 let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n loaderData: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = \"\", _hasParentOptionalSegments = false) {\n let flattenRoute = (route, index, hasParentOptionalSegments = _hasParentOptionalSegments, relativePath) => {\n let meta = {\n relativePath: relativePath === void 0 ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n if (!meta.relativePath.startsWith(parentPath) && hasParentOptionalSegments) {\n return;\n }\n invariant(\n meta.relativePath.startsWith(parentPath),\n `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 );\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\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,\n `Index routes must not have child routes. Please remove all child routes from route path \"${path}\".`\n );\n flattenRoutes(\n route.children,\n branches,\n routesMeta,\n path,\n hasParentOptionalSegments\n );\n }\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 if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, true, exploded);\n }\n }\n });\n return branches;\n}\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n let isOptional = first.endsWith(\"?\");\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n result.push(\n ...restExploded.map(\n (subpath) => subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n if (isOptional) {\n result.push(...restExploded);\n }\n return result.map(\n (exploded) => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\nfunction rankRouteBranches(branches) {\n branches.sort(\n (a, b) => a.score !== b.score ? b.score - a.score : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\nvar paramRe = /^:[\\w-]+$/;\nvar dynamicSegmentValue = 3;\nvar indexRouteValue = 2;\nvar emptySegmentValue = 1;\nvar staticSegmentValue = 10;\nvar splatPenalty = -2;\nvar 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(\n (score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue),\n initialScore\n );\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 ) : (\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0\n );\n}\nfunction matchRouteBranch(branch, pathname, allowPartial = false) {\n let { routesMeta } = 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, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n let route = meta.route;\n if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false\n },\n remainingPathname\n );\n }\n if (!match) {\n return null;\n }\n Object.assign(matchedParams, match.params);\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\nfunction generatePath(originalPath, params = {}) {\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `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 );\n path = path.replace(/\\*$/, \"/*\");\n }\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify2 = (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 if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n return stringify2(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)(.*)/);\n if (keyMatch) {\n const [, key, optional, suffix] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return encodeURIComponent(stringify2(param)) + suffix;\n }\n return segment.replace(/\\?$/g, \"\");\n }).filter((segment) => !!segment);\n return prefix + segments.join(\"/\");\n}\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\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(\n (memo2, { paramName, isOptional }, index) => {\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 memo2[paramName] = void 0;\n } else {\n memo2[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo2;\n },\n {}\n );\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive = false, end = true) {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `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 );\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\").replace(/^\\/*/, \"/\").replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\").replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (match, paramName, isOptional, index, str) => {\n params.push({ paramName, isOptional: isOptional != null });\n if (isOptional) {\n let nextChar = str.charAt(index + match.length);\n if (nextChar && nextChar !== \"/\") {\n return \"/([^\\\\/]*)\";\n }\n return \"(?:/([^\\\\/]*))?\";\n }\n return \"/([^\\\\/]+)\";\n }\n ).replace(/\\/([\\w-]+)\\?(\\/|$)/g, \"(/$1)?$2\");\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" : \"(?:\\\\/(.+)|\\\\/*)$\";\n } else if (end) {\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n }\n let matcher = new RegExp(regexpSource, caseSensitive ? void 0 : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${error}).`\n );\n return value;\n }\n}\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\nfunction prependBasename({\n basename,\n pathname\n}) {\n return pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n}\nvar ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);\nfunction resolvePath(to, fromPathname = \"/\") {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname;\n if (toPathname) {\n toPathname = toPathname.replace(/\\/\\/+/g, \"/\");\n if (toPathname.startsWith(\"/\")) {\n pathname = resolvePathname(toPathname.substring(1), \"/\");\n } else {\n pathname = resolvePathname(toPathname, fromPathname);\n }\n } else {\n pathname = fromPathname;\n }\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 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(\n path\n )}]. Please separate it out to the \\`to.${dest}\\` field. Alternatively you may provide the full path as a string in <Link to=\"...\"> and the router will parse it for you.`;\n}\nfunction getPathContributingMatches(matches) {\n return matches.filter(\n (match, index) => index === 0 || match.route.path && match.route.path.length > 0\n );\n}\nfunction getResolveToMatches(matches) {\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches.map(\n (match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n}\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative = false) {\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\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 let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\nvar joinPaths = (paths) => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\nvar normalizePathname = (pathname) => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\nvar normalizeSearch = (search) => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\nvar normalizeHash = (hash) => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\nvar DataWithResponseInit = class {\n constructor(data2, init) {\n this.type = \"DataWithResponseInit\";\n this.data = data2;\n this.init = init || null;\n }\n};\nfunction data(data2, init) {\n return new DataWithResponseInit(\n data2,\n typeof init === \"number\" ? { status: init } : init\n );\n}\nvar redirect = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\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, { ...responseInit, headers });\n};\nvar redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\nvar replace = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\nvar ErrorResponseImpl = class {\n constructor(status, statusText, data2, internal = false) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data2 instanceof Error) {\n this.data = data2.toString();\n this.error = data2;\n } else {\n this.data = data2;\n }\n }\n};\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\nfunction getRoutePattern(matches) {\n return matches.map((m) => m.route.path).filter(Boolean).join(\"/\").replace(/\\/\\/*/g, \"/\") || \"/\";\n}\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nfunction parseToInfo(_to, basename) {\n let to = _to;\n if (typeof to !== \"string\" || !ABSOLUTE_URL_REGEX.test(to)) {\n return {\n absoluteURL: void 0,\n isExternal: false,\n to\n };\n }\n let absoluteURL = to;\n let isExternal = false;\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n if (targetUrl.origin === currentUrl.origin && path != null) {\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n warning(\n false,\n `<Link to=\"${to}\"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`\n );\n }\n }\n return {\n absoluteURL,\n isExternal,\n to\n };\n}\n\n// lib/router/instrumentation.ts\nvar UninstrumentedSymbol = Symbol(\"Uninstrumented\");\nfunction getRouteInstrumentationUpdates(fns, route) {\n let aggregated = {\n lazy: [],\n \"lazy.loader\": [],\n \"lazy.action\": [],\n \"lazy.middleware\": [],\n middleware: [],\n loader: [],\n action: []\n };\n fns.forEach(\n (fn) => fn({\n id: route.id,\n index: route.index,\n path: route.path,\n instrument(i) {\n let keys = Object.keys(aggregated);\n for (let key of keys) {\n if (i[key]) {\n aggregated[key].push(i[key]);\n }\n }\n }\n })\n );\n let updates = {};\n if (typeof route.lazy === \"function\" && aggregated.lazy.length > 0) {\n let instrumented = wrapImpl(aggregated.lazy, route.lazy, () => void 0);\n if (instrumented) {\n updates.lazy = instrumented;\n }\n }\n if (typeof route.lazy === \"object\") {\n let lazyObject = route.lazy;\n [\"middleware\", \"loader\", \"action\"].forEach((key) => {\n let lazyFn = lazyObject[key];\n let instrumentations = aggregated[`lazy.${key}`];\n if (typeof lazyFn === \"function\" && instrumentations.length > 0) {\n let instrumented = wrapImpl(instrumentations, lazyFn, () => void 0);\n if (instrumented) {\n updates.lazy = Object.assign(updates.lazy || {}, {\n [key]: instrumented\n });\n }\n }\n });\n }\n [\"loader\", \"action\"].forEach((key) => {\n let handler = route[key];\n if (typeof handler === \"function\" && aggregated[key].length > 0) {\n let original = handler[UninstrumentedSymbol] ?? handler;\n let instrumented = wrapImpl(\n aggregated[key],\n original,\n (...args) => getHandlerInfo(args[0])\n );\n if (instrumented) {\n if (key === \"loader\" && original.hydrate === true) {\n instrumented.hydrate = true;\n }\n instrumented[UninstrumentedSymbol] = original;\n updates[key] = instrumented;\n }\n }\n });\n if (route.middleware && route.middleware.length > 0 && aggregated.middleware.length > 0) {\n updates.middleware = route.middleware.map((middleware) => {\n let original = middleware[UninstrumentedSymbol] ?? middleware;\n let instrumented = wrapImpl(\n aggregated.middleware,\n original,\n (...args) => getHandlerInfo(args[0])\n );\n if (instrumented) {\n instrumented[UninstrumentedSymbol] = original;\n return instrumented;\n }\n return middleware;\n });\n }\n return updates;\n}\nfunction instrumentClientSideRouter(router, fns) {\n let aggregated = {\n navigate: [],\n fetch: []\n };\n fns.forEach(\n (fn) => fn({\n instrument(i) {\n let keys = Object.keys(i);\n for (let key of keys) {\n if (i[key]) {\n aggregated[key].push(i[key]);\n }\n }\n }\n })\n );\n if (aggregated.navigate.length > 0) {\n let navigate = router.navigate[UninstrumentedSymbol] ?? router.navigate;\n let instrumentedNavigate = wrapImpl(\n aggregated.navigate,\n navigate,\n (...args) => {\n let [to, opts] = args;\n return {\n to: typeof to === \"number\" || typeof to === \"string\" ? to : to ? createPath(to) : \".\",\n ...getRouterInfo(router, opts ?? {})\n };\n }\n );\n if (instrumentedNavigate) {\n instrumentedNavigate[UninstrumentedSymbol] = navigate;\n router.navigate = instrumentedNavigate;\n }\n }\n if (aggregated.fetch.length > 0) {\n let fetch2 = router.fetch[UninstrumentedSymbol] ?? router.fetch;\n let instrumentedFetch = wrapImpl(aggregated.fetch, fetch2, (...args) => {\n let [key, , href, opts] = args;\n return {\n href: href ?? \".\",\n fetcherKey: key,\n ...getRouterInfo(router, opts ?? {})\n };\n });\n if (instrumentedFetch) {\n instrumentedFetch[UninstrumentedSymbol] = fetch2;\n router.fetch = instrumentedFetch;\n }\n }\n return router;\n}\nfunction instrumentHandler(handler, fns) {\n let aggregated = {\n request: []\n };\n fns.forEach(\n (fn) => fn({\n instrument(i) {\n let keys = Object.keys(i);\n for (let key of keys) {\n if (i[key]) {\n aggregated[key].push(i[key]);\n }\n }\n }\n })\n );\n let instrumentedHandler = handler;\n if (aggregated.request.length > 0) {\n instrumentedHandler = wrapImpl(aggregated.request, handler, (...args) => {\n let [request, context] = args;\n return {\n request: getReadonlyRequest(request),\n context: context != null ? getReadonlyContext(context) : context\n };\n });\n }\n return instrumentedHandler;\n}\nfunction wrapImpl(impls, handler, getInfo) {\n if (impls.length === 0) {\n return null;\n }\n return async (...args) => {\n let result = await recurseRight(\n impls,\n getInfo(...args),\n () => handler(...args),\n impls.length - 1\n );\n if (result.type === \"error\") {\n throw result.value;\n }\n return result.value;\n };\n}\nasync function recurseRight(impls, info, handler, index) {\n let impl = impls[index];\n let result;\n if (!impl) {\n try {\n let value = await handler();\n result = { type: \"success\", value };\n } catch (e) {\n result = { type: \"error\", value: e };\n }\n } else {\n let handlerPromise = void 0;\n let callHandler = async () => {\n if (handlerPromise) {\n console.error(\"You cannot call instrumented handlers more than once\");\n } else {\n handlerPromise = recurseRight(impls, info, handler, index - 1);\n }\n result = await handlerPromise;\n invariant(result, \"Expected a result\");\n if (result.type === \"error\" && result.value instanceof Error) {\n return { status: \"error\", error: result.value };\n }\n return { status: \"success\", error: void 0 };\n };\n try {\n await impl(callHandler, info);\n } catch (e) {\n console.error(\"An instrumentation function threw an error:\", e);\n }\n if (!handlerPromise) {\n await callHandler();\n }\n await handlerPromise;\n }\n if (result) {\n return result;\n }\n return {\n type: \"error\",\n value: new Error(\"No result assigned in instrumentation chain.\")\n };\n}\nfunction getHandlerInfo(args) {\n let { request, context, params, unstable_pattern } = args;\n return {\n request: getReadonlyRequest(request),\n params: { ...params },\n unstable_pattern,\n context: getReadonlyContext(context)\n };\n}\nfunction getRouterInfo(router, opts) {\n return {\n currentUrl: createPath(router.state.location),\n ...\"formMethod\" in opts ? { formMethod: opts.formMethod } : {},\n ...\"formEncType\" in opts ? { formEncType: opts.formEncType } : {},\n ...\"formData\" in opts ? { formData: opts.formData } : {},\n ...\"body\" in opts ? { body: opts.body } : {}\n };\n}\nfunction getReadonlyRequest(request) {\n return {\n method: request.method,\n url: request.url,\n headers: {\n get: (...args) => request.headers.get(...args)\n }\n };\n}\nfunction getReadonlyContext(context) {\n if (isPlainObject(context)) {\n let frozen = { ...context };\n Object.freeze(frozen);\n return frozen;\n } else {\n return {\n get: (ctx) => context.get(ctx)\n };\n }\n}\nvar objectProtoNames = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject(thing) {\n if (thing === null || typeof thing !== \"object\") {\n return false;\n }\n const proto = Object.getPrototypeOf(thing);\n return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames;\n}\n\n// lib/router/router.ts\nvar validMutationMethodsArr = [\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\"\n];\nvar validMutationMethods = new Set(\n validMutationMethodsArr\n);\nvar validRequestMethodsArr = [\n \"GET\",\n ...validMutationMethodsArr\n];\nvar validRequestMethods = new Set(validRequestMethodsArr);\nvar redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nvar redirectPreserveMethodStatusCodes = /* @__PURE__ */ new Set([307, 308]);\nvar IDLE_NAVIGATION = {\n state: \"idle\",\n location: void 0,\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\n};\nvar IDLE_FETCHER = {\n state: \"idle\",\n data: void 0,\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\n};\nvar IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: void 0,\n reset: void 0,\n location: void 0\n};\nvar defaultMapRouteProperties = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nvar TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\nvar ResetLoaderDataSymbol = Symbol(\"ResetLoaderData\");\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : void 0;\n const isBrowser3 = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n let hydrationRouteProperties2 = init.hydrationRouteProperties || [];\n let _mapRouteProperties = init.mapRouteProperties || defaultMapRouteProperties;\n let mapRouteProperties2 = _mapRouteProperties;\n if (init.unstable_instrumentations) {\n let instrumentations = init.unstable_instrumentations;\n mapRouteProperties2 = (route) => {\n return {\n ..._mapRouteProperties(route),\n ...getRouteInstrumentationUpdates(\n instrumentations.map((i) => i.route).filter(Boolean),\n route\n )\n };\n };\n }\n let manifest = {};\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n if (!basename.startsWith(\"/\")) {\n basename = `/${basename}`;\n }\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategyWithMiddleware;\n let future = {\n ...init.future\n };\n let unlistenHistory = null;\n let subscribers = /* @__PURE__ */ new Set();\n let savedScrollPositions2 = null;\n let getScrollRestorationKey2 = null;\n let getScrollPosition = null;\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialMatchesIsFOW = false;\n let initialErrors = null;\n let initialized;\n let renderFallback;\n if (initialMatches == null && !init.patchRoutesOnNavigation) {\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialized = true;\n renderFallback = !initialized;\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n } else {\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n if (!initialMatches) {\n initialized = false;\n renderFallback = !initialized;\n initialMatches = [];\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatchesIsFOW = true;\n initialMatches = fogOfWar.matches;\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n initialized = false;\n renderFallback = !initialized;\n } else if (!initialMatches.some((m) => routeHasLoaderOrMiddleware(m.route))) {\n initialized = true;\n renderFallback = !initialized;\n } else {\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let relevantMatches = initialMatches;\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors[m.route.id] !== void 0\n );\n relevantMatches = relevantMatches.slice(0, idx + 1);\n }\n renderFallback = false;\n initialized = relevantMatches.every((m) => {\n let status = getRouteHydrationStatus(m.route, loaderData, errors);\n renderFallback = renderFallback || status.renderFallback;\n return !status.shouldLoad;\n });\n }\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n renderFallback,\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: /* @__PURE__ */ new Map(),\n blockers: /* @__PURE__ */ new Map()\n };\n let pendingAction = \"POP\" /* Pop */;\n let pendingPopstateNavigationDfd = null;\n let pendingPreventScrollReset = false;\n let pendingNavigationController;\n let pendingViewTransitionEnabled = false;\n let appliedViewTransitions = /* @__PURE__ */ new Map();\n let removePageHideEventListener = null;\n let isUninterruptedRevalidation = false;\n let isRevalidationRequired = false;\n let cancelledFetcherLoads = /* @__PURE__ */ new Set();\n let fetchControllers = /* @__PURE__ */ new Map();\n let incrementingLoadId = 0;\n let pendingNavigationLoadId = -1;\n let fetchReloadIds = /* @__PURE__ */ new Map();\n let fetchRedirectIds = /* @__PURE__ */ new Set();\n let fetchLoadMatches = /* @__PURE__ */ new Map();\n let activeFetchers = /* @__PURE__ */ new Map();\n let fetchersQueuedForDeletion = /* @__PURE__ */ new Set();\n let blockerFunctions = /* @__PURE__ */ new Map();\n let unblockBlockerHistoryUpdate = void 0;\n let pendingRevalidationDfd = null;\n function initialize() {\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = void 0;\n return;\n }\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"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 );\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: void 0,\n reset: void 0,\n location\n });\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({ blockers });\n }\n });\n pendingPopstateNavigationDfd?.resolve();\n pendingPopstateNavigationDfd = null;\n return;\n }\n return startNavigation(historyAction, location);\n }\n );\n if (isBrowser3) {\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n if (!state.initialized) {\n startNavigation(\"POP\" /* Pop */, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\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 function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n function updateState(newState, opts = {}) {\n if (newState.matches) {\n newState.matches = newState.matches.map((m) => {\n let route = manifest[m.route.id];\n let matchRoute = m.route;\n if (matchRoute.element !== route.element || matchRoute.errorElement !== route.errorElement || matchRoute.hydrateFallbackElement !== route.hydrateFallbackElement) {\n return {\n ...m,\n route\n };\n }\n return m;\n });\n }\n state = {\n ...state,\n ...newState\n };\n let unmountedFetchers = [];\n let mountedFetchers = [];\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (fetchersQueuedForDeletion.has(key)) {\n unmountedFetchers.push(key);\n } else {\n mountedFetchers.push(key);\n }\n }\n });\n fetchersQueuedForDeletion.forEach((key) => {\n if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n unmountedFetchers.push(key);\n }\n });\n [...subscribers].forEach(\n (subscriber) => subscriber(state, {\n deletedFetchers: unmountedFetchers,\n newErrors: newState.errors ?? null,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true\n })\n );\n unmountedFetchers.forEach((key) => deleteFetcher(key));\n mountedFetchers.forEach((key) => state.fetchers.delete(key));\n }\n function completeNavigation(location, newState, { flushSync } = {}) {\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && 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 actionData = null;\n }\n } else if (isActionReload) {\n actionData = state.actionData;\n } else {\n actionData = null;\n }\n let loaderData = newState.loaderData ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n ) : state.loaderData;\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 let restoreScrollPosition = isUninterruptedRevalidation ? false : getSavedScrollPosition(location, newState.matches || state.matches);\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && location.state?._isRedirect !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = void 0;\n }\n if (isUninterruptedRevalidation) {\n } else if (pendingAction === \"POP\" /* Pop */) {\n } else if (pendingAction === \"PUSH\" /* Push */) {\n init.history.push(location, location.state);\n } else if (pendingAction === \"REPLACE\" /* Replace */) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n if (pendingAction === \"POP\" /* Pop */) {\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 viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = /* @__PURE__ */ 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(\n {\n ...newState,\n // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n renderFallback: false,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition,\n preventScrollReset,\n blockers\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true\n }\n );\n pendingAction = \"POP\" /* Pop */;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n pendingPopstateNavigationDfd?.resolve();\n pendingPopstateNavigationDfd = null;\n pendingRevalidationDfd?.resolve();\n pendingRevalidationDfd = null;\n }\n async function navigate(to, opts) {\n pendingPopstateNavigationDfd?.resolve();\n pendingPopstateNavigationDfd = null;\n if (typeof to === \"number\") {\n if (!pendingPopstateNavigationDfd) {\n pendingPopstateNavigationDfd = createDeferred();\n }\n let promise = pendingPopstateNavigationDfd.promise;\n init.history.go(to);\n return promise;\n }\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n false,\n normalizedPath,\n opts\n );\n let maskPath;\n if (opts?.unstable_mask) {\n let partialPath = typeof opts.unstable_mask === \"string\" ? parsePath(opts.unstable_mask) : {\n ...state.location.unstable_mask,\n ...opts.unstable_mask\n };\n maskPath = {\n pathname: \"\",\n search: \"\",\n hash: \"\",\n ...partialPath\n };\n }\n let currentLocation = state.location;\n let nextLocation = createLocation(\n currentLocation,\n path,\n opts && opts.state,\n void 0,\n maskPath\n );\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation)\n };\n let userReplace = opts && opts.replace != null ? opts.replace : void 0;\n let historyAction = \"PUSH\" /* Push */;\n if (userReplace === true) {\n historyAction = \"REPLACE\" /* Replace */;\n } else if (userReplace === false) {\n } else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n historyAction = \"REPLACE\" /* Replace */;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : void 0;\n let flushSync = (opts && opts.flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: void 0,\n reset: void 0,\n location: nextLocation\n });\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({ blockers });\n }\n });\n return;\n }\n 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.viewTransition,\n flushSync,\n callSiteDefaultShouldRevalidate: opts && opts.unstable_defaultShouldRevalidate\n });\n }\n function revalidate() {\n if (!pendingRevalidationDfd) {\n pendingRevalidationDfd = createDeferred();\n }\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n let promise = pendingRevalidationDfd.promise;\n if (state.navigation.state === \"submitting\") {\n return promise;\n }\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return promise;\n }\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true\n }\n );\n return promise;\n }\n async function startNavigation(historyAction, location, opts) {\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\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 = opts?.initialHydration && state.matches && state.matches.length > 0 && !initialMatchesIsFOW ? (\n // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n state.matches\n ) : matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n if (matches && state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n },\n { flushSync }\n );\n return;\n }\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider();\n let pendingActionResult;\n if (opts && opts.pendingError) {\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: \"error\" /* error */, error: opts.pendingError }\n ];\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n scopedContext,\n fogOfWar.active,\n opts && opts.initialHydration === true,\n { replace: opts.replace, flushSync }\n );\n if (actionResult.shortCircuited) {\n return;\n }\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n pendingNavigationController = null;\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error\n }\n });\n return;\n }\n }\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n fogOfWar.active = false;\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors\n } = await handleLoaders(\n request,\n location,\n matches,\n scopedContext,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult,\n opts && opts.callSiteDefaultShouldRevalidate\n );\n if (shortCircuited) {\n return;\n }\n pendingNavigationController = null;\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors\n });\n }\n async function handleAction(request, location, submission, matches, scopedContext, isFogOfWar, initialHydration, opts = {}) {\n interruptActiveLoads();\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n if (discoverResult.partialMatches.length === 0) {\n let { matches: matches2, route } = getShortCircuitMatches(dataRoutes);\n return {\n matches: matches2,\n pendingActionResult: [\n route.id,\n {\n type: \"error\" /* error */,\n error: discoverResult.error\n }\n ]\n };\n }\n let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: \"error\" /* error */,\n error: discoverResult.error\n }\n ]\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: \"error\" /* error */,\n error\n }\n ]\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: \"error\" /* error */,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n let dsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n request,\n matches,\n actionMatch,\n initialHydration ? [] : hydrationRouteProperties2,\n scopedContext\n );\n let results = await callDataStrategy(\n request,\n dsMatches,\n scopedContext,\n null\n );\n result = results[actionMatch.route.id];\n if (!result) {\n for (let match of matches) {\n if (results[match.route.id]) {\n result = results[match.route.id];\n break;\n }\n }\n }\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n if (isRedirectResult(result)) {\n let replace2;\n if (opts && opts.replace != null) {\n replace2 = opts.replace;\n } else {\n let location2 = normalizeRedirectLocation(\n result.response.headers.get(\"Location\"),\n new URL(request.url),\n basename,\n init.history\n );\n replace2 = location2 === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace: replace2\n });\n return { shortCircuited: true };\n }\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n if ((opts && opts.replace) !== true) {\n pendingAction = \"PUSH\" /* Push */;\n }\n return {\n matches,\n pendingActionResult: [\n boundaryMatch.route.id,\n result,\n actionMatch.route.id\n ]\n };\n }\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result]\n };\n }\n async function handleLoaders(request, location, matches, scopedContext, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace2, initialHydration, flushSync, pendingActionResult, callSiteDefaultShouldRevalidate) {\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let shouldUpdateNavigationState = !isUninterruptedRevalidation && !initialHydration;\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...actionData !== void 0 ? { actionData } : {}\n },\n {\n flushSync\n }\n );\n }\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n if (discoverResult.partialMatches.length === 0) {\n let { matches: matches2, route } = getShortCircuitMatches(dataRoutes);\n return {\n matches: matches2,\n loaderData: {},\n errors: {\n [route.id]: discoverResult.error\n }\n };\n }\n let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error\n }\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { dsMatches, revalidatingFetchers } = getMatchesToLoad(\n request,\n scopedContext,\n mapRouteProperties2,\n manifest,\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n initialHydration ? [] : hydrationRouteProperties2,\n initialHydration === true,\n isRevalidationRequired,\n cancelledFetcherLoads,\n fetchersQueuedForDeletion,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n init.patchRoutesOnNavigation != null,\n pendingActionResult,\n callSiteDefaultShouldRevalidate\n );\n pendingNavigationLoadId = ++incrementingLoadId;\n if (!init.dataStrategy && !dsMatches.some((m) => m.shouldLoad) && !dsMatches.some(\n (m) => m.route.middleware && m.route.middleware.length > 0\n ) && revalidatingFetchers.length === 0) {\n let updatedFetchers2 = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? { [pendingActionResult[0]]: pendingActionResult[1].error } : null,\n ...getActionDataForCommit(pendingActionResult),\n ...updatedFetchers2 ? { fetchers: new Map(state.fetchers) } : {}\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n if (shouldUpdateNavigationState) {\n let updates = {};\n if (!isFogOfWar) {\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== void 0) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n dsMatches,\n revalidatingFetchers,\n request,\n scopedContext\n );\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n let redirect2 = findRedirect(loaderResults);\n if (redirect2) {\n await startRedirectNavigation(request, redirect2.result, true, {\n replace: replace2\n });\n return { shortCircuited: true };\n }\n redirect2 = findRedirect(fetcherResults);\n if (redirect2) {\n fetchRedirectIds.add(redirect2.key);\n await startRedirectNavigation(request, redirect2.result, true, {\n replace: replace2\n });\n return { shortCircuited: true };\n }\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults\n );\n if (initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return {\n matches,\n loaderData,\n errors,\n ...shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}\n };\n }\n function getUpdatedActionData(pendingActionResult) {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n void 0,\n fetcher ? fetcher.data : void 0\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n async function fetch2(key, routeId, href, opts) {\n abortFetcher(key);\n let flushSync = (opts && opts.flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n let { path, submission, error } = normalizeNavigateOptions(\n true,\n normalizedPath,\n opts\n );\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider();\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n await handleFetcherAction(\n key,\n routeId,\n path,\n matches,\n scopedContext,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission,\n opts && opts.unstable_defaultShouldRevalidate\n );\n return;\n }\n fetchLoadMatches.set(key, { routeId, path });\n await handleFetcherLoader(\n key,\n routeId,\n path,\n matches,\n scopedContext,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n async function handleFetcherAction(key, routeId, path, requestMatches, scopedContext, isFogOfWar, flushSync, preventScrollReset, submission, callSiteDefaultShouldRevalidate) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal,\n key\n );\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n }\n }\n let match = getTargetMatch(requestMatches, path);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let fetchMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n requestMatches,\n match,\n hydrationRouteProperties2,\n scopedContext\n );\n let actionResults = await callDataStrategy(\n fetchRequest,\n fetchMatches,\n scopedContext,\n key\n );\n let actionResult = actionResults[match.route.id];\n if (!actionResult) {\n for (let match2 of fetchMatches) {\n if (actionResults[match2.route.id]) {\n actionResult = actionResults[match2.route.id];\n break;\n }\n }\n }\n if (fetchRequest.signal.aborted) {\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n if (fetchersQueuedForDeletion.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n }\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset\n });\n }\n }\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\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 { dsMatches, revalidatingFetchers } = getMatchesToLoad(\n revalidationRequest,\n scopedContext,\n mapRouteProperties2,\n manifest,\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n hydrationRouteProperties2,\n false,\n isRevalidationRequired,\n cancelledFetcherLoads,\n fetchersQueuedForDeletion,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n init.patchRoutesOnNavigation != null,\n [match.route.id, actionResult],\n callSiteDefaultShouldRevalidate\n );\n revalidatingFetchers.filter((rf) => rf.key !== key).forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher2 = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n void 0,\n existingFetcher2 ? existingFetcher2.data : void 0\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({ fetchers: new Map(state.fetchers) });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n dsMatches,\n revalidatingFetchers,\n revalidationRequest,\n scopedContext\n );\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n let redirect2 = findRedirect(loaderResults);\n if (redirect2) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect2.result,\n false,\n { preventScrollReset }\n );\n }\n redirect2 = findRedirect(fetcherResults);\n if (redirect2) {\n fetchRedirectIds.add(redirect2.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect2.result,\n false,\n { preventScrollReset }\n );\n }\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n void 0,\n revalidatingFetchers,\n fetcherResults\n );\n abortStaleFetchLoads(loadId);\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 updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n async function handleFetcherLoader(key, routeId, path, matches, scopedContext, isFogOfWar, flushSync, preventScrollReset, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : void 0\n ),\n { flushSync }\n );\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal,\n key\n );\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n }\n }\n let match = getTargetMatch(matches, path);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let dsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n matches,\n match,\n hydrationRouteProperties2,\n scopedContext\n );\n let results = await callDataStrategy(\n fetchRequest,\n dsMatches,\n scopedContext,\n key\n );\n let result = results[match.route.id];\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n if (fetchersQueuedForDeletion.has(key)) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n }\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset\n });\n return;\n }\n }\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n async function startRedirectNavigation(request, redirect2, isNavigation, {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace: replace2\n } = {}) {\n if (!isNavigation) {\n pendingPopstateNavigationDfd?.resolve();\n pendingPopstateNavigationDfd = null;\n }\n if (redirect2.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n let location = redirect2.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename,\n init.history\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true\n });\n if (isBrowser3) {\n let isDocumentReload = false;\n if (redirect2.response.headers.has(\"X-Remix-Reload-Document\")) {\n isDocumentReload = true;\n } else if (isAbsoluteUrl(location)) {\n const url = createBrowserURLImpl(location, true);\n isDocumentReload = // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin || // 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 (replace2) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n pendingNavigationController = null;\n let redirectNavigationType = replace2 === true || redirect2.response.headers.has(\"X-Remix-Replace\") ? \"REPLACE\" /* Replace */ : \"PUSH\" /* Push */;\n let { formMethod, formAction, formEncType } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect2.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectNavigationType, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n });\n } else {\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectNavigationType, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n });\n }\n }\n async function callDataStrategy(request, matches, scopedContext, fetcherKey) {\n let results;\n let dataResults = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n request,\n matches,\n fetcherKey,\n scopedContext,\n false\n );\n } catch (e) {\n matches.filter((m) => m.shouldLoad).forEach((m) => {\n dataResults[m.route.id] = {\n type: \"error\" /* error */,\n error: e\n };\n });\n return dataResults;\n }\n if (request.signal.aborted) {\n return dataResults;\n }\n if (!isMutationMethod(request.method)) {\n for (let match of matches) {\n if (results[match.route.id]?.type === \"error\" /* error */) {\n break;\n }\n if (!results.hasOwnProperty(match.route.id) && !state.loaderData.hasOwnProperty(match.route.id) && (!state.errors || !state.errors.hasOwnProperty(match.route.id)) && match.shouldCallHandler()) {\n results[match.route.id] = {\n type: \"error\" /* error */,\n result: new Error(\n `No result returned from dataStrategy for route ${match.route.id}`\n )\n };\n }\n }\n }\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResult(result)) {\n let response = result.result;\n dataResults[routeId] = {\n type: \"redirect\" /* redirect */,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename\n )\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(result);\n }\n }\n return dataResults;\n }\n async function callLoadersAndMaybeResolveData(matches, fetchersToLoad, request, scopedContext) {\n let loaderResultsPromise = callDataStrategy(\n request,\n matches,\n scopedContext,\n null\n );\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.request && f.controller) {\n let results = await callDataStrategy(\n f.request,\n f.matches,\n scopedContext,\n f.key\n );\n let result = results[f.match.route.id];\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: \"error\" /* error */,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n }\n });\n }\n })\n );\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n return {\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n isRevalidationRequired = true;\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n function updateFetcherState(key, fetcher, opts = {}) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n function setFetcherError(key, routeId, error, opts = {}) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\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 activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n if (fetchersQueuedForDeletion.has(key)) {\n fetchersQueuedForDeletion.delete(key);\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function resetFetcher(key, opts) {\n abortFetcher(key, opts?.reason);\n updateFetcherState(key, getDoneFetcher(null));\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\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 fetchersQueuedForDeletion.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n function queueFetcherForDeletion(key) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n fetchersQueuedForDeletion.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n function abortFetcher(key, reason) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort(reason);\n fetchControllers.delete(key);\n }\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 function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n invariant(\n 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\",\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n }) {\n if (blockerFunctions.size === 0) {\n return;\n }\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 return;\n }\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n function handleNavigational404(pathname) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n return { notFoundMatches: matches, route, error };\n }\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions2 = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey2 = getKey || null;\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n return () => {\n savedScrollPositions2 = null;\n getScrollPosition = null;\n getScrollRestorationKey2 = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey2) {\n let key = getScrollRestorationKey2(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions2 && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions2[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions2) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions2[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function checkFogOfWar(matches, routesToUse, pathname) {\n if (init.patchRoutesOnNavigation) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n return { active: false, matches: null };\n }\n async function discoverRoutes(matches, pathname, signal, fetcherKey) {\n if (!init.patchRoutesOnNavigation) {\n return { type: \"success\", matches };\n }\n let partialMatches = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await init.patchRoutesOnNavigation({\n signal,\n path: pathname,\n matches: partialMatches,\n fetcherKey,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties2,\n false\n );\n }\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n let newPartialMatches = null;\n if (newMatches) {\n if (Object.keys(newMatches[0].params).length === 0) {\n return { type: \"success\", matches: newMatches };\n } else {\n newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n let matchedDeeper = newPartialMatches && partialMatches.length < newPartialMatches.length && compareMatches(\n partialMatches,\n newPartialMatches.slice(0, partialMatches.length)\n );\n if (!matchedDeeper) {\n return { type: \"success\", matches: newMatches };\n }\n }\n }\n if (!newPartialMatches) {\n newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n }\n if (!newPartialMatches || compareMatches(partialMatches, newPartialMatches)) {\n return { type: \"success\", matches: null };\n }\n partialMatches = newPartialMatches;\n }\n }\n function compareMatches(a, b) {\n return a.length === b.length && a.every((m, i) => m.route.id === b[i].route.id);\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n }\n function patchRoutes(routeId, children, unstable_allowElementMutations = false) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties2,\n unstable_allowElementMutations\n );\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\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: fetch2,\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 resetFetcher,\n deleteFetcher: queueFetcherForDeletion,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n _internalSetStateDoNotUseOrYouWillBreakYourApp(newState) {\n updateState(newState);\n }\n };\n if (init.unstable_instrumentations) {\n router = instrumentClientSideRouter(\n router,\n init.unstable_instrumentations.map((i) => i.router).filter(Boolean)\n );\n }\n return router;\n}\nfunction createStaticHandler(routes, opts) {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let _mapRouteProperties = opts?.mapRouteProperties || defaultMapRouteProperties;\n let mapRouteProperties2 = _mapRouteProperties;\n if (opts?.unstable_instrumentations) {\n let instrumentations = opts.unstable_instrumentations;\n mapRouteProperties2 = (route) => {\n return {\n ..._mapRouteProperties(route),\n ...getRouteInstrumentationUpdates(\n instrumentations.map((i) => i.route).filter(Boolean),\n route\n )\n };\n };\n }\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n async function query(request, {\n requestContext,\n filterMatchesToLoad,\n skipLoaderErrorBubbling,\n skipRevalidation,\n dataStrategy,\n generateMiddlewareResponse\n } = {}) {\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 requestContext = requestContext != null ? requestContext : new RouterContextProvider();\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } = getShortCircuitMatches(dataRoutes);\n let staticContext = {\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 };\n return generateMiddlewareResponse ? generateMiddlewareResponse(() => Promise.resolve(staticContext)) : staticContext;\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } = getShortCircuitMatches(dataRoutes);\n let staticContext = {\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 };\n return generateMiddlewareResponse ? generateMiddlewareResponse(() => Promise.resolve(staticContext)) : staticContext;\n }\n if (generateMiddlewareResponse) {\n invariant(\n requestContext instanceof RouterContextProvider,\n \"When using middleware in `staticHandler.query()`, any provided `requestContext` must be an instance of `RouterContextProvider`\"\n );\n try {\n await loadLazyMiddlewareForMatches(\n matches,\n manifest,\n mapRouteProperties2\n );\n let renderedStaticContext;\n let response = await runServerMiddlewarePipeline(\n {\n request,\n unstable_pattern: getRoutePattern(matches),\n matches,\n params: matches[0].params,\n // If we're calling middleware then it must be enabled so we can cast\n // this to the proper type knowing it's not an `AppLoadContext`\n context: requestContext\n },\n async () => {\n let res = await generateMiddlewareResponse(\n async (revalidationRequest, opts2 = {}) => {\n let result2 = await queryImpl(\n revalidationRequest,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null,\n \"filterMatchesToLoad\" in opts2 ? opts2.filterMatchesToLoad ?? null : filterMatchesToLoad ?? null,\n skipRevalidation === true\n );\n if (isResponse(result2)) {\n return result2;\n }\n renderedStaticContext = { location, basename, ...result2 };\n return renderedStaticContext;\n }\n );\n return res;\n },\n async (error, routeId) => {\n if (isRedirectResponse(error)) {\n return error;\n }\n if (isResponse(error)) {\n try {\n error = new ErrorResponseImpl(\n error.status,\n error.statusText,\n await parseResponseBody(error)\n );\n } catch (e) {\n error = e;\n }\n }\n if (isDataWithResponseInit(error)) {\n error = dataWithResponseInitToErrorResponse(error);\n }\n if (renderedStaticContext) {\n if (routeId in renderedStaticContext.loaderData) {\n renderedStaticContext.loaderData[routeId] = void 0;\n }\n let staticContext = getStaticContextFromError(\n dataRoutes,\n renderedStaticContext,\n error,\n skipLoaderErrorBubbling ? routeId : findNearestBoundary(matches, routeId).route.id\n );\n return generateMiddlewareResponse(\n () => Promise.resolve(staticContext)\n );\n } else {\n let boundaryRouteId = skipLoaderErrorBubbling ? routeId : findNearestBoundary(\n matches,\n matches.find(\n (m) => m.route.id === routeId || m.route.loader\n )?.route.id || routeId\n ).route.id;\n let staticContext = {\n matches,\n location,\n basename,\n loaderData: {},\n actionData: null,\n errors: {\n [boundaryRouteId]: error\n },\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n actionHeaders: {},\n loaderHeaders: {}\n };\n return generateMiddlewareResponse(\n () => Promise.resolve(staticContext)\n );\n }\n }\n );\n invariant(isResponse(response), \"Expected a response in query()\");\n return response;\n } catch (e) {\n if (isResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null,\n filterMatchesToLoad || null,\n skipRevalidation === true\n );\n if (isResponse(result)) {\n return result;\n }\n return { location, basename, ...result };\n }\n async function queryRoute(request, {\n routeId,\n requestContext,\n dataStrategy,\n generateMiddlewareResponse\n } = {}) {\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 requestContext = requestContext != null ? requestContext : new RouterContextProvider();\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\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 throw getInternalRouterError(404, { pathname: location.pathname });\n }\n if (generateMiddlewareResponse) {\n invariant(\n requestContext instanceof RouterContextProvider,\n \"When using middleware in `staticHandler.queryRoute()`, any provided `requestContext` must be an instance of `RouterContextProvider`\"\n );\n await loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2);\n let response = await runServerMiddlewarePipeline(\n {\n request,\n unstable_pattern: getRoutePattern(matches),\n matches,\n params: matches[0].params,\n // If we're calling middleware then it must be enabled so we can cast\n // this to the proper type knowing it's not an `AppLoadContext`\n context: requestContext\n },\n async () => {\n let res = await generateMiddlewareResponse(\n async (innerRequest) => {\n let result2 = await queryImpl(\n innerRequest,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match,\n null,\n false\n );\n let processed = handleQueryResult(result2);\n return isResponse(processed) ? processed : typeof processed === \"string\" ? new Response(processed) : Response.json(processed);\n }\n );\n return res;\n },\n (error) => {\n if (isDataWithResponseInit(error)) {\n return Promise.resolve(dataWithResponseInitToResponse(error));\n }\n if (isResponse(error)) {\n return Promise.resolve(error);\n }\n throw error;\n }\n );\n return response;\n }\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match,\n null,\n false\n );\n return handleQueryResult(result);\n function handleQueryResult(result2) {\n if (isResponse(result2)) {\n return result2;\n }\n let error = result2.errors ? Object.values(result2.errors)[0] : void 0;\n if (error !== void 0) {\n throw error;\n }\n if (result2.actionData) {\n return Object.values(result2.actionData)[0];\n }\n if (result2.loaderData) {\n return Object.values(result2.loaderData)[0];\n }\n return void 0;\n }\n }\n async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, filterMatchesToLoad, skipRevalidation) {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n try {\n if (isMutationMethod(request.method)) {\n let result2 = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null,\n filterMatchesToLoad,\n skipRevalidation\n );\n return result2;\n }\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch,\n filterMatchesToLoad\n );\n return isResponse(result) ? result : {\n ...result,\n actionData: null,\n actionHeaders: {}\n };\n } catch (e) {\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === \"error\" /* error */) {\n throw e.result;\n }\n return e.result;\n }\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest, filterMatchesToLoad, skipRevalidation) {\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: \"error\" /* error */,\n error\n };\n } else {\n let dsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n request,\n matches,\n actionMatch,\n [],\n requestContext\n );\n let results = await callDataStrategy(\n request,\n dsMatches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest);\n }\n }\n if (isRedirectResult(result)) {\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")\n }\n });\n }\n if (isRouteRequest) {\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\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 };\n }\n if (skipRevalidation) {\n if (isErrorResult(result)) {\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n return {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: {\n ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n },\n matches,\n loaderData: {},\n errors: {\n [boundaryMatch.route.id]: result.error\n },\n loaderHeaders: {}\n };\n } else {\n return {\n actionData: {\n [actionMatch.route.id]: result.data\n },\n actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {},\n matches,\n loaderData: {},\n errors: null,\n statusCode: result.statusCode || 200,\n loaderHeaders: {}\n };\n }\n }\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n if (isErrorResult(result)) {\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n let handlerContext2 = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n filterMatchesToLoad,\n [boundaryMatch.route.id, result]\n );\n return {\n ...handlerContext2,\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: {\n ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n }\n };\n }\n let handlerContext = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n filterMatchesToLoad\n );\n return {\n ...handlerContext,\n actionData: {\n [actionMatch.route.id]: result.data\n },\n // action status codes take precedence over loader status codes\n ...result.statusCode ? { statusCode: result.statusCode } : {},\n actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {}\n };\n }\n async function loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, filterMatchesToLoad, pendingActionResult) {\n let isRouteRequest = routeMatch != null;\n if (isRouteRequest && !routeMatch?.route.loader && !routeMatch?.route.lazy) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id\n });\n }\n let dsMatches;\n if (routeMatch) {\n dsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n request,\n matches,\n routeMatch,\n [],\n requestContext\n );\n } else {\n let maxIdx = pendingActionResult && isErrorResult(pendingActionResult[1]) ? (\n // Up to but not including the boundary\n matches.findIndex((m) => m.route.id === pendingActionResult[0]) - 1\n ) : void 0;\n let pattern = getRoutePattern(matches);\n dsMatches = matches.map((match, index) => {\n if (maxIdx != null && index > maxIdx) {\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n pattern,\n match,\n [],\n requestContext,\n false\n );\n }\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n pattern,\n match,\n [],\n requestContext,\n (match.route.loader || match.route.lazy) != null && (!filterMatchesToLoad || filterMatchesToLoad(match))\n );\n });\n }\n if (!dataStrategy && !dsMatches.some((m) => m.shouldLoad)) {\n return {\n matches,\n loaderData: {},\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null,\n statusCode: 200,\n loaderHeaders: {}\n };\n }\n let results = await callDataStrategy(\n request,\n dsMatches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest);\n }\n let handlerContext = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n true,\n skipLoaderErrorBubbling\n );\n return {\n ...handlerContext,\n matches\n };\n }\n async function callDataStrategy(request, matches, isRouteRequest, requestContext, dataStrategy) {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n request,\n matches,\n null,\n requestContext,\n true\n );\n let dataResults = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResult(result)) {\n let response = result.result;\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename\n );\n }\n if (isRouteRequest) {\n if (isResponse(result.result)) {\n throw result;\n } else if (isDataWithResponseInit(result.result)) {\n throw dataWithResponseInitToResponse(result.result);\n }\n }\n dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\nfunction getStaticContextFromError(routes, handlerContext, error, boundaryId) {\n let errorBoundaryId = boundaryId || handlerContext._deepestRenderedBoundaryId || routes[0].id;\n return {\n ...handlerContext,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [errorBoundaryId]: error\n }\n };\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest) {\n if (request.signal.reason !== void 0) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted without an \\`AbortSignal.reason\\`: ${request.method} ${request.url}`\n );\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== void 0);\n}\nfunction normalizeTo(location, matches, basename, to, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\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 let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n if (basename !== \"/\") {\n path.pathname = prependBasename({ basename, pathname: path.pathname });\n }\n return createPath(path);\n}\nfunction normalizeNavigateOptions(isFetcher, path, opts) {\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" })\n });\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = rawFormMethod.toUpperCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== void 0) {\n if (opts.formEncType === \"text/plain\") {\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(\n (acc, [name, value]) => `${acc}${name}=${value}\n`,\n \"\"\n )\n ) : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: void 0,\n json: void 0,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\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: void 0,\n json,\n text: void 0\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\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: void 0,\n text: void 0\n };\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n let parsedPath = parsePath(path);\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n return { path: createPath(parsedPath), submission };\n}\nfunction getMatchesToLoad(request, scopedContext, mapRouteProperties2, manifest, history, state, matches, submission, location, lazyRoutePropertiesToSkip, initialHydration, isRevalidationRequired, cancelledFetcherLoads, fetchersQueuedForDeletion, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, hasPatchRoutesOnNavigation, pendingActionResult, callSiteDefaultShouldRevalidate) {\n let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : void 0;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n let maxIdx;\n if (initialHydration && state.errors) {\n let boundaryId = Object.keys(state.errors)[0];\n maxIdx = matches.findIndex((m) => m.route.id === boundaryId);\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n let boundaryId = pendingActionResult[0];\n maxIdx = matches.findIndex((m) => m.route.id === boundaryId) - 1;\n }\n let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : void 0;\n let shouldSkipRevalidation = actionStatus && actionStatus >= 400;\n let baseShouldRevalidateArgs = {\n currentUrl,\n currentParams: state.matches[0]?.params || {},\n nextUrl,\n nextParams: matches[0].params,\n ...submission,\n actionResult,\n actionStatus\n };\n let pattern = getRoutePattern(matches);\n let dsMatches = matches.map((match, index) => {\n let { route } = match;\n let forceShouldLoad = null;\n if (maxIdx != null && index > maxIdx) {\n forceShouldLoad = false;\n } else if (route.lazy) {\n forceShouldLoad = true;\n } else if (!routeHasLoaderOrMiddleware(route)) {\n forceShouldLoad = false;\n } else if (initialHydration) {\n let { shouldLoad: shouldLoad2 } = getRouteHydrationStatus(\n route,\n state.loaderData,\n state.errors\n );\n forceShouldLoad = shouldLoad2;\n } else if (isNewLoader(state.loaderData, state.matches[index], match)) {\n forceShouldLoad = true;\n }\n if (forceShouldLoad !== null) {\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n pattern,\n match,\n lazyRoutePropertiesToSkip,\n scopedContext,\n forceShouldLoad\n );\n }\n let defaultShouldRevalidate = false;\n if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n defaultShouldRevalidate = callSiteDefaultShouldRevalidate;\n } else if (shouldSkipRevalidation) {\n defaultShouldRevalidate = false;\n } else if (isRevalidationRequired) {\n defaultShouldRevalidate = true;\n } else if (currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search) {\n defaultShouldRevalidate = true;\n } else if (currentUrl.search !== nextUrl.search) {\n defaultShouldRevalidate = true;\n } else if (isNewRouteInstance(state.matches[index], match)) {\n defaultShouldRevalidate = true;\n }\n let shouldRevalidateArgs = {\n ...baseShouldRevalidateArgs,\n defaultShouldRevalidate\n };\n let shouldLoad = shouldRevalidateLoader(match, shouldRevalidateArgs);\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n pattern,\n match,\n lazyRoutePropertiesToSkip,\n scopedContext,\n shouldLoad,\n shouldRevalidateArgs,\n callSiteDefaultShouldRevalidate\n );\n });\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n if (initialHydration || !matches.some((m) => m.route.id === f.routeId) || fetchersQueuedForDeletion.has(key)) {\n return;\n }\n let fetcher = state.fetchers.get(key);\n let isMidInitialLoad = fetcher && fetcher.state !== \"idle\" && fetcher.data === void 0;\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n if (!fetcherMatches) {\n if (hasPatchRoutesOnNavigation && isMidInitialLoad) {\n return;\n }\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n request: null,\n controller: null\n });\n return;\n }\n if (fetchRedirectIds.has(key)) {\n return;\n }\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let fetchController = new AbortController();\n let fetchRequest = createClientSideRequest(\n history,\n f.path,\n fetchController.signal\n );\n let fetcherDsMatches = null;\n if (cancelledFetcherLoads.has(key)) {\n cancelledFetcherLoads.delete(key);\n fetcherDsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n fetcherMatches,\n fetcherMatch,\n lazyRoutePropertiesToSkip,\n scopedContext\n );\n } else if (isMidInitialLoad) {\n if (isRevalidationRequired) {\n fetcherDsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n fetcherMatches,\n fetcherMatch,\n lazyRoutePropertiesToSkip,\n scopedContext\n );\n }\n } else {\n let defaultShouldRevalidate;\n if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n defaultShouldRevalidate = callSiteDefaultShouldRevalidate;\n } else if (shouldSkipRevalidation) {\n defaultShouldRevalidate = false;\n } else {\n defaultShouldRevalidate = isRevalidationRequired;\n }\n let shouldRevalidateArgs = {\n ...baseShouldRevalidateArgs,\n defaultShouldRevalidate\n };\n if (shouldRevalidateLoader(fetcherMatch, shouldRevalidateArgs)) {\n fetcherDsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n fetcherMatches,\n fetcherMatch,\n lazyRoutePropertiesToSkip,\n scopedContext,\n shouldRevalidateArgs\n );\n }\n }\n if (fetcherDsMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherDsMatches,\n match: fetcherMatch,\n request: fetchRequest,\n controller: fetchController\n });\n }\n });\n return { dsMatches, revalidatingFetchers };\n}\nfunction routeHasLoaderOrMiddleware(route) {\n return route.loader != null || route.middleware != null && route.middleware.length > 0;\n}\nfunction getRouteHydrationStatus(route, loaderData, errors) {\n if (route.lazy) {\n return { shouldLoad: true, renderFallback: true };\n }\n if (!routeHasLoaderOrMiddleware(route)) {\n return { shouldLoad: false, renderFallback: false };\n }\n let hasData = loaderData != null && route.id in loaderData;\n let hasError = errors != null && errors[route.id] !== void 0;\n if (!hasData && hasError) {\n return { shouldLoad: false, renderFallback: false };\n }\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return { shouldLoad: true, renderFallback: !hasData };\n }\n let shouldLoad = !hasData && !hasError;\n return { shouldLoad, renderFallback: shouldLoad };\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew = (\n // [a] -> [a, b]\n !currentMatch || // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id\n );\n let isMissingData = !currentLoaderData.hasOwnProperty(match.route.id);\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 || // 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}\nfunction patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties2, allowElementMutations) {\n let childrenToPatch;\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n let uniqueChildren = [];\n let existingChildren = [];\n children.forEach((newRoute) => {\n let existingRoute = childrenToPatch.find(\n (existingRoute2) => isSameRoute(newRoute, existingRoute2)\n );\n if (existingRoute) {\n existingChildren.push({ existingRoute, newRoute });\n } else {\n uniqueChildren.push(newRoute);\n }\n });\n if (uniqueChildren.length > 0) {\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties2,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n childrenToPatch.push(...newRoutes);\n }\n if (allowElementMutations && existingChildren.length > 0) {\n for (let i = 0; i < existingChildren.length; i++) {\n let { existingRoute, newRoute } = existingChildren[i];\n let existingRouteTyped = existingRoute;\n let [newRouteTyped] = convertRoutesToDataRoutes(\n [newRoute],\n mapRouteProperties2,\n [],\n // Doesn't matter for mutated routes since they already have an id\n {},\n // Don't touch the manifest here since we're updating in place\n true\n );\n Object.assign(existingRouteTyped, {\n element: newRouteTyped.element ? newRouteTyped.element : existingRouteTyped.element,\n errorElement: newRouteTyped.errorElement ? newRouteTyped.errorElement : existingRouteTyped.errorElement,\n hydrateFallbackElement: newRouteTyped.hydrateFallbackElement ? newRouteTyped.hydrateFallbackElement : existingRouteTyped.hydrateFallbackElement\n });\n }\n }\n}\nfunction isSameRoute(newRoute, existingRoute) {\n if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n return true;\n }\n if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n return false;\n }\n if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n return true;\n }\n return newRoute.children?.every(\n (aChild, i) => existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n ) ?? false;\n}\nvar lazyRoutePropertyCache = /* @__PURE__ */ new WeakMap();\nvar loadLazyRouteProperty = ({\n key,\n route,\n manifest,\n mapRouteProperties: mapRouteProperties2\n}) => {\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n if (!routeToUpdate.lazy || typeof routeToUpdate.lazy !== \"object\") {\n return;\n }\n let lazyFn = routeToUpdate.lazy[key];\n if (!lazyFn) {\n return;\n }\n let cache = lazyRoutePropertyCache.get(routeToUpdate);\n if (!cache) {\n cache = {};\n lazyRoutePropertyCache.set(routeToUpdate, cache);\n }\n let cachedPromise = cache[key];\n if (cachedPromise) {\n return cachedPromise;\n }\n let propertyPromise = (async () => {\n let isUnsupported = isUnsupportedLazyRouteObjectKey(key);\n let staticRouteValue = routeToUpdate[key];\n let isStaticallyDefined = staticRouteValue !== void 0 && key !== \"hasErrorBoundary\";\n if (isUnsupported) {\n warning(\n !isUnsupported,\n \"Route property \" + key + \" is not a supported lazy route property. This property will be ignored.\"\n );\n cache[key] = Promise.resolve();\n } else if (isStaticallyDefined) {\n warning(\n false,\n `Route \"${routeToUpdate.id}\" has a static property \"${key}\" defined. The lazy property will be ignored.`\n );\n } else {\n let value = await lazyFn();\n if (value != null) {\n Object.assign(routeToUpdate, { [key]: value });\n Object.assign(routeToUpdate, mapRouteProperties2(routeToUpdate));\n }\n }\n if (typeof routeToUpdate.lazy === \"object\") {\n routeToUpdate.lazy[key] = void 0;\n if (Object.values(routeToUpdate.lazy).every((value) => value === void 0)) {\n routeToUpdate.lazy = void 0;\n }\n }\n })();\n cache[key] = propertyPromise;\n return propertyPromise;\n};\nvar lazyRouteFunctionCache = /* @__PURE__ */ new WeakMap();\nfunction loadLazyRoute(route, type, manifest, mapRouteProperties2, lazyRoutePropertiesToSkip) {\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n if (!route.lazy) {\n return {\n lazyRoutePromise: void 0,\n lazyHandlerPromise: void 0\n };\n }\n if (typeof route.lazy === \"function\") {\n let cachedPromise = lazyRouteFunctionCache.get(routeToUpdate);\n if (cachedPromise) {\n return {\n lazyRoutePromise: cachedPromise,\n lazyHandlerPromise: cachedPromise\n };\n }\n let lazyRoutePromise2 = (async () => {\n invariant(\n typeof route.lazy === \"function\",\n \"No lazy route function found\"\n );\n let lazyRoute = await route.lazy();\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let lazyValue = lazyRoute[lazyRouteProperty];\n if (lazyValue === void 0) {\n continue;\n }\n let isUnsupported = isUnsupportedLazyRouteFunctionKey(lazyRouteProperty);\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n if (isUnsupported) {\n warning(\n !isUnsupported,\n \"Route property \" + lazyRouteProperty + \" is not a supported property to be returned from a lazy route function. This property will be ignored.\"\n );\n } else if (isStaticallyDefined) {\n warning(\n !isStaticallyDefined,\n `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 );\n } else {\n routeUpdates[lazyRouteProperty] = lazyValue;\n }\n }\n Object.assign(routeToUpdate, routeUpdates);\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided `mapRouteProperties`\n // function to set the framework-aware properties (`element`/`hasErrorBoundary`)\n // since the logic will differ between frameworks.\n ...mapRouteProperties2(routeToUpdate),\n lazy: void 0\n });\n })();\n lazyRouteFunctionCache.set(routeToUpdate, lazyRoutePromise2);\n lazyRoutePromise2.catch(() => {\n });\n return {\n lazyRoutePromise: lazyRoutePromise2,\n lazyHandlerPromise: lazyRoutePromise2\n };\n }\n let lazyKeys = Object.keys(route.lazy);\n let lazyPropertyPromises = [];\n let lazyHandlerPromise = void 0;\n for (let key of lazyKeys) {\n if (lazyRoutePropertiesToSkip && lazyRoutePropertiesToSkip.includes(key)) {\n continue;\n }\n let promise = loadLazyRouteProperty({\n key,\n route,\n manifest,\n mapRouteProperties: mapRouteProperties2\n });\n if (promise) {\n lazyPropertyPromises.push(promise);\n if (key === type) {\n lazyHandlerPromise = promise;\n }\n }\n }\n let lazyRoutePromise = lazyPropertyPromises.length > 0 ? Promise.all(lazyPropertyPromises).then(() => {\n }) : void 0;\n lazyRoutePromise?.catch(() => {\n });\n lazyHandlerPromise?.catch(() => {\n });\n return {\n lazyRoutePromise,\n lazyHandlerPromise\n };\n}\nfunction isNonNullable(value) {\n return value !== void 0;\n}\nfunction loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2) {\n let promises = matches.map(({ route }) => {\n if (typeof route.lazy !== \"object\" || !route.lazy.middleware) {\n return void 0;\n }\n return loadLazyRouteProperty({\n key: \"middleware\",\n route,\n manifest,\n mapRouteProperties: mapRouteProperties2\n });\n }).filter(isNonNullable);\n return promises.length > 0 ? Promise.all(promises) : void 0;\n}\nasync function defaultDataStrategy(args) {\n let matchesToLoad = args.matches.filter((m) => m.shouldLoad);\n let keyedResults = {};\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n results.forEach((result, i) => {\n keyedResults[matchesToLoad[i].route.id] = result;\n });\n return keyedResults;\n}\nasync function defaultDataStrategyWithMiddleware(args) {\n if (!args.matches.some((m) => m.route.middleware)) {\n return defaultDataStrategy(args);\n }\n return runClientMiddlewarePipeline(args, () => defaultDataStrategy(args));\n}\nfunction runServerMiddlewarePipeline(args, handler, errorHandler) {\n return runMiddlewarePipeline(\n args,\n handler,\n processResult,\n isResponse,\n errorHandler\n );\n function processResult(result) {\n return isDataWithResponseInit(result) ? dataWithResponseInitToResponse(result) : result;\n }\n}\nfunction runClientMiddlewarePipeline(args, handler) {\n return runMiddlewarePipeline(\n args,\n handler,\n (r) => {\n if (isRedirectResponse(r)) {\n throw r;\n }\n return r;\n },\n isDataStrategyResults,\n errorHandler\n );\n function errorHandler(error, routeId, nextResult) {\n if (nextResult) {\n return Promise.resolve(\n Object.assign(nextResult.value, {\n [routeId]: { type: \"error\", result: error }\n })\n );\n } else {\n let { matches } = args;\n let maxBoundaryIdx = Math.min(\n // Throwing route\n Math.max(\n matches.findIndex((m) => m.route.id === routeId),\n 0\n ),\n // or the shallowest route that needs to load data\n Math.max(\n matches.findIndex((m) => m.shouldCallHandler()),\n 0\n )\n );\n let boundaryRouteId = findNearestBoundary(\n matches,\n matches[maxBoundaryIdx].route.id\n ).route.id;\n return Promise.resolve({\n [boundaryRouteId]: { type: \"error\", result: error }\n });\n }\n }\n}\nasync function runMiddlewarePipeline(args, handler, processResult, isResult, errorHandler) {\n let { matches, request, params, context, unstable_pattern } = args;\n let tuples = matches.flatMap(\n (m) => m.route.middleware ? m.route.middleware.map((fn) => [m.route.id, fn]) : []\n );\n let result = await callRouteMiddleware(\n {\n request,\n params,\n context,\n unstable_pattern\n },\n tuples,\n handler,\n processResult,\n isResult,\n errorHandler\n );\n return result;\n}\nasync function callRouteMiddleware(args, middlewares, handler, processResult, isResult, errorHandler, idx = 0) {\n let { request } = args;\n if (request.signal.aborted) {\n throw request.signal.reason ?? new Error(`Request aborted: ${request.method} ${request.url}`);\n }\n let tuple = middlewares[idx];\n if (!tuple) {\n let result = await handler();\n return result;\n }\n let [routeId, middleware] = tuple;\n let nextResult;\n let next = async () => {\n if (nextResult) {\n throw new Error(\"You may only call `next()` once per middleware\");\n }\n try {\n let result = await callRouteMiddleware(\n args,\n middlewares,\n handler,\n processResult,\n isResult,\n errorHandler,\n idx + 1\n );\n nextResult = { value: result };\n return nextResult.value;\n } catch (error) {\n nextResult = { value: await errorHandler(error, routeId, nextResult) };\n return nextResult.value;\n }\n };\n try {\n let value = await middleware(args, next);\n let result = value != null ? processResult(value) : void 0;\n if (isResult(result)) {\n return result;\n } else if (nextResult) {\n return result ?? nextResult.value;\n } else {\n nextResult = { value: await next() };\n return nextResult.value;\n }\n } catch (error) {\n let response = await errorHandler(error, routeId, nextResult);\n return response;\n }\n}\nfunction getDataStrategyMatchLazyPromises(mapRouteProperties2, manifest, request, match, lazyRoutePropertiesToSkip) {\n let lazyMiddlewarePromise = loadLazyRouteProperty({\n key: \"middleware\",\n route: match.route,\n manifest,\n mapRouteProperties: mapRouteProperties2\n });\n let lazyRoutePromises = loadLazyRoute(\n match.route,\n isMutationMethod(request.method) ? \"action\" : \"loader\",\n manifest,\n mapRouteProperties2,\n lazyRoutePropertiesToSkip\n );\n return {\n middleware: lazyMiddlewarePromise,\n route: lazyRoutePromises.lazyRoutePromise,\n handler: lazyRoutePromises.lazyHandlerPromise\n };\n}\nfunction getDataStrategyMatch(mapRouteProperties2, manifest, request, unstable_pattern, match, lazyRoutePropertiesToSkip, scopedContext, shouldLoad, shouldRevalidateArgs = null, callSiteDefaultShouldRevalidate) {\n let isUsingNewApi = false;\n let _lazyPromises = getDataStrategyMatchLazyPromises(\n mapRouteProperties2,\n manifest,\n request,\n match,\n lazyRoutePropertiesToSkip\n );\n return {\n ...match,\n _lazyPromises,\n shouldLoad,\n shouldRevalidateArgs,\n shouldCallHandler(defaultShouldRevalidate) {\n isUsingNewApi = true;\n if (!shouldRevalidateArgs) {\n return shouldLoad;\n }\n if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n return shouldRevalidateLoader(match, {\n ...shouldRevalidateArgs,\n defaultShouldRevalidate: callSiteDefaultShouldRevalidate\n });\n }\n if (typeof defaultShouldRevalidate === \"boolean\") {\n return shouldRevalidateLoader(match, {\n ...shouldRevalidateArgs,\n defaultShouldRevalidate\n });\n }\n return shouldRevalidateLoader(match, shouldRevalidateArgs);\n },\n resolve(handlerOverride) {\n let { lazy, loader, middleware } = match.route;\n let callHandler = isUsingNewApi || shouldLoad || handlerOverride && !isMutationMethod(request.method) && (lazy || loader);\n let isMiddlewareOnlyRoute = middleware && middleware.length > 0 && !loader && !lazy;\n if (callHandler && (isMutationMethod(request.method) || !isMiddlewareOnlyRoute)) {\n return callLoaderOrAction({\n request,\n unstable_pattern,\n match,\n lazyHandlerPromise: _lazyPromises?.handler,\n lazyRoutePromise: _lazyPromises?.route,\n handlerOverride,\n scopedContext\n });\n }\n return Promise.resolve({ type: \"data\" /* data */, result: void 0 });\n }\n };\n}\nfunction getTargetedDataStrategyMatches(mapRouteProperties2, manifest, request, matches, targetMatch, lazyRoutePropertiesToSkip, scopedContext, shouldRevalidateArgs = null) {\n return matches.map((match) => {\n if (match.route.id !== targetMatch.route.id) {\n return {\n ...match,\n shouldLoad: false,\n shouldRevalidateArgs,\n shouldCallHandler: () => false,\n _lazyPromises: getDataStrategyMatchLazyPromises(\n mapRouteProperties2,\n manifest,\n request,\n match,\n lazyRoutePropertiesToSkip\n ),\n resolve: () => Promise.resolve({ type: \"data\", result: void 0 })\n };\n }\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n getRoutePattern(matches),\n match,\n lazyRoutePropertiesToSkip,\n scopedContext,\n true,\n shouldRevalidateArgs\n );\n });\n}\nasync function callDataStrategyImpl(dataStrategyImpl, request, matches, fetcherKey, scopedContext, isStaticHandler) {\n if (matches.some((m) => m._lazyPromises?.middleware)) {\n await Promise.all(matches.map((m) => m._lazyPromises?.middleware));\n }\n let dataStrategyArgs = {\n request,\n unstable_pattern: getRoutePattern(matches),\n params: matches[0].params,\n context: scopedContext,\n matches\n };\n let runClientMiddleware = isStaticHandler ? () => {\n throw new Error(\n \"You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`\"\n );\n } : (cb) => {\n let typedDataStrategyArgs = dataStrategyArgs;\n return runClientMiddlewarePipeline(typedDataStrategyArgs, () => {\n return cb({\n ...typedDataStrategyArgs,\n fetcherKey,\n runClientMiddleware: () => {\n throw new Error(\n \"Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler\"\n );\n }\n });\n });\n };\n let results = await dataStrategyImpl({\n ...dataStrategyArgs,\n fetcherKey,\n runClientMiddleware\n });\n try {\n await Promise.all(\n matches.flatMap((m) => [\n m._lazyPromises?.handler,\n m._lazyPromises?.route\n ])\n );\n } catch (e) {\n }\n return results;\n}\nasync function callLoaderOrAction({\n request,\n unstable_pattern,\n match,\n lazyHandlerPromise,\n lazyRoutePromise,\n handlerOverride,\n scopedContext\n}) {\n let result;\n let onReject;\n let isAction = isMutationMethod(request.method);\n let type = isAction ? \"action\" : \"loader\";\n let runHandler = (handler) => {\n let reject;\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n let actualHandler = (ctx) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean \"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n unstable_pattern,\n params: match.params,\n context: scopedContext\n },\n ...ctx !== void 0 ? [ctx] : []\n );\n };\n let handlerPromise = (async () => {\n try {\n let val = await (handlerOverride ? handlerOverride((ctx) => actualHandler(ctx)) : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n return Promise.race([handlerPromise, abortPromise]);\n };\n try {\n let handler = isAction ? match.route.action : match.route.loader;\n if (lazyHandlerPromise || lazyRoutePromise) {\n if (handler) {\n let handlerError;\n let [value] = 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 }),\n // Ensure all lazy route promises are resolved before continuing\n lazyHandlerPromise,\n lazyRoutePromise\n ]);\n if (handlerError !== void 0) {\n throw handlerError;\n }\n result = value;\n } else {\n await lazyHandlerPromise;\n let handler2 = isAction ? match.route.action : match.route.loader;\n if (handler2) {\n [result] = await Promise.all([runHandler(handler2), lazyRoutePromise]);\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 return { type: \"data\" /* data */, result: void 0 };\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 } catch (e) {\n return { type: \"error\" /* error */, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n return result;\n}\nasync function parseResponseBody(response) {\n let contentType = response.headers.get(\"Content-Type\");\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n return response.body == null ? null : response.json();\n }\n return response.text();\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n let { result, type } = dataStrategyResult;\n if (isResponse(result)) {\n let data2;\n try {\n data2 = await parseResponseBody(result);\n } catch (e) {\n return { type: \"error\" /* error */, error: e };\n }\n if (type === \"error\" /* error */) {\n return {\n type: \"error\" /* error */,\n error: new ErrorResponseImpl(result.status, result.statusText, data2),\n statusCode: result.status,\n headers: result.headers\n };\n }\n return {\n type: \"data\" /* data */,\n data: data2,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (type === \"error\" /* error */) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: \"error\" /* error */,\n error: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n };\n }\n return {\n type: \"error\" /* error */,\n error: dataWithResponseInitToErrorResponse(result),\n statusCode: isRouteErrorResponse(result) ? result.status : void 0,\n headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n };\n }\n return {\n type: \"error\" /* error */,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : void 0\n };\n }\n if (isDataWithResponseInit(result)) {\n return {\n type: \"data\" /* data */,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n };\n }\n return { type: \"data\" /* data */, data: result };\n}\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n if (!isAbsoluteUrl(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n location\n );\n response.headers.set(\"Location\", location);\n }\n return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename, historyInstance) {\n let invalidProtocols = [\n \"about:\",\n \"blob:\",\n \"chrome:\",\n \"chrome-untrusted:\",\n \"content:\",\n \"data:\",\n \"devtools:\",\n \"file:\",\n \"filesystem:\",\n // eslint-disable-next-line no-script-url\n \"javascript:\"\n ];\n if (isAbsoluteUrl(location)) {\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n if (invalidProtocols.includes(url.protocol)) {\n throw new Error(\"Invalid redirect location\");\n }\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n try {\n let url = historyInstance.createURL(location);\n if (invalidProtocols.includes(url.protocol)) {\n throw new Error(\"Invalid redirect location\");\n }\n } catch (e) {\n }\n return location;\n}\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = { signal };\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\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 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, results, pendingActionResult, isStaticHandler = false, skipLoaderErrorBubbling = false) {\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : void 0;\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n if (pendingError !== void 0) {\n error = pendingError;\n pendingError = void 0;\n }\n errors = errors || {};\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n if (!isStaticHandler) {\n loaderData[id] = ResetLoaderDataSymbol;\n }\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 loaderData[id] = result.data;\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n if (pendingError !== void 0 && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n if (pendingActionResult[2]) {\n loaderData[pendingActionResult[2]] = void 0;\n }\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults) {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult\n );\n revalidatingFetchers.filter((f) => !f.matches || f.matches.some((m) => m.shouldLoad)).forEach((rf) => {\n let { key, match, controller } = rf;\n if (controller && controller.signal.aborted) {\n return;\n }\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n return { loaderData, errors };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = Object.entries(newLoaderData).filter(([, v]) => v !== ResetLoaderDataSymbol).reduce((merged, [k, v]) => {\n merged[k] = v;\n return merged;\n }, {});\n for (let match of matches) {\n let id = match.route.id;\n if (!newLoaderData.hasOwnProperty(id) && loaderData.hasOwnProperty(id) && match.route.loader) {\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n break;\n }\n }\n return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1]) ? {\n // Clear out prior actionData on errors\n actionData: {}\n } : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data\n }\n };\n}\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 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 {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }\n ],\n route\n };\n}\nfunction getInternalRouterError(status, {\n pathname,\n routeId,\n method,\n type,\n message\n} = {}) {\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 === \"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(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\nfunction findRedirect(results) {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n return true;\n } else if (b.hash !== \"\") {\n return true;\n }\n return false;\n}\nfunction dataWithResponseInitToResponse(data2) {\n return Response.json(data2.data, data2.init ?? void 0);\n}\nfunction dataWithResponseInitToErrorResponse(data2) {\n return new ErrorResponseImpl(\n data2.init?.status ?? 500,\n data2.init?.statusText ?? \"Internal Server Error\",\n data2.data\n );\n}\nfunction isDataStrategyResults(result) {\n return result != null && typeof result === \"object\" && Object.entries(result).every(\n ([key, value]) => typeof key === \"string\" && isDataStrategyResult(value)\n );\n}\nfunction isDataStrategyResult(result) {\n return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === \"data\" /* data */ || result.type === \"error\" /* error */);\n}\nfunction isRedirectDataStrategyResult(result) {\n return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isErrorResult(result) {\n return result.type === \"error\" /* error */;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === \"redirect\" /* redirect */;\n}\nfunction isDataWithResponseInit(value) {\n return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\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 isRedirectStatusCode(statusCode) {\n return redirectStatusCodes.has(statusCode);\n}\nfunction isRedirectResponse(result) {\n return isResponse(result) && isRedirectStatusCode(result.status) && result.headers.has(\"Location\");\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toUpperCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toUpperCase());\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 matches[matches.length - 1];\n }\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let { formMethod, formAction, formEncType, text, formData, json } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: void 0,\n json: void 0,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: void 0,\n text: void 0\n };\n } else if (json !== void 0) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: void 0,\n json,\n text: void 0\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: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\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, data2) {\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: data2\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0,\n data: data2\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 : void 0\n };\n return fetcher;\n}\nfunction getDoneFetcher(data2) {\n let fetcher = {\n state: \"idle\",\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0,\n data: data2\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\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 }\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(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\nfunction createDeferred() {\n let resolve;\n let reject;\n let promise = new Promise((res, rej) => {\n resolve = async (val) => {\n res(val);\n try {\n await promise;\n } catch (e) {\n }\n };\n reject = async (error) => {\n rej(error);\n try {\n await promise;\n } catch (e) {\n }\n };\n });\n return {\n promise,\n //@ts-ignore\n resolve,\n //@ts-ignore\n reject\n };\n}\n\n// lib/context.ts\nimport * as React from \"react\";\nvar DataRouterContext = React.createContext(null);\nDataRouterContext.displayName = \"DataRouter\";\nvar DataRouterStateContext = React.createContext(null);\nDataRouterStateContext.displayName = \"DataRouterState\";\nvar RSCRouterContext = React.createContext(false);\nfunction useIsRSCRouterContext() {\n return React.useContext(RSCRouterContext);\n}\nvar ViewTransitionContext = React.createContext({\n isTransitioning: false\n});\nViewTransitionContext.displayName = \"ViewTransition\";\nvar FetchersContext = React.createContext(\n /* @__PURE__ */ new Map()\n);\nFetchersContext.displayName = \"Fetchers\";\nvar AwaitContext = React.createContext(null);\nAwaitContext.displayName = \"Await\";\nvar AwaitContextProvider = (props) => React.createElement(AwaitContext.Provider, props);\nvar NavigationContext = React.createContext(\n null\n);\nNavigationContext.displayName = \"Navigation\";\nvar LocationContext = React.createContext(\n null\n);\nLocationContext.displayName = \"Location\";\nvar RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false\n});\nRouteContext.displayName = \"Route\";\nvar RouteErrorContext = React.createContext(null);\nRouteErrorContext.displayName = \"RouteError\";\nvar ENABLE_DEV_WARNINGS = true;\n\n// lib/hooks.tsx\nimport * as React2 from \"react\";\n\n// lib/errors.ts\nvar ERROR_DIGEST_BASE = \"REACT_ROUTER_ERROR\";\nvar ERROR_DIGEST_REDIRECT = \"REDIRECT\";\nvar ERROR_DIGEST_ROUTE_ERROR_RESPONSE = \"ROUTE_ERROR_RESPONSE\";\nfunction decodeRedirectErrorDigest(digest) {\n if (digest.startsWith(`${ERROR_DIGEST_BASE}:${ERROR_DIGEST_REDIRECT}:{`)) {\n try {\n let parsed = JSON.parse(digest.slice(28));\n if (typeof parsed === \"object\" && parsed && typeof parsed.status === \"number\" && typeof parsed.statusText === \"string\" && typeof parsed.location === \"string\" && typeof parsed.reloadDocument === \"boolean\" && typeof parsed.replace === \"boolean\") {\n return parsed;\n }\n } catch {\n }\n }\n}\nfunction decodeRouteErrorResponseDigest(digest) {\n if (digest.startsWith(\n `${ERROR_DIGEST_BASE}:${ERROR_DIGEST_ROUTE_ERROR_RESPONSE}:{`\n )) {\n try {\n let parsed = JSON.parse(digest.slice(40));\n if (typeof parsed === \"object\" && parsed && typeof parsed.status === \"number\" && typeof parsed.statusText === \"string\") {\n return new ErrorResponseImpl(\n parsed.status,\n parsed.statusText,\n parsed.data\n );\n }\n } catch {\n }\n }\n}\n\n// lib/hooks.tsx\nfunction useHref(to, { relative } = {}) {\n invariant(\n useInRouterContext(),\n // 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 <Router> component.`\n );\n let { basename, navigator } = React2.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\nfunction useInRouterContext() {\n return React2.useContext(LocationContext) != null;\n}\nfunction useLocation() {\n invariant(\n useInRouterContext(),\n // 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 <Router> component.`\n );\n return React2.useContext(LocationContext).location;\n}\nfunction useNavigationType() {\n return React2.useContext(LocationContext).navigationType;\n}\nfunction useMatch(pattern) {\n invariant(\n useInRouterContext(),\n // 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 <Router> component.`\n );\n let { pathname } = useLocation();\n return React2.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\nvar navigateEffectWarning = `You should call navigate() in a React.useEffect(), not when your component is first rendered.`;\nfunction useIsomorphicLayoutEffect(cb) {\n let isStatic = React2.useContext(NavigationContext).static;\n if (!isStatic) {\n React2.useLayoutEffect(cb);\n }\n}\nfunction useNavigate() {\n let { isDataRoute } = React2.useContext(RouteContext);\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n invariant(\n useInRouterContext(),\n // 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 <Router> component.`\n );\n let dataRouterContext = React2.useContext(DataRouterContext);\n let { basename, navigator } = React2.useContext(NavigationContext);\n let { matches } = React2.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n let activeRef = React2.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React2.useCallback(\n (to, options = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext\n ]\n );\n return navigate;\n}\nvar OutletContext = React2.createContext(null);\nfunction useOutletContext() {\n return React2.useContext(OutletContext);\n}\nfunction useOutlet(context) {\n let outlet = React2.useContext(RouteContext).outlet;\n return React2.useMemo(\n () => outlet && /* @__PURE__ */ React2.createElement(OutletContext.Provider, { value: context }, outlet),\n [outlet, context]\n );\n}\nfunction useParams() {\n let { matches } = React2.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? routeMatch.params : {};\n}\nfunction useResolvedPath(to, { relative } = {}) {\n let { matches } = React2.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n return React2.useMemo(\n () => resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\nfunction useRoutes(routes, locationArg) {\n return useRoutesImpl(routes, locationArg);\n}\nfunction useRoutesImpl(routes, locationArg, dataRouterOpts) {\n invariant(\n useInRouterContext(),\n // 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 <Router> component.`\n );\n let { navigator } = React2.useContext(NavigationContext);\n let { matches: parentMatches } = React2.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 (ENABLE_DEV_WARNINGS) {\n let parentPath = parentRoute && parentRoute.path || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\") || parentPath.endsWith(\"*?\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at \"${parentPathname}\" (under <Route path=\"${parentPath}\">) 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\nPlease change the parent <Route path=\"${parentPath}\"> to <Route path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n let locationFromContext = useLocation();\n let location;\n if (locationArg) {\n let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n invariant(\n parentPathnameBase === \"/\" || parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` 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.`\n );\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n let pathname = location.pathname || \"/\";\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n if (ENABLE_DEV_WARNINGS) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n warning(\n matches == null || matches[matches.length - 1].route.element !== void 0 || matches[matches.length - 1].route.Component !== void 0 || matches[matches.length - 1].route.lazy !== void 0,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n let renderedMatches = _renderMatches(\n matches && matches.map(\n (match) => Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes.\n // Pre-encode `?` and `#` ahead of `encodeLocation` because it uses\n // `new URL()` internally and we need to prevent it from treating\n // them as separators\n navigator.encodeLocation ? navigator.encodeLocation(\n match.pathname.replace(/\\?/g, \"%3F\").replace(/#/g, \"%23\")\n ).pathname : match.pathname\n ]),\n pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n // Pre-encode `?` and `#` ahead of `encodeLocation` because it uses\n // `new URL()` internally and we need to prevent it from treating\n // them as separators\n navigator.encodeLocation ? navigator.encodeLocation(\n match.pathnameBase.replace(/\\?/g, \"%3F\").replace(/#/g, \"%23\")\n ).pathname : match.pathnameBase\n ])\n })\n ),\n parentMatches,\n dataRouterOpts\n );\n if (locationArg && renderedMatches) {\n return /* @__PURE__ */ React2.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\",\n unstable_mask: void 0,\n ...location\n },\n navigationType: \"POP\" /* Pop */\n }\n },\n renderedMatches\n );\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 = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n let devInfo = null;\n if (ENABLE_DEV_WARNINGS) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n devInfo = /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"p\", null, \"\\u{1F4BF} Hey developer \\u{1F44B}\"), /* @__PURE__ */ React2.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"ErrorBoundary\"), \" or\", \" \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"errorElement\"), \" prop on your route.\"));\n }\n return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"h2\", null, \"Unexpected Application Error!\"), /* @__PURE__ */ React2.createElement(\"h3\", { style: { fontStyle: \"italic\" } }, message), stack ? /* @__PURE__ */ React2.createElement(\"pre\", { style: preStyles }, stack) : null, devInfo);\n}\nvar defaultErrorElement = /* @__PURE__ */ React2.createElement(DefaultErrorComponent, null);\nvar RenderErrorBoundary = class extends React2.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 { error };\n }\n static getDerivedStateFromProps(props, state) {\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 return {\n error: props.error !== void 0 ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation\n };\n }\n componentDidCatch(error, errorInfo) {\n if (this.props.onError) {\n this.props.onError(error, errorInfo);\n } else {\n console.error(\n \"React Router caught the following error during render\",\n error\n );\n }\n }\n render() {\n let error = this.state.error;\n if (this.context && typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n const decoded = decodeRouteErrorResponseDigest(error.digest);\n if (decoded) error = decoded;\n }\n let result = error !== void 0 ? /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: this.props.routeContext }, /* @__PURE__ */ React2.createElement(\n RouteErrorContext.Provider,\n {\n value: error,\n children: this.props.component\n }\n )) : this.props.children;\n if (this.context) {\n return /* @__PURE__ */ React2.createElement(RSCErrorHandler, { error }, result);\n }\n return result;\n }\n};\nRenderErrorBoundary.contextType = RSCRouterContext;\nvar errorRedirectHandledMap = /* @__PURE__ */ new WeakMap();\nfunction RSCErrorHandler({\n children,\n error\n}) {\n let { basename } = React2.useContext(NavigationContext);\n if (typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n let redirect2 = decodeRedirectErrorDigest(error.digest);\n if (redirect2) {\n let existingRedirect = errorRedirectHandledMap.get(error);\n if (existingRedirect) throw existingRedirect;\n let parsed = parseToInfo(redirect2.location, basename);\n if (isBrowser && !errorRedirectHandledMap.get(error)) {\n if (parsed.isExternal || redirect2.reloadDocument) {\n window.location.href = parsed.absoluteURL || parsed.to;\n } else {\n const redirectPromise = Promise.resolve().then(\n () => window.__reactRouterDataRouter.navigate(parsed.to, {\n replace: redirect2.replace\n })\n );\n errorRedirectHandledMap.set(error, redirectPromise);\n throw redirectPromise;\n }\n }\n return /* @__PURE__ */ React2.createElement(\n \"meta\",\n {\n httpEquiv: \"refresh\",\n content: `0;url=${parsed.absoluteURL || parsed.to}`\n }\n );\n }\n }\n return children;\n}\nfunction RenderedRoute({ routeContext, match, children }) {\n let dataRouterContext = React2.useContext(DataRouterContext);\n if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n return /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: routeContext }, children);\n}\nfunction _renderMatches(matches, parentMatches = [], dataRouterOpts) {\n let dataRouterState = dataRouterOpts?.state;\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n if (dataRouterState.errors) {\n matches = dataRouterState.matches;\n } else if (parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n matches = dataRouterState.matches;\n } else {\n return null;\n }\n }\n let renderedMatches = matches;\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== void 0\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterOpts && dataRouterState) {\n renderFallback = dataRouterState.renderFallback;\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n if (match.route.id) {\n let { loaderData, errors: errors2 } = dataRouterState;\n let needsToRunLoader = match.route.loader && !loaderData.hasOwnProperty(match.route.id) && (!errors2 || errors2[match.route.id] === void 0);\n if (match.route.lazy || needsToRunLoader) {\n if (dataRouterOpts.isStatic) {\n renderFallback = true;\n }\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 let onErrorHandler = dataRouterOpts?.onError;\n let onError = dataRouterState && onErrorHandler ? (error, errorInfo) => {\n onErrorHandler(error, {\n location: dataRouterState.location,\n params: dataRouterState.matches?.[0]?.params ?? {},\n unstable_pattern: getRoutePattern(dataRouterState.matches),\n errorInfo\n });\n } : void 0;\n return renderedMatches.reduceRight(\n (outlet, match, index) => {\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] : void 0;\n errorElement = match.route.errorElement || defaultErrorElement;\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\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 matches2 = 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 children = /* @__PURE__ */ React2.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__ */ React2.createElement(\n RenderedRoute,\n {\n match,\n routeContext: {\n outlet,\n matches: matches2,\n isDataRoute: dataRouterState != null\n },\n children\n }\n );\n };\n return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /* @__PURE__ */ React2.createElement(\n RenderErrorBoundary,\n {\n location: dataRouterState.location,\n revalidation: dataRouterState.revalidation,\n component: errorElement,\n error,\n children: getChildren(),\n routeContext: { outlet: null, matches: matches2, isDataRoute: true },\n onError\n }\n ) : getChildren();\n },\n null\n );\n}\nfunction getDataRouterConsoleError(hookName) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React2.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React2.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\nfunction useRouteContext(hookName) {\n let route = React2.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\nfunction useCurrentRouteId(hookName) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\nfunction useRouteId() {\n return useCurrentRouteId(\"useRouteId\" /* UseRouteId */);\n}\nfunction useNavigation() {\n let state = useDataRouterState(\"useNavigation\" /* UseNavigation */);\n return state.navigation;\n}\nfunction useRevalidator() {\n let dataRouterContext = useDataRouterContext(\"useRevalidator\" /* UseRevalidator */);\n let state = useDataRouterState(\"useRevalidator\" /* UseRevalidator */);\n let revalidate = React2.useCallback(async () => {\n await dataRouterContext.router.revalidate();\n }, [dataRouterContext.router]);\n return React2.useMemo(\n () => ({ revalidate, state: state.revalidation }),\n [revalidate, state.revalidation]\n );\n}\nfunction useMatches() {\n let { matches, loaderData } = useDataRouterState(\n \"useMatches\" /* UseMatches */\n );\n return React2.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\nfunction useLoaderData() {\n let state = useDataRouterState(\"useLoaderData\" /* UseLoaderData */);\n let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n return state.loaderData[routeId];\n}\nfunction useRouteLoaderData(routeId) {\n let state = useDataRouterState(\"useRouteLoaderData\" /* UseRouteLoaderData */);\n return state.loaderData[routeId];\n}\nfunction useActionData() {\n let state = useDataRouterState(\"useActionData\" /* UseActionData */);\n let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n return state.actionData ? state.actionData[routeId] : void 0;\n}\nfunction useRouteError() {\n let error = React2.useContext(RouteErrorContext);\n let state = useDataRouterState(\"useRouteError\" /* UseRouteError */);\n let routeId = useCurrentRouteId(\"useRouteError\" /* UseRouteError */);\n if (error !== void 0) {\n return error;\n }\n return state.errors?.[routeId];\n}\nfunction useAsyncValue() {\n let value = React2.useContext(AwaitContext);\n return value?._data;\n}\nfunction useAsyncError() {\n let value = React2.useContext(AwaitContext);\n return value?._error;\n}\nvar blockerId = 0;\nfunction useBlocker(shouldBlock) {\n let { router, basename } = useDataRouterContext(\"useBlocker\" /* UseBlocker */);\n let state = useDataRouterState(\"useBlocker\" /* UseBlocker */);\n let [blockerKey, setBlockerKey] = React2.useState(\"\");\n let blockerFunction = React2.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n },\n nextLocation: {\n ...nextLocation,\n pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n },\n historyAction\n });\n },\n [basename, shouldBlock]\n );\n React2.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n React2.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\nfunction useNavigateStable() {\n let { router } = useDataRouterContext(\"useNavigate\" /* UseNavigateStable */);\n let id = useCurrentRouteId(\"useNavigate\" /* UseNavigateStable */);\n let activeRef = React2.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React2.useCallback(\n async (to, options = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n await router.navigate(to);\n } else {\n await router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n return navigate;\n}\nvar alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\nfunction useRoute(...args) {\n const currentRouteId = useCurrentRouteId(\n \"useRoute\" /* UseRoute */\n );\n const id = args[0] ?? currentRouteId;\n const state = useDataRouterState(\"useRoute\" /* UseRoute */);\n const route = state.matches.find(({ route: route2 }) => route2.id === id);\n if (route === void 0) return void 0;\n return {\n handle: route.route.handle,\n loaderData: state.loaderData[id],\n actionData: state.actionData?.[id]\n };\n}\n\n// lib/components.tsx\nimport * as React3 from \"react\";\n\n// lib/server-runtime/warnings.ts\nvar alreadyWarned2 = {};\nfunction warnOnce(condition, message) {\n if (!condition && !alreadyWarned2[message]) {\n alreadyWarned2[message] = true;\n console.warn(message);\n }\n}\n\n// lib/components.tsx\nvar USE_OPTIMISTIC = \"useOptimistic\";\nvar useOptimisticImpl = React3[USE_OPTIMISTIC];\nvar stableUseOptimisticSetter = () => void 0;\nfunction useOptimisticSafe(val) {\n if (useOptimisticImpl) {\n return useOptimisticImpl(val);\n } else {\n return [val, stableUseOptimisticSetter];\n }\n}\nfunction mapRouteProperties(route) {\n let updates = {\n // Note: this check also occurs in createRoutesFromChildren so update\n // there if you change this -- please and thank you!\n hasErrorBoundary: route.hasErrorBoundary || route.ErrorBoundary != null || route.errorElement != null\n };\n if (route.Component) {\n if (ENABLE_DEV_WARNINGS) {\n if (route.element) {\n warning(\n false,\n \"You should not include both `Component` and `element` on your route - `Component` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n element: React3.createElement(route.Component),\n Component: void 0\n });\n }\n if (route.HydrateFallback) {\n if (ENABLE_DEV_WARNINGS) {\n if (route.hydrateFallbackElement) {\n warning(\n false,\n \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n hydrateFallbackElement: React3.createElement(route.HydrateFallback),\n HydrateFallback: void 0\n });\n }\n if (route.ErrorBoundary) {\n if (ENABLE_DEV_WARNINGS) {\n if (route.errorElement) {\n warning(\n false,\n \"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n errorElement: React3.createElement(route.ErrorBoundary),\n ErrorBoundary: void 0\n });\n }\n return updates;\n}\nvar hydrationRouteProperties = [\n \"HydrateFallback\",\n \"hydrateFallbackElement\"\n];\nfunction createMemoryRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n getContext: opts?.getContext,\n future: opts?.future,\n history: createMemoryHistory({\n initialEntries: opts?.initialEntries,\n initialIndex: opts?.initialIndex\n }),\n hydrationData: opts?.hydrationData,\n routes,\n hydrationRouteProperties,\n mapRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n unstable_instrumentations: opts?.unstable_instrumentations\n }).initialize();\n}\nvar Deferred = class {\n constructor() {\n this.status = \"pending\";\n this.promise = new Promise((resolve, reject) => {\n this.resolve = (value) => {\n if (this.status === \"pending\") {\n this.status = \"resolved\";\n resolve(value);\n }\n };\n this.reject = (reason) => {\n if (this.status === \"pending\") {\n this.status = \"rejected\";\n reject(reason);\n }\n };\n });\n }\n};\nfunction RouterProvider({\n router,\n flushSync: reactDomFlushSyncImpl,\n onError,\n unstable_useTransitions\n}) {\n let unstable_rsc = useIsRSCRouterContext();\n unstable_useTransitions = unstable_rsc || unstable_useTransitions;\n let [_state, setStateImpl] = React3.useState(router.state);\n let [state, setOptimisticState] = useOptimisticSafe(_state);\n let [pendingState, setPendingState] = React3.useState();\n let [vtContext, setVtContext] = React3.useState({\n isTransitioning: false\n });\n let [renderDfd, setRenderDfd] = React3.useState();\n let [transition, setTransition] = React3.useState();\n let [interruption, setInterruption] = React3.useState();\n let fetcherData = React3.useRef(/* @__PURE__ */ new Map());\n let setState = React3.useCallback(\n (newState, { deletedFetchers, newErrors, flushSync, viewTransitionOpts }) => {\n if (newErrors && onError) {\n Object.values(newErrors).forEach(\n (error) => onError(error, {\n location: newState.location,\n params: newState.matches[0]?.params ?? {},\n unstable_pattern: getRoutePattern(newState.matches)\n })\n );\n }\n newState.fetchers.forEach((fetcher, key) => {\n if (fetcher.data !== void 0) {\n fetcherData.current.set(key, fetcher.data);\n }\n });\n deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n warnOnce(\n flushSync === false || reactDomFlushSyncImpl != null,\n 'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from \"react-router/dom\"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.'\n );\n let isViewTransitionAvailable = router.window != null && router.window.document != null && typeof router.window.document.startViewTransition === \"function\";\n warnOnce(\n viewTransitionOpts == null || isViewTransitionAvailable,\n \"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available.\"\n );\n if (!viewTransitionOpts || !isViewTransitionAvailable) {\n if (reactDomFlushSyncImpl && flushSync) {\n reactDomFlushSyncImpl(() => setStateImpl(newState));\n } else if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React3.startTransition(() => {\n if (unstable_useTransitions === true) {\n setOptimisticState((s) => getOptimisticRouterState(s, newState));\n }\n setStateImpl(newState);\n });\n }\n return;\n }\n if (reactDomFlushSyncImpl && flushSync) {\n reactDomFlushSyncImpl(() => {\n if (transition) {\n renderDfd?.resolve();\n transition.skipTransition();\n }\n setVtContext({\n isTransitioning: true,\n flushSync: true,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n });\n let t = router.window.document.startViewTransition(() => {\n reactDomFlushSyncImpl(() => setStateImpl(newState));\n });\n t.finished.finally(() => {\n reactDomFlushSyncImpl(() => {\n setRenderDfd(void 0);\n setTransition(void 0);\n setPendingState(void 0);\n setVtContext({ isTransitioning: false });\n });\n });\n reactDomFlushSyncImpl(() => setTransition(t));\n return;\n }\n if (transition) {\n renderDfd?.resolve();\n transition.skipTransition();\n setInterruption({\n state: newState,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n } else {\n setPendingState(newState);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n }\n },\n [\n router.window,\n reactDomFlushSyncImpl,\n transition,\n renderDfd,\n unstable_useTransitions,\n setOptimisticState,\n onError\n ]\n );\n React3.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n React3.useEffect(() => {\n if (vtContext.isTransitioning && !vtContext.flushSync) {\n setRenderDfd(new Deferred());\n }\n }, [vtContext]);\n React3.useEffect(() => {\n if (renderDfd && pendingState && router.window) {\n let newState = pendingState;\n let renderPromise = renderDfd.promise;\n let transition2 = router.window.document.startViewTransition(async () => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React3.startTransition(() => {\n if (unstable_useTransitions === true) {\n setOptimisticState((s) => getOptimisticRouterState(s, newState));\n }\n setStateImpl(newState);\n });\n }\n await renderPromise;\n });\n transition2.finished.finally(() => {\n setRenderDfd(void 0);\n setTransition(void 0);\n setPendingState(void 0);\n setVtContext({ isTransitioning: false });\n });\n setTransition(transition2);\n }\n }, [\n pendingState,\n renderDfd,\n router.window,\n unstable_useTransitions,\n setOptimisticState\n ]);\n React3.useEffect(() => {\n if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n renderDfd.resolve();\n }\n }, [renderDfd, transition, state.location, pendingState]);\n React3.useEffect(() => {\n if (!vtContext.isTransitioning && interruption) {\n setPendingState(interruption.state);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: interruption.currentLocation,\n nextLocation: interruption.nextLocation\n });\n setInterruption(void 0);\n }\n }, [vtContext.isTransitioning, interruption]);\n let navigator = React3.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state2, opts) => router.navigate(to, {\n state: state2,\n preventScrollReset: opts?.preventScrollReset\n }),\n replace: (to, state2, opts) => router.navigate(to, {\n replace: true,\n state: state2,\n preventScrollReset: opts?.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React3.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n onError\n }),\n [router, navigator, basename, onError]\n );\n return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React3.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React3.createElement(FetchersContext.Provider, { value: fetcherData.current }, /* @__PURE__ */ React3.createElement(ViewTransitionContext.Provider, { value: vtContext }, /* @__PURE__ */ React3.createElement(\n Router,\n {\n basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator,\n unstable_useTransitions\n },\n /* @__PURE__ */ React3.createElement(\n MemoizedDataRoutes,\n {\n routes: router.routes,\n future: router.future,\n state,\n isStatic: false,\n onError\n }\n )\n ))))), null);\n}\nfunction getOptimisticRouterState(currentState, newState) {\n return {\n // Don't surface \"current location specific\" stuff mid-navigation\n // (historyAction, location, matches, loaderData, errors, initialized,\n // restoreScroll, preventScrollReset, blockers, etc.)\n ...currentState,\n // Only surface \"pending/in-flight stuff\"\n // (navigation, revalidation, actionData, fetchers, )\n navigation: newState.navigation.state !== \"idle\" ? newState.navigation : currentState.navigation,\n revalidation: newState.revalidation !== \"idle\" ? newState.revalidation : currentState.revalidation,\n actionData: newState.navigation.state !== \"submitting\" ? newState.actionData : currentState.actionData,\n fetchers: newState.fetchers\n };\n}\nvar MemoizedDataRoutes = React3.memo(DataRoutes);\nfunction DataRoutes({\n routes,\n future,\n state,\n isStatic,\n onError\n}) {\n return useRoutesImpl(routes, void 0, { state, isStatic, onError, future });\n}\nfunction MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n unstable_useTransitions\n}) {\n let historyRef = React3.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React3.useState({\n action: history.action,\n location: history.location\n });\n let setState = React3.useCallback(\n (newState) => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React3.startTransition(() => setStateImpl(newState));\n }\n },\n [unstable_useTransitions]\n );\n React3.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React3.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n unstable_useTransitions\n }\n );\n}\nfunction Navigate({\n to,\n replace: replace2,\n state,\n relative\n}) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n let { static: isStatic } = React3.useContext(NavigationContext);\n warning(\n !isStatic,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`\n );\n let { matches } = React3.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let navigate = useNavigate();\n let path = resolveTo(\n to,\n getResolveToMatches(matches),\n locationPathname,\n relative === \"path\"\n );\n let jsonPath = JSON.stringify(path);\n React3.useEffect(() => {\n navigate(JSON.parse(jsonPath), { replace: replace2, state, relative });\n }, [navigate, jsonPath, relative, replace2, state]);\n return null;\n}\nfunction Outlet(props) {\n return useOutlet(props.context);\n}\nfunction Route(props) {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\nfunction Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = \"POP\" /* Pop */,\n navigator,\n static: staticProp = false,\n unstable_useTransitions\n}) {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`\n );\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React3.useMemo(\n () => ({\n basename,\n navigator,\n static: staticProp,\n unstable_useTransitions,\n future: {}\n }),\n [basename, navigator, staticProp, unstable_useTransitions]\n );\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n unstable_mask\n } = locationProp;\n let locationContext = React3.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n if (trailingPathname == null) {\n return null;\n }\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n unstable_mask\n },\n navigationType\n };\n }, [\n basename,\n pathname,\n search,\n hash,\n state,\n key,\n navigationType,\n unstable_mask\n ]);\n warning(\n locationContext != null,\n `<Router basename=\"${basename}\"> is not able to match the URL \"${pathname}${search}${hash}\" because it does not start with the basename, so the <Router> won't render anything.`\n );\n if (locationContext == null) {\n return null;\n }\n return /* @__PURE__ */ React3.createElement(NavigationContext.Provider, { value: navigationContext }, /* @__PURE__ */ React3.createElement(LocationContext.Provider, { children, value: locationContext }));\n}\nfunction Routes({\n children,\n location\n}) {\n return useRoutes(createRoutesFromChildren(children), location);\n}\nfunction Await({\n children,\n errorElement,\n resolve\n}) {\n let dataRouterContext = React3.useContext(DataRouterContext);\n let dataRouterStateContext = React3.useContext(DataRouterStateContext);\n let onError = React3.useCallback(\n (error, errorInfo) => {\n if (dataRouterContext && dataRouterContext.onError && dataRouterStateContext) {\n dataRouterContext.onError(error, {\n location: dataRouterStateContext.location,\n params: dataRouterStateContext.matches[0]?.params || {},\n unstable_pattern: getRoutePattern(dataRouterStateContext.matches),\n errorInfo\n });\n }\n },\n [dataRouterContext, dataRouterStateContext]\n );\n return /* @__PURE__ */ React3.createElement(\n AwaitErrorBoundary,\n {\n resolve,\n errorElement,\n onError\n },\n /* @__PURE__ */ React3.createElement(ResolveAwait, null, children)\n );\n}\nvar AwaitErrorBoundary = class extends React3.Component {\n constructor(props) {\n super(props);\n this.state = { error: null };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n componentDidCatch(error, errorInfo) {\n if (this.props.onError) {\n this.props.onError(error, errorInfo);\n } else {\n console.error(\n \"<Await> caught the following error during render\",\n error,\n errorInfo\n );\n }\n }\n render() {\n let { children, errorElement, resolve } = this.props;\n let promise = null;\n let status = 0 /* pending */;\n if (!(resolve instanceof Promise)) {\n status = 1 /* success */;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n status = 2 /* error */;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {\n });\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if (resolve._tracked) {\n promise = resolve;\n status = \"_error\" in promise ? 2 /* error */ : \"_data\" in promise ? 1 /* success */ : 0 /* pending */;\n } else {\n status = 0 /* pending */;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data2) => Object.defineProperty(resolve, \"_data\", { get: () => data2 }),\n (error) => {\n this.props.onError?.(error);\n Object.defineProperty(resolve, \"_error\", { get: () => error });\n }\n );\n }\n if (status === 2 /* error */ && !errorElement) {\n throw promise._error;\n }\n if (status === 2 /* error */) {\n return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children: errorElement });\n }\n if (status === 1 /* success */) {\n return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children });\n }\n throw promise;\n }\n};\nfunction ResolveAwait({\n children\n}) {\n let data2 = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data2) : children;\n return /* @__PURE__ */ React3.createElement(React3.Fragment, null, toRender);\n}\nfunction createRoutesFromChildren(children, parentPath = []) {\n let routes = [];\n React3.Children.forEach(children, (element, index) => {\n if (!React3.isValidElement(element)) {\n return;\n }\n let treePath = [...parentPath, index];\n if (element.type === React3.Fragment) {\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, treePath)\n );\n return;\n }\n invariant(\n element.type === Route,\n `[${typeof element.type === \"string\" ? element.type : element.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n let route = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n middleware: element.props.middleware,\n loader: element.props.loader,\n action: element.props.action,\n hydrateFallbackElement: element.props.hydrateFallbackElement,\n HydrateFallback: element.props.HydrateFallback,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary: element.props.hasErrorBoundary === true || element.props.ErrorBoundary != null || element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy\n };\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n routes.push(route);\n });\n return routes;\n}\nvar createRoutesFromElements = createRoutesFromChildren;\nfunction renderMatches(matches) {\n return _renderMatches(matches);\n}\nfunction useRouteComponentProps() {\n return {\n params: useParams(),\n loaderData: useLoaderData(),\n actionData: useActionData(),\n matches: useMatches()\n };\n}\nfunction WithComponentProps({\n children\n}) {\n const props = useRouteComponentProps();\n return React3.cloneElement(children, props);\n}\nfunction withComponentProps(Component4) {\n return function WithComponentProps2() {\n const props = useRouteComponentProps();\n return React3.createElement(Component4, props);\n };\n}\nfunction useHydrateFallbackProps() {\n return {\n params: useParams(),\n loaderData: useLoaderData(),\n actionData: useActionData()\n };\n}\nfunction WithHydrateFallbackProps({\n children\n}) {\n const props = useHydrateFallbackProps();\n return React3.cloneElement(children, props);\n}\nfunction withHydrateFallbackProps(HydrateFallback) {\n return function WithHydrateFallbackProps2() {\n const props = useHydrateFallbackProps();\n return React3.createElement(HydrateFallback, props);\n };\n}\nfunction useErrorBoundaryProps() {\n return {\n params: useParams(),\n loaderData: useLoaderData(),\n actionData: useActionData(),\n error: useRouteError()\n };\n}\nfunction WithErrorBoundaryProps({\n children\n}) {\n const props = useErrorBoundaryProps();\n return React3.cloneElement(children, props);\n}\nfunction withErrorBoundaryProps(ErrorBoundary) {\n return function WithErrorBoundaryProps2() {\n const props = useErrorBoundaryProps();\n return React3.createElement(ErrorBoundary, props);\n };\n}\n\n// lib/dom/dom.ts\nvar defaultMethod = \"get\";\nvar defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return typeof HTMLElement !== \"undefined\" && object instanceof HTMLElement;\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event);\n}\nfunction createSearchParams(init = \"\") {\n return new URLSearchParams(\n typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo2, key) => {\n let value = init[key];\n return memo2.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [])\n );\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\nvar _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nvar supportedFormEncTypes = /* @__PURE__ */ new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\"\n]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` and will default to \"${defaultEncType}\"`\n );\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\n `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n );\n }\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(form, target);\n if (!isFormDataSubmitterSupported()) {\n let { name, type, value } = target;\n if (type === \"image\") {\n let prefix = name ? `${name}.` : \"\";\n formData.append(`${prefix}x`, \"0\");\n formData.append(`${prefix}y`, \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\n `Cannot submit element that is not <form>, <button>, or <input type=\"submit|image\">`\n );\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = void 0;\n }\n return { action, method: method.toLowerCase(), encType, formData, body };\n}\n\n// lib/dom/ssr/single-fetch.tsx\nimport * as React4 from \"react\";\n\n// vendor/turbo-stream-v2/utils.ts\nvar HOLE = -1;\nvar NAN = -2;\nvar NEGATIVE_INFINITY = -3;\nvar NEGATIVE_ZERO = -4;\nvar NULL = -5;\nvar POSITIVE_INFINITY = -6;\nvar UNDEFINED = -7;\nvar TYPE_BIGINT = \"B\";\nvar TYPE_DATE = \"D\";\nvar TYPE_ERROR = \"E\";\nvar TYPE_MAP = \"M\";\nvar TYPE_NULL_OBJECT = \"N\";\nvar TYPE_PROMISE = \"P\";\nvar TYPE_REGEXP = \"R\";\nvar TYPE_SET = \"S\";\nvar TYPE_SYMBOL = \"Y\";\nvar TYPE_URL = \"U\";\nvar TYPE_PREVIOUS_RESOLVED = \"Z\";\nvar Deferred2 = class {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n};\nfunction createLineSplittingTransform() {\n const decoder = new TextDecoder();\n let leftover = \"\";\n return new TransformStream({\n transform(chunk, controller) {\n const str = decoder.decode(chunk, { stream: true });\n const parts = (leftover + str).split(\"\\n\");\n leftover = parts.pop() || \"\";\n for (const part of parts) {\n controller.enqueue(part);\n }\n },\n flush(controller) {\n if (leftover) {\n controller.enqueue(leftover);\n }\n }\n });\n}\n\n// vendor/turbo-stream-v2/flatten.ts\nfunction flatten(input) {\n const { indices } = this;\n const existing = indices.get(input);\n if (existing) return [existing];\n if (input === void 0) return UNDEFINED;\n if (input === null) return NULL;\n if (Number.isNaN(input)) return NAN;\n if (input === Number.POSITIVE_INFINITY) return POSITIVE_INFINITY;\n if (input === Number.NEGATIVE_INFINITY) return NEGATIVE_INFINITY;\n if (input === 0 && 1 / input < 0) return NEGATIVE_ZERO;\n const index = this.index++;\n indices.set(input, index);\n stringify.call(this, input, index);\n return index;\n}\nfunction stringify(input, index) {\n const { deferred, plugins, postPlugins } = this;\n const str = this.stringified;\n const stack = [[input, index]];\n while (stack.length > 0) {\n const [input2, index2] = stack.pop();\n const partsForObj = (obj) => Object.keys(obj).map((k) => `\"_${flatten.call(this, k)}\":${flatten.call(this, obj[k])}`).join(\",\");\n let error = null;\n switch (typeof input2) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n str[index2] = JSON.stringify(input2);\n break;\n case \"bigint\":\n str[index2] = `[\"${TYPE_BIGINT}\",\"${input2}\"]`;\n break;\n case \"symbol\": {\n const keyFor = Symbol.keyFor(input2);\n if (!keyFor) {\n error = new Error(\n \"Cannot encode symbol unless created with Symbol.for()\"\n );\n } else {\n str[index2] = `[\"${TYPE_SYMBOL}\",${JSON.stringify(keyFor)}]`;\n }\n break;\n }\n case \"object\": {\n if (!input2) {\n str[index2] = `${NULL}`;\n break;\n }\n const isArray = Array.isArray(input2);\n let pluginHandled = false;\n if (!isArray && plugins) {\n for (const plugin of plugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n let result = isArray ? \"[\" : \"{\";\n if (isArray) {\n for (let i = 0; i < input2.length; i++)\n result += (i ? \",\" : \"\") + (i in input2 ? flatten.call(this, input2[i]) : HOLE);\n str[index2] = `${result}]`;\n } else if (input2 instanceof Date) {\n const dateTime = input2.getTime();\n str[index2] = `[\"${TYPE_DATE}\",${Number.isNaN(dateTime) ? JSON.stringify(\"invalid\") : dateTime}]`;\n } else if (input2 instanceof URL) {\n str[index2] = `[\"${TYPE_URL}\",${JSON.stringify(input2.href)}]`;\n } else if (input2 instanceof RegExp) {\n str[index2] = `[\"${TYPE_REGEXP}\",${JSON.stringify(\n input2.source\n )},${JSON.stringify(input2.flags)}]`;\n } else if (input2 instanceof Set) {\n if (input2.size > 0) {\n str[index2] = `[\"${TYPE_SET}\",${[...input2].map((val) => flatten.call(this, val)).join(\",\")}]`;\n } else {\n str[index2] = `[\"${TYPE_SET}\"]`;\n }\n } else if (input2 instanceof Map) {\n if (input2.size > 0) {\n str[index2] = `[\"${TYPE_MAP}\",${[...input2].flatMap(([k, v]) => [\n flatten.call(this, k),\n flatten.call(this, v)\n ]).join(\",\")}]`;\n } else {\n str[index2] = `[\"${TYPE_MAP}\"]`;\n }\n } else if (input2 instanceof Promise) {\n str[index2] = `[\"${TYPE_PROMISE}\",${index2}]`;\n deferred[index2] = input2;\n } else if (input2 instanceof Error) {\n str[index2] = `[\"${TYPE_ERROR}\",${JSON.stringify(input2.message)}`;\n if (input2.name !== \"Error\") {\n str[index2] += `,${JSON.stringify(input2.name)}`;\n }\n str[index2] += \"]\";\n } else if (Object.getPrototypeOf(input2) === null) {\n str[index2] = `[\"${TYPE_NULL_OBJECT}\",{${partsForObj(input2)}}]`;\n } else if (isPlainObject2(input2)) {\n str[index2] = `{${partsForObj(input2)}}`;\n } else {\n error = new Error(\"Cannot encode object with prototype\");\n }\n }\n break;\n }\n default: {\n const isArray = Array.isArray(input2);\n let pluginHandled = false;\n if (!isArray && plugins) {\n for (const plugin of plugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n error = new Error(\"Cannot encode function or unexpected type\");\n }\n }\n }\n if (error) {\n let pluginHandled = false;\n if (postPlugins) {\n for (const plugin of postPlugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n throw error;\n }\n }\n }\n}\nvar objectProtoNames2 = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject2(thing) {\n const proto = Object.getPrototypeOf(thing);\n return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames2;\n}\n\n// vendor/turbo-stream-v2/unflatten.ts\nvar globalObj = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : void 0;\nfunction unflatten(parsed) {\n const { hydrated, values } = this;\n if (typeof parsed === \"number\") return hydrate.call(this, parsed);\n if (!Array.isArray(parsed) || !parsed.length) throw new SyntaxError();\n const startIndex = values.length;\n for (const value of parsed) {\n values.push(value);\n }\n hydrated.length = values.length;\n return hydrate.call(this, startIndex);\n}\nfunction hydrate(index) {\n const { hydrated, values, deferred, plugins } = this;\n let result;\n const stack = [\n [\n index,\n (v) => {\n result = v;\n }\n ]\n ];\n let postRun = [];\n while (stack.length > 0) {\n const [index2, set] = stack.pop();\n switch (index2) {\n case UNDEFINED:\n set(void 0);\n continue;\n case NULL:\n set(null);\n continue;\n case NAN:\n set(NaN);\n continue;\n case POSITIVE_INFINITY:\n set(Infinity);\n continue;\n case NEGATIVE_INFINITY:\n set(-Infinity);\n continue;\n case NEGATIVE_ZERO:\n set(-0);\n continue;\n }\n if (hydrated[index2]) {\n set(hydrated[index2]);\n continue;\n }\n const value = values[index2];\n if (!value || typeof value !== \"object\") {\n hydrated[index2] = value;\n set(value);\n continue;\n }\n if (Array.isArray(value)) {\n if (typeof value[0] === \"string\") {\n const [type, b, c] = value;\n switch (type) {\n case TYPE_DATE:\n set(hydrated[index2] = new Date(b));\n continue;\n case TYPE_URL:\n set(hydrated[index2] = new URL(b));\n continue;\n case TYPE_BIGINT:\n set(hydrated[index2] = BigInt(b));\n continue;\n case TYPE_REGEXP:\n set(hydrated[index2] = new RegExp(b, c));\n continue;\n case TYPE_SYMBOL:\n set(hydrated[index2] = Symbol.for(b));\n continue;\n case TYPE_SET:\n const newSet = /* @__PURE__ */ new Set();\n hydrated[index2] = newSet;\n for (let i = value.length - 1; i > 0; i--)\n stack.push([\n value[i],\n (v) => {\n newSet.add(v);\n }\n ]);\n set(newSet);\n continue;\n case TYPE_MAP:\n const map = /* @__PURE__ */ new Map();\n hydrated[index2] = map;\n for (let i = value.length - 2; i > 0; i -= 2) {\n const r = [];\n stack.push([\n value[i + 1],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n value[i],\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n map.set(r[0], r[1]);\n });\n }\n set(map);\n continue;\n case TYPE_NULL_OBJECT:\n const obj = /* @__PURE__ */ Object.create(null);\n hydrated[index2] = obj;\n for (const key of Object.keys(b).reverse()) {\n const r = [];\n stack.push([\n b[key],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n Number(key.slice(1)),\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n obj[r[0]] = r[1];\n });\n }\n set(obj);\n continue;\n case TYPE_PROMISE:\n if (hydrated[b]) {\n set(hydrated[index2] = hydrated[b]);\n } else {\n const d = new Deferred2();\n deferred[b] = d;\n set(hydrated[index2] = d.promise);\n }\n continue;\n case TYPE_ERROR:\n const [, message, errorType] = value;\n let error = errorType && globalObj && globalObj[errorType] ? new globalObj[errorType](message) : new Error(message);\n hydrated[index2] = error;\n set(error);\n continue;\n case TYPE_PREVIOUS_RESOLVED:\n set(hydrated[index2] = hydrated[b]);\n continue;\n default:\n if (Array.isArray(plugins)) {\n const r = [];\n const vals = value.slice(1);\n for (let i = 0; i < vals.length; i++) {\n const v = vals[i];\n stack.push([\n v,\n (v2) => {\n r[i] = v2;\n }\n ]);\n }\n postRun.push(() => {\n for (const plugin of plugins) {\n const result2 = plugin(value[0], ...r);\n if (result2) {\n set(hydrated[index2] = result2.value);\n return;\n }\n }\n throw new SyntaxError();\n });\n continue;\n }\n throw new SyntaxError();\n }\n } else {\n const array = [];\n hydrated[index2] = array;\n for (let i = 0; i < value.length; i++) {\n const n = value[i];\n if (n !== HOLE) {\n stack.push([\n n,\n (v) => {\n array[i] = v;\n }\n ]);\n }\n }\n set(array);\n continue;\n }\n } else {\n const object = {};\n hydrated[index2] = object;\n for (const key of Object.keys(value).reverse()) {\n const r = [];\n stack.push([\n value[key],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n Number(key.slice(1)),\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n object[r[0]] = r[1];\n });\n }\n set(object);\n continue;\n }\n }\n while (postRun.length > 0) {\n postRun.pop()();\n }\n return result;\n}\n\n// vendor/turbo-stream-v2/turbo-stream.ts\nasync function decode(readable, options) {\n const { plugins } = options ?? {};\n const done = new Deferred2();\n const reader = readable.pipeThrough(createLineSplittingTransform()).getReader();\n const decoder = {\n values: [],\n hydrated: [],\n deferred: {},\n plugins\n };\n const decoded = await decodeInitial.call(decoder, reader);\n let donePromise = done.promise;\n if (decoded.done) {\n done.resolve();\n } else {\n donePromise = decodeDeferred.call(decoder, reader).then(done.resolve).catch((reason) => {\n for (const deferred of Object.values(decoder.deferred)) {\n deferred.reject(reason);\n }\n done.reject(reason);\n });\n }\n return {\n done: donePromise.then(() => reader.closed),\n value: decoded.value\n };\n}\nasync function decodeInitial(reader) {\n const read = await reader.read();\n if (!read.value) {\n throw new SyntaxError();\n }\n let line;\n try {\n line = JSON.parse(read.value);\n } catch (reason) {\n throw new SyntaxError();\n }\n return {\n done: read.done,\n value: unflatten.call(this, line)\n };\n}\nasync function decodeDeferred(reader) {\n let read = await reader.read();\n while (!read.done) {\n if (!read.value) continue;\n const line = read.value;\n switch (line[0]) {\n case TYPE_PROMISE: {\n const colonIndex = line.indexOf(\":\");\n const deferredId = Number(line.slice(1, colonIndex));\n const deferred = this.deferred[deferredId];\n if (!deferred) {\n throw new Error(`Deferred ID ${deferredId} not found in stream`);\n }\n const lineData = line.slice(colonIndex + 1);\n let jsonLine;\n try {\n jsonLine = JSON.parse(lineData);\n } catch (reason) {\n throw new SyntaxError();\n }\n const value = unflatten.call(this, jsonLine);\n deferred.resolve(value);\n break;\n }\n case TYPE_ERROR: {\n const colonIndex = line.indexOf(\":\");\n const deferredId = Number(line.slice(1, colonIndex));\n const deferred = this.deferred[deferredId];\n if (!deferred) {\n throw new Error(`Deferred ID ${deferredId} not found in stream`);\n }\n const lineData = line.slice(colonIndex + 1);\n let jsonLine;\n try {\n jsonLine = JSON.parse(lineData);\n } catch (reason) {\n throw new SyntaxError();\n }\n const value = unflatten.call(this, jsonLine);\n deferred.reject(value);\n break;\n }\n default:\n throw new SyntaxError();\n }\n read = await reader.read();\n }\n}\nfunction encode(input, options) {\n const { plugins, postPlugins, signal, onComplete } = options ?? {};\n const encoder = {\n deferred: {},\n index: 0,\n indices: /* @__PURE__ */ new Map(),\n stringified: [],\n plugins,\n postPlugins,\n signal\n };\n const textEncoder = new TextEncoder();\n let lastSentIndex = 0;\n const readable = new ReadableStream({\n async start(controller) {\n const id = flatten.call(encoder, input);\n if (Array.isArray(id)) {\n throw new Error(\"This should never happen\");\n }\n if (id < 0) {\n controller.enqueue(textEncoder.encode(`${id}\n`));\n } else {\n controller.enqueue(\n textEncoder.encode(`[${encoder.stringified.join(\",\")}]\n`)\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n const seenPromises = /* @__PURE__ */ new WeakSet();\n if (Object.keys(encoder.deferred).length) {\n let raceDone;\n const racePromise = new Promise((resolve, reject) => {\n raceDone = resolve;\n if (signal) {\n const rejectPromise = () => reject(signal.reason || new Error(\"Signal was aborted.\"));\n if (signal.aborted) {\n rejectPromise();\n } else {\n signal.addEventListener(\"abort\", (event) => {\n rejectPromise();\n });\n }\n }\n });\n while (Object.keys(encoder.deferred).length > 0) {\n for (const [deferredId, deferred] of Object.entries(\n encoder.deferred\n )) {\n if (seenPromises.has(deferred)) continue;\n seenPromises.add(\n // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n encoder.deferred[Number(deferredId)] = Promise.race([\n racePromise,\n deferred\n ]).then(\n (resolved) => {\n const id2 = flatten.call(encoder, resolved);\n if (Array.isArray(id2)) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_PROMISE}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n )\n );\n encoder.index++;\n lastSentIndex++;\n } else if (id2 < 0) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_PROMISE}${deferredId}:${id2}\n`\n )\n );\n } else {\n const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_PROMISE}${deferredId}:[${values}]\n`\n )\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n },\n (reason) => {\n if (!reason || typeof reason !== \"object\" || !(reason instanceof Error)) {\n reason = new Error(\"An unknown error occurred\");\n }\n const id2 = flatten.call(encoder, reason);\n if (Array.isArray(id2)) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_ERROR}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n )\n );\n encoder.index++;\n lastSentIndex++;\n } else if (id2 < 0) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_ERROR}${deferredId}:${id2}\n`\n )\n );\n } else {\n const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_ERROR}${deferredId}:[${values}]\n`\n )\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n }\n ).finally(() => {\n delete encoder.deferred[Number(deferredId)];\n })\n );\n }\n await Promise.race(Object.values(encoder.deferred));\n }\n raceDone();\n }\n await Promise.all(Object.values(encoder.deferred));\n onComplete?.();\n controller.close();\n }\n });\n return readable;\n}\n\n// lib/dom/ssr/data.ts\nasync function createRequestInit(request) {\n let init = { signal: request.signal };\n if (request.method !== \"GET\") {\n init.method = request.method;\n let contentType = request.headers.get(\"Content-Type\");\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n init.headers = { \"Content-Type\": contentType };\n init.body = JSON.stringify(await request.json());\n } else if (contentType && /\\btext\\/plain\\b/.test(contentType)) {\n init.headers = { \"Content-Type\": contentType };\n init.body = await request.text();\n } else if (contentType && /\\bapplication\\/x-www-form-urlencoded\\b/.test(contentType)) {\n init.body = new URLSearchParams(await request.text());\n } else {\n init.body = await request.formData();\n }\n }\n return init;\n}\n\n// lib/dom/ssr/markup.ts\nvar ESCAPE_LOOKUP = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml(html) {\n return html.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);\n}\n\n// lib/dom/ssr/invariant.ts\nfunction invariant2(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\n// lib/dom/ssr/single-fetch.tsx\nvar SingleFetchRedirectSymbol = Symbol(\"SingleFetchRedirect\");\nvar SingleFetchNoResultError = class extends Error {\n};\nvar SINGLE_FETCH_REDIRECT_STATUS = 202;\nvar NO_BODY_STATUS_CODES = /* @__PURE__ */ new Set([100, 101, 204, 205]);\nfunction StreamTransfer({\n context,\n identifier,\n reader,\n textDecoder,\n nonce\n}) {\n if (!context.renderMeta || !context.renderMeta.didRenderScripts) {\n return null;\n }\n if (!context.renderMeta.streamCache) {\n context.renderMeta.streamCache = {};\n }\n let { streamCache } = context.renderMeta;\n let promise = streamCache[identifier];\n if (!promise) {\n promise = streamCache[identifier] = reader.read().then((result) => {\n streamCache[identifier].result = {\n done: result.done,\n value: textDecoder.decode(result.value, { stream: true })\n };\n }).catch((e) => {\n streamCache[identifier].error = e;\n });\n }\n if (promise.error) {\n throw promise.error;\n }\n if (promise.result === void 0) {\n throw promise;\n }\n let { done, value } = promise.result;\n let scriptTag = value ? /* @__PURE__ */ React4.createElement(\n \"script\",\n {\n nonce,\n dangerouslySetInnerHTML: {\n __html: `window.__reactRouterContext.streamController.enqueue(${escapeHtml(\n JSON.stringify(value)\n )});`\n }\n }\n ) : null;\n if (done) {\n return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(\n \"script\",\n {\n nonce,\n dangerouslySetInnerHTML: {\n __html: `window.__reactRouterContext.streamController.close();`\n }\n }\n ));\n } else {\n return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(React4.Suspense, null, /* @__PURE__ */ React4.createElement(\n StreamTransfer,\n {\n context,\n identifier: identifier + 1,\n reader,\n textDecoder,\n nonce\n }\n )));\n }\n}\nfunction getTurboStreamSingleFetchDataStrategy(getRouter, manifest, routeModules, ssr, basename, trailingSlashAware) {\n let dataStrategy = getSingleFetchDataStrategyImpl(\n getRouter,\n (match) => {\n let manifestRoute = manifest.routes[match.route.id];\n invariant2(manifestRoute, \"Route not found in manifest\");\n let routeModule = routeModules[match.route.id];\n return {\n hasLoader: manifestRoute.hasLoader,\n hasClientLoader: manifestRoute.hasClientLoader,\n hasShouldRevalidate: Boolean(routeModule?.shouldRevalidate)\n };\n },\n fetchAndDecodeViaTurboStream,\n ssr,\n basename,\n trailingSlashAware\n );\n return async (args) => args.runClientMiddleware(dataStrategy);\n}\nfunction getSingleFetchDataStrategyImpl(getRouter, getRouteInfo, fetchAndDecode, ssr, basename, trailingSlashAware, shouldAllowOptOut = () => true) {\n return async (args) => {\n let { request, matches, fetcherKey } = args;\n let router = getRouter();\n if (request.method !== \"GET\") {\n return singleFetchActionStrategy(\n args,\n fetchAndDecode,\n basename,\n trailingSlashAware\n );\n }\n let foundRevalidatingServerLoader = matches.some((m) => {\n let { hasLoader, hasClientLoader } = getRouteInfo(m);\n return m.shouldCallHandler() && hasLoader && !hasClientLoader;\n });\n if (!ssr && !foundRevalidatingServerLoader) {\n return nonSsrStrategy(\n args,\n getRouteInfo,\n fetchAndDecode,\n basename,\n trailingSlashAware\n );\n }\n if (fetcherKey) {\n return singleFetchLoaderFetcherStrategy(\n args,\n fetchAndDecode,\n basename,\n trailingSlashAware\n );\n }\n return singleFetchLoaderNavigationStrategy(\n args,\n router,\n getRouteInfo,\n fetchAndDecode,\n ssr,\n basename,\n trailingSlashAware,\n shouldAllowOptOut\n );\n };\n}\nasync function singleFetchActionStrategy(args, fetchAndDecode, basename, trailingSlashAware) {\n let actionMatch = args.matches.find((m) => m.shouldCallHandler());\n invariant2(actionMatch, \"No action match found\");\n let actionStatus = void 0;\n let result = await actionMatch.resolve(async (handler) => {\n let result2 = await handler(async () => {\n let { data: data2, status } = await fetchAndDecode(\n args,\n basename,\n trailingSlashAware,\n [actionMatch.route.id]\n );\n actionStatus = status;\n return unwrapSingleFetchResult(data2, actionMatch.route.id);\n });\n return result2;\n });\n if (isResponse(result.result) || isRouteErrorResponse(result.result) || isDataWithResponseInit(result.result)) {\n return { [actionMatch.route.id]: result };\n }\n return {\n [actionMatch.route.id]: {\n type: result.type,\n result: data(result.result, actionStatus)\n }\n };\n}\nasync function nonSsrStrategy(args, getRouteInfo, fetchAndDecode, basename, trailingSlashAware) {\n let matchesToLoad = args.matches.filter((m) => m.shouldCallHandler());\n let results = {};\n await Promise.all(\n matchesToLoad.map(\n (m) => m.resolve(async (handler) => {\n try {\n let { hasClientLoader } = getRouteInfo(m);\n let routeId = m.route.id;\n let result = hasClientLoader ? await handler(async () => {\n let { data: data2 } = await fetchAndDecode(\n args,\n basename,\n trailingSlashAware,\n [routeId]\n );\n return unwrapSingleFetchResult(data2, routeId);\n }) : await handler();\n results[m.route.id] = { type: \"data\", result };\n } catch (e) {\n results[m.route.id] = { type: \"error\", result: e };\n }\n })\n )\n );\n return results;\n}\nasync function singleFetchLoaderNavigationStrategy(args, router, getRouteInfo, fetchAndDecode, ssr, basename, trailingSlashAware, shouldAllowOptOut = () => true) {\n let routesParams = /* @__PURE__ */ new Set();\n let foundOptOutRoute = false;\n let routeDfds = args.matches.map(() => createDeferred2());\n let singleFetchDfd = createDeferred2();\n let results = {};\n let resolvePromise = Promise.all(\n args.matches.map(\n async (m, i) => m.resolve(async (handler) => {\n routeDfds[i].resolve();\n let routeId = m.route.id;\n let { hasLoader, hasClientLoader, hasShouldRevalidate } = getRouteInfo(m);\n let defaultShouldRevalidate = !m.shouldRevalidateArgs || m.shouldRevalidateArgs.actionStatus == null || m.shouldRevalidateArgs.actionStatus < 400;\n let shouldCall = m.shouldCallHandler(defaultShouldRevalidate);\n if (!shouldCall) {\n foundOptOutRoute || (foundOptOutRoute = m.shouldRevalidateArgs != null && // This is a revalidation,\n hasLoader && // for a route with a server loader,\n hasShouldRevalidate === true);\n return;\n }\n if (shouldAllowOptOut(m) && hasClientLoader) {\n if (hasLoader) {\n foundOptOutRoute = true;\n }\n try {\n let result = await handler(async () => {\n let { data: data2 } = await fetchAndDecode(\n args,\n basename,\n trailingSlashAware,\n [routeId]\n );\n return unwrapSingleFetchResult(data2, routeId);\n });\n results[routeId] = { type: \"data\", result };\n } catch (e) {\n results[routeId] = { type: \"error\", result: e };\n }\n return;\n }\n if (hasLoader) {\n routesParams.add(routeId);\n }\n try {\n let result = await handler(async () => {\n let data2 = await singleFetchDfd.promise;\n return unwrapSingleFetchResult(data2, routeId);\n });\n results[routeId] = { type: \"data\", result };\n } catch (e) {\n results[routeId] = { type: \"error\", result: e };\n }\n })\n )\n );\n await Promise.all(routeDfds.map((d) => d.promise));\n let isInitialLoad = !router.state.initialized && router.state.navigation.state === \"idle\";\n if ((isInitialLoad || routesParams.size === 0) && !window.__reactRouterHdrActive) {\n singleFetchDfd.resolve({ routes: {} });\n } else {\n let targetRoutes = ssr && foundOptOutRoute && routesParams.size > 0 ? [...routesParams.keys()] : void 0;\n try {\n let data2 = await fetchAndDecode(\n args,\n basename,\n trailingSlashAware,\n targetRoutes\n );\n singleFetchDfd.resolve(data2.data);\n } catch (e) {\n singleFetchDfd.reject(e);\n }\n }\n await resolvePromise;\n await bubbleMiddlewareErrors(\n singleFetchDfd.promise,\n args.matches,\n routesParams,\n results\n );\n return results;\n}\nasync function bubbleMiddlewareErrors(singleFetchPromise, matches, routesParams, results) {\n try {\n let middlewareError;\n let fetchedData = await singleFetchPromise;\n if (\"routes\" in fetchedData) {\n for (let match of matches) {\n if (match.route.id in fetchedData.routes) {\n let routeResult = fetchedData.routes[match.route.id];\n if (\"error\" in routeResult) {\n middlewareError = routeResult.error;\n if (results[match.route.id]?.result == null) {\n results[match.route.id] = {\n type: \"error\",\n result: middlewareError\n };\n }\n break;\n }\n }\n }\n }\n if (middlewareError !== void 0) {\n Array.from(routesParams.values()).forEach((routeId) => {\n if (results[routeId].result instanceof SingleFetchNoResultError) {\n results[routeId].result = middlewareError;\n }\n });\n }\n } catch (e) {\n }\n}\nasync function singleFetchLoaderFetcherStrategy(args, fetchAndDecode, basename, trailingSlashAware) {\n let fetcherMatch = args.matches.find((m) => m.shouldCallHandler());\n invariant2(fetcherMatch, \"No fetcher match found\");\n let routeId = fetcherMatch.route.id;\n let result = await fetcherMatch.resolve(\n async (handler) => handler(async () => {\n let { data: data2 } = await fetchAndDecode(args, basename, trailingSlashAware, [\n routeId\n ]);\n return unwrapSingleFetchResult(data2, routeId);\n })\n );\n return { [fetcherMatch.route.id]: result };\n}\nfunction stripIndexParam(url) {\n let indexValues = url.searchParams.getAll(\"index\");\n url.searchParams.delete(\"index\");\n let indexValuesToKeep = [];\n for (let indexValue of indexValues) {\n if (indexValue) {\n indexValuesToKeep.push(indexValue);\n }\n }\n for (let toKeep of indexValuesToKeep) {\n url.searchParams.append(\"index\", toKeep);\n }\n return url;\n}\nfunction singleFetchUrl(reqUrl, basename, trailingSlashAware, extension) {\n let url = typeof reqUrl === \"string\" ? new URL(\n reqUrl,\n // This can be called during the SSR flow via PrefetchPageLinksImpl so\n // don't assume window is available\n typeof window === \"undefined\" ? \"server://singlefetch/\" : window.location.origin\n ) : reqUrl;\n if (trailingSlashAware) {\n if (url.pathname.endsWith(\"/\")) {\n url.pathname = `${url.pathname}_.${extension}`;\n } else {\n url.pathname = `${url.pathname}.${extension}`;\n }\n } else {\n if (url.pathname === \"/\") {\n url.pathname = `_root.${extension}`;\n } else if (basename && stripBasename(url.pathname, basename) === \"/\") {\n url.pathname = `${basename.replace(/\\/$/, \"\")}/_root.${extension}`;\n } else {\n url.pathname = `${url.pathname.replace(/\\/$/, \"\")}.${extension}`;\n }\n }\n return url;\n}\nasync function fetchAndDecodeViaTurboStream(args, basename, trailingSlashAware, targetRoutes) {\n let { request } = args;\n let url = singleFetchUrl(request.url, basename, trailingSlashAware, \"data\");\n if (request.method === \"GET\") {\n url = stripIndexParam(url);\n if (targetRoutes) {\n url.searchParams.set(\"_routes\", targetRoutes.join(\",\"));\n }\n }\n let res = await fetch(url, await createRequestInit(request));\n if (res.status >= 400 && !res.headers.has(\"X-Remix-Response\")) {\n throw new ErrorResponseImpl(res.status, res.statusText, await res.text());\n }\n if (res.status === 204 && res.headers.has(\"X-Remix-Redirect\")) {\n return {\n status: SINGLE_FETCH_REDIRECT_STATUS,\n data: {\n redirect: {\n redirect: res.headers.get(\"X-Remix-Redirect\"),\n status: Number(res.headers.get(\"X-Remix-Status\") || \"302\"),\n revalidate: res.headers.get(\"X-Remix-Revalidate\") === \"true\",\n reload: res.headers.get(\"X-Remix-Reload-Document\") === \"true\",\n replace: res.headers.get(\"X-Remix-Replace\") === \"true\"\n }\n }\n };\n }\n if (NO_BODY_STATUS_CODES.has(res.status)) {\n let routes = {};\n if (targetRoutes && request.method !== \"GET\") {\n routes[targetRoutes[0]] = { data: void 0 };\n }\n return {\n status: res.status,\n data: { routes }\n };\n }\n invariant2(res.body, \"No response body to decode\");\n try {\n let decoded = await decodeViaTurboStream(res.body, window);\n let data2;\n if (request.method === \"GET\") {\n let typed = decoded.value;\n if (SingleFetchRedirectSymbol in typed) {\n data2 = { redirect: typed[SingleFetchRedirectSymbol] };\n } else {\n data2 = { routes: typed };\n }\n } else {\n let typed = decoded.value;\n let routeId = targetRoutes?.[0];\n invariant2(routeId, \"No routeId found for single fetch call decoding\");\n if (\"redirect\" in typed) {\n data2 = { redirect: typed };\n } else {\n data2 = { routes: { [routeId]: typed } };\n }\n }\n return { status: res.status, data: data2 };\n } catch (e) {\n throw new Error(\"Unable to decode turbo-stream response\");\n }\n}\nfunction decodeViaTurboStream(body, global) {\n return decode(body, {\n plugins: [\n (type, ...rest) => {\n if (type === \"SanitizedError\") {\n let [name, message, stack] = rest;\n let Constructor = Error;\n if (name && name in global && typeof global[name] === \"function\") {\n Constructor = global[name];\n }\n let error = new Constructor(message);\n error.stack = stack;\n return { value: error };\n }\n if (type === \"ErrorResponse\") {\n let [data2, status, statusText] = rest;\n return {\n value: new ErrorResponseImpl(status, statusText, data2)\n };\n }\n if (type === \"SingleFetchRedirect\") {\n return { value: { [SingleFetchRedirectSymbol]: rest[0] } };\n }\n if (type === \"SingleFetchClassInstance\") {\n return { value: rest[0] };\n }\n if (type === \"SingleFetchFallback\") {\n return { value: void 0 };\n }\n }\n ]\n });\n}\nfunction unwrapSingleFetchResult(result, routeId) {\n if (\"redirect\" in result) {\n let {\n redirect: location,\n revalidate,\n reload,\n replace: replace2,\n status\n } = result.redirect;\n throw redirect(location, {\n status,\n headers: {\n // Three R's of redirecting (lol Veep)\n ...revalidate ? { \"X-Remix-Revalidate\": \"yes\" } : null,\n ...reload ? { \"X-Remix-Reload-Document\": \"yes\" } : null,\n ...replace2 ? { \"X-Remix-Replace\": \"yes\" } : null\n }\n });\n }\n let routeResult = result.routes[routeId];\n if (routeResult == null) {\n throw new SingleFetchNoResultError(\n `No result found for routeId \"${routeId}\"`\n );\n } else if (\"error\" in routeResult) {\n throw routeResult.error;\n } else if (\"data\" in routeResult) {\n return routeResult.data;\n } else {\n throw new Error(`Invalid response found for routeId \"${routeId}\"`);\n }\n}\nfunction createDeferred2() {\n let resolve;\n let reject;\n let promise = new Promise((res, rej) => {\n resolve = async (val) => {\n res(val);\n try {\n await promise;\n } catch (e) {\n }\n };\n reject = async (error) => {\n rej(error);\n try {\n await promise;\n } catch (e) {\n }\n };\n });\n return {\n promise,\n //@ts-ignore\n resolve,\n //@ts-ignore\n reject\n };\n}\n\n// lib/dom/ssr/errorBoundaries.tsx\nimport * as React9 from \"react\";\n\n// lib/dom/ssr/components.tsx\nimport * as React8 from \"react\";\n\n// lib/dom/ssr/routeModules.ts\nasync function loadRouteModule(route, routeModulesCache) {\n if (route.id in routeModulesCache) {\n return routeModulesCache[route.id];\n }\n try {\n let routeModule = await import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.module\n );\n routeModulesCache[route.id] = routeModule;\n return routeModule;\n } catch (error) {\n console.error(\n `Error loading route module \\`${route.module}\\`, reloading page...`\n );\n console.error(error);\n if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && // @ts-expect-error\n import.meta.hot) {\n throw error;\n }\n window.location.reload();\n return new Promise(() => {\n });\n }\n}\n\n// lib/dom/ssr/links.ts\nfunction getKeyedLinksForMatches(matches, routeModules, manifest) {\n let descriptors = matches.map((match) => {\n let module = routeModules[match.route.id];\n let route = manifest.routes[match.route.id];\n return [\n route && route.css ? route.css.map((href) => ({ rel: \"stylesheet\", href })) : [],\n module?.links?.() || []\n ];\n }).flat(2);\n let preloads = getModuleLinkHrefs(matches, manifest);\n return dedupeLinkDescriptors(descriptors, preloads);\n}\nfunction getRouteCssDescriptors(route) {\n if (!route.css) return [];\n return route.css.map((href) => ({ rel: \"stylesheet\", href }));\n}\nasync function prefetchRouteCss(route) {\n if (!route.css) return;\n let descriptors = getRouteCssDescriptors(route);\n await Promise.all(descriptors.map(prefetchStyleLink));\n}\nasync function prefetchStyleLinks(route, routeModule) {\n if (!route.css && !routeModule.links || !isPreloadSupported()) return;\n let descriptors = [];\n if (route.css) {\n descriptors.push(...getRouteCssDescriptors(route));\n }\n if (routeModule.links) {\n descriptors.push(...routeModule.links());\n }\n if (descriptors.length === 0) return;\n let styleLinks = [];\n for (let descriptor of descriptors) {\n if (!isPageLinkDescriptor(descriptor) && descriptor.rel === \"stylesheet\") {\n styleLinks.push({\n ...descriptor,\n rel: \"preload\",\n as: \"style\"\n });\n }\n }\n await Promise.all(styleLinks.map(prefetchStyleLink));\n}\nasync function prefetchStyleLink(descriptor) {\n return new Promise((resolve) => {\n if (descriptor.media && !window.matchMedia(descriptor.media).matches || document.querySelector(\n `link[rel=\"stylesheet\"][href=\"${descriptor.href}\"]`\n )) {\n return resolve();\n }\n let link = document.createElement(\"link\");\n Object.assign(link, descriptor);\n function removeLink() {\n if (document.head.contains(link)) {\n document.head.removeChild(link);\n }\n }\n link.onload = () => {\n removeLink();\n resolve();\n };\n link.onerror = () => {\n removeLink();\n resolve();\n };\n document.head.appendChild(link);\n });\n}\nfunction isPageLinkDescriptor(object) {\n return object != null && typeof object.page === \"string\";\n}\nfunction isHtmlLinkDescriptor(object) {\n if (object == null) {\n return false;\n }\n if (object.href == null) {\n return object.rel === \"preload\" && typeof object.imageSrcSet === \"string\" && typeof object.imageSizes === \"string\";\n }\n return typeof object.rel === \"string\" && typeof object.href === \"string\";\n}\nasync function getKeyedPrefetchLinks(matches, manifest, routeModules) {\n let links = await Promise.all(\n matches.map(async (match) => {\n let route = manifest.routes[match.route.id];\n if (route) {\n let mod = await loadRouteModule(route, routeModules);\n return mod.links ? mod.links() : [];\n }\n return [];\n })\n );\n return dedupeLinkDescriptors(\n links.flat(1).filter(isHtmlLinkDescriptor).filter((link) => link.rel === \"stylesheet\" || link.rel === \"preload\").map(\n (link) => link.rel === \"stylesheet\" ? { ...link, rel: \"prefetch\", as: \"style\" } : { ...link, rel: \"prefetch\" }\n )\n );\n}\nfunction getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, location, mode) {\n let isNew = (match, index) => {\n if (!currentMatches[index]) return true;\n return match.route.id !== currentMatches[index].route.id;\n };\n let matchPathChanged = (match, index) => {\n return (\n // param change, /users/123 -> /users/456\n currentMatches[index].pathname !== match.pathname || // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentMatches[index].route.path?.endsWith(\"*\") && currentMatches[index].params[\"*\"] !== match.params[\"*\"]\n );\n };\n if (mode === \"assets\") {\n return nextMatches.filter(\n (match, index) => isNew(match, index) || matchPathChanged(match, index)\n );\n }\n if (mode === \"data\") {\n return nextMatches.filter((match, index) => {\n let manifestRoute = manifest.routes[match.route.id];\n if (!manifestRoute || !manifestRoute.hasLoader) {\n return false;\n }\n if (isNew(match, index) || matchPathChanged(match, index)) {\n return true;\n }\n if (match.route.shouldRevalidate) {\n let routeChoice = match.route.shouldRevalidate({\n currentUrl: new URL(\n location.pathname + location.search + location.hash,\n window.origin\n ),\n currentParams: currentMatches[0]?.params || {},\n nextUrl: new URL(page, window.origin),\n nextParams: match.params,\n defaultShouldRevalidate: true\n });\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return true;\n });\n }\n return [];\n}\nfunction getModuleLinkHrefs(matches, manifest, { includeHydrateFallback } = {}) {\n return dedupeHrefs(\n matches.map((match) => {\n let route = manifest.routes[match.route.id];\n if (!route) return [];\n let hrefs = [route.module];\n if (route.clientActionModule) {\n hrefs = hrefs.concat(route.clientActionModule);\n }\n if (route.clientLoaderModule) {\n hrefs = hrefs.concat(route.clientLoaderModule);\n }\n if (includeHydrateFallback && route.hydrateFallbackModule) {\n hrefs = hrefs.concat(route.hydrateFallbackModule);\n }\n if (route.imports) {\n hrefs = hrefs.concat(route.imports);\n }\n return hrefs;\n }).flat(1)\n );\n}\nfunction dedupeHrefs(hrefs) {\n return [...new Set(hrefs)];\n}\nfunction sortKeys(obj) {\n let sorted = {};\n let keys = Object.keys(obj).sort();\n for (let key of keys) {\n sorted[key] = obj[key];\n }\n return sorted;\n}\nfunction dedupeLinkDescriptors(descriptors, preloads) {\n let set = /* @__PURE__ */ new Set();\n let preloadsSet = new Set(preloads);\n return descriptors.reduce((deduped, descriptor) => {\n let alreadyModulePreload = preloads && !isPageLinkDescriptor(descriptor) && descriptor.as === \"script\" && descriptor.href && preloadsSet.has(descriptor.href);\n if (alreadyModulePreload) {\n return deduped;\n }\n let key = JSON.stringify(sortKeys(descriptor));\n if (!set.has(key)) {\n set.add(key);\n deduped.push({ key, link: descriptor });\n }\n return deduped;\n }, []);\n}\nvar _isPreloadSupported;\nfunction isPreloadSupported() {\n if (_isPreloadSupported !== void 0) {\n return _isPreloadSupported;\n }\n let el = document.createElement(\"link\");\n _isPreloadSupported = el.relList.supports(\"preload\");\n el = null;\n return _isPreloadSupported;\n}\n\n// lib/dom/ssr/fog-of-war.ts\nimport * as React7 from \"react\";\n\n// lib/dom/ssr/routes.tsx\nimport * as React6 from \"react\";\n\n// lib/dom/ssr/fallback.tsx\nimport * as React5 from \"react\";\nfunction RemixRootDefaultHydrateFallback() {\n return /* @__PURE__ */ React5.createElement(BoundaryShell, { title: \"Loading...\", renderScripts: true }, ENABLE_DEV_WARNINGS ? /* @__PURE__ */ React5.createElement(\n \"script\",\n {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this \" +\n \"when your app is loading JS modules and/or running \\`clientLoader\\` \" +\n \"functions. Check out https://reactrouter.com/start/framework/route-module#hydratefallback \" +\n \"for more information.\"\n );\n `\n }\n }\n ) : null);\n}\n\n// lib/dom/ssr/routes.tsx\nfunction groupRoutesByParentId(manifest) {\n let routes = {};\n Object.values(manifest).forEach((route) => {\n if (route) {\n let parentId = route.parentId || \"\";\n if (!routes[parentId]) {\n routes[parentId] = [];\n }\n routes[parentId].push(route);\n }\n });\n return routes;\n}\nfunction getRouteComponents(route, routeModule, isSpaMode) {\n let Component4 = getRouteModuleComponent(routeModule);\n let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === \"root\") ? routeModule.HydrateFallback : route.id === \"root\" ? RemixRootDefaultHydrateFallback : void 0;\n let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === \"root\" ? () => /* @__PURE__ */ React6.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;\n if (route.id === \"root\" && routeModule.Layout) {\n return {\n ...Component4 ? {\n element: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(Component4, null))\n } : { Component: Component4 },\n ...ErrorBoundary ? {\n errorElement: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(ErrorBoundary, null))\n } : { ErrorBoundary },\n ...HydrateFallback ? {\n hydrateFallbackElement: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(HydrateFallback, null))\n } : { HydrateFallback }\n };\n }\n return { Component: Component4, ErrorBoundary, HydrateFallback };\n}\nfunction createServerRoutes(manifest, routeModules, future, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), spaModeLazyPromise = Promise.resolve({ Component: () => null })) {\n return (routesByParentId[parentId] || []).map((route) => {\n let routeModule = routeModules[route.id];\n invariant2(\n routeModule,\n \"No `routeModule` available to create server routes\"\n );\n let dataRoute = {\n ...getRouteComponents(route, routeModule, isSpaMode),\n caseSensitive: route.caseSensitive,\n id: route.id,\n index: route.index,\n path: route.path,\n handle: routeModule.handle,\n // For SPA Mode, all routes are lazy except root. However we tell the\n // router root is also lazy here too since we don't need a full\n // implementation - we just need a `lazy` prop to tell the RR rendering\n // where to stop which is always at the root route in SPA mode\n lazy: isSpaMode ? () => spaModeLazyPromise : void 0,\n // For partial hydration rendering, we need to indicate when the route\n // has a loader/clientLoader, but it won't ever be called during the static\n // render, so just give it a no-op function so we can render down to the\n // proper fallback\n loader: route.hasLoader || route.hasClientLoader ? () => null : void 0\n // We don't need middleware/action/shouldRevalidate on these routes since\n // they're for a static render\n };\n let children = createServerRoutes(\n manifest,\n routeModules,\n future,\n isSpaMode,\n route.id,\n routesByParentId,\n spaModeLazyPromise\n );\n if (children.length > 0) dataRoute.children = children;\n return dataRoute;\n });\n}\nfunction createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, ssr, isSpaMode) {\n return createClientRoutes(\n manifest,\n routeModulesCache,\n initialState,\n ssr,\n isSpaMode,\n \"\",\n groupRoutesByParentId(manifest),\n needsRevalidation\n );\n}\nfunction preventInvalidServerHandlerCall(type, route) {\n if (type === \"loader\" && !route.hasLoader || type === \"action\" && !route.hasAction) {\n let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n let msg = `You are trying to call ${fn} on a route that does not have a server ${type} (routeId: \"${route.id}\")`;\n console.error(msg);\n throw new ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n }\n}\nfunction noActionDefinedError(type, routeId) {\n let article = type === \"clientAction\" ? \"a\" : \"an\";\n let msg = `Route \"${routeId}\" does not have ${article} ${type}, but you are trying to submit to it. To fix this, please add ${article} \\`${type}\\` function to the route`;\n console.error(msg);\n throw new ErrorResponseImpl(405, \"Method Not Allowed\", new Error(msg), true);\n}\nfunction createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {\n return (routesByParentId[parentId] || []).map((route) => {\n let routeModule = routeModulesCache[route.id];\n function fetchServerHandler(singleFetch) {\n invariant2(\n typeof singleFetch === \"function\",\n \"No single fetch function available for route handler\"\n );\n return singleFetch();\n }\n function fetchServerLoader(singleFetch) {\n if (!route.hasLoader) return Promise.resolve(null);\n return fetchServerHandler(singleFetch);\n }\n function fetchServerAction(singleFetch) {\n if (!route.hasAction) {\n throw noActionDefinedError(\"action\", route.id);\n }\n return fetchServerHandler(singleFetch);\n }\n function prefetchModule(modulePath) {\n import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n modulePath\n );\n }\n function prefetchRouteModuleChunks(route2) {\n if (route2.clientActionModule) {\n prefetchModule(route2.clientActionModule);\n }\n if (route2.clientLoaderModule) {\n prefetchModule(route2.clientLoaderModule);\n }\n }\n async function prefetchStylesAndCallHandler(handler) {\n let cachedModule = routeModulesCache[route.id];\n let linkPrefetchPromise = cachedModule ? prefetchStyleLinks(route, cachedModule) : Promise.resolve();\n try {\n return handler();\n } finally {\n await linkPrefetchPromise;\n }\n }\n let dataRoute = {\n id: route.id,\n index: route.index,\n path: route.path\n };\n if (routeModule) {\n Object.assign(dataRoute, {\n ...dataRoute,\n ...getRouteComponents(route, routeModule, isSpaMode),\n middleware: routeModule.clientMiddleware,\n handle: routeModule.handle,\n shouldRevalidate: getShouldRevalidateFunction(\n dataRoute.path,\n routeModule,\n route,\n ssr,\n needsRevalidation\n )\n });\n let hasInitialData = initialState && initialState.loaderData && route.id in initialState.loaderData;\n let initialData = hasInitialData ? initialState?.loaderData?.[route.id] : void 0;\n let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;\n let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;\n let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);\n dataRoute.loader = async ({ request, params, context, unstable_pattern }, singleFetch) => {\n try {\n let result = await prefetchStylesAndCallHandler(async () => {\n invariant2(\n routeModule,\n \"No `routeModule` available for critical-route loader\"\n );\n if (!routeModule.clientLoader) {\n return fetchServerLoader(singleFetch);\n }\n return routeModule.clientLoader({\n request,\n params,\n context,\n unstable_pattern,\n async serverLoader() {\n preventInvalidServerHandlerCall(\"loader\", route);\n if (isHydrationRequest) {\n if (hasInitialData) {\n return initialData;\n }\n if (hasInitialError) {\n throw initialError;\n }\n }\n return fetchServerLoader(singleFetch);\n }\n });\n });\n return result;\n } finally {\n isHydrationRequest = false;\n }\n };\n dataRoute.loader.hydrate = shouldHydrateRouteLoader(\n route.id,\n routeModule.clientLoader,\n route.hasLoader,\n isSpaMode\n );\n dataRoute.action = ({ request, params, context, unstable_pattern }, singleFetch) => {\n return prefetchStylesAndCallHandler(async () => {\n invariant2(\n routeModule,\n \"No `routeModule` available for critical-route action\"\n );\n if (!routeModule.clientAction) {\n if (isSpaMode) {\n throw noActionDefinedError(\"clientAction\", route.id);\n }\n return fetchServerAction(singleFetch);\n }\n return routeModule.clientAction({\n request,\n params,\n context,\n unstable_pattern,\n async serverAction() {\n preventInvalidServerHandlerCall(\"action\", route);\n return fetchServerAction(singleFetch);\n }\n });\n });\n };\n } else {\n if (!route.hasClientLoader) {\n dataRoute.loader = (_, singleFetch) => prefetchStylesAndCallHandler(() => {\n return fetchServerLoader(singleFetch);\n });\n }\n if (!route.hasClientAction) {\n dataRoute.action = (_, singleFetch) => prefetchStylesAndCallHandler(() => {\n if (isSpaMode) {\n throw noActionDefinedError(\"clientAction\", route.id);\n }\n return fetchServerAction(singleFetch);\n });\n }\n let lazyRoutePromise;\n async function getLazyRoute() {\n if (lazyRoutePromise) {\n return await lazyRoutePromise;\n }\n lazyRoutePromise = (async () => {\n if (route.clientLoaderModule || route.clientActionModule) {\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n let routeModulePromise = loadRouteModuleWithBlockingLinks(\n route,\n routeModulesCache\n );\n prefetchRouteModuleChunks(route);\n return await routeModulePromise;\n })();\n return await lazyRoutePromise;\n }\n dataRoute.lazy = {\n loader: route.hasClientLoader ? async () => {\n let { clientLoader } = route.clientLoaderModule ? await import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.clientLoaderModule\n ) : await getLazyRoute();\n invariant2(clientLoader, \"No `clientLoader` export found\");\n return (args, singleFetch) => clientLoader({\n ...args,\n async serverLoader() {\n preventInvalidServerHandlerCall(\"loader\", route);\n return fetchServerLoader(singleFetch);\n }\n });\n } : void 0,\n action: route.hasClientAction ? async () => {\n let clientActionPromise = route.clientActionModule ? import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.clientActionModule\n ) : getLazyRoute();\n prefetchRouteModuleChunks(route);\n let { clientAction } = await clientActionPromise;\n invariant2(clientAction, \"No `clientAction` export found\");\n return (args, singleFetch) => clientAction({\n ...args,\n async serverAction() {\n preventInvalidServerHandlerCall(\"action\", route);\n return fetchServerAction(singleFetch);\n }\n });\n } : void 0,\n middleware: route.hasClientMiddleware ? async () => {\n let { clientMiddleware } = route.clientMiddlewareModule ? await import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.clientMiddlewareModule\n ) : await getLazyRoute();\n invariant2(clientMiddleware, \"No `clientMiddleware` export found\");\n return clientMiddleware;\n } : void 0,\n shouldRevalidate: async () => {\n let lazyRoute = await getLazyRoute();\n return getShouldRevalidateFunction(\n dataRoute.path,\n lazyRoute,\n route,\n ssr,\n needsRevalidation\n );\n },\n handle: async () => (await getLazyRoute()).handle,\n // No need to wrap these in layout since the root route is never\n // loaded via route.lazy()\n Component: async () => (await getLazyRoute()).Component,\n ErrorBoundary: route.hasErrorBoundary ? async () => (await getLazyRoute()).ErrorBoundary : void 0\n };\n }\n let children = createClientRoutes(\n manifest,\n routeModulesCache,\n initialState,\n ssr,\n isSpaMode,\n route.id,\n routesByParentId,\n needsRevalidation\n );\n if (children.length > 0) dataRoute.children = children;\n return dataRoute;\n });\n}\nfunction getShouldRevalidateFunction(path, route, manifestRoute, ssr, needsRevalidation) {\n if (needsRevalidation) {\n return wrapShouldRevalidateForHdr(\n manifestRoute.id,\n route.shouldRevalidate,\n needsRevalidation\n );\n }\n if (!ssr && manifestRoute.hasLoader && !manifestRoute.hasClientLoader) {\n let myParams = path ? compilePath(path)[1].map((p) => p.paramName) : [];\n const didParamsChange = (opts) => myParams.some((p) => opts.currentParams[p] !== opts.nextParams[p]);\n if (route.shouldRevalidate) {\n let fn = route.shouldRevalidate;\n return (opts) => fn({\n ...opts,\n defaultShouldRevalidate: didParamsChange(opts)\n });\n } else {\n return (opts) => didParamsChange(opts);\n }\n }\n return route.shouldRevalidate;\n}\nfunction wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalidation) {\n let handledRevalidation = false;\n return (arg) => {\n if (!handledRevalidation) {\n handledRevalidation = true;\n return needsRevalidation.has(routeId);\n }\n return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;\n };\n}\nasync function loadRouteModuleWithBlockingLinks(route, routeModules) {\n let routeModulePromise = loadRouteModule(route, routeModules);\n let prefetchRouteCssPromise = prefetchRouteCss(route);\n let routeModule = await routeModulePromise;\n await Promise.all([\n prefetchRouteCssPromise,\n prefetchStyleLinks(route, routeModule)\n ]);\n return {\n Component: getRouteModuleComponent(routeModule),\n ErrorBoundary: routeModule.ErrorBoundary,\n clientMiddleware: routeModule.clientMiddleware,\n clientAction: routeModule.clientAction,\n clientLoader: routeModule.clientLoader,\n handle: routeModule.handle,\n links: routeModule.links,\n meta: routeModule.meta,\n shouldRevalidate: routeModule.shouldRevalidate\n };\n}\nfunction getRouteModuleComponent(routeModule) {\n if (routeModule.default == null) return void 0;\n let isEmptyObject = typeof routeModule.default === \"object\" && Object.keys(routeModule.default).length === 0;\n if (!isEmptyObject) {\n return routeModule.default;\n }\n}\nfunction shouldHydrateRouteLoader(routeId, clientLoader, hasLoader, isSpaMode) {\n return isSpaMode && routeId !== \"root\" || clientLoader != null && (clientLoader.hydrate === true || hasLoader !== true);\n}\n\n// lib/dom/ssr/fog-of-war.ts\nvar nextPaths = /* @__PURE__ */ new Set();\nvar discoveredPathsMaxSize = 1e3;\nvar discoveredPaths = /* @__PURE__ */ new Set();\nvar URL_LIMIT = 7680;\nfunction isFogOfWarEnabled(routeDiscovery, ssr) {\n return routeDiscovery.mode === \"lazy\" && ssr === true;\n}\nfunction getPartialManifest({ sri, ...manifest }, router) {\n let routeIds = new Set(router.state.matches.map((m) => m.route.id));\n let segments = router.state.location.pathname.split(\"/\").filter(Boolean);\n let paths = [\"/\"];\n segments.pop();\n while (segments.length > 0) {\n paths.push(`/${segments.join(\"/\")}`);\n segments.pop();\n }\n paths.forEach((path) => {\n let matches = matchRoutes(router.routes, path, router.basename);\n if (matches) {\n matches.forEach((m) => routeIds.add(m.route.id));\n }\n });\n let initialRoutes = [...routeIds].reduce(\n (acc, id) => Object.assign(acc, { [id]: manifest.routes[id] }),\n {}\n );\n return {\n ...manifest,\n routes: initialRoutes,\n sri: sri ? true : void 0\n };\n}\nfunction getPatchRoutesOnNavigationFunction(getRouter, manifest, routeModules, ssr, routeDiscovery, isSpaMode, basename) {\n if (!isFogOfWarEnabled(routeDiscovery, ssr)) {\n return void 0;\n }\n return async ({ path, patch, signal, fetcherKey }) => {\n if (discoveredPaths.has(path)) {\n return;\n }\n let { state } = getRouter();\n await fetchAndApplyManifestPatches(\n [path],\n // If we're patching for a fetcher call, reload the current location\n // Otherwise prefer any ongoing navigation location\n fetcherKey ? window.location.href : createPath(state.navigation.location || state.location),\n manifest,\n routeModules,\n ssr,\n isSpaMode,\n basename,\n routeDiscovery.manifestPath,\n patch,\n signal\n );\n };\n}\nfunction useFogOFWarDiscovery(router, manifest, routeModules, ssr, routeDiscovery, isSpaMode) {\n React7.useEffect(() => {\n if (!isFogOfWarEnabled(routeDiscovery, ssr) || // @ts-expect-error - TS doesn't know about this yet\n window.navigator?.connection?.saveData === true) {\n return;\n }\n function registerElement(el) {\n let path = el.tagName === \"FORM\" ? el.getAttribute(\"action\") : el.getAttribute(\"href\");\n if (!path) {\n return;\n }\n let pathname = el.tagName === \"A\" ? el.pathname : new URL(path, window.location.origin).pathname;\n if (!discoveredPaths.has(pathname)) {\n nextPaths.add(pathname);\n }\n }\n async function fetchPatches() {\n document.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach(registerElement);\n let lazyPaths = Array.from(nextPaths.keys()).filter((path) => {\n if (discoveredPaths.has(path)) {\n nextPaths.delete(path);\n return false;\n }\n return true;\n });\n if (lazyPaths.length === 0) {\n return;\n }\n try {\n await fetchAndApplyManifestPatches(\n lazyPaths,\n null,\n manifest,\n routeModules,\n ssr,\n isSpaMode,\n router.basename,\n routeDiscovery.manifestPath,\n router.patchRoutes\n );\n } catch (e) {\n console.error(\"Failed to fetch manifest patches\", e);\n }\n }\n let debouncedFetchPatches = debounce(fetchPatches, 100);\n fetchPatches();\n let observer = new MutationObserver(() => debouncedFetchPatches());\n observer.observe(document.documentElement, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\"data-discover\", \"href\", \"action\"]\n });\n return () => observer.disconnect();\n }, [ssr, isSpaMode, manifest, routeModules, router, routeDiscovery]);\n}\nfunction getManifestPath(_manifestPath, basename) {\n let manifestPath = _manifestPath || \"/__manifest\";\n if (basename == null) {\n return manifestPath;\n }\n return `${basename}${manifestPath}`.replace(/\\/+/g, \"/\");\n}\nvar MANIFEST_VERSION_STORAGE_KEY = \"react-router-manifest-version\";\nasync function fetchAndApplyManifestPatches(paths, errorReloadPath, manifest, routeModules, ssr, isSpaMode, basename, manifestPath, patchRoutes, signal) {\n const searchParams = new URLSearchParams();\n searchParams.set(\"paths\", paths.sort().join(\",\"));\n searchParams.set(\"version\", manifest.version);\n let url = new URL(\n getManifestPath(manifestPath, basename),\n window.location.origin\n );\n url.search = searchParams.toString();\n if (url.toString().length > URL_LIMIT) {\n nextPaths.clear();\n return;\n }\n let serverPatches;\n try {\n let res = await fetch(url, { signal });\n if (!res.ok) {\n throw new Error(`${res.status} ${res.statusText}`);\n } else if (res.status === 204 && res.headers.has(\"X-Remix-Reload-Document\")) {\n if (!errorReloadPath) {\n console.warn(\n \"Detected a manifest version mismatch during eager route discovery. The next navigation/fetch to an undiscovered route will result in a new document navigation to sync up with the latest manifest.\"\n );\n return;\n }\n try {\n if (sessionStorage.getItem(MANIFEST_VERSION_STORAGE_KEY) === manifest.version) {\n console.error(\n \"Unable to discover routes due to manifest version mismatch.\"\n );\n return;\n }\n sessionStorage.setItem(MANIFEST_VERSION_STORAGE_KEY, manifest.version);\n } catch {\n }\n window.location.href = errorReloadPath;\n console.warn(\"Detected manifest version mismatch, reloading...\");\n await new Promise(() => {\n });\n } else if (res.status >= 400) {\n throw new Error(await res.text());\n }\n try {\n sessionStorage.removeItem(MANIFEST_VERSION_STORAGE_KEY);\n } catch {\n }\n serverPatches = await res.json();\n } catch (e) {\n if (signal?.aborted) return;\n throw e;\n }\n let knownRoutes = new Set(Object.keys(manifest.routes));\n let patches = Object.values(serverPatches).reduce((acc, route) => {\n if (route && !knownRoutes.has(route.id)) {\n acc[route.id] = route;\n }\n return acc;\n }, {});\n Object.assign(manifest.routes, patches);\n paths.forEach((p) => addToFifoQueue(p, discoveredPaths));\n let parentIds = /* @__PURE__ */ new Set();\n Object.values(patches).forEach((patch) => {\n if (patch && (!patch.parentId || !patches[patch.parentId])) {\n parentIds.add(patch.parentId);\n }\n });\n parentIds.forEach(\n (parentId) => patchRoutes(\n parentId || null,\n createClientRoutes(patches, routeModules, null, ssr, isSpaMode, parentId)\n )\n );\n}\nfunction addToFifoQueue(path, queue) {\n if (queue.size >= discoveredPathsMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n}\nfunction debounce(callback, wait) {\n let timeoutId;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => callback(...args), wait);\n };\n}\n\n// lib/dom/ssr/components.tsx\nfunction useDataRouterContext2() {\n let context = React8.useContext(DataRouterContext);\n invariant2(\n context,\n \"You must render this element inside a <DataRouterContext.Provider> element\"\n );\n return context;\n}\nfunction useDataRouterStateContext() {\n let context = React8.useContext(DataRouterStateContext);\n invariant2(\n context,\n \"You must render this element inside a <DataRouterStateContext.Provider> element\"\n );\n return context;\n}\nvar FrameworkContext = React8.createContext(void 0);\nFrameworkContext.displayName = \"FrameworkContext\";\nfunction useFrameworkContext() {\n let context = React8.useContext(FrameworkContext);\n invariant2(\n context,\n \"You must render this element inside a <HydratedRouter> element\"\n );\n return context;\n}\nfunction usePrefetchBehavior(prefetch, theirElementProps) {\n let frameworkContext = React8.useContext(FrameworkContext);\n let [maybePrefetch, setMaybePrefetch] = React8.useState(false);\n let [shouldPrefetch, setShouldPrefetch] = React8.useState(false);\n let { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;\n let ref = React8.useRef(null);\n React8.useEffect(() => {\n if (prefetch === \"render\") {\n setShouldPrefetch(true);\n }\n if (prefetch === \"viewport\") {\n let callback = (entries) => {\n entries.forEach((entry) => {\n setShouldPrefetch(entry.isIntersecting);\n });\n };\n let observer = new IntersectionObserver(callback, { threshold: 0.5 });\n if (ref.current) observer.observe(ref.current);\n return () => {\n observer.disconnect();\n };\n }\n }, [prefetch]);\n React8.useEffect(() => {\n if (maybePrefetch) {\n let id = setTimeout(() => {\n setShouldPrefetch(true);\n }, 100);\n return () => {\n clearTimeout(id);\n };\n }\n }, [maybePrefetch]);\n let setIntent = () => {\n setMaybePrefetch(true);\n };\n let cancelIntent = () => {\n setMaybePrefetch(false);\n setShouldPrefetch(false);\n };\n if (!frameworkContext) {\n return [false, ref, {}];\n }\n if (prefetch !== \"intent\") {\n return [shouldPrefetch, ref, {}];\n }\n return [\n shouldPrefetch,\n ref,\n {\n onFocus: composeEventHandlers(onFocus, setIntent),\n onBlur: composeEventHandlers(onBlur, cancelIntent),\n onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),\n onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),\n onTouchStart: composeEventHandlers(onTouchStart, setIntent)\n }\n ];\n}\nfunction composeEventHandlers(theirHandler, ourHandler) {\n return (event) => {\n theirHandler && theirHandler(event);\n if (!event.defaultPrevented) {\n ourHandler(event);\n }\n };\n}\nfunction getActiveMatches(matches, errors, isSpaMode) {\n if (isSpaMode && !isHydrated) {\n return [matches[0]];\n }\n if (errors) {\n let errorIdx = matches.findIndex((m) => errors[m.route.id] !== void 0);\n return matches.slice(0, errorIdx + 1);\n }\n return matches;\n}\nvar CRITICAL_CSS_DATA_ATTRIBUTE = \"data-react-router-critical-css\";\nfunction Links({ nonce, crossOrigin }) {\n let { isSpaMode, manifest, routeModules, criticalCss } = useFrameworkContext();\n let { errors, matches: routerMatches } = useDataRouterStateContext();\n let matches = getActiveMatches(routerMatches, errors, isSpaMode);\n let keyedLinks = React8.useMemo(\n () => getKeyedLinksForMatches(matches, routeModules, manifest),\n [matches, routeModules, manifest]\n );\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, typeof criticalCss === \"string\" ? /* @__PURE__ */ React8.createElement(\n \"style\",\n {\n ...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: \"\" },\n nonce,\n dangerouslySetInnerHTML: { __html: criticalCss }\n }\n ) : null, typeof criticalCss === \"object\" ? /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n ...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: \"\" },\n rel: \"stylesheet\",\n href: criticalCss.href,\n nonce,\n crossOrigin\n }\n ) : null, keyedLinks.map(\n ({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React8.createElement(\n PrefetchPageLinks,\n {\n key,\n nonce,\n ...link,\n crossOrigin: link.crossOrigin ?? crossOrigin\n }\n ) : /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n key,\n nonce,\n ...link,\n crossOrigin: link.crossOrigin ?? crossOrigin\n }\n )\n ));\n}\nfunction PrefetchPageLinks({ page, ...linkProps }) {\n let { router } = useDataRouterContext2();\n let matches = React8.useMemo(\n () => matchRoutes(router.routes, page, router.basename),\n [router.routes, page, router.basename]\n );\n if (!matches) {\n return null;\n }\n return /* @__PURE__ */ React8.createElement(PrefetchPageLinksImpl, { page, matches, ...linkProps });\n}\nfunction useKeyedPrefetchLinks(matches) {\n let { manifest, routeModules } = useFrameworkContext();\n let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React8.useState([]);\n React8.useEffect(() => {\n let interrupted = false;\n void getKeyedPrefetchLinks(matches, manifest, routeModules).then(\n (links) => {\n if (!interrupted) {\n setKeyedPrefetchLinks(links);\n }\n }\n );\n return () => {\n interrupted = true;\n };\n }, [matches, manifest, routeModules]);\n return keyedPrefetchLinks;\n}\nfunction PrefetchPageLinksImpl({\n page,\n matches: nextMatches,\n ...linkProps\n}) {\n let location = useLocation();\n let { future, manifest, routeModules } = useFrameworkContext();\n let { basename } = useDataRouterContext2();\n let { loaderData, matches } = useDataRouterStateContext();\n let newMatchesForData = React8.useMemo(\n () => getNewMatchesForLinks(\n page,\n nextMatches,\n matches,\n manifest,\n location,\n \"data\"\n ),\n [page, nextMatches, matches, manifest, location]\n );\n let newMatchesForAssets = React8.useMemo(\n () => getNewMatchesForLinks(\n page,\n nextMatches,\n matches,\n manifest,\n location,\n \"assets\"\n ),\n [page, nextMatches, matches, manifest, location]\n );\n let dataHrefs = React8.useMemo(() => {\n if (page === location.pathname + location.search + location.hash) {\n return [];\n }\n let routesParams = /* @__PURE__ */ new Set();\n let foundOptOutRoute = false;\n nextMatches.forEach((m) => {\n let manifestRoute = manifest.routes[m.route.id];\n if (!manifestRoute || !manifestRoute.hasLoader) {\n return;\n }\n if (!newMatchesForData.some((m2) => m2.route.id === m.route.id) && m.route.id in loaderData && routeModules[m.route.id]?.shouldRevalidate) {\n foundOptOutRoute = true;\n } else if (manifestRoute.hasClientLoader) {\n foundOptOutRoute = true;\n } else {\n routesParams.add(m.route.id);\n }\n });\n if (routesParams.size === 0) {\n return [];\n }\n let url = singleFetchUrl(\n page,\n basename,\n future.unstable_trailingSlashAwareDataRequests,\n \"data\"\n );\n if (foundOptOutRoute && routesParams.size > 0) {\n url.searchParams.set(\n \"_routes\",\n nextMatches.filter((m) => routesParams.has(m.route.id)).map((m) => m.route.id).join(\",\")\n );\n }\n return [url.pathname + url.search];\n }, [\n basename,\n future.unstable_trailingSlashAwareDataRequests,\n loaderData,\n location,\n manifest,\n newMatchesForData,\n nextMatches,\n page,\n routeModules\n ]);\n let moduleHrefs = React8.useMemo(\n () => getModuleLinkHrefs(newMatchesForAssets, manifest),\n [newMatchesForAssets, manifest]\n );\n let keyedPrefetchLinks = useKeyedPrefetchLinks(newMatchesForAssets);\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"prefetch\", as: \"fetch\", href, ...linkProps })), moduleHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"modulepreload\", href, ...linkProps })), keyedPrefetchLinks.map(({ key, link }) => (\n // these don't spread `linkProps` because they are full link descriptors\n // already with their own props\n /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n key,\n nonce: linkProps.nonce,\n ...link,\n crossOrigin: link.crossOrigin ?? linkProps.crossOrigin\n }\n )\n )));\n}\nfunction Meta() {\n let { isSpaMode, routeModules } = useFrameworkContext();\n let {\n errors,\n matches: routerMatches,\n loaderData\n } = useDataRouterStateContext();\n let location = useLocation();\n let _matches = getActiveMatches(routerMatches, errors, isSpaMode);\n let error = null;\n if (errors) {\n error = errors[_matches[_matches.length - 1].route.id];\n }\n let meta = [];\n let leafMeta = null;\n let matches = [];\n for (let i = 0; i < _matches.length; i++) {\n let _match = _matches[i];\n let routeId = _match.route.id;\n let data2 = loaderData[routeId];\n let params = _match.params;\n let routeModule = routeModules[routeId];\n let routeMeta = [];\n let match = {\n id: routeId,\n data: data2,\n loaderData: data2,\n meta: [],\n params: _match.params,\n pathname: _match.pathname,\n handle: _match.route.handle,\n error\n };\n matches[i] = match;\n if (routeModule?.meta) {\n routeMeta = typeof routeModule.meta === \"function\" ? routeModule.meta({\n data: data2,\n loaderData: data2,\n params,\n location,\n matches,\n error\n }) : Array.isArray(routeModule.meta) ? [...routeModule.meta] : routeModule.meta;\n } else if (leafMeta) {\n routeMeta = [...leafMeta];\n }\n routeMeta = routeMeta || [];\n if (!Array.isArray(routeMeta)) {\n throw new Error(\n \"The route at \" + _match.route.path + \" returns an invalid value. All route meta functions must return an array of meta objects.\\n\\nTo reference the meta function API, see https://reactrouter.com/start/framework/route-module#meta\"\n );\n }\n match.meta = routeMeta;\n matches[i] = match;\n meta = [...routeMeta];\n leafMeta = meta;\n }\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, meta.flat().map((metaProps) => {\n if (!metaProps) {\n return null;\n }\n if (\"tagName\" in metaProps) {\n let { tagName, ...rest } = metaProps;\n if (!isValidMetaTag(tagName)) {\n console.warn(\n `A meta object uses an invalid tagName: ${tagName}. Expected either 'link' or 'meta'`\n );\n return null;\n }\n let Comp = tagName;\n return /* @__PURE__ */ React8.createElement(Comp, { key: JSON.stringify(rest), ...rest });\n }\n if (\"title\" in metaProps) {\n return /* @__PURE__ */ React8.createElement(\"title\", { key: \"title\" }, String(metaProps.title));\n }\n if (\"charset\" in metaProps) {\n metaProps.charSet ?? (metaProps.charSet = metaProps.charset);\n delete metaProps.charset;\n }\n if (\"charSet\" in metaProps && metaProps.charSet != null) {\n return typeof metaProps.charSet === \"string\" ? /* @__PURE__ */ React8.createElement(\"meta\", { key: \"charSet\", charSet: metaProps.charSet }) : null;\n }\n if (\"script:ld+json\" in metaProps) {\n try {\n let json = JSON.stringify(metaProps[\"script:ld+json\"]);\n return /* @__PURE__ */ React8.createElement(\n \"script\",\n {\n key: `script:ld+json:${json}`,\n type: \"application/ld+json\",\n dangerouslySetInnerHTML: { __html: escapeHtml(json) }\n }\n );\n } catch (err) {\n return null;\n }\n }\n return /* @__PURE__ */ React8.createElement(\"meta\", { key: JSON.stringify(metaProps), ...metaProps });\n }));\n}\nfunction isValidMetaTag(tagName) {\n return typeof tagName === \"string\" && /^(meta|link)$/.test(tagName);\n}\nvar isHydrated = false;\nfunction setIsHydrated() {\n isHydrated = true;\n}\nfunction Scripts(scriptProps) {\n let {\n manifest,\n serverHandoffString,\n isSpaMode,\n renderMeta,\n routeDiscovery,\n ssr\n } = useFrameworkContext();\n let { router, static: isStatic, staticContext } = useDataRouterContext2();\n let { matches: routerMatches } = useDataRouterStateContext();\n let isRSCRouterContext = useIsRSCRouterContext();\n let enableFogOfWar = isFogOfWarEnabled(routeDiscovery, ssr);\n if (renderMeta) {\n renderMeta.didRenderScripts = true;\n }\n let matches = getActiveMatches(routerMatches, null, isSpaMode);\n React8.useEffect(() => {\n setIsHydrated();\n }, []);\n let initialScripts = React8.useMemo(() => {\n if (isRSCRouterContext) {\n return null;\n }\n let streamScript = \"window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());\";\n let contextScript = staticContext ? `window.__reactRouterContext = ${serverHandoffString};${streamScript}` : \" \";\n let routeModulesScript = !isStatic ? \" \" : `${manifest.hmr?.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : \"\"}${!enableFogOfWar ? `import ${JSON.stringify(manifest.url)}` : \"\"};\n${matches.map((match, routeIndex) => {\n let routeVarName = `route${routeIndex}`;\n let manifestEntry = manifest.routes[match.route.id];\n invariant2(manifestEntry, `Route ${match.route.id} not found in manifest`);\n let {\n clientActionModule,\n clientLoaderModule,\n clientMiddlewareModule,\n hydrateFallbackModule,\n module\n } = manifestEntry;\n let chunks = [\n ...clientActionModule ? [\n {\n module: clientActionModule,\n varName: `${routeVarName}_clientAction`\n }\n ] : [],\n ...clientLoaderModule ? [\n {\n module: clientLoaderModule,\n varName: `${routeVarName}_clientLoader`\n }\n ] : [],\n ...clientMiddlewareModule ? [\n {\n module: clientMiddlewareModule,\n varName: `${routeVarName}_clientMiddleware`\n }\n ] : [],\n ...hydrateFallbackModule ? [\n {\n module: hydrateFallbackModule,\n varName: `${routeVarName}_HydrateFallback`\n }\n ] : [],\n { module, varName: `${routeVarName}_main` }\n ];\n if (chunks.length === 1) {\n return `import * as ${routeVarName} from ${JSON.stringify(module)};`;\n }\n let chunkImportsSnippet = chunks.map((chunk) => `import * as ${chunk.varName} from \"${chunk.module}\";`).join(\"\\n\");\n let mergedChunksSnippet = `const ${routeVarName} = {${chunks.map((chunk) => `...${chunk.varName}`).join(\",\")}};`;\n return [chunkImportsSnippet, mergedChunksSnippet].join(\"\\n\");\n }).join(\"\\n\")}\n ${enableFogOfWar ? (\n // Inline a minimal manifest with the SSR matches\n `window.__reactRouterManifest = ${JSON.stringify(\n getPartialManifest(manifest, router),\n null,\n 2\n )};`\n ) : \"\"}\n window.__reactRouterRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(\",\")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`;\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(\n \"script\",\n {\n ...scriptProps,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: { __html: contextScript },\n type: void 0\n }\n ), /* @__PURE__ */ React8.createElement(\n \"script\",\n {\n ...scriptProps,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: { __html: routeModulesScript },\n type: \"module\",\n async: true\n }\n ));\n }, []);\n let preloads = isHydrated || isRSCRouterContext ? [] : dedupe(\n manifest.entry.imports.concat(\n getModuleLinkHrefs(matches, manifest, {\n includeHydrateFallback: true\n })\n )\n );\n let sri = typeof manifest.sri === \"object\" ? manifest.sri : {};\n warnOnce(\n !isRSCRouterContext,\n \"The <Scripts /> element is a no-op when using RSC and can be safely removed.\"\n );\n return isHydrated || isRSCRouterContext ? null : /* @__PURE__ */ React8.createElement(React8.Fragment, null, typeof manifest.sri === \"object\" ? /* @__PURE__ */ React8.createElement(\n \"script\",\n {\n ...scriptProps,\n \"rr-importmap\": \"\",\n type: \"importmap\",\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: JSON.stringify({\n integrity: sri\n })\n }\n }\n ) : null, !enableFogOfWar ? /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n rel: \"modulepreload\",\n href: manifest.url,\n crossOrigin: scriptProps.crossOrigin,\n integrity: sri[manifest.url],\n suppressHydrationWarning: true\n }\n ) : null, /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n rel: \"modulepreload\",\n href: manifest.entry.module,\n crossOrigin: scriptProps.crossOrigin,\n integrity: sri[manifest.entry.module],\n suppressHydrationWarning: true\n }\n ), preloads.map((path) => /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n key: path,\n rel: \"modulepreload\",\n href: path,\n crossOrigin: scriptProps.crossOrigin,\n integrity: sri[path],\n suppressHydrationWarning: true\n }\n )), initialScripts);\n}\nfunction dedupe(array) {\n return [...new Set(array)];\n}\nfunction mergeRefs(...refs) {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\n// lib/dom/ssr/errorBoundaries.tsx\nvar RemixErrorBoundary = class extends React9.Component {\n constructor(props) {\n super(props);\n this.state = { error: props.error || null, location: props.location };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n static getDerivedStateFromProps(props, state) {\n if (state.location !== props.location) {\n return { error: props.error || null, location: props.location };\n }\n return { error: props.error || state.error, location: state.location };\n }\n render() {\n if (this.state.error) {\n return /* @__PURE__ */ React9.createElement(\n RemixRootDefaultErrorBoundary,\n {\n error: this.state.error,\n isOutsideRemixApp: true\n }\n );\n } else {\n return this.props.children;\n }\n }\n};\nfunction RemixRootDefaultErrorBoundary({\n error,\n isOutsideRemixApp\n}) {\n console.error(error);\n let heyDeveloper = /* @__PURE__ */ React9.createElement(\n \"script\",\n {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information.\"\n );\n `\n }\n }\n );\n if (isRouteErrorResponse(error)) {\n return /* @__PURE__ */ React9.createElement(BoundaryShell, { title: \"Unhandled Thrown Response!\" }, /* @__PURE__ */ React9.createElement(\"h1\", { style: { fontSize: \"24px\" } }, error.status, \" \", error.statusText), ENABLE_DEV_WARNINGS ? heyDeveloper : null);\n }\n let errorInstance;\n if (error instanceof Error) {\n errorInstance = error;\n } else {\n let errorString = error == null ? \"Unknown Error\" : typeof error === \"object\" && \"toString\" in error ? error.toString() : JSON.stringify(error);\n errorInstance = new Error(errorString);\n }\n return /* @__PURE__ */ React9.createElement(\n BoundaryShell,\n {\n title: \"Application Error!\",\n isOutsideRemixApp\n },\n /* @__PURE__ */ React9.createElement(\"h1\", { style: { fontSize: \"24px\" } }, \"Application Error\"),\n /* @__PURE__ */ React9.createElement(\n \"pre\",\n {\n style: {\n padding: \"2rem\",\n background: \"hsla(10, 50%, 50%, 0.1)\",\n color: \"red\",\n overflow: \"auto\"\n }\n },\n errorInstance.stack\n ),\n heyDeveloper\n );\n}\nfunction BoundaryShell({\n title,\n renderScripts,\n isOutsideRemixApp,\n children\n}) {\n let { routeModules } = useFrameworkContext();\n if (routeModules.root?.Layout && !isOutsideRemixApp) {\n return children;\n }\n return /* @__PURE__ */ React9.createElement(\"html\", { lang: \"en\" }, /* @__PURE__ */ React9.createElement(\"head\", null, /* @__PURE__ */ React9.createElement(\"meta\", { charSet: \"utf-8\" }), /* @__PURE__ */ React9.createElement(\n \"meta\",\n {\n name: \"viewport\",\n content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n }\n ), /* @__PURE__ */ React9.createElement(\"title\", null, title)), /* @__PURE__ */ React9.createElement(\"body\", null, /* @__PURE__ */ React9.createElement(\"main\", { style: { fontFamily: \"system-ui, sans-serif\", padding: \"2rem\" } }, children, renderScripts ? /* @__PURE__ */ React9.createElement(Scripts, null) : null)));\n}\n\n// lib/dom/lib.tsx\nimport * as React10 from \"react\";\nvar isBrowser2 = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\ntry {\n if (isBrowser2) {\n window.__reactRouterVersion = // @ts-expect-error\n \"7.13.1\";\n }\n} catch (e) {\n}\nfunction createBrowserRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n getContext: opts?.getContext,\n future: opts?.future,\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n hydrationRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n window: opts?.window,\n unstable_instrumentations: opts?.unstable_instrumentations\n }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n getContext: opts?.getContext,\n future: opts?.future,\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n hydrationRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n window: opts?.window,\n unstable_instrumentations: opts?.unstable_instrumentations\n }).initialize();\n}\nfunction parseHydrationData() {\n let state = window?.__staticRouterHydrationData;\n if (state && state.errors) {\n state = {\n ...state,\n errors: deserializeErrors(state.errors)\n };\n }\n return state;\n}\nfunction deserializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponseImpl(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n let error = new ErrorConstructor(val.message);\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n }\n }\n }\n if (serialized[key] == null) {\n let error = new Error(val.message);\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction BrowserRouter({\n basename,\n children,\n unstable_useTransitions,\n window: window2\n}) {\n let historyRef = React10.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window: window2, v5Compat: true });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React10.startTransition(() => setStateImpl(newState));\n }\n },\n [unstable_useTransitions]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n unstable_useTransitions\n }\n );\n}\nfunction HashRouter({\n basename,\n children,\n unstable_useTransitions,\n window: window2\n}) {\n let historyRef = React10.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window: window2, v5Compat: true });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React10.startTransition(() => setStateImpl(newState));\n }\n },\n [unstable_useTransitions]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n unstable_useTransitions\n }\n );\n}\nfunction HistoryRouter({\n basename,\n children,\n history,\n unstable_useTransitions\n}) {\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React10.startTransition(() => setStateImpl(newState));\n }\n },\n [unstable_useTransitions]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n unstable_useTransitions\n }\n );\n}\nHistoryRouter.displayName = \"unstable_HistoryRouter\";\nvar ABSOLUTE_URL_REGEX2 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar Link = React10.forwardRef(\n function LinkWithRef({\n onClick,\n discover = \"render\",\n prefetch = \"none\",\n relative,\n reloadDocument,\n replace: replace2,\n unstable_mask,\n state,\n target,\n to,\n preventScrollReset,\n viewTransition,\n unstable_defaultShouldRevalidate,\n ...rest\n }, forwardedRef) {\n let { basename, navigator, unstable_useTransitions } = React10.useContext(NavigationContext);\n let isAbsolute = typeof to === \"string\" && ABSOLUTE_URL_REGEX2.test(to);\n let parsed = parseToInfo(to, basename);\n to = parsed.to;\n let href = useHref(to, { relative });\n let location = useLocation();\n let maskedHref = null;\n if (unstable_mask) {\n let resolved = resolveTo(\n unstable_mask,\n [],\n location.unstable_mask ? location.unstable_mask.pathname : \"/\",\n true\n );\n if (basename !== \"/\") {\n resolved.pathname = resolved.pathname === \"/\" ? basename : joinPaths([basename, resolved.pathname]);\n }\n maskedHref = navigator.createHref(resolved);\n }\n let [shouldPrefetch, prefetchRef, prefetchHandlers] = usePrefetchBehavior(\n prefetch,\n rest\n );\n let internalOnClick = useLinkClickHandler(to, {\n replace: replace2,\n unstable_mask,\n state,\n target,\n preventScrollReset,\n relative,\n viewTransition,\n unstable_defaultShouldRevalidate,\n unstable_useTransitions\n });\n function handleClick(event) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n let isSpaLink = !(parsed.isExternal || reloadDocument);\n let link = (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n /* @__PURE__ */ React10.createElement(\n \"a\",\n {\n ...rest,\n ...prefetchHandlers,\n href: (isSpaLink ? maskedHref : void 0) || parsed.absoluteURL || href,\n onClick: isSpaLink ? handleClick : onClick,\n ref: mergeRefs(forwardedRef, prefetchRef),\n target,\n \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n }\n )\n );\n return shouldPrefetch && !isAbsolute ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, link, /* @__PURE__ */ React10.createElement(PrefetchPageLinks, { page: href })) : link;\n }\n);\nLink.displayName = \"Link\";\nvar NavLink = React10.forwardRef(\n function NavLinkWithRef({\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n viewTransition,\n children,\n ...rest\n }, ref) {\n let path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React10.useContext(DataRouterStateContext);\n let { navigator, basename } = React10.useContext(NavigationContext);\n let isTransitioning = routerState != null && // 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 useViewTransitionState(path) && viewTransition === true;\n let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n toPathname = toPathname.toLowerCase();\n }\n if (nextLocationPathname && basename) {\n nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n }\n const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n let renderProps = {\n isActive,\n isPending,\n isTransitioning\n };\n let ariaCurrent = isActive ? ariaCurrentProp : void 0;\n let className;\n if (typeof classNameProp === \"function\") {\n className = classNameProp(renderProps);\n } else {\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n isTransitioning ? \"transitioning\" : null\n ].filter(Boolean).join(\" \");\n }\n let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n return /* @__PURE__ */ React10.createElement(\n Link,\n {\n ...rest,\n \"aria-current\": ariaCurrent,\n className,\n ref,\n style,\n to,\n viewTransition\n },\n typeof children === \"function\" ? children(renderProps) : children\n );\n }\n);\nNavLink.displayName = \"NavLink\";\nvar Form = React10.forwardRef(\n ({\n discover = \"render\",\n fetcherKey,\n navigate,\n reloadDocument,\n replace: replace2,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n relative,\n preventScrollReset,\n viewTransition,\n unstable_defaultShouldRevalidate,\n ...props\n }, forwardedRef) => {\n let { unstable_useTransitions } = React10.useContext(NavigationContext);\n let submit = useSubmit();\n let formAction = useFormAction(action, { relative });\n let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let isAbsolute = typeof action === \"string\" && ABSOLUTE_URL_REGEX2.test(action);\n let submitHandler = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n let submitter = event.nativeEvent.submitter;\n let submitMethod = submitter?.getAttribute(\"formmethod\") || method;\n let doSubmit = () => submit(submitter || event.currentTarget, {\n fetcherKey,\n method: submitMethod,\n navigate,\n replace: replace2,\n state,\n relative,\n preventScrollReset,\n viewTransition,\n unstable_defaultShouldRevalidate\n });\n if (unstable_useTransitions && navigate !== false) {\n React10.startTransition(() => doSubmit());\n } else {\n doSubmit();\n }\n };\n return /* @__PURE__ */ React10.createElement(\n \"form\",\n {\n ref: forwardedRef,\n method: formMethod,\n action: formAction,\n onSubmit: reloadDocument ? onSubmit : submitHandler,\n ...props,\n \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n }\n );\n }\n);\nForm.displayName = \"Form\";\nfunction ScrollRestoration({\n getKey,\n storageKey,\n ...props\n}) {\n let remixContext = React10.useContext(FrameworkContext);\n let { basename } = React10.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n useScrollRestoration({ getKey, storageKey });\n let ssrKey = React10.useMemo(\n () => {\n if (!remixContext || !getKey) return null;\n let userKey = getScrollRestorationKey(\n location,\n matches,\n basename,\n getKey\n );\n return userKey !== location.key ? userKey : null;\n },\n // Nah, we only need this the first time for the SSR render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n if (!remixContext || remixContext.isSpaMode) {\n return null;\n }\n let restoreScroll = ((storageKey2, restoreKey) => {\n if (!window.history.state || !window.history.state.key) {\n let key = Math.random().toString(32).slice(2);\n window.history.replaceState({ key }, \"\");\n }\n try {\n let positions = JSON.parse(sessionStorage.getItem(storageKey2) || \"{}\");\n let storedY = positions[restoreKey || window.history.state.key];\n if (typeof storedY === \"number\") {\n window.scrollTo(0, storedY);\n }\n } catch (error) {\n console.error(error);\n sessionStorage.removeItem(storageKey2);\n }\n }).toString();\n return /* @__PURE__ */ React10.createElement(\n \"script\",\n {\n ...props,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: `(${restoreScroll})(${escapeHtml(\n JSON.stringify(storageKey || SCROLL_RESTORATION_STORAGE_KEY)\n )}, ${escapeHtml(JSON.stringify(ssrKey))})`\n }\n }\n );\n}\nScrollRestoration.displayName = \"ScrollRestoration\";\nfunction getDataRouterConsoleError2(hookName) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext3(hookName) {\n let ctx = React10.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError2(hookName));\n return ctx;\n}\nfunction useDataRouterState2(hookName) {\n let state = React10.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError2(hookName));\n return state;\n}\nfunction useLinkClickHandler(to, {\n target,\n replace: replaceProp,\n unstable_mask,\n state,\n preventScrollReset,\n relative,\n viewTransition,\n unstable_defaultShouldRevalidate,\n unstable_useTransitions\n} = {}) {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n return React10.useCallback(\n (event) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n let replace2 = replaceProp !== void 0 ? replaceProp : createPath(location) === createPath(path);\n let doNavigate = () => navigate(to, {\n replace: replace2,\n unstable_mask,\n state,\n preventScrollReset,\n relative,\n viewTransition,\n unstable_defaultShouldRevalidate\n });\n if (unstable_useTransitions) {\n React10.startTransition(() => doNavigate());\n } else {\n doNavigate();\n }\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n unstable_mask,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n viewTransition,\n unstable_defaultShouldRevalidate,\n unstable_useTransitions\n ]\n );\n}\nfunction useSearchParams(defaultInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.`\n );\n let defaultSearchParamsRef = React10.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React10.useRef(false);\n let location = useLocation();\n let searchParams = React10.useMemo(\n () => (\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(\n location.search,\n hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n )\n ),\n [location.search]\n );\n let navigate = useNavigate();\n let setSearchParams = React10.useCallback(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(new URLSearchParams(searchParams)) : nextInit\n );\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n return [searchParams, setSearchParams];\n}\nvar fetcherId = 0;\nvar getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\nfunction useSubmit() {\n let { router } = useDataRouterContext3(\"useSubmit\" /* UseSubmit */);\n let { basename } = React10.useContext(NavigationContext);\n let currentRouteId = useRouteId();\n let routerFetch = router.fetch;\n let routerNavigate = router.navigate;\n return React10.useCallback(\n async (target, options = {}) => {\n let { action, method, encType, formData, body } = getFormSubmissionInfo(\n target,\n basename\n );\n if (options.navigate === false) {\n let key = options.fetcherKey || getUniqueFetcherId();\n await routerFetch(key, currentRouteId, options.action || action, {\n unstable_defaultShouldRevalidate: options.unstable_defaultShouldRevalidate,\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n flushSync: options.flushSync\n });\n } else {\n await routerNavigate(options.action || action, {\n unstable_defaultShouldRevalidate: options.unstable_defaultShouldRevalidate,\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n flushSync: options.flushSync,\n viewTransition: options.viewTransition\n });\n }\n },\n [routerFetch, routerNavigate, basename, currentRouteId]\n );\n}\nfunction useFormAction(action, { relative } = {}) {\n let { basename } = React10.useContext(NavigationContext);\n let routeContext = React10.useContext(RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n let [match] = routeContext.matches.slice(-1);\n let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n let location = useLocation();\n if (action == null) {\n path.search = location.search;\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n let hasNakedIndexParam = indexValues.some((v) => v === \"\");\n if (hasNakedIndexParam) {\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n if (basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\nfunction useFetcher({\n key\n} = {}) {\n let { router } = useDataRouterContext3(\"useFetcher\" /* UseFetcher */);\n let state = useDataRouterState2(\"useFetcher\" /* UseFetcher */);\n let fetcherData = React10.useContext(FetchersContext);\n let route = React10.useContext(RouteContext);\n let routeId = route.matches[route.matches.length - 1]?.route.id;\n invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n invariant(route, `useFetcher must be used inside a RouteContext`);\n invariant(\n routeId != null,\n `useFetcher can only be used on routes that contain a unique \"id\"`\n );\n let defaultKey = React10.useId();\n let [fetcherKey, setFetcherKey] = React10.useState(key || defaultKey);\n if (key && key !== fetcherKey) {\n setFetcherKey(key);\n }\n let { deleteFetcher, getFetcher, resetFetcher, fetch: routerFetch } = router;\n React10.useEffect(() => {\n getFetcher(fetcherKey);\n return () => deleteFetcher(fetcherKey);\n }, [deleteFetcher, getFetcher, fetcherKey]);\n let load = React10.useCallback(\n async (href, opts) => {\n invariant(routeId, \"No routeId available for fetcher.load()\");\n await routerFetch(fetcherKey, routeId, href, opts);\n },\n [fetcherKey, routeId, routerFetch]\n );\n let submitImpl = useSubmit();\n let submit = React10.useCallback(\n async (target, opts) => {\n await submitImpl(target, {\n ...opts,\n navigate: false,\n fetcherKey\n });\n },\n [fetcherKey, submitImpl]\n );\n let reset = React10.useCallback(\n (opts) => resetFetcher(fetcherKey, opts),\n [resetFetcher, fetcherKey]\n );\n let FetcherForm = React10.useMemo(() => {\n let FetcherForm2 = React10.forwardRef(\n (props, ref) => {\n return /* @__PURE__ */ React10.createElement(Form, { ...props, navigate: false, fetcherKey, ref });\n }\n );\n FetcherForm2.displayName = \"fetcher.Form\";\n return FetcherForm2;\n }, [fetcherKey]);\n let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n let data2 = fetcherData.get(fetcherKey);\n let fetcherWithComponents = React10.useMemo(\n () => ({\n Form: FetcherForm,\n submit,\n load,\n reset,\n ...fetcher,\n data: data2\n }),\n [FetcherForm, submit, load, reset, fetcher, data2]\n );\n return fetcherWithComponents;\n}\nfunction useFetchers() {\n let state = useDataRouterState2(\"useFetchers\" /* UseFetchers */);\n return Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n ...fetcher,\n key\n }));\n}\nvar SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nvar savedScrollPositions = {};\nfunction getScrollRestorationKey(location, matches, basename, getKey) {\n let key = null;\n if (getKey) {\n if (basename !== \"/\") {\n key = getKey(\n {\n ...location,\n pathname: stripBasename(location.pathname, basename) || location.pathname\n },\n matches\n );\n } else {\n key = getKey(location, matches);\n }\n }\n if (key == null) {\n key = location.key;\n }\n return key;\n}\nfunction useScrollRestoration({\n getKey,\n storageKey\n} = {}) {\n let { router } = useDataRouterContext3(\"useScrollRestoration\" /* UseScrollRestoration */);\n let { restoreScrollPosition, preventScrollReset } = useDataRouterState2(\n \"useScrollRestoration\" /* UseScrollRestoration */\n );\n let { basename } = React10.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n React10.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n usePageHide(\n React10.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = getScrollRestorationKey(location, matches, basename, getKey);\n savedScrollPositions[key] = window.scrollY;\n }\n try {\n sessionStorage.setItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n JSON.stringify(savedScrollPositions)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n );\n }\n window.history.scrollRestoration = \"auto\";\n }, [navigation.state, getKey, basename, location, matches, storageKey])\n );\n if (typeof document !== \"undefined\") {\n React10.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n );\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n }\n }, [storageKey]);\n React10.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey ? (location2, matches2) => getScrollRestorationKey(location2, matches2, basename, getKey) : void 0\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n React10.useLayoutEffect(() => {\n if (restoreScrollPosition === false) {\n return;\n }\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n try {\n if (location.hash) {\n let el = document.getElementById(\n decodeURIComponent(location.hash.slice(1))\n );\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n } catch {\n warning(\n false,\n `\"${location.hash.slice(\n 1\n )}\" is not a decodable element ID. The view will not scroll to it.`\n );\n }\n if (preventScrollReset === true) {\n return;\n }\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\nfunction useBeforeUnload(callback, options) {\n let { capture } = options || {};\n React10.useEffect(() => {\n let opts = capture != null ? { capture } : void 0;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\nfunction usePageHide(callback, options) {\n let { capture } = options || {};\n React10.useEffect(() => {\n let opts = capture != null ? { capture } : void 0;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\nfunction usePrompt({\n when,\n message\n}) {\n let blocker = useBlocker(when);\n React10.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n React10.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\nfunction useViewTransitionState(to, { relative } = {}) {\n let vtContext = React10.useContext(ViewTransitionContext);\n invariant(\n vtContext != null,\n \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?\"\n );\n let { basename } = useDataRouterContext3(\n \"useViewTransitionState\" /* useViewTransitionState */\n );\n let path = useResolvedPath(to, { relative });\n if (!vtContext.isTransitioning) {\n return false;\n }\n let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n\n// lib/dom/server.tsx\nimport * as React11 from \"react\";\nfunction StaticRouter({\n basename,\n children,\n location: locationProp = \"/\"\n}) {\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n let action = \"POP\" /* Pop */;\n let location = {\n pathname: locationProp.pathname || \"/\",\n search: locationProp.search || \"\",\n hash: locationProp.hash || \"\",\n state: locationProp.state != null ? locationProp.state : null,\n key: locationProp.key || \"default\",\n unstable_mask: void 0\n };\n let staticNavigator = getStatelessNavigator();\n return /* @__PURE__ */ React11.createElement(\n Router,\n {\n basename,\n children,\n location,\n navigationType: action,\n navigator: staticNavigator,\n static: true,\n unstable_useTransitions: false\n }\n );\n}\nfunction StaticRouterProvider({\n context,\n router,\n hydrate: hydrate2 = true,\n nonce\n}) {\n invariant(\n router && context,\n \"You must provide `router` and `context` to <StaticRouterProvider>\"\n );\n let dataRouterContext = {\n router,\n navigator: getStatelessNavigator(),\n static: true,\n staticContext: context,\n basename: context.basename || \"/\"\n };\n let fetchersContext = /* @__PURE__ */ new Map();\n let hydrateScript = \"\";\n if (hydrate2 !== false) {\n let data2 = {\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: serializeErrors(context.errors)\n };\n let json = escapeHtml(JSON.stringify(JSON.stringify(data2)));\n hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n }\n let { state } = dataRouterContext.router;\n return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React11.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React11.createElement(FetchersContext.Provider, { value: fetchersContext }, /* @__PURE__ */ React11.createElement(ViewTransitionContext.Provider, { value: { isTransitioning: false } }, /* @__PURE__ */ React11.createElement(\n Router,\n {\n basename: dataRouterContext.basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: dataRouterContext.navigator,\n static: dataRouterContext.static,\n unstable_useTransitions: false\n },\n /* @__PURE__ */ React11.createElement(\n DataRoutes,\n {\n routes: router.routes,\n future: router.future,\n state,\n isStatic: true\n }\n )\n ))))), hydrateScript ? /* @__PURE__ */ React11.createElement(\n \"script\",\n {\n suppressHydrationWarning: true,\n nonce,\n dangerouslySetInnerHTML: { __html: hydrateScript }\n }\n ) : null);\n}\nfunction serializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n if (isRouteErrorResponse(val)) {\n serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n } else if (val instanceof Error) {\n serialized[key] = {\n message: val.message,\n __type: \"Error\",\n // If this is a subclass (i.e., ReferenceError), send up the type so we\n // can re-create the same type during hydration.\n ...val.name !== \"Error\" ? {\n __subType: val.name\n } : {}\n };\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction getStatelessNavigator() {\n return {\n createHref,\n encodeLocation,\n push(to) {\n throw new Error(\n `You cannot use navigator.push() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`\n );\n },\n replace(to) {\n throw new Error(\n `You cannot use navigator.replace() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere in your app.`\n );\n },\n go(delta) {\n throw new Error(\n `You cannot use navigator.go() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${delta})\\` somewhere in your app.`\n );\n },\n back() {\n throw new Error(\n `You cannot use navigator.back() on the server because it is a stateless environment.`\n );\n },\n forward() {\n throw new Error(\n `You cannot use navigator.forward() on the server because it is a stateless environment.`\n );\n }\n };\n}\nfunction createStaticHandler2(routes, opts) {\n return createStaticHandler(routes, {\n ...opts,\n mapRouteProperties\n });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n let manifest = {};\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n void 0,\n manifest\n );\n let matches = context.matches.map((match) => {\n let route = manifest[match.route.id] || match.route;\n return {\n ...match,\n route\n };\n });\n let msg = (method) => `You cannot use router.${method}() on the server because it is a stateless environment`;\n return {\n get basename() {\n return context.basename;\n },\n get future() {\n return {\n v8_middleware: false,\n ...opts?.future\n };\n },\n get state() {\n return {\n historyAction: \"POP\" /* Pop */,\n location: context.location,\n matches,\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: context.errors,\n initialized: true,\n renderFallback: false,\n navigation: IDLE_NAVIGATION,\n restoreScrollPosition: null,\n preventScrollReset: false,\n revalidation: \"idle\",\n fetchers: /* @__PURE__ */ new Map(),\n blockers: /* @__PURE__ */ new Map()\n };\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return void 0;\n },\n initialize() {\n throw msg(\"initialize\");\n },\n subscribe() {\n throw msg(\"subscribe\");\n },\n enableScrollRestoration() {\n throw msg(\"enableScrollRestoration\");\n },\n navigate() {\n throw msg(\"navigate\");\n },\n fetch() {\n throw msg(\"fetch\");\n },\n revalidate() {\n throw msg(\"revalidate\");\n },\n createHref,\n encodeLocation,\n getFetcher() {\n return IDLE_FETCHER;\n },\n deleteFetcher() {\n throw msg(\"deleteFetcher\");\n },\n resetFetcher() {\n throw msg(\"resetFetcher\");\n },\n dispose() {\n throw msg(\"dispose\");\n },\n getBlocker() {\n return IDLE_BLOCKER;\n },\n deleteBlocker() {\n throw msg(\"deleteBlocker\");\n },\n patchRoutes() {\n throw msg(\"patchRoutes\");\n },\n _internalFetchControllers: /* @__PURE__ */ new Map(),\n _internalSetRoutes() {\n throw msg(\"_internalSetRoutes\");\n },\n _internalSetStateDoNotUseOrYouWillBreakYourApp() {\n throw msg(\"_internalSetStateDoNotUseOrYouWillBreakYourApp\");\n }\n };\n}\nfunction createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n}\nfunction encodeLocation(to) {\n let href = typeof to === \"string\" ? to : createPath(to);\n href = href.replace(/ $/, \"%20\");\n let encoded = ABSOLUTE_URL_REGEX3.test(href) ? new URL(href) : new URL(href, \"http://localhost\");\n return {\n pathname: encoded.pathname,\n search: encoded.search,\n hash: encoded.hash\n };\n}\nvar ABSOLUTE_URL_REGEX3 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nexport {\n Action,\n createMemoryHistory,\n createBrowserHistory,\n createHashHistory,\n invariant,\n createPath,\n parsePath,\n createContext,\n RouterContextProvider,\n convertRoutesToDataRoutes,\n matchRoutes,\n generatePath,\n matchPath,\n stripBasename,\n resolvePath,\n data,\n redirect,\n redirectDocument,\n replace,\n ErrorResponseImpl,\n isRouteErrorResponse,\n instrumentHandler,\n IDLE_NAVIGATION,\n IDLE_FETCHER,\n IDLE_BLOCKER,\n createRouter,\n createStaticHandler,\n getStaticContextFromError,\n isDataWithResponseInit,\n isResponse,\n isRedirectStatusCode,\n isRedirectResponse,\n isMutationMethod,\n DataRouterContext,\n DataRouterStateContext,\n RSCRouterContext,\n ViewTransitionContext,\n FetchersContext,\n AwaitContextProvider,\n NavigationContext,\n LocationContext,\n RouteContext,\n ENABLE_DEV_WARNINGS,\n decodeRedirectErrorDigest,\n decodeRouteErrorResponseDigest,\n useHref,\n useInRouterContext,\n useLocation,\n useNavigationType,\n useMatch,\n useNavigate,\n useOutletContext,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useNavigation,\n useRevalidator,\n useMatches,\n useLoaderData,\n useRouteLoaderData,\n useActionData,\n useRouteError,\n useAsyncValue,\n useAsyncError,\n useBlocker,\n useRoute,\n warnOnce,\n mapRouteProperties,\n hydrationRouteProperties,\n createMemoryRouter,\n RouterProvider,\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n Await,\n createRoutesFromChildren,\n createRoutesFromElements,\n renderMatches,\n WithComponentProps,\n withComponentProps,\n WithHydrateFallbackProps,\n withHydrateFallbackProps,\n WithErrorBoundaryProps,\n withErrorBoundaryProps,\n createSearchParams,\n escapeHtml,\n encode,\n createRequestInit,\n SingleFetchRedirectSymbol,\n SINGLE_FETCH_REDIRECT_STATUS,\n NO_BODY_STATUS_CODES,\n StreamTransfer,\n getTurboStreamSingleFetchDataStrategy,\n getSingleFetchDataStrategyImpl,\n stripIndexParam,\n singleFetchUrl,\n decodeViaTurboStream,\n RemixErrorBoundary,\n createServerRoutes,\n createClientRoutesWithHMRRevalidationOptOut,\n noActionDefinedError,\n createClientRoutes,\n shouldHydrateRouteLoader,\n getPatchRoutesOnNavigationFunction,\n useFogOFWarDiscovery,\n getManifestPath,\n FrameworkContext,\n CRITICAL_CSS_DATA_ATTRIBUTE,\n Links,\n PrefetchPageLinks,\n Meta,\n setIsHydrated,\n Scripts,\n createBrowserRouter,\n createHashRouter,\n BrowserRouter,\n HashRouter,\n HistoryRouter,\n Link,\n NavLink,\n Form,\n ScrollRestoration,\n useLinkClickHandler,\n useSearchParams,\n useSubmit,\n useFormAction,\n useFetcher,\n useFetchers,\n useScrollRestoration,\n useBeforeUnload,\n usePrompt,\n useViewTransitionState,\n StaticRouter,\n StaticRouterProvider,\n createStaticHandler2,\n createStaticRouter\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","import { injectable} from \"@novx/core\";\nimport {FeatureDescriptor} from \"./model\";\nimport { LocaleManager, Translator } from '@novx/i18n';\nimport { of } from 'rxjs';\n\nexport interface FeatureMetadata extends FeatureDescriptor {\n parent?: string;\n children?: FeatureMetadata[];\n uri?: string; // URI of remote container, if federated\n module?: string; // module name inside remote\n}\n\n@injectable()\nexport class FeatureRegistry {\n // instance data\n\n protected features = new Map<string, FeatureMetadata>();\n\n // constructor\n\n constructor(localeManager: LocaleManager, private translator: Translator) {\n localeManager.subscribe({\n onLocaleChange: (locale) => {\n for (const feature of this.features.values())\n if (feature.i18n) {\n feature.label = translator.translate('portal:' + feature.i18n + \".label\");\n }\n\n return of(void 0);\n } ,\n } ,\n 5, // priority\n );\n }\n\n // public\n\n register(...features: FeatureMetadata[]) {\n // local function\n\n const register = (feature: FeatureMetadata, parent: FeatureMetadata | null = null ) => {\n // fix qualified name\n\n if (parent)\n feature.id = parent.id + \".\" + feature.id;\n\n // register\n\n this.features.set(feature.id, feature);\n\n // i18n\n\n if ( feature.i18n && !feature.label) {\n feature.label = this.translator.translate('portal:' + feature.i18n + \".label\");\n }\n\n // recursion\n\n if (feature.children)\n for (const child of feature.children)\n register(child, feature);\n }\n\n features.forEach(f => register(f));\n }\n\n filter(f: FeatureFinderFilter): FeatureMetadata[] {\n return Array.from(this.features.values()).filter(f)\n }\n\n finder(): FeatureFinder {\n return new FeatureFinder(this);\n }\n\n get(id: string) {\n const f = this.features.get(id);\n if (!f) throw new Error(`Feature ${id} not found`);\n return f;\n }\n}\n\n\nexport type FeatureFinderFilter = (feature: FeatureMetadata) => boolean\n\nclass FeatureFinder {\n filter: FeatureFinderFilter[] = [];\n\n constructor(private registry: FeatureRegistry) {}\n\n // fluent\n\n withId(id: string): FeatureFinder {\n this.filter.push((feature) => feature.id == id);\n return this;\n }\n\n withoutParent(): FeatureFinder {\n this.filter.push((feature) => feature.parent == null);\n\n return this;\n }\n\n withPath(path: string | null = null): FeatureFinder {\n if (path) this.filter.push((feature) => feature.path == path);\n else this.filter.push((feature) => feature.path !== null);\n\n return this;\n }\n\n withTag(tag: string): FeatureFinder {\n this.filter.push((feature) => (feature.tags || []).includes(tag));\n return this;\n }\n\n matchesSession(session: boolean): FeatureFinder {\n if (session)\n // When user is logged in, show both 'public' and 'private' features\n this.filter.push((feature) => {\n const visibility = feature.visibility || [\"public\", \"private\"];\n return visibility.includes('public') || visibility.includes('private');\n });\n else\n // When user is NOT logged in, show only 'public' features\n this.filter.push((feature) =>\n (feature.visibility || ['public']).includes('public'),\n );\n\n return this;\n }\n\n withVisibility(session: boolean): FeatureFinder {\n if (session)\n // When user is logged in, show both 'public' and 'private' features\n this.filter.push((feature) => {\n const visibility = feature.visibility || [\"public\", \"private\"];\n return /*visibility.includes('public') ||*/ visibility.includes('private');\n });\n else\n // When user is NOT logged in, show only 'public' features\n this.filter.push((feature) =>\n (feature.visibility || ['public']).includes('public'),\n );\n\n return this;\n }\n\n // find\n\n findOne(): FeatureMetadata {\n const result = this.find();\n\n if (result.length == 1) return result[0];\n else\n throw new Error(\n 'expected 1 feature with filter' +\n this.filter +\n ', got ' +\n result.length,\n );\n }\n\n find(): FeatureMetadata[] {\n return this.registry.filter((feature) => {\n for (const filter of this.filter)\n if (!filter(feature)) {\n return false;\n }\n\n return true;\n });\n }\n}","import { Environment } from '@novx/core'\nimport React, { createContext, useContext } from 'react'\n\nexport const EnvironmentContext = createContext<Environment | null>(null)\n\nexport function useEnvironment(): Environment {\n const environment = useContext(EnvironmentContext)\n if (!environment) {\n throw new Error('Environment not provided')\n }\n \n return environment\n}\n\ntype Constructor<T> = new (...args: any[]) => T\n\nexport function useInject<T extends readonly Constructor<any>[]>(\n ...types: T\n): { [K in keyof T]: T[K] extends Constructor<infer R> ? R : never } {\n const env = useEnvironment()\n\n return React.useMemo(\n () => types.map((t) => env.get(t)),\n [env]\n ) as { [K in keyof T]: T[K] extends Constructor<infer R> ? R : never }\n}","import React from 'react';\n\nimport { FeatureDescriptor } from '../model';\n\nexport const ErrorDisplay: React.FC<{\n error: Error;\n errorInfo?: React.ErrorInfo;\n feature?: FeatureDescriptor;\n}> = ({ error, errorInfo, feature }) => {\n const [showStack, setShowStack] = React.useState(false);\n const [showComponentStack, setShowComponentStack] = React.useState(false);\n\n return (\n <div\n style={{\n minHeight: '100vh',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n padding: '40px 20px',\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n }}\n >\n <div\n style={{\n maxWidth: '800px',\n margin: '0 auto',\n background: '#ffffff',\n borderRadius: '16px',\n boxShadow: '0 20px 60px rgba(0, 0, 0, 0.3)',\n overflow: 'hidden',\n }}\n >\n {/* Header */}\n <div\n style={{\n background: 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)',\n padding: '32px',\n color: '#ffffff',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '16px', marginBottom: '12px' }}>\n <div\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n background: 'rgba(255, 255, 255, 0.2)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '28px',\n }}\n >\n ⚠️\n </div>\n <div>\n <h1 style={{ margin: 0, fontSize: '28px', fontWeight: '700' }}>\n Component Error\n </h1>\n {feature && (\n <div style={{ marginTop: '4px', opacity: 0.9, fontSize: '14px' }}>\n Feature: {feature.label || feature.id}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {/* Error Message */}\n <div style={{ padding: '32px' }}>\n <div\n style={{\n background: '#fef2f2',\n border: '2px solid #fecaca',\n borderRadius: '12px',\n padding: '20px',\n marginBottom: '24px',\n }}\n >\n <div style={{ fontSize: '14px', fontWeight: '600', color: '#991b1b', marginBottom: '8px' }}>\n Error Message\n </div>\n <div style={{ fontSize: '15px', color: '#7f1d1d', lineHeight: '1.6', fontFamily: 'monospace' }}>\n {error.message || 'An unknown error occurred'}\n </div>\n </div>\n\n {/* Feature Details */}\n {feature && (\n <div style={{ marginBottom: '24px' }}>\n <div style={{ fontSize: '14px', fontWeight: '600', color: '#374151', marginBottom: '12px' }}>\n Feature Details\n </div>\n <div\n style={{\n background: '#f9fafb',\n border: '1px solid #e5e7eb',\n borderRadius: '8px',\n padding: '16px',\n fontSize: '13px',\n fontFamily: 'monospace',\n }}\n >\n <div style={{ marginBottom: '8px' }}>\n <span style={{ color: '#6b7280' }}>ID:</span>{' '}\n <span style={{ color: '#111827' }}>{feature.id}</span>\n </div>\n {feature.component && (\n <div style={{ marginBottom: '8px' }}>\n <span style={{ color: '#6b7280' }}>Component:</span>{' '}\n <span style={{ color: '#111827' }}>{feature.component}</span>\n </div>\n )}\n {(feature as any).module && (\n <div>\n <span style={{ color: '#6b7280' }}>Module:</span>{' '}\n <span style={{ color: '#111827' }}>{(feature as any).module}</span>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Stack Trace */}\n {error.stack && (\n <div style={{ marginBottom: '24px' }}>\n <button\n onClick={() => setShowStack(!showStack)}\n style={{\n width: '100%',\n padding: '12px 16px',\n background: '#f3f4f6',\n border: '1px solid #d1d5db',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: '600',\n color: '#374151',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n transition: 'all 0.2s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = '#e5e7eb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = '#f3f4f6';\n }}\n >\n <span>Stack Trace</span>\n <span style={{ fontSize: '12px' }}>{showStack ? '▼' : '▶'}</span>\n </button>\n\n {showStack && (\n <div\n style={{\n marginTop: '12px',\n background: '#1e293b',\n border: '1px solid #334155',\n borderRadius: '8px',\n padding: '16px',\n fontSize: '12px',\n fontFamily: 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace',\n color: '#e2e8f0',\n overflowX: 'auto',\n maxHeight: '300px',\n overflowY: 'auto',\n }}\n >\n <pre style={{ margin: 0, whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}>\n {error.stack}\n </pre>\n </div>\n )}\n </div>\n )}\n\n {/* Component Stack */}\n {errorInfo?.componentStack && (\n <div style={{ marginBottom: '24px' }}>\n <button\n onClick={() => setShowComponentStack(!showComponentStack)}\n style={{\n width: '100%',\n padding: '12px 16px',\n background: '#f3f4f6',\n border: '1px solid #d1d5db',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: '600',\n color: '#374151',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n transition: 'all 0.2s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = '#e5e7eb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = '#f3f4f6';\n }}\n >\n <span>Component Stack</span>\n <span style={{ fontSize: '12px' }}>{showComponentStack ? '▼' : '▶'}</span>\n </button>\n\n {showComponentStack && (\n <div\n style={{\n marginTop: '12px',\n background: '#1e293b',\n border: '1px solid #334155',\n borderRadius: '8px',\n padding: '16px',\n fontSize: '12px',\n fontFamily: 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace',\n color: '#e2e8f0',\n overflowX: 'auto',\n maxHeight: '300px',\n overflowY: 'auto',\n }}\n >\n <pre style={{ margin: 0, whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}>\n {errorInfo.componentStack}\n </pre>\n </div>\n )}\n </div>\n )}\n\n {/* Actions */}\n <div style={{ display: 'flex', gap: '12px', justifyContent: 'flex-end' }}>\n <button\n onClick={() => window.location.reload()}\n style={{\n padding: '10px 24px',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: '600',\n border: '1px solid #d1d5db',\n background: '#ffffff',\n color: '#374151',\n cursor: 'pointer',\n transition: 'all 0.2s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = '#f9fafb';\n e.currentTarget.style.borderColor = '#9ca3af';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = '#ffffff';\n e.currentTarget.style.borderColor = '#d1d5db';\n }}\n >\n Reload Page\n </button>\n\n <button\n onClick={() => (window.location.href = '/')}\n style={{\n padding: '10px 24px',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: '600',\n border: 'none',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n color: '#ffffff',\n cursor: 'pointer',\n transition: 'all 0.2s',\n boxShadow: '0 4px 12px rgba(102, 126, 234, 0.4)',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = 'translateY(-1px)';\n e.currentTarget.style.boxShadow = '0 6px 16px rgba(102, 126, 234, 0.5)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = '0 4px 12px rgba(102, 126, 234, 0.4)';\n }}\n >\n Go Home\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n};","import React from \"react\";\n\n\nexport const ErrorPage: React.FC = () => (\n <div style={{\n padding: '40px 20px',\n textAlign: 'center',\n background: '#1a1a1a', \n color: '#fff',\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}>\n <div>\n <div style={{ fontSize: '48px', marginBottom: '16px' }}>⚠️</div>\n <h1 style={{ fontSize: '32px', marginBottom: '8px' }}>Page Not Found</h1>\n <p style={{ fontSize: '16px', color: '#aaa', marginBottom: '24px' }}>The page you're looking for doesn't exist.</p>\n <a href=\"/\" style={{\n color: '#3b82f6',\n textDecoration: 'none',\n fontSize: '16px',\n padding: '8px 16px',\n border: '1px solid #3b82f6',\n borderRadius: '4px',\n display: 'inline-block'\n }}>\n Go Home\n </a>\n </div>\n </div>\n);","import React from 'react';\n\n\nexport const HorizontalSpinner: React.FC<{ active?: boolean }> = ({\n active = true,\n}) => {\n if (!active) return null;\n\n return (\n <div\n style={{\n position: 'relative',\n width: '100%',\n height: 4,\n background: '#e5e7eb',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n position: 'absolute',\n left: '-30%',\n width: '30%',\n height: '100%',\n background: 'linear-gradient(90deg, #3b82f6 0%, #2563eb 100%)',\n animation: 'spinner-slide 1.1s linear infinite',\n boxShadow: '0 0 10px rgba(59, 130, 246, 0.5)',\n }}\n />\n\n <style>\n {`@keyframes spinner-slide {\n from { transform: translateX(0); }\n to { transform: translateX(430%); }\n }`}\n </style>\n </div>\n );\n};","import React, { Suspense } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport { FeatureMetadata, FeatureRegistry } from './feature-registry';\n\nimport { ErrorManager, ErrorContext, Tracer, TraceLevel, Environment } from '@novx/core';\nimport { FeatureDescriptor } from './model';\nimport { EnvironmentContext } from './environment';\nimport { ErrorDisplay } from './component/error-display';\nimport { HorizontalSpinner } from './component';\n\nexport type LoaderAction = 'bootstrap' | 'module' | 'component';\n\nexport type OutletLoaderType<T extends OutletLoader = OutletLoader> =\n new (...args: any[]) => T;\n\nexport abstract class OutletLoader {\n // static data\n\n static loaders : OutletLoaderType[] = []\n\n // instance data\n\n id: string;\n loading = false;\n\n // constructor\n\n constructor(id: string) {\n this.id = id;\n }\n\n isLoading() {\n return this.loading;\n }\n\n protected async exec(fn: () => Promise<void>) {\n this.loading = true;\n try {\n await fn();\n }\n finally {\n this.loading = false;\n }\n }\n\n // abstract\n\n abstract shouldRun(feature: FeatureMetadata, action: LoaderAction): boolean;\n\n abstract run(feature: FeatureMetadata, outlet: FeatureOutlet): Promise<void>;\n}\n\n// feature outlet\n\nexport class FeatureOutlet extends React.Component<{ featureId: string }> {\n state: {\n feature?: FeatureMetadata;\n Loaded?: React.ComponentClass<any>;\n loadingLoaders: OutletLoader[];\n error?: Error;\n } = {\n loadingLoaders: [],\n };\n\n static contextType = EnvironmentContext\n\n declare context: Environment\n\n environment?: Environment; // optional child environment for remote modules\n\n allLoaders(environment: Environment): OutletLoader[] {\n return OutletLoader.loaders.map(loaderType => environment.get(loaderType))\n }\n\n component: any; // resolved component\n\n\n private async runLoaders(feature: FeatureMetadata) {\n const active = OutletLoader.loaders\n .map(loaderType => this.context.get(loaderType))\n .filter(loader => loader.shouldRun(feature, 'component'));\n\n this.setState({ loadingLoaders: active });\n\n await Promise.all(active.map(loader => loader.run(feature, this)));\n\n this.setState({ loadingLoaders: [] });\n }\n\n private isLoading() {\n return this.state.loadingLoaders.some(l => l.isLoading());\n }\n\n // lifecycle\n\n async componentDidMount() {\n const featureRegistry = this.context.get(FeatureRegistry);\n const feature = featureRegistry.get(this.props.featureId) as FeatureMetadata;\n\n try {\n await this.runLoaders(feature);\n\n Tracer.Trace(\n 'portal.feature-outlet',\n TraceLevel.HIGH,\n `Loaded feature component '${feature.component}' for feature '${feature.id}'`\n );\n\n this.setState({\n feature,\n Loaded: this.component?.default ?? this.component,\n });\n } catch (err) {\n Tracer.Trace(\n 'portal.feature-outlet',\n TraceLevel.HIGH,\n `Failed to load feature '${feature.id}': ${(err as Error).message}`\n );\n this.setState({ feature, error: err as Error });\n }\n }\n\n // override\n\n render() {\n const { feature, Loaded, error } = this.state;\n\n const env = this.environment ?? this.context;\n\n return (\n <div style={{ position: 'relative', height: '100%' }}>\n <HorizontalSpinner active={this.isLoading()} />\n\n <FeatureErrorBoundary feature={feature} error={error}>\n {Loaded && (\n <Suspense fallback={<HorizontalSpinner />}>\n <EnvironmentContext.Provider value={env}>\n <LoadedWrapper Component={Loaded} feature={feature} />\n </EnvironmentContext.Provider>\n </Suspense>\n )}\n </FeatureErrorBoundary>\n </div>\n );\n }\n}\n\n// Helpers \n\nconst LoadedWrapper: React.FC<{Component: React.ComponentClass<any>; feature?: FeatureDescriptor}> = ({ Component, feature }) => {\n const params = useParams();\n\n return <Component {...params} feature={feature} />;\n};\n\n// Error boundary \n\ninterface FeatureErrorBoundaryProps {\n feature?: FeatureDescriptor;\n error?: Error;\n children?: React.ReactNode;\n}\n\ninterface FeatureErrorBoundaryState {\n hasError: boolean;\n error?: Error;\n errorInfo?: React.ErrorInfo;\n}\n\nclass FeatureErrorBoundary extends React.Component<\n FeatureErrorBoundaryProps,\n FeatureErrorBoundaryState\n> {\n state: FeatureErrorBoundaryState = {\n hasError: false,\n error: undefined,\n errorInfo: undefined,\n };\n\n static contextType = EnvironmentContext\n\n declare context: Environment\n\n static getDerivedStateFromError(error: Error): Partial<FeatureErrorBoundaryState> {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n this.setState({ errorInfo: info });\n\n const errorManager = this.context.get(ErrorManager);\n\n const ctx: ErrorContext = {\n $type: 'feature',\n featureId: this.props.feature?.id,\n featureLabel: this.props.feature?.label,\n featureComponent: this.props.feature?.component,\n componentStack: info.componentStack,\n };\n\n errorManager.handle(error, ctx);\n }\n\n render() {\n const displayError = this.state.error || this.props.error;\n const shouldShowError = this.state.hasError || this.props.error;\n\n if (shouldShowError && displayError) {\n return (\n <ErrorDisplay\n error={displayError}\n errorInfo={this.state.errorInfo}\n feature={this.props.feature}\n />\n );\n }\n\n return this.props.children ?? <HorizontalSpinner />;\n }\n}\n","import { Subject } from \"rxjs\";\nimport { AuthenticationRequest, Authentication, Ticket, Session } from \"./authentication\";\n\nexport interface SessionEvent<U=any,T extends Ticket = Ticket> {\n type: \"opening\" | \"opened\" | \"closing\" | \"closed\"\n session: Session<U,T>\n}\n\nexport class SessionManager<U = any, T extends Ticket = Ticket> {\n public readonly events$ = new Subject<SessionEvent<U, T>>();\n\n private session: Session<U, T> | null = null;\n\n // constructor\n\n constructor(protected authentication: Authentication<U, T>) {}\n\n // implement \n\n async start(): Promise<Session<U, T> | null> {\n const restored = await this.authentication.init();\n\n if (restored) {\n this.setSession(restored);\n }\n\n return this.session;\n }\n\n hasSession(): boolean {\n return this.session !== null;\n }\n\n currentSession(): Session<U, T> {\n if (!this.session) {\n throw new Error('No active session');\n }\n return this.session;\n }\n\n async openSession(request: AuthenticationRequest = {}): Promise<Session<U, T>> {\n const session = await this.authentication.authenticate(request);\n this.setSession(session);\n\n return session;\n }\n\n async closeSession(): Promise<void> {\n await this.authentication.logout();\n \n this.clearSession();\n }\n\n // protected\n\n protected setSession(session: Session<U, T>) {\n this.session = session;\n\n this.events$.next({ type: 'opened', session });\n }\n\n protected clearSession() {\n const session = this.session\n\n this.session = null;\n this.events$.next({ type: 'closed', session: session! });\n }\n}","\nimport {injectable} from \"@novx/core\";\nimport React from \"react\";\nimport {BrowserRouter, RouteObject, useLocation, useRoutes} from \"react-router-dom\";\nimport { FeatureRegistry } from './feature-registry';\n\nimport type { FeatureMetadata } from './feature-registry';\n\nimport { FeatureOutlet } from \"./feature-outlet\";\nimport { TraceLevel, Tracer } from '@novx/core';\nimport { SessionManager } from './session/session-manager';\nimport { useInject } from \"./environment\";\nimport { ErrorPage } from \"./component/error-page\";\n\n// guard for private routes\n\nconst PrivateRoute: React.FC<{ feature: FeatureMetadata; children: React.ReactNode }> = ({ feature, children }) => {\n const [sessionManager] = useInject(SessionManager);\n\n const [hasSession, setHasSession] = React.useState(\n sessionManager.hasSession()\n );\n\n const [error, setError] = React.useState<string | null>(null);\n\n React.useEffect(() => {\n const sub = sessionManager.events$.subscribe(() => {\n setHasSession(sessionManager.hasSession());\n });\n\n return () => sub.unsubscribe();\n }, [sessionManager]);\n\n React.useEffect(() => {\n const isActive = location.pathname === feature.path;\n\n if (!hasSession && isActive) {\n sessionStorage.setItem('intendedRoute', window.location.pathname);\n\n sessionManager.openSession().catch((err: any) => {\n setError(err.message || 'Login failed');\n });\n }\n }, [hasSession, feature.id]);\n\n if (!hasSession) {\n return <div>🔐 Verifying authentication...</div>;\n }\n\n if (error) {\n return <div>⚠️ {error}</div>;\n }\n\n return <>{children}</>;\n};\n\nexport type RouteObjectWithFeature = RouteObject & {\n $feature: FeatureMetadata;\n children?: RouteObjectWithFeature[];\n}\n\nexport type FeatureChangeListener = (feature: FeatureMetadata) => void;\n\n@injectable()\nexport class RouteChangeNotifier {\n private listeners = new Set<(location: any) => void>();\n\n subscribe(listener: (location: any) => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n notify(location: any) {\n for (const listener of this.listeners) {\n try {\n listener(location);\n } catch (err) {\n console.error(\"Route listener failed\", err);\n }\n }\n }\n}\n\nconst RouteChangeListener: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const location = useLocation();\n const [notifier] = useInject(RouteChangeNotifier);\n\n React.useEffect(() => {\n notifier.notify(location);\n }, [location]);\n\n return <>{children}</>;\n};\n\n/* ======================================================\n * RoutesWrapper — defined at module level so its type is\n * stable across renders (no remount on login/logout).\n * Holds the route tree in React state so updates are\n * atomic: rebuild + re-render happen in one batch.\n * ====================================================== */\n\nconst RoutesWrapper: React.FC<{ manager: RouterManager }> = ({ manager }) => {\n const [sessionManager] = useInject(SessionManager);\n\n // Initialise with the current root's route tree\n const [routes, setRoutes] = React.useState<RouteObjectWithFeature[]>(() => {\n manager.root = manager.computeRoot();\n return manager.buildRouteObjects(manager.root);\n });\n\n React.useEffect(() => {\n sessionManager.events$.subscribe((event) => {\n if ( event.type == \"closed\" || event.type == \"opened\" ) {\n // Recompute root (may differ after login / logout)\n manager.root = manager.computeRoot();\n // Rebuild and push into state atomically\n setRoutes(manager.buildRouteObjects(manager.root));\n }\n });\n }, [sessionManager]);\n\n return useRoutes(routes);\n};\n\n/* ======================================================\n * RouterManager\n * ====================================================== */\n\n@injectable()\nexport class RouterManager {\n // instance data — made accessible to RoutesWrapper above\n\n routeObjects: RouteObjectWithFeature[] = [];\n private featureListeners = new Set<FeatureChangeListener>();\n\n computeRoot: () => FeatureMetadata = () => ({\n id: \"\",\n component: \"\"\n });\n\n root: FeatureMetadata = this.computeRoot()\n\n // constructor\n\n constructor(private featureRegistry: FeatureRegistry, private sessionManager: SessionManager) {\n }\n\n // public\n\n setRoot(root: () => FeatureMetadata) {\n this.computeRoot = root;\n this.root = root();\n }\n\n onFeatureChange(listener: FeatureChangeListener): () => void {\n this.featureListeners.add(listener);\n return () => this.featureListeners.delete(listener);\n }\n\n emitFeatureChange(feature: FeatureMetadata) {\n for (const listener of this.featureListeners) {\n try {\n listener(feature);\n } catch (err) {\n console.error('FeatureChangeListener failed', err);\n }\n }\n }\n\n // Public so RoutesWrapper can call it directly\n public buildRouteObjects(root: FeatureMetadata): RouteObjectWithFeature[] {\n if (Tracer.ENABLED)\n Tracer.Trace('portal', TraceLevel.HIGH, 'building routes');\n\n const hasSession = this.sessionManager.hasSession()\n\n const features = this.featureRegistry.filter((f) => true);\n\n const build = (feature: FeatureMetadata): RouteObjectWithFeature => {\n const isPrivate = feature.visibility && feature.visibility.includes('private') && !feature.visibility.includes('public');\n\n const element = (isPrivate && !hasSession) ? (\n <PrivateRoute feature={feature}>\n <FeatureOutlet featureId={feature.id} />\n </PrivateRoute>\n ) : (\n <FeatureOutlet featureId={feature.id} />\n );\n\n // Strip leading slash from path to make it relative for nested routes\n const routePath = (feature.path || '').replace(/^\\//, '');\n\n return {\n path: routePath,\n element: element,\n $feature: feature,\n children: (feature.children || []).map(build),\n };\n };\n\n this.routeObjects = [\n {\n path: root.path || '',\n element: <FeatureOutlet key={root.id} featureId={root.id} />,\n $feature: root,\n children: [\n ...features\n .filter(\n (feature) =>\n feature !== root &&\n feature.path &&\n !feature.parent &&\n !(feature.tags || []).includes(\"portal\"),\n )\n .map(build),\n // Catch-all error route for undefined paths\n {\n path: '*',\n element: <ErrorPage />,\n $feature: root,\n },\n ],\n },\n ];\n\n console.log(\n '### Route tree:',\n JSON.stringify(\n this.routeObjects,\n (key, value) => {\n if (key === 'element') return '[React Element]';\n return value;\n },\n 2,\n ),\n );\n\n return this.routeObjects;\n }\n\n public renderRouter() {\n return (\n <BrowserRouter>\n <RouteChangeListener>\n <RoutesWrapper manager={this} />\n </RouteChangeListener>\n </BrowserRouter>\n );\n }\n\n public getRouteObjects(): RouteObjectWithFeature[] {\n if (this.routeObjects.length === 0)\n this.buildRouteObjects(this.root);\n\n return this.routeObjects;\n }\n}\n","import { FeatureMetadata } from './feature-registry';\nimport { ClientInfo, Manifest } from './model';\n\nexport interface FilterContext {\n clientInfo: ClientInfo;\n\n hasPermission(permission: string): boolean;\n hasFeature(permission: string): boolean;\n}\n\nexport interface ManifestFilter {\n accept(manifest: Manifest, context: FilterContext) : boolean\n}\n\nexport interface FeatureFilter {\n accept(feature: FeatureMetadata, context: FilterContext): boolean;\n}\n\nexport class FeaturePermissionFilter implements FeatureFilter {\n // implement\n\n accept(feature: FeatureMetadata, context: FilterContext): boolean {\n if (feature.permissions)\n for (const permission of feature.permissions)\n if (!context.hasPermission(permission))\n return false\n\n return true\n }\n}\n\nexport class FeatureClientInfoFilter implements FeatureFilter {\n // implement\n\n accept(feature: FeatureMetadata, context: FilterContext): boolean {\n if (!feature.clients)\n return true;\n\n const constraints = feature.clients;\n const client = context.clientInfo;\n\n // Check screen sizes\n if (constraints.screenSizes && constraints.screenSizes.length > 0) {\n if (!constraints.screenSizes.includes(client.screen_size))\n return false;\n }\n\n // Check orientation\n if (constraints.orientation && constraints.orientation.length > 0) {\n if (!constraints.orientation.includes(client.orientation))\n return false;\n }\n\n // Check platforms\n if (constraints.platforms && constraints.platforms.length > 0) {\n if (!constraints.platforms.includes(client.platform))\n return false;\n }\n\n // Check width constraints\n if (constraints.minWidth !== null && constraints.minWidth !== undefined) {\n if (client.width < constraints.minWidth)\n return false;\n }\n if (constraints.maxWidth !== null && constraints.maxWidth !== undefined) {\n if (client.width > constraints.maxWidth)\n return false;\n }\n\n // Check height constraints\n if (constraints.minHeight !== null && constraints.minHeight !== undefined) {\n if (client.height < constraints.minHeight)\n return false;\n }\n if (constraints.maxHeight !== null && constraints.maxHeight !== undefined) {\n if (client.height > constraints.maxHeight)\n return false;\n }\n\n // Check capabilities\n if (constraints.capabilities && constraints.capabilities.length > 0) {\n for (const capability of constraints.capabilities) {\n if (!client.capabilities.includes(capability))\n return false;\n }\n }\n\n return true;\n }\n}\n\nexport class FeatureEnabledFilter implements FeatureFilter {\n // implement\n\n accept(feature: FeatureMetadata, context: FilterContext): boolean {\n if (feature.enabled !== undefined && !feature.enabled)\n return false;\n\n return true;\n }\n}\n\nexport class FeatureFeatureFilter implements FeatureFilter {\n // implement\n\n accept(feature: FeatureMetadata, context: FilterContext): boolean {\n if (feature.features != undefined)\n for (const f of feature.features)\n if (!context.hasFeature(f))\n return false;\n\n return true;\n }\n}\n\nexport class ManifestEnabledFilter implements ManifestFilter {\n accept(manifest: Manifest, context: FilterContext): boolean {\n if (manifest.enabled !== undefined)\n return manifest.enabled;\n\n return true\n }\n}\n\nexport class ManifestProcessor {\n // instance data\n\n private readonly manifestFilters: ManifestFilter[]\n private readonly featureFilters: FeatureFilter[]\n\n // constructor\n\n constructor() {\n this.manifestFilters = [new ManifestEnabledFilter()];\n this.featureFilters = [\n new FeaturePermissionFilter(),\n new FeatureClientInfoFilter(),\n new FeatureEnabledFilter(),\n new FeatureFeatureFilter()\n ];\n }\n\n // public\n\n process(manifest: Manifest, context: FilterContext): Manifest {\n // First, check if the manifest itself passes all manifest filters\n for (const filter of this.manifestFilters) {\n if (!filter.accept(manifest, context)) {\n // Return empty manifest if manifest-level filter fails\n return {\n ...manifest,\n features: [],\n };\n }\n }\n\n // Filter features\n\n const filteredFeatures = manifest.features.filter((feature) => {\n // apply all feature filters\n for (const filter of this.featureFilters) {\n if (!filter.accept(feature as FeatureMetadata, context))\n return false;\n }\n\n return true;\n });\n\n // done\n\n return {\n ...manifest,\n features: filteredFeatures,\n };\n }\n}\n\n\n","// @ts-check\n/**\n * @import {Acr, KeycloakAccountOptions, KeycloakAdapter, KeycloakConfig, KeycloakError, KeycloakFlow, KeycloakInitOptions, KeycloakLoginOptions, KeycloakLogoutOptions, KeycloakPkceMethod, KeycloakProfile, KeycloakRegisterOptions, KeycloakResourceAccess, KeycloakResponseMode, KeycloakResponseType, KeycloakRoles, KeycloakTokenParsed, OpenIdProviderMetadata} from \"./keycloak.ts\"\n */\n/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst CONTENT_TYPE_JSON = 'application/json'\n\n/**\n * @typedef {Object} Endpoints\n * @property {() => string} authorize\n * @property {() => string} token\n * @property {() => string} logout\n * @property {() => string} checkSessionIframe\n * @property {() => string=} thirdPartyCookiesIframe\n * @property {() => string} register\n * @property {() => string} userinfo\n */\n\n/**\n * @typedef {Object} LoginIframe\n * @property {boolean} enable\n * @property {((error: Error | null, value?: boolean) => void)[]} callbackList\n * @property {number} interval\n * @property {HTMLIFrameElement=} iframe\n * @property {string=} iframeOrigin\n */\n\nexport default class Keycloak {\n /** @type {Pick<PromiseWithResolvers<boolean>, 'resolve' | 'reject'>[]} */\n #refreshQueue = []\n /** @type {KeycloakAdapter} */\n #adapter\n /** @type {boolean} */\n #useNonce = true\n /** @type {CallbackStorage} */\n #callbackStorage\n #logInfo = this.#createLogger(console.info)\n #logWarn = this.#createLogger(console.warn)\n /** @type {LoginIframe} */\n #loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n }\n\n /** @type {KeycloakConfig} config */\n #config\n didInitialize = false\n authenticated = false\n loginRequired = false\n /** @type {KeycloakResponseMode} */\n responseMode = 'fragment'\n /** @type {KeycloakResponseType} */\n responseType = 'code'\n /** @type {KeycloakFlow} */\n flow = 'standard'\n /** @type {number?} */\n timeSkew = null\n /** @type {string=} */\n redirectUri\n /** @type {string=} */\n silentCheckSsoRedirectUri\n /** @type {boolean} */\n silentCheckSsoFallback = true\n /** @type {KeycloakPkceMethod} */\n pkceMethod = 'S256'\n enableLogging = false\n /** @type {'GET' | 'POST'} */\n logoutMethod = 'GET'\n /** @type {string=} */\n scope\n messageReceiveTimeout = 10000\n /** @type {string=} */\n idToken\n /** @type {KeycloakTokenParsed=} */\n idTokenParsed\n /** @type {string=} */\n token\n /** @type {KeycloakTokenParsed=} */\n tokenParsed\n /** @type {string=} */\n refreshToken\n /** @type {KeycloakTokenParsed=} */\n refreshTokenParsed\n /** @type {string=} */\n clientId\n /** @type {string=} */\n sessionId\n /** @type {string=} */\n subject\n /** @type {string=} */\n authServerUrl\n /** @type {string=} */\n realm\n /** @type {KeycloakRoles=} */\n realmAccess\n /** @type {KeycloakResourceAccess=} */\n resourceAccess\n /** @type {KeycloakProfile=} */\n profile\n /** @type {{}=} */\n userInfo\n /** @type {Endpoints} */\n endpoints\n /** @type {number=} */\n tokenTimeoutHandle\n /** @type {() => void=} */\n onAuthSuccess\n /** @type {(errorData?: KeycloakError) => void=} */\n onAuthError\n /** @type {() => void=} */\n onAuthRefreshSuccess\n /** @type {() => void=} */\n onAuthRefreshError\n /** @type {() => void=} */\n onTokenExpired\n /** @type {() => void=} */\n onAuthLogout\n /** @type {(authenticated: boolean) => void=} */\n onReady\n /** @type {(status: 'success' | 'cancelled' | 'error', action: string) => void=} */\n onActionUpdate\n\n /**\n * @param {KeycloakConfig} config\n */\n constructor (config) {\n if (typeof config !== 'string' && !isObject(config)) {\n throw new Error(\"The 'Keycloak' constructor must be provided with a configuration object, or a URL to a JSON configuration file.\")\n }\n\n if (isObject(config)) {\n const requiredProperties = 'oidcProvider' in config\n ? ['clientId']\n : ['url', 'realm', 'clientId']\n\n for (const property of requiredProperties) {\n if (!(property in config)) {\n throw new Error(`The configuration object is missing the required '${property}' property.`)\n }\n }\n }\n\n if (!globalThis.isSecureContext) {\n this.#logWarn(\n \"[KEYCLOAK] Keycloak JS must be used in a 'secure context' to function properly as it relies on browser APIs that are otherwise not available.\\n\" +\n 'Continuing to run your application insecurely will lead to unexpected behavior and breakage.\\n\\n' +\n 'For more information see: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts'\n )\n }\n\n this.#config = config\n }\n\n /**\n * @param {KeycloakInitOptions} initOptions\n * @returns {Promise<boolean>}\n */\n init = async (initOptions = {}) => {\n if (this.didInitialize) {\n throw new Error(\"A 'Keycloak' instance can only be initialized once.\")\n }\n\n this.didInitialize = true\n this.#callbackStorage = createCallbackStorage()\n\n const adapters = ['default', 'cordova', 'cordova-native']\n\n if (typeof initOptions.adapter === 'string' && adapters.includes(initOptions.adapter)) {\n this.#adapter = this.#loadAdapter(initOptions.adapter)\n } else if (typeof initOptions.adapter === 'object') {\n this.#adapter = initOptions.adapter\n } else if ('Cordova' in window || 'cordova' in window) {\n this.#adapter = this.#loadAdapter('cordova')\n } else {\n this.#adapter = this.#loadAdapter('default')\n }\n\n if (typeof initOptions.useNonce !== 'undefined') {\n this.#useNonce = initOptions.useNonce\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n this.#loginIframe.enable = initOptions.checkLoginIframe\n }\n\n if (initOptions.checkLoginIframeInterval) {\n this.#loginIframe.interval = initOptions.checkLoginIframeInterval\n }\n\n if (initOptions.onLoad === 'login-required') {\n this.loginRequired = true\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n this.responseMode = initOptions.responseMode\n } else {\n throw new Error('Invalid value for responseMode')\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n this.responseType = 'code'\n break\n case 'implicit':\n this.responseType = 'id_token token'\n break\n case 'hybrid':\n this.responseType = 'code id_token token'\n break\n default:\n throw new Error('Invalid value for flow')\n }\n this.flow = initOptions.flow\n }\n\n if (typeof initOptions.timeSkew === 'number') {\n this.timeSkew = initOptions.timeSkew\n }\n\n if (initOptions.redirectUri) {\n this.redirectUri = initOptions.redirectUri\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n this.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n this.silentCheckSsoFallback = initOptions.silentCheckSsoFallback\n }\n\n if (typeof initOptions.pkceMethod !== 'undefined') {\n if (initOptions.pkceMethod !== 'S256' && initOptions.pkceMethod !== false) {\n throw new TypeError(`Invalid value for pkceMethod', expected 'S256' or false but got ${initOptions.pkceMethod}.`)\n }\n\n this.pkceMethod = initOptions.pkceMethod\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n this.enableLogging = initOptions.enableLogging\n }\n\n if (initOptions.logoutMethod === 'POST') {\n this.logoutMethod = 'POST'\n }\n\n if (typeof initOptions.scope === 'string') {\n this.scope = initOptions.scope\n }\n\n if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n this.messageReceiveTimeout = initOptions.messageReceiveTimeout\n }\n\n await this.#loadConfig()\n await this.#check3pCookiesSupported()\n await this.#processInit(initOptions)\n\n this.onReady?.(this.authenticated)\n\n return this.authenticated\n }\n\n /**\n * @param {\"default\" | \"cordova\" | \"cordova-native\"} type\n * @returns {KeycloakAdapter}\n */\n #loadAdapter (type) {\n if (type === 'default') {\n return this.#loadDefaultAdapter()\n }\n\n if (type === 'cordova') {\n this.#loginIframe.enable = false\n return this.#loadCordovaAdapter()\n }\n\n if (type === 'cordova-native') {\n this.#loginIframe.enable = false\n return this.#loadCordovaNativeAdapter()\n }\n\n throw new Error('invalid adapter type: ' + type)\n }\n\n /**\n * @returns {KeycloakAdapter}\n */\n #loadDefaultAdapter () {\n /** @type {KeycloakAdapter['redirectUri']}{} */\n const redirectUri = (options) => {\n return options?.redirectUri || this.redirectUri || globalThis.location.href\n }\n\n return {\n login: async (options) => {\n window.location.assign(await this.createLoginUrl(options))\n return await new Promise(() => {})\n },\n\n logout: async (options) => {\n const logoutMethod = options?.logoutMethod ?? this.logoutMethod\n\n if (logoutMethod === 'GET') {\n window.location.replace(this.createLogoutUrl(options))\n return\n }\n\n // Create form to send POST request.\n const form = document.createElement('form')\n\n form.setAttribute('method', 'POST')\n form.setAttribute('action', this.createLogoutUrl(options))\n form.style.display = 'none'\n\n // Add data to form as hidden input fields.\n const data = {\n id_token_hint: this.idToken,\n client_id: this.clientId,\n post_logout_redirect_uri: redirectUri(options)\n }\n\n for (const [name, value] of Object.entries(data)) {\n const input = document.createElement('input')\n\n input.setAttribute('type', 'hidden')\n input.setAttribute('name', name)\n input.setAttribute('value', /** @type {string} */ (value))\n\n form.appendChild(input)\n }\n\n // Append form to page and submit it to perform logout and redirect.\n document.body.appendChild(form)\n form.submit()\n },\n\n register: async (options) => {\n window.location.assign(await this.createRegisterUrl(options))\n return await new Promise(() => {})\n },\n\n accountManagement: async () => {\n const accountUrl = this.createAccountUrl()\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl\n } else {\n throw new Error('Not supported by the OIDC server')\n }\n return await new Promise(() => {})\n },\n\n redirectUri\n }\n }\n\n /**\n * @returns {KeycloakAdapter}\n */\n #loadCordovaAdapter () {\n /**\n * @param {string} loginUrl\n * @param {string} target\n * @param {string} options\n * @returns {WindowProxy | null}\n */\n const cordovaOpenWindowWrapper = (loginUrl, target, options) => {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options)\n } else {\n return window.open(loginUrl, target, options)\n }\n }\n\n const shallowCloneCordovaOptions = (userOptions) => {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce((options, optionName) => {\n options[optionName] = userOptions.cordovaOptions[optionName]\n return options\n }, {})\n } else {\n return {}\n }\n }\n\n const formatCordovaOptions = (cordovaOptions) => {\n return Object.keys(cordovaOptions).reduce((options, optionName) => {\n options.push(optionName + '=' + cordovaOptions[optionName])\n return options\n }, []).join(',')\n }\n\n const createCordovaOptions = (userOptions) => {\n const cordovaOptions = shallowCloneCordovaOptions(userOptions)\n cordovaOptions.location = 'no'\n if (userOptions && userOptions.prompt === 'none') {\n cordovaOptions.hidden = 'yes'\n }\n return formatCordovaOptions(cordovaOptions)\n }\n\n const getCordovaRedirectUri = () => {\n return this.redirectUri || 'http://localhost'\n }\n\n return {\n login: async (options) => {\n const cordovaOptions = createCordovaOptions(options)\n const loginUrl = await this.createLoginUrl(options)\n const ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions)\n let completed = false\n let closed = false\n\n function closeBrowser () {\n closed = true\n ref.close()\n };\n\n return await new Promise((resolve, reject) => {\n ref.addEventListener('loadstart', async (event) => {\n if (event.url.indexOf(getCordovaRedirectUri()) === 0) {\n const callback = this.#parseCallback(event.url)\n\n try {\n await this.#processCallback(callback)\n resolve()\n } catch (error) {\n reject(error)\n }\n closeBrowser()\n completed = true\n }\n })\n\n ref.addEventListener('loaderror', async (event) => {\n if (!completed) {\n if (event.url.indexOf(getCordovaRedirectUri()) === 0) {\n const callback = this.#parseCallback(event.url)\n try {\n await this.#processCallback(callback)\n resolve()\n } catch (error) {\n reject(error)\n }\n closeBrowser()\n completed = true\n } else {\n reject(new Error('Unable to process login.'))\n closeBrowser()\n }\n }\n })\n\n ref.addEventListener('exit', function (event) {\n if (!closed) {\n reject(new Error('User closed the login window.'))\n }\n })\n })\n },\n\n logout: async (options) => {\n const logoutUrl = this.createLogoutUrl(options)\n const ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes')\n let error = false\n\n ref.addEventListener('loadstart', (event) => {\n if (event.url.indexOf(getCordovaRedirectUri()) === 0) {\n ref.close()\n }\n })\n\n ref.addEventListener('loaderror', (event) => {\n if (event.url.indexOf(getCordovaRedirectUri()) === 0) {\n ref.close()\n } else {\n error = true\n ref.close()\n }\n })\n\n await new Promise((resolve, reject) => {\n ref.addEventListener('exit', () => {\n if (error) {\n reject(new Error('User closed the login window.'))\n } else {\n this.clearToken()\n resolve()\n }\n })\n })\n },\n\n register: async (options) => {\n const registerUrl = await this.createRegisterUrl()\n const cordovaOptions = createCordovaOptions(options)\n const ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions)\n\n /** @type {Promise<void>} */\n const promise = new Promise((resolve, reject) => {\n ref.addEventListener('loadstart', async (event) => {\n if (event.url.indexOf(getCordovaRedirectUri()) === 0) {\n ref.close()\n const oauth = this.#parseCallback(event.url)\n\n try {\n await this.#processCallback(oauth)\n resolve()\n } catch (error) {\n reject(error)\n }\n }\n })\n })\n\n await promise\n },\n\n accountManagement: async () => {\n const accountUrl = this.createAccountUrl()\n if (typeof accountUrl !== 'undefined') {\n const ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no')\n ref.addEventListener('loadstart', function (event) {\n if (event.url.indexOf(getCordovaRedirectUri()) === 0) {\n ref.close()\n }\n })\n } else {\n throw new Error('Not supported by the OIDC server')\n }\n },\n\n redirectUri: () => {\n return getCordovaRedirectUri()\n }\n }\n }\n\n /**\n * @returns {KeycloakAdapter}\n */\n #loadCordovaNativeAdapter () {\n /* global universalLinks */\n return {\n login: async (options) => {\n const loginUrl = await this.createLoginUrl(options)\n\n await new Promise((resolve, reject) => {\n universalLinks.subscribe('keycloak', async (event) => {\n universalLinks.unsubscribe('keycloak')\n window.cordova.plugins.browsertab.close()\n const oauth = this.#parseCallback(event.url)\n\n try {\n await this.#processCallback(oauth)\n resolve()\n } catch (error) {\n reject(error)\n }\n })\n\n window.cordova.plugins.browsertab.openUrl(loginUrl)\n })\n },\n\n logout: async (options) => {\n const logoutUrl = this.createLogoutUrl(options)\n\n await new Promise((resolve) => {\n universalLinks.subscribe('keycloak', () => {\n universalLinks.unsubscribe('keycloak')\n window.cordova.plugins.browsertab.close()\n this.clearToken()\n resolve()\n })\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl)\n })\n },\n\n register: async (options) => {\n const registerUrl = await this.createRegisterUrl(options)\n\n await new Promise((resolve, reject) => {\n universalLinks.subscribe('keycloak', async (event) => {\n universalLinks.unsubscribe('keycloak')\n window.cordova.plugins.browsertab.close()\n const oauth = this.#parseCallback(event.url)\n try {\n await this.#processCallback(oauth)\n resolve()\n } catch (error) {\n reject(error)\n }\n })\n\n window.cordova.plugins.browsertab.openUrl(registerUrl)\n })\n },\n\n accountManagement: async () => {\n const accountUrl = this.createAccountUrl()\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl)\n } else {\n throw new Error('Not supported by the OIDC server')\n }\n },\n\n redirectUri: (options) => {\n if (options && options.redirectUri) {\n return options.redirectUri\n } else if (this.redirectUri) {\n return this.redirectUri\n } else {\n return 'http://localhost'\n }\n }\n }\n }\n\n /**\n * @returns {Promise<void>}\n */\n async #loadConfig () {\n if (typeof this.#config === 'string') {\n const jsonConfig = await fetchJsonConfig(this.#config)\n this.authServerUrl = jsonConfig['auth-server-url']\n this.realm = jsonConfig.realm\n this.clientId = jsonConfig.resource\n this.#setupEndpoints()\n } else {\n this.clientId = this.#config.clientId\n\n if ('oidcProvider' in this.#config) {\n await this.#loadOidcConfig(this.#config.oidcProvider)\n } else {\n this.authServerUrl = this.#config.url\n this.realm = this.#config.realm\n this.#setupEndpoints()\n }\n }\n }\n\n /**\n * @returns {void}\n */\n #setupEndpoints () {\n this.endpoints = {\n authorize: () => {\n return this.#getRealmUrl() + '/protocol/openid-connect/auth'\n },\n token: () => {\n return this.#getRealmUrl() + '/protocol/openid-connect/token'\n },\n logout: () => {\n return this.#getRealmUrl() + '/protocol/openid-connect/logout'\n },\n checkSessionIframe: () => {\n return this.#getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html'\n },\n thirdPartyCookiesIframe: () => {\n return this.#getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html'\n },\n register: () => {\n return this.#getRealmUrl() + '/protocol/openid-connect/registrations'\n },\n userinfo: () => {\n return this.#getRealmUrl() + '/protocol/openid-connect/userinfo'\n }\n }\n }\n\n /**\n * @param {string | OpenIdProviderMetadata} oidcProvider\n * @returns {Promise<void>}\n */\n async #loadOidcConfig (oidcProvider) {\n if (typeof oidcProvider === 'string') {\n const url = `${stripTrailingSlash(oidcProvider)}/.well-known/openid-configuration`\n const openIdConfig = await fetchOpenIdConfig(url)\n this.#setupOidcEndpoints(openIdConfig)\n } else {\n this.#setupOidcEndpoints(oidcProvider)\n }\n }\n\n /**\n * @param {OpenIdProviderMetadata} config\n * @returns {void}\n */\n #setupOidcEndpoints (config) {\n this.endpoints = {\n authorize () {\n return config.authorization_endpoint\n },\n token () {\n return config.token_endpoint\n },\n logout () {\n if (!config.end_session_endpoint) {\n throw new Error('Not supported by the OIDC server')\n }\n return config.end_session_endpoint\n },\n checkSessionIframe () {\n if (!config.check_session_iframe) {\n throw new Error('Not supported by the OIDC server')\n }\n return config.check_session_iframe\n },\n register () {\n throw new Error('Redirection to \"Register user\" page not supported in standard OIDC mode')\n },\n userinfo () {\n if (!config.userinfo_endpoint) {\n throw new Error('Not supported by the OIDC server')\n }\n return config.userinfo_endpoint\n }\n }\n }\n\n /**\n * @returns {Promise<void>}\n */\n async #check3pCookiesSupported () {\n if ((!this.#loginIframe.enable && !this.silentCheckSsoRedirectUri) || typeof this.endpoints.thirdPartyCookiesIframe !== 'function') {\n return\n }\n\n const iframe = document.createElement('iframe')\n iframe.setAttribute('src', this.endpoints.thirdPartyCookiesIframe())\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin')\n iframe.setAttribute('title', 'keycloak-3p-check-iframe')\n iframe.style.display = 'none'\n document.body.appendChild(iframe)\n\n /** @type {Promise<void>} */\n const promise = new Promise((resolve) => {\n /**\n * @param {MessageEvent} event\n */\n const messageCallback = (event) => {\n if (iframe.contentWindow !== event.source) {\n return\n }\n\n if (event.data !== 'supported' && event.data !== 'unsupported') {\n return\n } else if (event.data === 'unsupported') {\n this.#logWarn(\n '[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n' +\n ' - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n' +\n ' - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n' +\n 'For more information see: https://www.keycloak.org/securing-apps/javascript-adapter#_modern_browsers'\n )\n\n this.#loginIframe.enable = false\n if (this.silentCheckSsoFallback) {\n this.silentCheckSsoRedirectUri = undefined\n }\n }\n\n document.body.removeChild(iframe)\n window.removeEventListener('message', messageCallback)\n resolve()\n }\n\n window.addEventListener('message', messageCallback, false)\n })\n\n return await applyTimeoutToPromise(promise, this.messageReceiveTimeout, 'Timeout when waiting for 3rd party check iframe message.')\n }\n\n /**\n * @param {KeycloakInitOptions} initOptions\n * @returns {Promise<void>}\n */\n async #processInit (initOptions) {\n const callback = this.#parseCallback(window.location.href)\n\n if (callback?.newUrl) {\n window.history.replaceState(window.history.state, '', callback.newUrl)\n }\n\n if (callback && callback.valid) {\n await this.#setupCheckLoginIframe()\n await this.#processCallback(callback)\n return\n }\n\n /** @param {boolean} prompt */\n const doLogin = async (prompt) => {\n /** @type {KeycloakLoginOptions} */\n const options = {}\n\n if (!prompt) {\n options.prompt = 'none'\n }\n\n if (initOptions.locale) {\n options.locale = initOptions.locale\n }\n\n await this.login(options)\n }\n\n const onLoad = async () => {\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (this.#loginIframe.enable) {\n await this.#setupCheckLoginIframe()\n const unchanged = await this.#checkLoginIframe()\n\n if (!unchanged) {\n this.silentCheckSsoRedirectUri ? await this.#checkSsoSilently() : await doLogin(false)\n }\n } else {\n this.silentCheckSsoRedirectUri ? await this.#checkSsoSilently() : await doLogin(false)\n }\n break\n case 'login-required':\n await doLogin(true)\n break\n default:\n throw new Error('Invalid value for onLoad')\n }\n }\n\n if (initOptions.token && initOptions.refreshToken) {\n this.#setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken)\n\n if (this.#loginIframe.enable) {\n await this.#setupCheckLoginIframe()\n const unchanged = await this.#checkLoginIframe()\n\n if (unchanged) {\n this.onAuthSuccess?.()\n this.#scheduleCheckIframe()\n }\n } else {\n try {\n await this.updateToken(-1)\n this.onAuthSuccess?.()\n } catch (error) {\n this.onAuthError?.()\n if (initOptions.onLoad) {\n await onLoad()\n } else {\n throw error\n }\n }\n }\n } else if (initOptions.onLoad) {\n await onLoad()\n }\n }\n\n /**\n * @returns {Promise<void>}\n */\n async #setupCheckLoginIframe () {\n if (!this.#loginIframe.enable || this.#loginIframe.iframe) {\n return\n }\n\n const iframe = document.createElement('iframe')\n this.#loginIframe.iframe = iframe\n iframe.setAttribute('src', this.endpoints.checkSessionIframe())\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin')\n iframe.setAttribute('title', 'keycloak-session-iframe')\n iframe.style.display = 'none'\n document.body.appendChild(iframe)\n\n /**\n * @param {MessageEvent} event\n */\n const messageCallback = (event) => {\n if (event.origin !== this.#loginIframe.iframeOrigin || this.#loginIframe.iframe?.contentWindow !== event.source) {\n return\n }\n\n if (!(event.data === 'unchanged' || event.data === 'changed' || event.data === 'error')) {\n return\n }\n\n if (event.data !== 'unchanged') {\n this.clearToken()\n }\n\n const callbacks = this.#loginIframe.callbackList\n this.#loginIframe.callbackList = []\n\n for (const callback of callbacks.reverse()) {\n if (event.data === 'error') {\n callback(new Error('Error while checking login iframe'))\n } else {\n callback(null, event.data === 'unchanged')\n }\n }\n }\n\n window.addEventListener('message', messageCallback, false)\n\n /** @type {Promise<void>} */\n const promise = new Promise((resolve) => {\n iframe.addEventListener('load', () => {\n const authUrl = this.endpoints.authorize()\n if (authUrl.startsWith('/')) {\n this.#loginIframe.iframeOrigin = globalThis.location.origin\n } else {\n this.#loginIframe.iframeOrigin = new URL(authUrl).origin\n }\n resolve()\n })\n })\n\n await promise\n }\n\n /**\n * @returns {Promise<boolean | undefined>}\n */\n async #checkLoginIframe () {\n if (!this.#loginIframe.iframe || !this.#loginIframe.iframeOrigin) {\n return\n }\n\n const message = `${this.clientId} ${(this.sessionId ? this.sessionId : '')}`\n const origin = this.#loginIframe.iframeOrigin\n\n /** @type {Promise<boolean>} */\n const promise = new Promise((resolve, reject) => {\n /** @type {(error: Error | null, value?: boolean) => void} */\n const callback = (error, result) => error ? reject(error) : resolve(/** @type {boolean} */ (result))\n\n this.#loginIframe.callbackList.push(callback)\n\n if (this.#loginIframe.callbackList.length === 1) {\n this.#loginIframe.iframe?.contentWindow?.postMessage(message, origin)\n }\n })\n\n return await promise\n }\n\n /**\n * @returns {Promise<void>}\n */\n async #checkSsoSilently () {\n const iframe = document.createElement('iframe')\n const src = await this.createLoginUrl({ prompt: 'none', redirectUri: this.silentCheckSsoRedirectUri })\n iframe.setAttribute('src', src)\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin')\n iframe.setAttribute('title', 'keycloak-silent-check-sso')\n iframe.style.display = 'none'\n document.body.appendChild(iframe)\n\n return await new Promise((resolve, reject) => {\n /**\n * @param {MessageEvent} event\n */\n const messageCallback = async (event) => {\n if (event.origin !== window.location.origin || iframe.contentWindow !== event.source) {\n return\n }\n\n const oauth = this.#parseCallback(event.data)\n\n try {\n await this.#processCallback(oauth)\n resolve()\n } catch (error) {\n reject(error)\n }\n\n document.body.removeChild(iframe)\n window.removeEventListener('message', messageCallback)\n }\n\n window.addEventListener('message', messageCallback)\n })\n };\n\n /**\n * @param {string} url\n */\n #parseCallback (url) {\n const oauth = this.#parseCallbackUrl(url)\n if (!oauth) {\n return\n }\n\n const oauthState = this.#callbackStorage.get(oauth.state)\n\n if (oauthState) {\n oauth.valid = true\n oauth.redirectUri = oauthState.redirectUri\n oauth.storedNonce = oauthState.nonce\n oauth.prompt = oauthState.prompt\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier\n oauth.loginOptions = oauthState.loginOptions\n }\n\n return oauth\n }\n\n /**\n * @param {string} urlString\n */\n #parseCallbackUrl (urlString) {\n let supportedParams = []\n switch (this.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'kc_action', 'iss']\n break\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss']\n break\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss']\n break\n }\n\n supportedParams.push('error')\n supportedParams.push('error_description')\n supportedParams.push('error_uri')\n\n const url = new URL(urlString)\n let newUrl = ''\n let parsed\n\n if (this.responseMode === 'query' && url.searchParams.size > 0) {\n parsed = this.#parseCallbackParams(url.search, supportedParams)\n url.search = parsed.paramsString\n newUrl = url.toString()\n } else if (this.responseMode === 'fragment' && url.hash.length > 0) {\n parsed = this.#parseCallbackParams(url.hash.substring(1), supportedParams)\n url.hash = parsed.paramsString\n newUrl = url.toString()\n }\n\n if (parsed?.oauthParams) {\n if (this.flow === 'standard' || this.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl\n return parsed.oauthParams\n }\n } else if (this.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl\n return parsed.oauthParams\n }\n }\n }\n }\n\n /**\n * @typedef {Object} ParsedCallbackParams\n * @property {string} paramsString\n * @property {Record<string, string | undefined>} oauthParams\n */\n\n /**\n * @param {string} paramsString\n * @param {string[]} supportedParams\n * @returns {ParsedCallbackParams}\n */\n #parseCallbackParams (paramsString, supportedParams) {\n const params = paramsString.split('&')\n /** @type {Record<string, string>} */\n const oauthParams = {}\n let result = ''\n\n for (const param of params.reverse()) {\n const entry = new URLSearchParams(param).entries().next().value\n\n if (!entry) {\n result = '&' + result\n continue\n }\n\n const [key, value] = entry\n\n if (supportedParams.includes(key) && !(key in oauthParams)) {\n oauthParams[key] = value\n } else {\n result = result.length === 0 ? param : param + '&' + result\n }\n }\n\n return {\n paramsString: result,\n oauthParams\n }\n }\n\n async #processCallback (oauth) {\n const { code, error, prompt } = oauth\n let timeLocal = new Date().getTime()\n\n /**\n * @param {string} accessToken\n * @param {string=} refreshToken\n * @param {string=} idToken\n */\n const authSuccess = (accessToken, refreshToken, idToken) => {\n timeLocal = (timeLocal + new Date().getTime()) / 2\n\n this.#setToken(accessToken, refreshToken, idToken, timeLocal)\n\n if (this.#useNonce && (this.idTokenParsed && this.idTokenParsed.nonce !== oauth.storedNonce)) {\n this.#logInfo('[KEYCLOAK] Invalid nonce, clearing token')\n this.clearToken()\n throw new Error('Invalid nonce.')\n }\n }\n\n if (oauth.kc_action_status) {\n this.onActionUpdate && this.onActionUpdate(oauth.kc_action_status, oauth.kc_action)\n }\n\n if (error) {\n if (prompt !== 'none') {\n if (oauth.error_description && oauth.error_description === 'authentication_expired') {\n await this.login(oauth.loginOptions)\n } else {\n const errorData = { error, error_description: oauth.error_description }\n this.onAuthError?.(errorData)\n throw errorData\n }\n }\n return\n } else if ((this.flow !== 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, undefined, oauth.id_token)\n this.onAuthSuccess?.()\n }\n\n if ((this.flow !== 'implicit') && code) {\n try {\n const response = await fetchAccessToken(this.endpoints.token(), code, /** @type {string} */ (this.clientId), oauth.redirectUri, oauth.pkceCodeVerifier)\n authSuccess(response.access_token, response.refresh_token, response.id_token)\n\n if (this.flow === 'standard') {\n this.onAuthSuccess?.()\n }\n\n this.#scheduleCheckIframe()\n } catch (error) {\n this.onAuthError?.()\n throw error\n }\n }\n }\n\n async #scheduleCheckIframe () {\n if (this.#loginIframe.enable && this.token) {\n await waitForTimeout(this.#loginIframe.interval * 1000)\n const unchanged = await this.#checkLoginIframe()\n\n if (unchanged) {\n await this.#scheduleCheckIframe()\n }\n }\n }\n\n /**\n * @param {KeycloakLoginOptions} [options]\n * @returns {Promise<void>}\n */\n login = (options) => {\n return this.#adapter.login(options)\n }\n\n /**\n * @param {KeycloakLoginOptions} [options]\n * @returns {Promise<string>}\n */\n createLoginUrl = async (options) => {\n const state = createUUID()\n const nonce = createUUID()\n const redirectUri = this.#adapter.redirectUri(options)\n /** @type {CallbackState} */\n const callbackState = {\n state,\n nonce,\n redirectUri,\n loginOptions: options\n }\n\n if (options?.prompt) {\n callbackState.prompt = options.prompt\n }\n\n const url = options?.action === 'register'\n ? this.endpoints.register()\n : this.endpoints.authorize()\n\n let scope = options?.scope || this.scope\n const scopeValues = scope ? scope.split(' ') : []\n\n // Ensure the 'openid' scope is always included.\n if (!scopeValues.includes('openid')) {\n scopeValues.unshift('openid')\n }\n\n scope = scopeValues.join(' ')\n\n const params = new URLSearchParams([\n ['client_id', /** @type {string} */ (this.clientId)],\n ['redirect_uri', redirectUri],\n ['state', state],\n ['response_mode', this.responseMode],\n ['response_type', this.responseType],\n ['scope', scope]\n ])\n\n if (this.#useNonce) {\n params.append('nonce', nonce)\n }\n\n if (options?.prompt) {\n params.append('prompt', options.prompt)\n }\n\n if (typeof options?.maxAge === 'number') {\n params.append('max_age', options.maxAge.toString())\n }\n\n if (options?.loginHint) {\n params.append('login_hint', options.loginHint)\n }\n\n if (options?.idpHint) {\n params.append('kc_idp_hint', options.idpHint)\n }\n\n if (options?.action && options.action !== 'register') {\n params.append('kc_action', options.action)\n }\n\n if (options?.locale) {\n params.append('ui_locales', options.locale)\n }\n\n if (options?.acr) {\n params.append('claims', buildClaimsParameter(options.acr))\n }\n\n if (options?.acrValues) {\n params.append('acr_values', options.acrValues)\n }\n\n if (this.pkceMethod) {\n try {\n const codeVerifier = generateCodeVerifier(96)\n const pkceChallenge = await generatePkceChallenge(this.pkceMethod, codeVerifier)\n\n callbackState.pkceCodeVerifier = codeVerifier\n\n params.append('code_challenge', pkceChallenge)\n params.append('code_challenge_method', this.pkceMethod)\n } catch (error) {\n throw new Error('Failed to generate PKCE challenge.', { cause: error })\n }\n }\n\n this.#callbackStorage.add(callbackState)\n\n return `${url}?${params.toString()}`\n }\n\n /**\n * @param {KeycloakLogoutOptions} [options]\n * @returns {Promise<void>}\n */\n logout = (options) => {\n return this.#adapter.logout(options)\n }\n\n /**\n * @param {KeycloakLogoutOptions} [options]\n * @returns {string}\n */\n createLogoutUrl = (options) => {\n const logoutMethod = options?.logoutMethod ?? this.logoutMethod\n const url = this.endpoints.logout()\n\n if (logoutMethod === 'POST') {\n return url\n }\n\n const params = new URLSearchParams([\n ['client_id', /** @type {string} */ (this.clientId)],\n ['post_logout_redirect_uri', this.#adapter.redirectUri(options)]\n ])\n\n if (this.idToken) {\n params.append('id_token_hint', this.idToken)\n }\n\n return `${url}?${params.toString()}`\n }\n\n /**\n * @param {KeycloakRegisterOptions} [options]\n * @returns {Promise<void>}\n */\n register = (options) => {\n return this.#adapter.register(options)\n }\n\n /**\n * @param {KeycloakRegisterOptions} [options]\n * @returns {Promise<string>}\n */\n createRegisterUrl = (options) => {\n return this.createLoginUrl({ ...options, action: 'register' })\n }\n\n /**\n * @param {KeycloakAccountOptions} [options]\n * @returns {string}\n */\n createAccountUrl = (options) => {\n const url = this.#getRealmUrl()\n\n if (!url) {\n throw new Error('Unable to create account URL, make sure the adapter is not configured using a generic OIDC provider.')\n }\n\n const params = new URLSearchParams([\n ['referrer', /** @type {string} */ (this.clientId)],\n ['referrer_uri', this.#adapter.redirectUri(options)]\n ])\n\n return `${url}/account?${params.toString()}`\n }\n\n /**\n * @returns {Promise<void>}\n */\n accountManagement = () => {\n return this.#adapter.accountManagement()\n }\n\n /**\n * @param {string} role\n * @returns {boolean}\n */\n hasRealmRole = (role) => {\n const access = this.realmAccess\n return !!access && access.roles.indexOf(role) >= 0\n }\n\n /**\n * @param {string} role\n * @param {string} [resource]\n * @returns {boolean}\n */\n hasResourceRole = (role, resource) => {\n if (!this.resourceAccess) {\n return false\n }\n\n const access = this.resourceAccess[resource || /** @type {string} */ (this.clientId)]\n return !!access && access.roles.indexOf(role) >= 0\n }\n\n /**\n * @returns {Promise<KeycloakProfile>}\n */\n loadUserProfile = async () => {\n const realmUrl = this.#getRealmUrl()\n\n if (!realmUrl) {\n throw new Error('Unable to load user profile, make sure the adapter is not configured using a generic OIDC provider.')\n }\n\n const url = `${realmUrl}/account`\n /** @type {KeycloakProfile} */\n const profile = await fetchJSON(url, {\n headers: [buildAuthorizationHeader(this.token)]\n })\n\n return (this.profile = profile)\n }\n\n /**\n * @returns {Promise<{}>}\n */\n loadUserInfo = async () => {\n const url = this.endpoints.userinfo()\n /** @type {{}} */\n const userInfo = await fetchJSON(url, {\n headers: [buildAuthorizationHeader(this.token)]\n })\n\n return (this.userInfo = userInfo)\n }\n\n /**\n * @param {number} [minValidity]\n * @returns {boolean}\n */\n isTokenExpired = (minValidity) => {\n if (!this.tokenParsed || (!this.refreshToken && this.flow !== 'implicit')) {\n throw new Error('Not authenticated')\n }\n\n if (this.timeSkew == null) {\n this.#logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set')\n return true\n }\n\n if (typeof this.tokenParsed.exp !== 'number') {\n return false\n }\n\n let expiresIn = this.tokenParsed.exp - Math.ceil(new Date().getTime() / 1000) + this.timeSkew\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw new Error('Invalid minValidity')\n }\n expiresIn -= minValidity\n }\n return expiresIn < 0\n }\n\n /**\n * @param {number} minValidity\n * @returns {Promise<boolean>}\n */\n updateToken = async (minValidity) => {\n if (!this.refreshToken) {\n throw new Error('Unable to update token, no refresh token available.')\n }\n\n minValidity = minValidity || 5\n\n if (this.#loginIframe.enable) {\n await this.#checkLoginIframe()\n }\n\n let refreshToken = false\n\n if (minValidity === -1) {\n refreshToken = true\n this.#logInfo('[KEYCLOAK] Refreshing token: forced refresh')\n } else if (!this.tokenParsed || this.isTokenExpired(minValidity)) {\n refreshToken = true\n this.#logInfo('[KEYCLOAK] Refreshing token: token expired')\n }\n\n if (!refreshToken) {\n return false\n }\n\n /** @type {PromiseWithResolvers<boolean>} */\n const { promise, resolve, reject } = Promise.withResolvers()\n\n this.#refreshQueue.push({ resolve, reject })\n\n if (this.#refreshQueue.length === 1) {\n const url = this.endpoints.token()\n let timeLocal = new Date().getTime()\n\n try {\n const response = await fetchRefreshToken(url, this.refreshToken, /** @type {string} */ (this.clientId))\n this.#logInfo('[KEYCLOAK] Token refreshed')\n\n timeLocal = (timeLocal + new Date().getTime()) / 2\n\n this.#setToken(response.access_token, response.refresh_token, response.id_token, timeLocal)\n\n this.onAuthRefreshSuccess?.()\n for (let p = this.#refreshQueue.pop(); p != null; p = this.#refreshQueue.pop()) {\n p.resolve(true)\n }\n } catch (error) {\n this.#logWarn('[KEYCLOAK] Failed to refresh token')\n\n if (error instanceof NetworkError && error.response.status === 400) {\n this.clearToken()\n }\n\n this.onAuthRefreshError?.()\n for (let p = this.#refreshQueue.pop(); p != null; p = this.#refreshQueue.pop()) {\n p.reject(error)\n }\n }\n }\n\n return await promise\n }\n\n clearToken = () => {\n if (this.token) {\n this.#setToken()\n this.onAuthLogout?.()\n if (this.loginRequired) {\n this.login()\n }\n }\n }\n\n /**\n * @param {string} [token]\n * @param {string} [refreshToken]\n * @param {string} [idToken]\n * @param {number} [timeLocal]\n */\n #setToken (token, refreshToken, idToken, timeLocal) {\n if (this.tokenTimeoutHandle) {\n clearTimeout(this.tokenTimeoutHandle)\n this.tokenTimeoutHandle = undefined\n }\n\n if (refreshToken) {\n this.refreshToken = refreshToken\n this.refreshTokenParsed = decodeToken(refreshToken)\n } else {\n delete this.refreshToken\n delete this.refreshTokenParsed\n }\n\n if (idToken) {\n this.idToken = idToken\n this.idTokenParsed = decodeToken(idToken)\n } else {\n delete this.idToken\n delete this.idTokenParsed\n }\n\n if (token) {\n this.token = token\n this.tokenParsed = decodeToken(token)\n this.sessionId = this.tokenParsed.sid\n this.authenticated = true\n this.subject = this.tokenParsed.sub\n this.realmAccess = this.tokenParsed.realm_access\n this.resourceAccess = this.tokenParsed.resource_access\n\n if (timeLocal) {\n this.timeSkew = Math.floor(timeLocal / 1000) - this.tokenParsed.iat\n }\n\n if (this.timeSkew !== null) {\n this.#logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + this.timeSkew + ' seconds')\n\n if (this.onTokenExpired) {\n const expiresIn = (this.tokenParsed.exp - (new Date().getTime() / 1000) + this.timeSkew) * 1000\n this.#logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s')\n if (expiresIn <= 0) {\n this.onTokenExpired()\n } else {\n this.tokenTimeoutHandle = window.setTimeout(this.onTokenExpired, expiresIn)\n }\n }\n }\n } else {\n delete this.token\n delete this.tokenParsed\n delete this.subject\n delete this.realmAccess\n delete this.resourceAccess\n\n this.authenticated = false\n }\n }\n\n /**\n * @returns {string=}\n */\n #getRealmUrl () {\n if (typeof this.authServerUrl === 'undefined') {\n return\n }\n\n return `${stripTrailingSlash(this.authServerUrl)}/realms/${encodeURIComponent(/** @type {string} */ (this.realm))}`\n }\n\n /**\n * @param {Function} fn\n * @returns {(message: string) => void}\n */\n #createLogger (fn) {\n return (message) => {\n if (this.enableLogging) {\n fn.call(console, message)\n }\n }\n }\n}\n\n/**\n * @returns {string}\n */\nfunction createUUID () {\n if (typeof crypto === 'undefined' || typeof crypto.randomUUID === 'undefined') {\n throw new Error('Web Crypto API is not available.')\n }\n\n return crypto.randomUUID()\n}\n\n/**\n * @param {Acr} requestedAcr\n * @returns {string}\n */\nfunction buildClaimsParameter (requestedAcr) {\n return JSON.stringify({\n id_token: {\n acr: requestedAcr\n }\n })\n}\n\n/**\n * @param {number} len\n * @returns {string}\n */\nfunction generateCodeVerifier (len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789')\n}\n\n/**\n * @param {string} pkceMethod\n * @param {string} codeVerifier\n * @returns {Promise<string>}\n */\nasync function generatePkceChallenge (pkceMethod, codeVerifier) {\n if (pkceMethod !== 'S256') {\n throw new TypeError(`Invalid value for 'pkceMethod', expected 'S256' but got '${pkceMethod}'.`)\n }\n\n // hash codeVerifier, then encode as url-safe base64 without padding\n const hashBytes = new Uint8Array(await sha256Digest(codeVerifier))\n const encodedHash = bytesToBase64(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '')\n\n return encodedHash\n}\n\n/**\n * @param {number} len\n * @param {string} alphabet\n * @returns {string}\n */\nfunction generateRandomString (len, alphabet) {\n const randomData = generateRandomData(len)\n const chars = new Array(len)\n for (let i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length)\n }\n return String.fromCharCode.apply(null, chars)\n}\n\n/**\n * @param {number} len\n * @returns {Uint8Array<ArrayBuffer>}\n */\nfunction generateRandomData (len) {\n if (typeof crypto === 'undefined' || typeof crypto.getRandomValues === 'undefined') {\n throw new Error('Web Crypto API is not available.')\n }\n\n return crypto.getRandomValues(new Uint8Array(len))\n}\n\n/**\n * Function to extend existing native Promise with timeout\n *\n * @template T\n * @param {Promise<T>} promise\n * @param {number} timeout\n * @param {string} errorMessage\n * @returns {Promise<T>}\n */\nfunction applyTimeoutToPromise (promise, timeout, errorMessage) {\n /** @type {number} */\n let timeoutHandle\n const timeoutPromise = new Promise(function (resolve, reject) {\n timeoutHandle = window.setTimeout(function () {\n reject(new Error(errorMessage || 'Promise is not settled within timeout of ' + timeout + 'ms'))\n }, timeout)\n })\n\n return Promise.race([promise, timeoutPromise]).finally(function () {\n clearTimeout(timeoutHandle)\n })\n}\n\n/**\n * @returns {CallbackStorage}\n */\nfunction createCallbackStorage () {\n try {\n return new LocalStorage()\n } catch (err) {\n return new CookieStorage()\n }\n}\n\nconst STORAGE_KEY_PREFIX = 'kc-callback-'\n\n/**\n * @typedef {Object} CallbackState\n * @property {string} state\n * @property {string} nonce\n * @property {string} redirectUri\n * @property {KeycloakLoginOptions} [loginOptions]\n * @property {KeycloakLoginOptions['prompt']} [prompt]\n * @property {string} [pkceCodeVerifier]\n */\n\n/**\n * @typedef {Object} CallbackStorage\n * @property {(state?: string) => CallbackState | null} get\n * @property {(state: CallbackState) => void} add\n */\n\n/**\n * @implements {CallbackStorage}\n */\nclass LocalStorage {\n constructor () {\n globalThis.localStorage.setItem('kc-test', 'test')\n globalThis.localStorage.removeItem('kc-test')\n }\n\n /**\n * @param {string} [state]\n * @returns {CallbackState | null}\n */\n get (state) {\n if (!state) {\n return null\n }\n\n this.#clearInvalidValues()\n\n const key = STORAGE_KEY_PREFIX + state\n const value = globalThis.localStorage.getItem(key)\n\n if (value) {\n globalThis.localStorage.removeItem(key)\n return JSON.parse(value)\n }\n\n return null\n };\n\n /**\n * @param {CallbackState} state\n */\n add (state) {\n this.#clearInvalidValues()\n\n const key = STORAGE_KEY_PREFIX + state.state\n const value = JSON.stringify({\n ...state,\n // Set the expiry time to 1 hour from now.\n expires: Date.now() + (60 * 60 * 1000)\n })\n\n try {\n globalThis.localStorage.setItem(key, value)\n } catch (error) {\n // If the storage is full, clear all known values and try again.\n this.#clearAllValues()\n globalThis.localStorage.setItem(key, value)\n }\n };\n\n /**\n * Clears all values from local storage that are no longer valid.\n */\n #clearInvalidValues () {\n const currentTime = Date.now()\n\n for (const [key, value] of this.#getStoredEntries()) {\n // Attempt to parse the expiry time from the value.\n const expiry = this.#parseExpiry(value)\n\n // Discard the value if it is malformed or expired.\n if (expiry === null || expiry < currentTime) {\n globalThis.localStorage.removeItem(key)\n }\n }\n }\n\n /**\n * Clears all known values from local storage.\n */\n #clearAllValues () {\n for (const [key] of this.#getStoredEntries()) {\n globalThis.localStorage.removeItem(key)\n }\n }\n\n /**\n * Gets all entries stored in local storage that are known to be managed by this class.\n * @returns {[string, string][]} An array of key-value pairs.\n */\n #getStoredEntries () {\n return Object.entries(globalThis.localStorage).filter(([key]) => key.startsWith(STORAGE_KEY_PREFIX))\n }\n\n /**\n * Parses the expiry time from a value stored in local storage.\n * @param {string} value\n * @returns {number | null} The expiry time in milliseconds, or `null` if the value is malformed.\n */\n #parseExpiry (value) {\n let parsedValue\n\n // Attempt to parse the value as JSON.\n try {\n parsedValue = JSON.parse(value)\n } catch (error) {\n return null\n }\n\n // Attempt to extract the 'expires' property.\n if (isObject(parsedValue) && 'expires' in parsedValue && typeof parsedValue.expires === 'number') {\n return parsedValue.expires\n }\n\n return null\n }\n}\n\n/**\n * @implements {CallbackStorage}\n */\nclass CookieStorage {\n /**\n * @param {string} [state]\n * @returns {CallbackState | null}\n */\n get (state) {\n if (!state) {\n return null\n }\n\n const value = this.#getCookie(STORAGE_KEY_PREFIX + state)\n this.#setCookie(STORAGE_KEY_PREFIX + state, '', this.#cookieExpiration(-100))\n if (value) {\n return JSON.parse(value)\n }\n\n return null\n }\n\n /**\n * @param {CallbackState} state\n */\n add (state) {\n this.#setCookie(STORAGE_KEY_PREFIX + state.state, JSON.stringify(state), this.#cookieExpiration(60))\n }\n\n /**\n * @param {string} key\n * @returns\n */\n #getCookie (key) {\n const name = key + '='\n const ca = document.cookie.split(';')\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) === ' ') {\n c = c.substring(1)\n }\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length)\n }\n }\n return ''\n }\n\n /**\n * @param {string} key\n * @param {string} value\n * @param {Date} expirationDate\n */\n #setCookie (key, value, expirationDate) {\n const cookie = key + '=' + value + '; ' +\n 'expires=' + expirationDate.toUTCString() + '; '\n document.cookie = cookie\n }\n\n /**\n * @param {number} minutes\n * @returns {Date}\n */\n #cookieExpiration (minutes) {\n const exp = new Date()\n exp.setTime(exp.getTime() + (minutes * 60 * 1000))\n return exp\n }\n}\n\n/**\n * @param {Uint8Array<ArrayBuffer>} bytes\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n */\nfunction bytesToBase64 (bytes) {\n const binString = String.fromCodePoint(...bytes)\n return btoa(binString)\n}\n\n/**\n * @param {string} message\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#basic_example\n */\nasync function sha256Digest (message) {\n const encoder = new TextEncoder()\n const data = encoder.encode(message)\n\n if (typeof crypto === 'undefined' || typeof crypto.subtle === 'undefined') {\n throw new Error('Web Crypto API is not available.')\n }\n\n return await crypto.subtle.digest('SHA-256', data)\n}\n\n/**\n * @param {string} token\n * @returns {KeycloakTokenParsed}\n */\nfunction decodeToken (token) {\n const [, payload] = token.split('.')\n\n if (typeof payload !== 'string') {\n throw new Error('Unable to decode token, payload not found.')\n }\n\n let decoded\n\n try {\n decoded = base64UrlDecode(payload)\n } catch (error) {\n throw new Error('Unable to decode token, payload is not a valid Base64URL value.', { cause: error })\n }\n\n try {\n return JSON.parse(decoded)\n } catch (error) {\n throw new Error('Unable to decode token, payload is not a valid JSON value.', { cause: error })\n }\n}\n\n/**\n * @param {string} input\n */\nfunction base64UrlDecode (input) {\n let output = input\n .replaceAll('-', '+')\n .replaceAll('_', '/')\n\n switch (output.length % 4) {\n case 0:\n break\n case 2:\n output += '=='\n break\n case 3:\n output += '='\n break\n default:\n throw new Error('Input is not of the correct length.')\n }\n\n try {\n return b64DecodeUnicode(output)\n } catch (error) {\n return atob(output)\n }\n}\n\n/**\n * @param {string} input\n */\nfunction b64DecodeUnicode (input) {\n return decodeURIComponent(atob(input).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase()\n\n if (code.length < 2) {\n code = '0' + code\n }\n\n return '%' + code\n }))\n}\n\n/**\n * Check if the input is an object that can be operated on.\n * @param {unknown} input\n */\nfunction isObject (input) {\n return typeof input === 'object' && input !== null\n}\n\n/**\n * @typedef {Object} JsonConfig The JSON version of the adapter configuration.\n * @property {string} auth-server-url The URL of the authentication server.\n * @property {string} realm The name of the realm.\n * @property {string} resource The name of the resource, usually the client ID.\n */\n\n/**\n * Fetch the adapter configuration from the given URL.\n * @param {string} url\n * @returns {Promise<JsonConfig>}\n */\nasync function fetchJsonConfig (url) {\n return await fetchJSON(url)\n}\n\n/**\n * Fetch the OpenID configuration from the given URL.\n * @param {string} url\n * @returns {Promise<OpenIdProviderMetadata>}\n */\nasync function fetchOpenIdConfig (url) {\n return await fetchJSON(url)\n}\n\n/**\n * @typedef {Object} AccessTokenResponse The successful token response from the authorization server, based on the {@link https://datatracker.ietf.org/doc/html/rfc6749#section-5.1 OAuth 2.0 Authorization Framework specification}.\n * @property {string} access_token The access token issued by the authorization server.\n * @property {string} token_type The type of the token issued by the authorization server.\n * @property {number} [expires_in] The lifetime in seconds of the access token.\n * @property {string} [refresh_token] The refresh token issued by the authorization server.\n * @property {string} [id_token] The ID token issued by the authorization server, if requested.\n * @property {string} [scope] The scope of the access token.\n */\n\n/**\n * Fetch the access token from the given URL.\n * @param {string} url\n * @param {string} code\n * @param {string} clientId\n * @param {string} redirectUri\n * @param {string} [pkceCodeVerifier]\n * @returns {Promise<AccessTokenResponse>}\n */\nasync function fetchAccessToken (url, code, clientId, redirectUri, pkceCodeVerifier) {\n const body = new URLSearchParams([\n ['code', code],\n ['grant_type', 'authorization_code'],\n ['client_id', clientId],\n ['redirect_uri', redirectUri]\n ])\n\n if (pkceCodeVerifier) {\n body.append('code_verifier', pkceCodeVerifier)\n }\n\n return await fetchJSON(url, {\n method: 'POST',\n credentials: 'include',\n body\n })\n}\n\n/**\n * Fetch the refresh token from the given URL.\n * @param {string} url\n * @param {string} refreshToken\n * @param {string} clientId\n * @returns {Promise<AccessTokenResponse>}\n */\nasync function fetchRefreshToken (url, refreshToken, clientId) {\n const body = new URLSearchParams([\n ['grant_type', 'refresh_token'],\n ['refresh_token', refreshToken],\n ['client_id', clientId]\n ])\n\n return await fetchJSON(url, {\n method: 'POST',\n credentials: 'include',\n body\n })\n}\n\n/**\n * @template [T=unknown]\n * @param {string} url\n * @param {RequestInit} init\n * @returns {Promise<T>}\n */\nasync function fetchJSON (url, init = {}) {\n const headers = new Headers(init.headers)\n headers.set('Accept', CONTENT_TYPE_JSON)\n\n const response = await fetchWithErrorHandling(url, {\n ...init,\n headers\n })\n\n return await response.json()\n}\n\n/**\n * @param {string} url\n * @param {RequestInit} [init]\n * @returns {Promise<Response>}\n */\nasync function fetchWithErrorHandling (url, init) {\n const response = await fetch(url, init)\n\n if (!response.ok) {\n throw new NetworkError('Server responded with an invalid status.', { response })\n }\n\n return response\n}\n\n/**\n * @param {string} [token]\n * @returns {[string, string]}\n */\nfunction buildAuthorizationHeader (token) {\n if (!token) {\n throw new Error('Unable to build authorization header, token is not set, make sure the user is authenticated.')\n }\n\n return ['Authorization', `bearer ${token}`]\n}\n\n/**\n * @param {string} url\n * @returns {string}\n */\nfunction stripTrailingSlash (url) {\n return url.endsWith('/') ? url.slice(0, -1) : url\n}\n\n/**\n * @typedef {Object} NetworkErrorOptionsProperties\n * @property {Response} response\n * @typedef {ErrorOptions & NetworkErrorOptionsProperties} NetworkErrorOptions\n */\n\nexport class NetworkError extends Error {\n /** @type {Response} */\n response\n\n /**\n * @param {string} message\n * @param {NetworkErrorOptions} options\n */\n constructor (message, options) {\n super(message, options)\n this.response = options.response\n }\n}\n\n/**\n * @param {number} delay\n * @returns {Promise<void>}\n */\nconst waitForTimeout = (delay) => new Promise((resolve) => setTimeout(resolve, delay))\n","import Keycloak, { KeycloakInstance } from \"keycloak-js\";\nimport { Authentication, Session, Ticket } from \"./authentication\";\nimport { SessionManager } from \"./session-manager\";\n\nexport interface OIDCUser {\n sub: string;\n email?: string;\n preferred_username?: string;\n given_name?: string;\n family_name?: string;\n roles?: string[];\n [prop: string]: any;\n}\n\nexport interface OIDCTicket extends Ticket {\n accessToken: string;\n refreshToken?: string;\n idToken?: string;\n}\n\nexport class OIDCAuthentication implements Authentication<OIDCUser, OIDCTicket> {\n // instance data\n\n private keycloak: KeycloakInstance;\n\n // constructor\n\n constructor(config: {\n url: string;\n realm: string;\n clientId: string;\n }) {\n this.keycloak = new (Keycloak as any)(config);\n }\n\n // implement\n\n async init(): Promise<Session<OIDCUser, OIDCTicket> | null> {\n await this.keycloak.init({\n onLoad: 'check-sso',\n flow: 'standard',\n checkLoginIframe: false,\n });\n\n if (!this.keycloak.authenticated) {\n return null;\n }\n\n return this.buildSession();\n }\n\n async authenticate(): Promise<Session<OIDCUser, OIDCTicket>> {\n // Redirect to login\n await this.keycloak.login({\n redirectUri: window.location.href,\n });\n\n // In OIDC standard flow this line is never reached\n throw new Error('Redirecting for OIDC login');\n }\n\n async logout(): Promise<void> {\n await this.keycloak.logout({\n redirectUri: window.location.origin,\n });\n }\n\n // private\n\n private buildSession(): Session<OIDCUser, OIDCTicket> {\n return {\n user: this.keycloak.idTokenParsed as OIDCUser,\n ticket: {\n accessToken: this.keycloak.token!,\n refreshToken: this.keycloak.refreshToken,\n idToken: this.keycloak.idToken,\n },\n expiry: this.keycloak.tokenParsed?.exp\n ? this.keycloak.tokenParsed.exp * 1000\n : undefined,\n };\n }\n}\n\nexport type OIDCSessionManager = SessionManager<OIDCUser, OIDCTicket>;","import { Translator } from '@novx/i18n';\nimport { createContext } from 'react';\n\n/**\n * the user api for i18n\n */\nexport interface I18N {\n /**\n * a function that can be used to translate keys\n * @param key a key\n * @param params optional params that can add placeholder values\n */\n tr: (key: string, params?: any) => string;\n /**\n * retrieves the current translator instance\n */\n translator: Translator;\n}\n\nexport const I18NContext = createContext<I18N | undefined>(undefined);\n","import { useEffect, useMemo, useState } from \"react\"\nimport { Translator, Interpolator } from \"@novx/i18n\"\nimport { I18NContext } from \"./i18n-context\"\nimport { useInject } from \"../environment\"\n\n/**\n * provider for i18n stuff\n */\nexport function I18NProvider(props: any) {\n // inject both services at once\n const [translator, interpolator] = useInject(\n Translator,\n Interpolator\n )\n\n const [counter, setCounter] = useState(0)\n\n // stable translate function\n\n const translate = useMemo(() => {\n return (key: string, params?: any): string => {\n let translation = translator.translate(key)\n\n if (params) {\n translation = interpolator.interpolate(translation, params)\n }\n\n return translation\n }\n }, [translator, interpolator, counter])\n\n useEffect(() => {\n const subscription = translator\n .events()\n .subscribe(() => {\n setCounter((c) => c + 1)\n })\n\n return () => {\n subscription.unsubscribe()\n }\n }, [translator])\n\n const contextValue = useMemo(\n () => ({\n tr: translate,\n translator,\n counter,\n }),\n [translate, translator, counter]\n )\n\n return (\n <I18NContext.Provider value={contextValue}>\n {props.children}\n </I18NContext.Provider>\n )\n}\n","import React from 'react';\nimport { I18NContext } from './i18n-context';\n\nexport const useI18N = () => {\n return React.useContext(I18NContext);\n};\n","/**\n * This is a generated file, do NOT edit manually!\n * Generator: AxiosClientGenerator V1.0 based on (OpenAPI-Generator https://openapi-generator.tech)\n */\n\nimport { AxiosRequestConfig } from 'axios'\n\nimport { AbstractService, HTTPFactory, service } from \"@novx/communication\"\nimport {Deployment, DeploymentRequest} from \"../model\";\n\n/**\n * no description\n */\n@service(\"\")\nexport class PortalService extends AbstractService {\n // constructor\n\n constructor(factory: HTTPFactory) {\n super(factory)\n }\n\n // public\n\n /**\n * Portal-Component.Portal-Service.Compute Deployment\n * @param requestBody \n */\n public async computeDeployment(requestBody:DeploymentRequest): Promise<Deployment> {\n // create request config\n\n const requestContext: AxiosRequestConfig = {\n url: '/portal/deployment',\n method: 'POST',\n data: this.serialize('DeploymentRequest', '', requestBody),\n };\n\n // execute query\n\n const response = await this.request(requestContext);\n\n return this.deserialize<Deployment>('Deployment', '', response.data);\n }\n}\n","import { FeatureMetadata } from '../feature-registry';\nimport { ComponentRegistry } from '../component-registry';\n\nimport { Tracer, TraceLevel, injectable } from '@novx/core';\nimport { FeatureOutlet, LoaderAction, OutletLoader } from '../feature-outlet';\n\n@injectable()\nexport class LocalComponentLoader extends OutletLoader {\n static {\n OutletLoader.loaders.push(LocalComponentLoader)\n }\n\n constructor() {\n super('component');\n }\n\n shouldRun(feature: FeatureMetadata, action: LoaderAction): boolean {\n return action === 'component' && feature.uri == undefined;\n }\n\n async run(feature: FeatureMetadata, outlet: FeatureOutlet): Promise<void> {\n await this.exec(async () => {\n Tracer.Trace(\n 'portal.feature-outlet',\n TraceLevel.HIGH,\n `Loading local component for feature '${feature.id}'`\n );\n\n const loader = ComponentRegistry.get(feature.id);\n outlet.component = await loader();\n });\n }\n}\n\n","import { FeatureOutlet, LoaderAction, OutletLoader } from '../feature-outlet';\nimport { FeatureMetadata } from '../feature-registry';\n\nimport { AbstractModule } from '../module';\n\nimport { Tracer, TraceLevel, Environment, injectable } from '@novx/core';\n\n\n// Webpack MF globals */\n\ndeclare function __webpack_init_sharing__(scope: string): Promise<void>;\ndeclare const __webpack_share_scopes__: { default: unknown };\n\n@injectable()\nexport class RemoteComponentLoader extends OutletLoader {\n static {\n OutletLoader.loaders.push(RemoteComponentLoader)\n }\n\n // static data\n\n private static remoteEntryCache = new Set<string>();\n private static moduleCache = new Map<string, any>();\n private static environmentCache = new Map<string, Environment>();\n\n // static\n\n static async loadRemoteEntry(scope: string, url: string) {\n if (this.remoteEntryCache.has(url)) return;\n\n return new Promise<void>((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.onload = () => {\n this.remoteEntryCache.add(url);\n resolve();\n };\n script.onerror = () =>\n reject(new Error(`Failed to load remote entry ${url}`));\n document.head.appendChild(script);\n });\n }\n\n static async initializeRemote(scope: string) {\n await __webpack_init_sharing__('default');\n const remoteContainer = (window as any)[scope];\n if (!remoteContainer)\n throw new Error(`Remote container ${scope} not found`);\n\n if ( Tracer.ENABLED)\n Tracer.Trace(\"portal\", TraceLevel.HIGH, \"initialize remote module {0}\", scope)\n\n await remoteContainer.init(__webpack_share_scopes__.default);\n }\n\n static async loadRemoteModule(scope: string, module: string, url?: string) {\n if ( Tracer.ENABLED)\n Tracer.Trace(\"portal\", TraceLevel.HIGH, \"load remote module {0}:{1}\", scope, module)\n\n const key = `${scope}:${module}`; // e.g. mfe1:./Module\n if (this.moduleCache.has(key)) {\n return this.moduleCache.get(key);\n }\n\n if (url) await this.loadRemoteEntry(scope, `${url}/remoteEntry.js`);\n await this.initializeRemote(scope);\n\n const factory = await (window as any)[scope].get(\n module.startsWith('./') ? module : `./${module}`\n );\n\n const Module = factory();\n\n this.moduleCache.set(key, Module);\n\n return Module;\n }\n\n // constructor\n\n constructor(private environment: Environment) {\n super('remote-component');\n }\n\n shouldRun(feature: FeatureMetadata, action: LoaderAction): boolean {\n return (\n action === 'component' &&\n feature.module !== undefined &&\n feature.uri !== undefined\n );\n }\n\n async run(feature: FeatureMetadata, outlet: FeatureOutlet) {\n await this.exec(async () => {\n Tracer.Trace(\n 'portal.feature-outlet',\n TraceLevel.HIGH,\n `Loading remote component '${feature.component}' from module '${feature.module}'`\n );\n\n const key = `${feature.module}`;\n\n AbstractModule.reset();\n\n await RemoteComponentLoader.loadRemoteModule(\n feature.module!,\n './Module',\n feature.uri!\n );\n\n // create new environment on demand\n\n let environment = RemoteComponentLoader.environmentCache.get(key);\n if (!environment) {\n const queue = AbstractModule.queue;\n\n // expect one module!\n\n if (queue.length !== 1) {\n throw Error(\"expected a single module\");\n }\n\n const moduleClass = queue[0].moduleClass;\n\n environment = new Environment({\n module: moduleClass,\n parent: this.environment\n });\n\n await environment.start(); // will also run the module's setup\n\n RemoteComponentLoader.environmentCache.set(key, environment);\n } // if\n\n outlet.environment = environment;\n outlet.component = await RemoteComponentLoader.loadRemoteModule(\n feature.module!,\n `./${feature.component}`,\n feature.uri!\n );\n });\n }\n}\n","import { FeatureMetadata } from '../feature-registry';\n\nimport { Tracer, TraceLevel, injectable } from '@novx/core';\n\nimport { Translator } from '@novx/i18n';\nimport { LoaderAction, OutletLoader } from '../feature-outlet';\n\n@injectable()\nexport class I18NLoader extends OutletLoader {\n static {\n OutletLoader.loaders.push(I18NLoader)\n }\n\n constructor(private translator: Translator) {\n super('i18n');\n }\n\n shouldRun(feature: FeatureMetadata, action: LoaderAction): boolean {\n return action === 'component' && feature.preloadI18n !== undefined && feature.preloadI18n.length > 0;\n }\n\n async run(feature: FeatureMetadata) {\n await this.exec(async () => {\n Tracer.Trace(\n 'portal.feature-outlet',\n TraceLevel.HIGH,\n `Loading i18n namespaces for feature '${feature.id}': ${feature.preloadI18n!.join(', ')}`\n );\n\n await this.translator.checkAndLoadNamespaces(...feature.preloadI18n!);\n });\n }\n}\n","import React from \"react\";\n\nexport const Icon: React.FC<{\n name: string;\n size?: number;\n className?: string;\n}> = ({ name, size = 20, className }) => (\n <svg\n width={size}\n height={size}\n className={className}\n aria-hidden={true}\n fill=\"currentColor\"\n >\n <use href={`#${name}`} />\n </svg>\n);\n","import { injectable } from '@novx/core';\n\n\n@injectable()\nexport class SvgSpriteRegistry {\n private registered = new Set<string>();\n mounted = false\n\n async registerAll(namespace: string, context: __WebpackModuleApi.RequireContext) {\n if (this.mounted) return;\n\n const defsEl = document.querySelector('#__svg-sprite defs');\n if (!defsEl) throw new Error('SVG sprite <defs> not found');\n\n for (const key of context.keys()) {\n const svgContent = await context(key); // raw string\n defsEl.innerHTML += svgContent;\n }\n\n this.mounted = true;\n }\n\n register(id: string, symbolSource: string) {\n console.log(\"### register svg \" + id);\n\n if (this.registered.has(id)) return;\n\n const sprite = document.getElementById('__svg-sprite');\n if (!sprite) throw new Error('SVG sprite container not found');\n\n const defs = sprite.querySelector('defs')!;\n const template = document.createElement('template');\n\n template.innerHTML = symbolSource.trim();\n const symbol = template.content.firstElementChild as SVGSymbolElement;\n\n if (!symbol /*|| symbol.tagName !== 'symbol' || symbol.tagName !== 'SYMBOL'*/) {\n console.log(`SVG \"${id}\" must export a <symbol>`);\n\n return;\n }\n\n symbol.setAttribute('id', id);\n defs.appendChild(symbol);\n\n this.registered.add(id);\n }\n}\n\n"],"names":["ComponentRegistry","map","Map","register","name","loader","set","get","Error","Feature","opts","cls","fqn","id","parent","Tracer","ENABLED","Trace","TraceLevel","HIGH","default","detectClient","width","window","innerWidth","height","innerHeight","ua","navigator","userAgent","platform","screenSize","getScreenSize","orientation","platformInfo","detectPlatformWithCapacitor","capabilities","detectCapabilities","screen_size","pixel_ratio","devicePixelRatio","browser","os","os_version","osVersion","device_type","inferDeviceType","isCapacitor","Capacitor","nativePlatform","getPlatform","isNativePlatform","extractIOSVersion","extractAndroidVersion","detectPlatform","test","detectBrowser","maxTouchPoints","caps","push","match","clientMatchesConstraints","client","constraints","screenSizes","length","includes","platforms","minWidth","undefined","maxWidth","minHeight","maxHeight","hasAllCapabilities","every","cap","DeploymentLoader","toWebpackContextKey","path","normalized","replace","srcIndex","lastIndexOf","relative","slice","DeploymentManager","deployment","featureRegistry","localManifest","processor","hasPermissionFn","hasFeatureFn","constructor","options","hasPermission","permission","feature","checkLazyFeatures","module","context","manifest","getModule","features","lazy","key","sourceFile","keys","mod","e","console","warn","loaded","modules","getDeployment","clientInfo","loadDeployment","request","application","load","filterContext","hasFeature","moduleName","process","uri","label","Object","values","flatMap","m","log","MODULE_META","Symbol","Module","config","decorator","target","metadata","type","imports","Reflect","defineMetadata","TypeDescriptor","forType","addDecorator","injectable","Providers","registerClass","DIModule","AbstractModule","enqueue","getMetadata","queue","moduleClass","FULL","status","reset","environment","getModuleName","injectEnvironment","setup","__decorate","inject","Environment","prototype","onRunning","ClientConstraintsSchema","schema","object","array","string","optional","nullable","number","FeatureDescriptorSchema","required","icon","i18n","enabled","boolean","component","tags","permissions","visibility","clients","reference","ManifestSchema","description","DeploymentSchema","record","ClientInfoSchema","oneOf","DeploymentRequestSchema","EmptyDeploymentLoader","Promise","resolve","ServiceDeploymentLoader","portalService","computeDeployment","RemoteDeploymentLoader","remoteUrls","manifestPromises","remote","response","fetch","url","ok","error","statusText","json","results","all","result","exports","reactModule","require$$0","require$$1","jsxRuntimeModule","React.createContext","React2.useContext","React2.useLayoutEffect","React2.useRef","React2.useCallback","React2.createContext","React2.useMemo","React2.createElement","React2.Fragment","React2.Component","React3.memo","React3.useMemo","React3.createElement","React8.useContext","React8.createContext","React8.useState","React8.useRef","React8.useEffect","React8.useMemo","React8.createElement","React8.Fragment","React10.useRef","React10.useState","React10.useCallback","React10.startTransition","React10.useLayoutEffect","React10.createElement","React10.forwardRef","React10.useContext","React10.Fragment","Symbol_observable","Symbol_iterator","iterator","FeatureRegistry","translator","localeManager","subscribe","onLocaleChange","locale","translate","of","children","child","forEach","f","filter","Array","from","finder","FeatureFinder","__metadata","LocaleManager","Translator","registry","withId","withoutParent","withPath","withTag","tag","matchesSession","session","withVisibility","findOne","find","EnvironmentContext","createContext","useEnvironment","useContext","useInject","types","env","React","useMemo","t","ErrorDisplay","errorInfo","showStack","setShowStack","useState","showComponentStack","setShowComponentStack","_jsx","style","background","padding","fontFamily","_jsxs","margin","borderRadius","boxShadow","overflow","color","display","alignItems","gap","marginBottom","justifyContent","fontSize","fontWeight","marginTop","opacity","border","lineHeight","message","stack","onClick","cursor","transition","onMouseEnter","currentTarget","onMouseLeave","overflowX","overflowY","whiteSpace","wordBreak","componentStack","location","reload","borderColor","href","transform","ErrorPage","textAlign","textDecoration","HorizontalSpinner","active","position","left","animation","OutletLoader","loaders","loading","isLoading","exec","fn","FeatureOutlet","Component","state","loadingLoaders","contextType","allLoaders","loaderType","runLoaders","shouldRun","setState","run","some","l","componentDidMount","props","featureId","Loaded","err","render","FeatureErrorBoundary","Suspense","fallback","Provider","value","LoadedWrapper","params","useParams","hasError","getDerivedStateFromError","componentDidCatch","info","errorManager","ErrorManager","ctx","$type","featureLabel","featureComponent","handle","displayError","shouldShowError","SessionManager","authentication","events$","Subject","start","restored","init","setSession","hasSession","currentSession","openSession","authenticate","closeSession","logout","clearSession","next","PrivateRoute","sessionManager","setHasSession","setError","useEffect","sub","unsubscribe","isActive","pathname","sessionStorage","setItem","catch","_Fragment","RouteChangeNotifier","listeners","Set","listener","add","delete","notify","RouteChangeListener","useLocation","notifier","RoutesWrapper","manager","routes","setRoutes","root","computeRoot","buildRouteObjects","event","useRoutes","RouterManager","routeObjects","featureListeners","setRoot","onFeatureChange","emitFeatureChange","build","isPrivate","element","routePath","$feature","JSON","stringify","renderRouter","BrowserRouter","getRouteObjects","FeaturePermissionFilter","accept","FeatureClientInfoFilter","capability","FeatureEnabledFilter","FeatureFeatureFilter","ManifestEnabledFilter","ManifestProcessor","manifestFilters","featureFilters","filteredFeatures","OIDCAuthentication","keycloak","Keycloak","onLoad","flow","checkLoginIframe","authenticated","buildSession","login","redirectUri","origin","user","idTokenParsed","ticket","accessToken","token","refreshToken","idToken","expiry","tokenParsed","exp","I18NContext","I18NProvider","interpolator","Interpolator","counter","setCounter","translation","interpolate","subscription","events","c","contextValue","tr","useI18N","PortalService","AbstractService","factory","requestBody","requestContext","method","data","serialize","deserialize","service","HTTPFactory","LocalComponentLoader","LocalComponentLoader_1","action","outlet","RemoteComponentLoader","RemoteComponentLoader_1","remoteEntryCache","moduleCache","environmentCache","loadRemoteEntry","scope","has","reject","script","document","createElement","src","async","onload","onerror","head","appendChild","initializeRemote","__webpack_init_sharing__","remoteContainer","__webpack_share_scopes__","loadRemoteModule","startsWith","I18NLoader","I18NLoader_1","preloadI18n","join","checkAndLoadNamespaces","Icon","size","className","fill","SvgSpriteRegistry","registered","mounted","registerAll","namespace","defsEl","querySelector","svgContent","innerHTML","symbolSource","sprite","getElementById","defs","template","trim","symbol","content","firstElementChild","setAttribute"],"mappings":"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","x_google_ignoreList":[2,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,73]}