db-studio 1.9.4 → 1.9.6
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.
- package/README.md +5 -5
- package/dist/index.js +20 -20
- package/dist/index.js.map +1 -1
- package/dist/web-dist/assets/_pathlessLayout-BByrt-IV.js +2 -0
- package/dist/web-dist/assets/{_pathlessLayout-DhK1pVQZ.js.map → _pathlessLayout-BByrt-IV.js.map} +1 -1
- package/dist/web-dist/assets/{_queryId-PHL0xcKj.js → _queryId-cyxa5wMS.js} +1 -1
- package/dist/web-dist/assets/{_queryId-PHL0xcKj.js.map → _queryId-cyxa5wMS.js.map} +1 -1
- package/dist/web-dist/assets/{_table-Ud147_vw.js → _table-B0yPxctF.js} +1 -1
- package/dist/web-dist/assets/{_table-Ud147_vw.js.map → _table-B0yPxctF.js.map} +1 -1
- package/dist/web-dist/assets/{_table-CThT7wMT.js → _table-DwIZYs3U.js} +1 -1
- package/dist/web-dist/assets/{_table-CThT7wMT.js.map → _table-DwIZYs3U.js.map} +1 -1
- package/dist/web-dist/assets/{format-cell-value-DG6WpZw_.js → format-cell-value-BDLw73u3.js} +6 -6
- package/dist/web-dist/assets/format-cell-value-BDLw73u3.js.map +1 -0
- package/dist/web-dist/assets/index-DRNEODC_.js +86 -0
- package/dist/web-dist/assets/index-DRNEODC_.js.map +1 -0
- package/dist/web-dist/assets/{queries.store-DruKauzK.js → queries.store-DvaENLe7.js} +1 -1
- package/dist/web-dist/assets/{queries.store-DruKauzK.js.map → queries.store-DvaENLe7.js.map} +1 -1
- package/dist/web-dist/assets/{query-runner-Db56mYGQ.js → query-runner-D4jp77L6.js} +2 -2
- package/dist/web-dist/assets/{query-runner-Db56mYGQ.js.map → query-runner-D4jp77L6.js.map} +1 -1
- package/dist/web-dist/assets/{runner-DAA3MnAn.js → runner-EqOuNKQH.js} +1 -1
- package/dist/web-dist/assets/{runner-DAA3MnAn.js.map → runner-EqOuNKQH.js.map} +1 -1
- package/dist/web-dist/assets/{tanstack-C38qytx8.js → tanstack-BfO3BbGk.js} +5 -5
- package/dist/web-dist/assets/tanstack-BfO3BbGk.js.map +1 -0
- package/dist/web-dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/web-dist/assets/_pathlessLayout-DhK1pVQZ.js +0 -2
- package/dist/web-dist/assets/format-cell-value-DG6WpZw_.js.map +0 -1
- package/dist/web-dist/assets/index-GnOMl7Md.js +0 -86
- package/dist/web-dist/assets/index-GnOMl7Md.js.map +0 -1
- package/dist/web-dist/assets/tanstack-C38qytx8.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-C38qytx8.js","names":["#setup","#cleanup","#focused","#provider","functionalUpdate","isPlainObject","hasOwn","replaceEqualDeep","isPlainArray","hasObjectPrototype","#setup","#cleanup","#online","#gcTimeout","#abortSignalConsumed","#defaultOptions","#client","#cache","#initialState","getDefaultState","#queryType","#retryer","#dispatch","#isInitialPausedFetch","#revertState","#client","#selectError","#currentThenable","#currentQuery","#executeFetch","#updateTimers","#clearStaleTimeout","#clearRefetchInterval","#updateQuery","#updateStaleTimeout","#computeRefetchInterval","#currentRefetchInterval","#updateRefetchInterval","#currentResult","#currentResultOptions","#currentResultState","#trackedProps","#staleTimeoutId","#refetchIntervalId","#currentQueryInitialState","#lastQueryWithDefinedData","#selectFn","#selectResult","#notify","#client","#mutationCache","#observers","#retryer","#dispatch","#mutations","#scopes","#mutationId","#client","#updateResult","#currentMutation","#notify","#currentResult","#mutateOptions","#queries","#queryCache","#mutationCache","#defaultOptions","#queryDefaults","#mutationDefaults","#mountCount","#unsubscribeFocus","#unsubscribeOnline","functionalUpdate","\"use\"","isFunction","functionalUpdate","trimPathRight","functionalUpdate","functionalUpdate","functionalUpdate","Fragment","Fragment","memo","Headers","isContentPart","exports","c","#connected","#connecting","#queuedEvents","#eventTarget","#onConnected","#retryCount","#maxRetries","#retryConnection","#failedToConnect","#pluginId","#enabled","#debug","#connectIntervalId","#connectEveryMs","#internalEventTarget","#connectFunction","uiMessages"],"sources":["../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/timeoutManager.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/utils.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/environmentManager.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/thenable.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/hydration.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/retryer.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/removable.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/query.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/mutation.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../../node_modules/.bun/@tanstack+query-core@5.100.9/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../../node_modules/.bun/@tanstack+react-query@5.100.9+3f10a4be4e334a9b/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../../../node_modules/.bun/@tanstack+react-query@5.100.9+3f10a4be4e334a9b/node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../../../node_modules/.bun/@tanstack+react-query@5.100.9+3f10a4be4e334a9b/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../../../node_modules/.bun/@tanstack+react-query@5.100.9+3f10a4be4e334a9b/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../../../node_modules/.bun/@tanstack+react-query@5.100.9+3f10a4be4e334a9b/node_modules/@tanstack/react-query/build/modern/suspense.js","../../../../node_modules/.bun/@tanstack+react-query@5.100.9+3f10a4be4e334a9b/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../../../node_modules/.bun/@tanstack+react-query@5.100.9+3f10a4be4e334a9b/node_modules/@tanstack/react-query/build/modern/useQuery.js","../../../../node_modules/.bun/@tanstack+react-query@5.100.9+3f10a4be4e334a9b/node_modules/@tanstack/react-query/build/modern/useMutation.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/utils.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/utils.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/invariant.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/new-process-route-tree.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/path.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/not-found.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/qss.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/searchParams.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/root.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/redirect.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/load-matches.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/rewrite.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/stores.js","../../../../node_modules/.bun/@tanstack+history@1.162.0/node_modules/@tanstack/history/dist/esm/index.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/router.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/link.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/route.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/CatchBoundary.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/ClientOnly.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/routerContext.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useRouter.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/matchContext.js","../../../../node_modules/.bun/@tanstack+store@0.9.3/node_modules/@tanstack/store/dist/esm/alien.js","../../../../node_modules/.bun/@tanstack+store@0.9.3/node_modules/@tanstack/store/dist/esm/atom.js","../../../../node_modules/.bun/use-sync-external-store@1.6.0+3f10a4be4e334a9b/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../../node_modules/.bun/use-sync-external-store@1.6.0+3f10a4be4e334a9b/node_modules/use-sync-external-store/shim/index.js","../../../../node_modules/.bun/use-sync-external-store@1.6.0+3f10a4be4e334a9b/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../../node_modules/.bun/use-sync-external-store@1.6.0+3f10a4be4e334a9b/node_modules/use-sync-external-store/shim/with-selector.js","../../../../node_modules/.bun/@tanstack+react-store@0.9.3+21ccd8898788a04d/node_modules/@tanstack/react-store/dist/esm/useStore.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useMatch.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useLoaderData.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useLoaderDeps.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useParams.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useSearch.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useNavigate.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useRouteContext.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/link.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/route.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/fileRoute.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/lazyRouteComponent.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/not-found.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/ScriptOnce.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/SafeFragment.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/renderRouteNotFound.js","../../../../node_modules/.bun/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration-script/client.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/scroll-restoration.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/Match.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/Transitioner.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/Matches.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/routerStores.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/router.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/RouterProvider.js","../../../../node_modules/.bun/@tanstack+react-router@1.170.17+21ccd8898788a04d/node_modules/@tanstack/react-router/dist/esm/useLocation.js","../../../../node_modules/.bun/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../../node_modules/.bun/@tanstack+react-table@8.21.3+21ccd8898788a04d/node_modules/@tanstack/react-table/build/lib/index.mjs","../../../../node_modules/.bun/@tanstack+virtual-core@3.14.0/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.bun/@tanstack+virtual-core@3.14.0/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.bun/@tanstack+react-virtual@3.13.24+21ccd8898788a04d/node_modules/@tanstack/react-virtual/dist/esm/index.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/activities/chat/tools/schema-converter.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/utilities/tool-result.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/activities/chat/messages.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/utilities/ag-ui-wire.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/activities/chat/stream/strategies.js","../../../../node_modules/.bun/partial-json@0.1.7/node_modules/partial-json/dist/options.js","../../../../node_modules/.bun/partial-json@0.1.7/node_modules/partial-json/dist/index.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/activities/chat/stream/json-parser.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/activities/chat/stream/message-updaters.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/activities/chat/stream/processor.js","../../../../node_modules/.bun/@tanstack+ai@0.39.0/node_modules/@tanstack/ai/dist/esm/client.js","../../../../node_modules/.bun/@tanstack+devtools-event-client@0.4.3/node_modules/@tanstack/devtools-event-client/dist/esm/plugin.js","../../../../node_modules/.bun/@tanstack+ai-event-client@0.6.8/node_modules/@tanstack/ai-event-client/dist/esm/envelope.js","../../../../node_modules/.bun/@tanstack+ai-event-client@0.6.8/node_modules/@tanstack/ai-event-client/dist/esm/index.js","../../../../node_modules/.bun/@tanstack+ai-client@0.19.1/node_modules/@tanstack/ai-client/dist/esm/events.js","../../../../node_modules/.bun/@tanstack+ai-client@0.19.1/node_modules/@tanstack/ai-client/dist/esm/devtools-noop.js","../../../../node_modules/.bun/@tanstack+ai-client@0.19.1/node_modules/@tanstack/ai-client/dist/esm/response-stream.js","../../../../node_modules/.bun/@tanstack+ai-client@0.19.1/node_modules/@tanstack/ai-client/dist/esm/sse-utils.js","../../../../node_modules/.bun/@tanstack+ai-client@0.19.1/node_modules/@tanstack/ai-client/dist/esm/connection-adapters.js","../../../../node_modules/.bun/@tanstack+ai-client@0.19.1/node_modules/@tanstack/ai-client/dist/esm/client-persistor.js","../../../../node_modules/.bun/@tanstack+ai-client@0.19.1/node_modules/@tanstack/ai-client/dist/esm/chat-client.js","../../../../node_modules/.bun/@tanstack+ai-client@0.19.1/node_modules/@tanstack/ai-client/dist/esm/devtools.js","../../../../node_modules/.bun/@tanstack+ai-react@0.16.2+90157769aa1fce19/node_modules/@tanstack/ai-react/dist/esm/use-chat.js","../../../../node_modules/.bun/@tanstack+ai-react@0.16.2+90157769aa1fce19/node_modules/@tanstack/ai-react/dist/esm/use-realtime-chat.js"],"sourcesContent":["// src/subscribable.ts\nvar Subscribable = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n this.listeners.add(listener);\n this.onSubscribe();\n return () => {\n this.listeners.delete(listener);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n};\nexport {\n Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (typeof window !== \"undefined\" && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.#focused !== focused;\n if (changed) {\n this.#focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n const isFocused = this.isFocused();\n this.listeners.forEach((listener) => {\n listener(isFocused);\n });\n }\n isFocused() {\n if (typeof this.#focused === \"boolean\") {\n return this.#focused;\n }\n return globalThis.document?.visibilityState !== \"hidden\";\n }\n};\nvar focusManager = new FocusManager();\nexport {\n FocusManager,\n focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/timeoutManager.ts\nvar defaultTimeoutProvider = {\n // We need the wrapper function syntax below instead of direct references to\n // global setTimeout etc.\n //\n // BAD: `setTimeout: setTimeout`\n // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`\n //\n // If we use direct references here, then anything that wants to spy on or\n // replace the global setTimeout (like tests) won't work since we'll already\n // have a hard reference to the original implementation at the time when this\n // file was imported.\n setTimeout: (callback, delay) => setTimeout(callback, delay),\n clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n setInterval: (callback, delay) => setInterval(callback, delay),\n clearInterval: (intervalId) => clearInterval(intervalId)\n};\nvar TimeoutManager = class {\n // We cannot have TimeoutManager<T> as we must instantiate it with a concrete\n // type at app boot; and if we leave that type, then any new timer provider\n // would need to support the default provider's concrete timer ID, which is\n // infeasible across environments.\n //\n // We settle for type safety for the TimeoutProvider type, and accept that\n // this class is unsafe internally to allow for extension.\n #provider = defaultTimeoutProvider;\n #providerCalled = false;\n setTimeoutProvider(provider) {\n if (process.env.NODE_ENV !== \"production\") {\n if (this.#providerCalled && provider !== this.#provider) {\n console.error(\n `[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`,\n { previous: this.#provider, provider }\n );\n }\n }\n this.#provider = provider;\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = false;\n }\n }\n setTimeout(callback, delay) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = true;\n }\n return this.#provider.setTimeout(callback, delay);\n }\n clearTimeout(timeoutId) {\n this.#provider.clearTimeout(timeoutId);\n }\n setInterval(callback, delay) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = true;\n }\n return this.#provider.setInterval(callback, delay);\n }\n clearInterval(intervalId) {\n this.#provider.clearInterval(intervalId);\n }\n};\nvar timeoutManager = new TimeoutManager();\nfunction systemSetTimeoutZero(callback) {\n setTimeout(callback, 0);\n}\nexport {\n TimeoutManager,\n defaultTimeoutProvider,\n systemSetTimeoutZero,\n timeoutManager\n};\n//# sourceMappingURL=timeoutManager.js.map","// src/utils.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveQueryBoolean(option, query) {\n return typeof option === \"function\" ? option(query) : option;\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive = query.isActive();\n if (type === \"active\" && !isActive) {\n return false;\n }\n if (type === \"inactive\" && isActive) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const { exact, status, predicate, mutationKey } = filters;\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (status && mutation.state.status !== status) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = options?.queryKeyHashFn || hashKey;\n return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n return JSON.stringify(\n queryKey,\n (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val\n );\n}\nfunction partialMatchKey(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]));\n }\n return false;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b, depth = 0) {\n if (a === b) {\n return a;\n }\n if (depth > 500) return b;\n const array = isPlainArray(a) && isPlainArray(b);\n if (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n const aItems = array ? a : Object.keys(a);\n const aSize = aItems.length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? new Array(bSize) : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n const aItem = a[key];\n const bItem = b[key];\n if (aItem === bItem) {\n copy[key] = aItem;\n if (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n continue;\n }\n if (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n copy[key] = bItem;\n continue;\n }\n const v = replaceEqualDeep(aItem, bItem, depth + 1);\n copy[key] = v;\n if (v === aItem) equalItems++;\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n}\nfunction shallowEqualObjects(a, b) {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (ctor === void 0) {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n return new Promise((resolve) => {\n timeoutManager.setTimeout(resolve, timeout);\n });\n}\nfunction replaceData(prevData, data, options) {\n if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n return replaceEqualDeep(prevData, data);\n } catch (error) {\n console.error(\n `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n );\n throw error;\n }\n }\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nfunction keepPreviousData(previousData) {\n return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = /* @__PURE__ */ Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n );\n }\n }\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise;\n }\n if (!options.queryFn || options.queryFn === skipToken) {\n return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n }\n return options.queryFn;\n}\nfunction shouldThrowError(throwOnError, params) {\n if (typeof throwOnError === \"function\") {\n return throwOnError(...params);\n }\n return !!throwOnError;\n}\nfunction addConsumeAwareSignal(object, getSignal, onCancelled) {\n let consumed = false;\n let signal;\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n signal ??= getSignal();\n if (consumed) {\n return signal;\n }\n consumed = true;\n if (signal.aborted) {\n onCancelled();\n } else {\n signal.addEventListener(\"abort\", onCancelled, { once: true });\n }\n return signal;\n }\n });\n return object;\n}\nexport {\n addConsumeAwareSignal,\n addToEnd,\n addToStart,\n ensureQueryFn,\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n isPlainArray,\n isPlainObject,\n isServer,\n isValidTimeout,\n keepPreviousData,\n matchMutation,\n matchQuery,\n noop,\n partialMatchKey,\n replaceData,\n replaceEqualDeep,\n resolveQueryBoolean,\n resolveStaleTime,\n shallowEqualObjects,\n shouldThrowError,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/environmentManager.ts\nimport { isServer } from \"./utils.js\";\nvar environmentManager = /* @__PURE__ */ (() => {\n let isServerFn = () => isServer;\n return {\n /**\n * Returns whether the current runtime should be treated as a server environment.\n */\n isServer() {\n return isServerFn();\n },\n /**\n * Overrides the server check globally.\n */\n setIsServer(isServerValue) {\n isServerFn = isServerValue;\n }\n };\n})();\nexport {\n environmentManager\n};\n//# sourceMappingURL=environmentManager.js.map","// src/thenable.ts\nimport { noop } from \"./utils.js\";\nfunction pendingThenable() {\n let resolve;\n let reject;\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n thenable.status = \"pending\";\n thenable.catch(() => {\n });\n function finalize(data) {\n Object.assign(thenable, data);\n delete thenable.resolve;\n delete thenable.reject;\n }\n thenable.resolve = (value) => {\n finalize({\n status: \"fulfilled\",\n value\n });\n resolve(value);\n };\n thenable.reject = (reason) => {\n finalize({\n status: \"rejected\",\n reason\n });\n reject(reason);\n };\n return thenable;\n}\nfunction tryResolveSync(promise) {\n let data;\n promise.then((result) => {\n data = result;\n return result;\n }, noop)?.catch(noop);\n if (data !== void 0) {\n return { data };\n }\n return void 0;\n}\nexport {\n pendingThenable,\n tryResolveSync\n};\n//# sourceMappingURL=thenable.js.map","// src/hydration.ts\nimport { tryResolveSync } from \"./thenable.js\";\nimport { noop } from \"./utils.js\";\nfunction defaultTransformerFn(data) {\n return data;\n}\nfunction dehydrateMutation(mutation) {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...mutation.options.scope && { scope: mutation.options.scope },\n ...mutation.meta && { meta: mutation.meta }\n };\n}\nfunction dehydrateQuery(query, serializeData, shouldRedactErrors) {\n const dehydratePromise = () => {\n const promise = query.promise?.then(serializeData).catch((error) => {\n if (!shouldRedactErrors(error)) {\n return Promise.reject(error);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`\n );\n }\n return Promise.reject(new Error(\"redacted\"));\n });\n promise?.catch(noop);\n return promise;\n };\n return {\n dehydratedAt: Date.now(),\n state: {\n ...query.state,\n ...query.state.data !== void 0 && {\n data: serializeData(query.state.data)\n }\n },\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...query.state.status === \"pending\" && {\n promise: dehydratePromise()\n },\n ...query.meta && { meta: query.meta },\n ...query.queryType && { queryType: query.queryType }\n };\n}\nfunction defaultShouldDehydrateMutation(mutation) {\n return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n return query.state.status === \"success\";\n}\nfunction defaultShouldRedactErrors(_) {\n return true;\n}\nfunction dehydrate(client, options = {}) {\n const filterMutation = options.shouldDehydrateMutation ?? client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ?? defaultShouldDehydrateMutation;\n const mutations = client.getMutationCache().getAll().flatMap(\n (mutation) => filterMutation(mutation) ? [dehydrateMutation(mutation)] : []\n );\n const filterQuery = options.shouldDehydrateQuery ?? client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ?? defaultShouldDehydrateQuery;\n const shouldRedactErrors = options.shouldRedactErrors ?? client.getDefaultOptions().dehydrate?.shouldRedactErrors ?? defaultShouldRedactErrors;\n const serializeData = options.serializeData ?? client.getDefaultOptions().dehydrate?.serializeData ?? defaultTransformerFn;\n const queries = client.getQueryCache().getAll().flatMap(\n (query) => filterQuery(query) ? [dehydrateQuery(query, serializeData, shouldRedactErrors)] : []\n );\n return { mutations, queries };\n}\nfunction hydrate(client, dehydratedState, options) {\n if (typeof dehydratedState !== \"object\" || dehydratedState === null) {\n return;\n }\n const mutationCache = client.getMutationCache();\n const queryCache = client.getQueryCache();\n const deserializeData = options?.defaultOptions?.deserializeData ?? client.getDefaultOptions().hydrate?.deserializeData ?? defaultTransformerFn;\n const mutations = dehydratedState.mutations || [];\n const queries = dehydratedState.queries || [];\n mutations.forEach(({ state, ...mutationOptions }) => {\n mutationCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.mutations,\n ...options?.defaultOptions?.mutations,\n ...mutationOptions\n },\n state\n );\n });\n queries.forEach(\n ({\n queryKey,\n state,\n queryHash,\n meta,\n promise,\n dehydratedAt,\n queryType\n }) => {\n const syncData = promise ? tryResolveSync(promise) : void 0;\n const rawData = state.data === void 0 ? syncData?.data : state.data;\n const data = rawData === void 0 ? rawData : deserializeData(rawData);\n let query = queryCache.get(queryHash);\n const existingQueryIsPending = query?.state.status === \"pending\";\n const existingQueryIsFetching = query?.state.fetchStatus === \"fetching\";\n if (query) {\n const hasNewerSyncData = syncData && // We only need this undefined check to handle older dehydration\n // payloads that might not have dehydratedAt\n dehydratedAt !== void 0 && dehydratedAt > query.state.dataUpdatedAt;\n if (state.dataUpdatedAt > query.state.dataUpdatedAt || hasNewerSyncData) {\n const { fetchStatus: _ignored, ...serializedState } = state;\n query.setState({\n ...serializedState,\n data,\n // If the query was pending at the moment of dehydration, but resolved to have data\n // before hydration, we can assume the query should be hydrated as successful.\n //\n // Since you can opt into dehydrating failed queries, and those can have data from\n // previous successful fetches, we make sure we only do this for pending queries.\n ...state.status === \"pending\" && data !== void 0 && {\n status: \"success\",\n // Preserve existing fetchStatus if the existing query is actively fetching.\n ...!existingQueryIsFetching && {\n fetchStatus: \"idle\"\n }\n }\n });\n }\n } else {\n query = queryCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.queries,\n ...options?.defaultOptions?.queries,\n queryKey,\n queryHash,\n meta,\n _type: queryType\n },\n // Reset fetch status to idle to avoid\n // query being stuck in fetching state upon hydration\n {\n ...state,\n data,\n fetchStatus: \"idle\",\n // Like above, if the query was pending at the moment of dehydration but has data,\n // we can assume it should be hydrated as successful.\n status: state.status === \"pending\" && data !== void 0 ? \"success\" : state.status\n }\n );\n }\n if (promise && // If the data was synchronously available, there is no need to set up\n // a retryer and thus no reason to call fetch\n !syncData && !existingQueryIsPending && !existingQueryIsFetching && // Only hydrate if dehydration is newer than any existing data,\n // this is always true for new queries\n (dehydratedAt === void 0 || dehydratedAt > query.state.dataUpdatedAt)) {\n query.fetch(void 0, {\n // RSC transformed promises are not thenable\n initialPromise: Promise.resolve(promise).then(deserializeData)\n }).catch(noop);\n }\n }\n );\n}\nexport {\n defaultShouldDehydrateMutation,\n defaultShouldDehydrateQuery,\n dehydrate,\n hydrate\n};\n//# sourceMappingURL=hydration.js.map","// src/notifyManager.ts\nimport { systemSetTimeoutZero } from \"./timeoutManager.js\";\nvar defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = defaultScheduler;\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n return {\n batch: (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n },\n /**\n * All calls to the wrapped function will be batched.\n */\n batchCalls: (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n },\n schedule,\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n setNotifyFunction: (fn) => {\n notifyFn = fn;\n },\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n setBatchNotifyFunction: (fn) => {\n batchNotifyFn = fn;\n },\n setScheduler: (fn) => {\n scheduleFn = fn;\n }\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n defaultScheduler,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (typeof window !== \"undefined\" && window.addEventListener) {\n const onlineListener = () => onOnline(true);\n const offlineListener = () => onOnline(false);\n window.addEventListener(\"online\", onlineListener, false);\n window.addEventListener(\"offline\", offlineListener, false);\n return () => {\n window.removeEventListener(\"online\", onlineListener);\n window.removeEventListener(\"offline\", offlineListener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup(this.setOnline.bind(this));\n }\n setOnline(online) {\n const changed = this.#online !== online;\n if (changed) {\n this.#online = online;\n this.listeners.forEach((listener) => {\n listener(online);\n });\n }\n }\n isOnline() {\n return this.#online;\n }\n};\nvar onlineManager = new OnlineManager();\nexport {\n OnlineManager,\n onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n constructor(options) {\n super(\"CancelledError\");\n this.revert = options?.revert;\n this.silent = options?.silent;\n }\n};\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let continueFn;\n const thenable = pendingThenable();\n const isResolved = () => thenable.status !== \"pending\";\n const cancel = (cancelOptions) => {\n if (!isResolved()) {\n const error = new CancelledError(cancelOptions);\n reject(error);\n config.onCancel?.(error);\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n const canStart = () => canFetch(config.networkMode) && config.canRun();\n const resolve = (value) => {\n if (!isResolved()) {\n continueFn?.();\n thenable.resolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved()) {\n continueFn?.();\n thenable.reject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved() || canContinue()) {\n continueResolve(value);\n }\n };\n config.onPause?.();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved()) {\n config.onContinue?.();\n }\n });\n };\n const run = () => {\n if (isResolved()) {\n return;\n }\n let promiseOrValue;\n const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n try {\n promiseOrValue = initialPromise ?? config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n if (isResolved()) {\n return;\n }\n const retry = config.retry ?? (environmentManager.isServer() ? 0 : 3);\n const retryDelay = config.retryDelay ?? defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n if (isRetryCancelled || !shouldRetry) {\n reject(error);\n return;\n }\n failureCount++;\n config.onFail?.(failureCount, error);\n sleep(delay).then(() => {\n return canContinue() ? void 0 : pause();\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n };\n return {\n promise: thenable,\n status: () => thenable.status,\n cancel,\n continue: () => {\n continueFn?.();\n return thenable;\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n if (canStart()) {\n run();\n } else {\n pause().then(run);\n }\n return thenable;\n }\n };\n}\nexport {\n CancelledError,\n canFetch,\n createRetryer,\n isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/removable.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n #gcTimeout;\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = timeoutManager.setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (environmentManager.isServer() ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout !== void 0) {\n timeoutManager.clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/infiniteQueryBehavior.ts\nimport {\n addConsumeAwareSignal,\n addToEnd,\n addToStart,\n ensureQueryFn\n} from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = { pages: [], pageParams: [] };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = (object) => {\n addConsumeAwareSignal(\n object,\n () => context.signal,\n () => cancelled = true\n );\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject(context.signal.reason);\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: context.client,\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n const page = await queryFn(queryFnContext);\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n client: context.client,\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data) return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam) return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/query.ts\nimport {\n ensureQueryFn,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n skipToken,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar Query = class extends Removable {\n #queryType;\n #initialState;\n #revertState;\n #cache;\n #client;\n #retryer;\n #defaultOptions;\n #abortSignalConsumed;\n constructor(config) {\n super();\n this.#abortSignalConsumed = false;\n this.#defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.#client = config.client;\n this.#cache = this.#client.getQueryCache();\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.#initialState = getDefaultState(this.options);\n this.state = config.state ?? this.#initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n get queryType() {\n return this.#queryType;\n }\n get promise() {\n return this.#retryer?.promise;\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n if (options?._type) {\n this.#queryType = options._type;\n }\n this.updateGcTime(this.options.gcTime);\n if (this.state && this.state.data === void 0) {\n const defaultState = getDefaultState(this.options);\n if (defaultState.data !== void 0) {\n this.setState(\n successState(defaultState.data, defaultState.dataUpdatedAt)\n );\n this.#initialState = defaultState;\n }\n }\n }\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n this.#cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.#dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual\n });\n return data;\n }\n setState(state) {\n this.#dispatch({ type: \"setState\", state });\n }\n cancel(options) {\n const promise = this.#retryer?.promise;\n this.#retryer?.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({ silent: true });\n }\n get resetState() {\n return this.#initialState;\n }\n reset() {\n this.destroy();\n this.setState(this.resetState);\n }\n isActive() {\n return this.observers.some(\n (observer) => resolveQueryBoolean(observer.options.enabled, this) !== false\n );\n }\n isDisabled() {\n if (this.getObserversCount() > 0) {\n return !this.isActive();\n }\n return this.options.queryFn === skipToken || !this.isFetched();\n }\n isFetched() {\n return this.state.dataUpdateCount + this.state.errorUpdateCount > 0;\n }\n isStatic() {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => resolveStaleTime(observer.options.staleTime, this) === \"static\"\n );\n }\n return false;\n }\n isStale() {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale\n );\n }\n return this.state.data === void 0 || this.state.isInvalidated;\n }\n isStaleByTime(staleTime = 0) {\n if (this.state.data === void 0) {\n return true;\n }\n if (staleTime === \"static\") {\n return false;\n }\n if (this.state.isInvalidated) {\n return true;\n }\n return !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n onOnline() {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n }\n }\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer);\n if (!this.observers.length) {\n if (this.#retryer) {\n if (this.#abortSignalConsumed || this.#isInitialPausedFetch()) {\n this.#retryer.cancel({ revert: true });\n } else {\n this.#retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n }\n }\n getObserversCount() {\n return this.observers.length;\n }\n #isInitialPausedFetch() {\n return this.state.fetchStatus === \"paused\" && this.state.status === \"pending\";\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n async fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\" && // If the promise in the retryer is already rejected, we have to definitely\n // re-start the fetch; there is a chance that the query is still in a\n // pending state when that happens\n this.#retryer?.status() !== \"rejected\") {\n if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n this.cancel({ silent: true });\n } else if (this.#retryer) {\n this.#retryer.continueRetry();\n return this.#retryer.promise;\n }\n }\n if (options) {\n this.setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn);\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n );\n }\n }\n const abortController = new AbortController();\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true;\n return abortController.signal;\n }\n });\n };\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions);\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n this.#abortSignalConsumed = false;\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this\n );\n }\n return queryFn(queryFnContext);\n };\n const createFetchContext = () => {\n const context2 = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context2);\n return context2;\n };\n const context = createFetchContext();\n const behavior = this.#queryType === \"infinite\" ? infiniteQueryBehavior(\n this.options.pages\n ) : this.options.behavior;\n behavior?.onFetch(context, this);\n this.#revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n }\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise,\n fn: context.fetchFn,\n onCancel: (error) => {\n if (error instanceof CancelledError && error.revert) {\n this.setState({\n ...this.#revertState,\n fetchStatus: \"idle\"\n });\n }\n abortController.abort();\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true\n });\n try {\n const data = await this.#retryer.start();\n if (data === void 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n );\n }\n throw new Error(`${this.queryHash} data is undefined`);\n }\n this.setData(data);\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n return data;\n } catch (error) {\n if (error instanceof CancelledError) {\n if (error.silent) {\n return this.#retryer.promise;\n } else if (error.revert) {\n if (this.state.data === void 0) {\n throw error;\n }\n return this.state.data;\n }\n }\n this.#dispatch({\n type: \"error\",\n error\n });\n this.#cache.config.onError?.(\n error,\n this\n );\n this.#cache.config.onSettled?.(\n this.state.data,\n error,\n this\n );\n throw error;\n } finally {\n this.scheduleGc();\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null\n };\n case \"success\":\n const newState = {\n ...state,\n ...successState(action.data, action.dataUpdatedAt),\n dataUpdateCount: state.dataUpdateCount + 1,\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n this.#revertState = action.manual ? newState : void 0;\n return newState;\n case \"error\":\n const error = action.error;\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: \"idle\",\n status: \"error\",\n // flag existing data as invalidated if we get a background error\n // note that \"no data\" always means stale so we can set unconditionally here\n isInvalidated: true\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate();\n });\n this.#cache.notify({ query: this, type: \"updated\", action });\n });\n }\n};\nfunction fetchState(data, options) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n ...data === void 0 && {\n error: null,\n status: \"pending\"\n }\n };\n}\nfunction successState(data, dataUpdatedAt) {\n return {\n data,\n dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\"\n };\n}\nfunction getDefaultState(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = data !== void 0;\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"pending\",\n fetchStatus: \"idle\"\n };\n}\nexport {\n Query,\n fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n isValidTimeout,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.#currentThenable = pendingThenable();\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #currentThenable;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n return new Proxy(result, {\n get: (target, key) => {\n this.trackProp(key);\n onPropTracked?.(key);\n if (key === \"promise\") {\n this.trackProp(\"data\");\n if (!this.options.experimental_prefetchInRender && this.#currentThenable.status === \"pending\") {\n this.#currentThenable.reject(\n new Error(\n \"experimental_prefetchInRender feature flag is not enabled\"\n )\n );\n }\n }\n return Reflect.get(target, key);\n }\n });\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (environmentManager.isServer() || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = timeoutManager.setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (environmentManager.isServer() || resolveQueryBoolean(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = timeoutManager.setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId !== void 0) {\n timeoutManager.clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId !== void 0) {\n timeoutManager.clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n data = newState.data;\n let skipSelect = false;\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n skipSelect = true;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (options.select && data !== void 0 && !skipSelect) {\n if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: query.isFetched(),\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n promise: this.#currentThenable,\n isEnabled: resolveQueryBoolean(options.enabled, query) !== false\n };\n const nextResult = result;\n if (this.options.experimental_prefetchInRender) {\n const hasResultData = nextResult.data !== void 0;\n const isErrorWithoutData = nextResult.status === \"error\" && !hasResultData;\n const finalizeThenableIfPossible = (thenable) => {\n if (isErrorWithoutData) {\n thenable.reject(nextResult.error);\n } else if (hasResultData) {\n thenable.resolve(nextResult.data);\n }\n };\n const recreateThenable = () => {\n const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n finalizeThenableIfPossible(pending);\n };\n const prevThenable = this.#currentThenable;\n switch (prevThenable.status) {\n case \"pending\":\n if (query.queryHash === prevQuery.queryHash) {\n finalizeThenableIfPossible(prevThenable);\n }\n break;\n case \"fulfilled\":\n if (isErrorWithoutData || nextResult.data !== prevThenable.value) {\n recreateThenable();\n }\n break;\n case \"rejected\":\n if (!isErrorWithoutData || nextResult.error !== prevThenable.reason) {\n recreateThenable();\n }\n break;\n }\n }\n return nextResult;\n }\n updateResult() {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n this.#notify({ listeners: shouldNotifyListeners() });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryBoolean(options.retryOnMount, query) === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveQueryBoolean(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== \"static\") {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveQueryBoolean(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #client;\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.#client = config.client;\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n const onContinue = () => {\n this.#dispatch({ type: \"continue\" });\n };\n const mutationFnContext = {\n client: this.#client,\n meta: this.options.meta,\n mutationKey: this.options.mutationKey\n };\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables, mutationFnContext);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue,\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (restored) {\n onContinue();\n } else {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n if (this.#mutationCache.config.onMutate) {\n await this.#mutationCache.config.onMutate(\n variables,\n this,\n mutationFnContext\n );\n }\n const context = await this.options.onMutate?.(\n variables,\n mutationFnContext\n );\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this,\n mutationFnContext\n );\n await this.options.onSuccess?.(\n data,\n variables,\n this.state.context,\n mutationFnContext\n );\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this,\n mutationFnContext\n );\n await this.options.onSettled?.(\n data,\n null,\n variables,\n this.state.context,\n mutationFnContext\n );\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.options.onError?.(\n error,\n variables,\n this.state.context,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n this.#dispatch({ type: \"error\", error });\n throw error;\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Set();\n this.#scopes = /* @__PURE__ */ new Map();\n this.#mutationId = 0;\n }\n #mutations;\n #scopes;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n client,\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.#mutations.add(mutation);\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n scopedMutations.push(mutation);\n } else {\n this.#scopes.set(scope, [mutation]);\n }\n }\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n if (this.#mutations.delete(mutation)) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n if (scopedMutations.length > 1) {\n const index = scopedMutations.indexOf(mutation);\n if (index !== -1) {\n scopedMutations.splice(index, 1);\n }\n } else if (scopedMutations[0] === mutation) {\n this.#scopes.delete(scope);\n }\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const mutationsWithSameScope = this.#scopes.get(scope);\n const firstPendingMutation = mutationsWithSameScope?.find(\n (m) => m.state.status === \"pending\"\n );\n return !firstPendingMutation || firstPendingMutation === mutation;\n } else {\n return true;\n }\n }\n runNext(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.notify({ type: \"removed\", mutation });\n });\n this.#mutations.clear();\n this.#scopes.clear();\n });\n }\n getAll() {\n return Array.from(this.#mutations);\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id;\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const onMutateResult = this.#currentResult.context;\n const context = {\n client: this.#client,\n meta: this.options.meta,\n mutationKey: this.options.mutationKey\n };\n if (action?.type === \"success\") {\n try {\n this.#mutateOptions.onSuccess?.(\n action.data,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n this.#mutateOptions.onSettled?.(\n action.data,\n null,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n } else if (action?.type === \"error\") {\n try {\n this.#mutateOptions.onError?.(\n action.error,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n client,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1) return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0) return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n /**\n * Imperative (non-reactive) way to retrieve data for a QueryKey.\n * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n *\n * Hint: Do not use this function inside a component, because it won't receive updates.\n * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n */\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n const cachedData = query.state.data;\n if (cachedData === void 0) {\n return this.fetchQuery(options);\n }\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(\n options.queryHash\n )?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(\n {\n type: \"active\",\n ...filters\n },\n options\n );\n });\n }\n cancelQueries(filters, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters?.refetchType === \"none\") {\n return Promise.resolve();\n }\n return this.refetchQueries(\n {\n ...filters,\n type: filters?.refetchType ?? filters?.type ?? \"active\"\n },\n options\n );\n });\n }\n refetchQueries(filters, options = {}) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options._type = \"infinite\";\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options._type = \"infinite\";\n return this.ensureQueryData(options);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n void 0\n);\nvar useQueryClient = (queryClient) => {\n const client = React.useContext(QueryClientContext);\n if (queryClient) {\n return queryClient;\n }\n if (!client) {\n throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n }\n return client;\n};\nvar QueryClientProvider = ({\n client,\n children\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n QueryClientContext,\n QueryClientProvider,\n useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","\"use client\";\n\n// src/IsRestoringProvider.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n const throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n if (options.suspense || options.experimental_prefetchInRender || throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n suspense\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n const MIN_SUSPENSE_TIME_MS = 1e3;\n const clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n const originalStaleTime = defaultedOptions.staleTime;\n defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n if (typeof defaultedOptions.gcTime === \"number\") {\n defaultedOptions.gcTime = Math.max(\n defaultedOptions.gcTime,\n MIN_SUSPENSE_TIME_MS\n );\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { environmentManager, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const client = useQueryClient(queryClient);\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n const query = client.getQueryCache().get(defaultedOptions.queryHash);\n if (process.env.NODE_ENV !== \"production\") {\n if (!defaultedOptions.queryFn) {\n console.error(\n `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n );\n }\n }\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n ensureSuspenseTimers(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n useClearResetErrorBoundary(errorResetBoundary);\n const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n const shouldSubscribe = !isRestoring && options.subscribed !== false;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n observer.updateResult();\n return unsubscribe;\n },\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions);\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query,\n suspense: defaultedOptions.suspense\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n if (defaultedOptions.experimental_prefetchInRender && !environmentManager.isServer() && willFetch(result, isRestoring)) {\n const promise = isNewCacheEntry ? (\n // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n ) : (\n // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n query?.promise\n );\n promise?.catch(noop).finally(() => {\n observer.updateResult();\n });\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport {\n MutationObserver,\n noop,\n notifyManager,\n shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map","\"use client\";\nimport * as React$1 from \"react\";\n/**\n* React.use if available (React 19+), undefined otherwise.\n* Use dynamic lookup to avoid Webpack compilation errors with React 18.\n*/\nvar reactUse = React$1[\"use\"];\nvar useLayoutEffect = typeof window !== \"undefined\" ? React$1.useLayoutEffect : React$1.useEffect;\n/**\n* Taken from https://www.developerway.com/posts/implementing-advanced-use-previous-hook#part3\n*/\nfunction usePrevious(value) {\n\tconst ref = React$1.useRef({\n\t\tvalue,\n\t\tprev: null\n\t});\n\tconst current = ref.current.value;\n\tif (value !== current) ref.current = {\n\t\tvalue,\n\t\tprev: current\n\t};\n\treturn ref.current.prev;\n}\n/**\n* React hook to wrap `IntersectionObserver`.\n*\n* This hook will create an `IntersectionObserver` and observe the ref passed to it.\n*\n* When the intersection changes, the callback will be called with the `IntersectionObserverEntry`.\n*\n* @param ref - The ref to observe\n* @param intersectionObserverOptions - The options to pass to the IntersectionObserver\n* @param options - The options to pass to the hook\n* @param callback - The callback to call when the intersection changes\n* @returns The IntersectionObserver instance\n* @example\n* ```tsx\n* const MyComponent = () => {\n* const ref = React.useRef<HTMLDivElement>(null)\n* useIntersectionObserver(\n* ref,\n* (entry) => { doSomething(entry) },\n* { rootMargin: '10px' },\n* { disabled: false }\n* )\n* return <div ref={ref} />\n* ```\n*/\nfunction useIntersectionObserver(ref, callback, intersectionObserverOptions = {}, options = {}) {\n\tReact$1.useEffect(() => {\n\t\tif (!ref.current || options.disabled || typeof IntersectionObserver !== \"function\") return;\n\t\tconst observer = new IntersectionObserver(([entry]) => {\n\t\t\tcallback(entry);\n\t\t}, intersectionObserverOptions);\n\t\tobserver.observe(ref.current);\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [\n\t\tcallback,\n\t\tintersectionObserverOptions,\n\t\toptions.disabled,\n\t\tref\n\t]);\n}\n/**\n* React hook to take a `React.ForwardedRef` and returns a `ref` that can be used on a DOM element.\n*\n* @param ref - The forwarded ref\n* @returns The inner ref returned by `useRef`\n* @example\n* ```tsx\n* const MyComponent = React.forwardRef((props, ref) => {\n* const innerRef = useForwardedRef(ref)\n* return <div ref={innerRef} />\n* })\n* ```\n*/\nfunction useForwardedRef(ref) {\n\tconst innerRef = React$1.useRef(null);\n\tReact$1.useImperativeHandle(ref, () => innerRef.current, []);\n\treturn innerRef;\n}\n//#endregion\nexport { reactUse, useForwardedRef, useIntersectionObserver, useLayoutEffect, usePrevious };\n\n//# sourceMappingURL=utils.js.map","import { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/utils.ts\n/**\n* Return the last element of an array.\n* Intended for non-empty arrays used within router internals.\n*/\nfunction last(arr) {\n\treturn arr[arr.length - 1];\n}\nfunction isFunction(d) {\n\treturn typeof d === \"function\";\n}\n/**\n* Apply a value-or-updater to a previous value.\n* Accepts either a literal value or a function of the previous value.\n*/\nfunction functionalUpdate(updater, previous) {\n\tif (isFunction(updater)) return updater(previous);\n\treturn updater;\n}\nconst hasOwn = Object.prototype.hasOwnProperty;\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nfunction hasKeys(obj) {\n\tfor (const key in obj) if (hasOwn.call(obj, key)) return true;\n\treturn false;\n}\nconst createNull = () => Object.create(null);\nconst nullReplaceEqualDeep = (prev, next) => replaceEqualDeep(prev, next, createNull);\n/**\n* This function returns `prev` if `_next` is deeply equal.\n* If not, it will replace any deeply equal children of `b` with those of `a`.\n* This can be used for structural sharing between immutable JSON values for example.\n* Do not use this with signals\n*/\nfunction replaceEqualDeep(prev, _next, _makeObj = () => ({}), _depth = 0) {\n\tif (isServer) return _next;\n\tif (prev === _next) return prev;\n\tif (_depth > 500) return _next;\n\tconst next = _next;\n\tconst array = isPlainArray(prev) && isPlainArray(next);\n\tif (!array && !(isPlainObject(prev) && isPlainObject(next))) return next;\n\tconst prevItems = array ? prev : getEnumerableOwnKeys(prev);\n\tif (!prevItems) return next;\n\tconst nextItems = array ? next : getEnumerableOwnKeys(next);\n\tif (!nextItems) return next;\n\tconst prevSize = prevItems.length;\n\tconst nextSize = nextItems.length;\n\tconst copy = array ? new Array(nextSize) : _makeObj();\n\tlet equalItems = 0;\n\tfor (let i = 0; i < nextSize; i++) {\n\t\tconst key = array ? i : nextItems[i];\n\t\tconst p = prev[key];\n\t\tconst n = next[key];\n\t\tif (p === n) {\n\t\t\tcopy[key] = p;\n\t\t\tif (array ? i < prevSize : hasOwn.call(prev, key)) equalItems++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (p === null || n === null || typeof p !== \"object\" || typeof n !== \"object\") {\n\t\t\tcopy[key] = n;\n\t\t\tcontinue;\n\t\t}\n\t\tconst v = replaceEqualDeep(p, n, _makeObj, _depth + 1);\n\t\tcopy[key] = v;\n\t\tif (v === p) equalItems++;\n\t}\n\treturn prevSize === nextSize && equalItems === prevSize ? prev : copy;\n}\n/**\n* Equivalent to `Reflect.ownKeys`, but ensures that objects are \"clone-friendly\":\n* will return false if object has any non-enumerable properties.\n*\n* Optimized for the common case where objects have no symbol properties.\n*/\nfunction getEnumerableOwnKeys(o) {\n\tconst names = Object.getOwnPropertyNames(o);\n\tfor (const name of names) if (!isEnumerable.call(o, name)) return false;\n\tconst symbols = Object.getOwnPropertySymbols(o);\n\tif (symbols.length === 0) return names;\n\tconst keys = names;\n\tfor (const symbol of symbols) {\n\t\tif (!isEnumerable.call(o, symbol)) return false;\n\t\tkeys.push(symbol);\n\t}\n\treturn keys;\n}\nfunction isPlainObject(o) {\n\tif (!hasObjectPrototype(o)) return false;\n\tconst ctor = o.constructor;\n\tif (typeof ctor === \"undefined\") return true;\n\tconst prot = ctor.prototype;\n\tif (!hasObjectPrototype(prot)) return false;\n\tif (!prot.hasOwnProperty(\"isPrototypeOf\")) return false;\n\treturn true;\n}\nfunction hasObjectPrototype(o) {\n\treturn Object.prototype.toString.call(o) === \"[object Object]\";\n}\n/**\n* Check if a value is a \"plain\" array (no extra enumerable keys).\n*/\nfunction isPlainArray(value) {\n\treturn Array.isArray(value) && value.length === Object.keys(value).length;\n}\n/**\n* Perform a deep equality check with options for partial comparison and\n* ignoring `undefined` values. Optimized for router state comparisons.\n*/\nfunction deepEqual(a, b, opts) {\n\tif (a === b) return true;\n\tif (typeof a !== typeof b) return false;\n\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\tif (a.length !== b.length) return false;\n\t\tfor (let i = 0, l = a.length; i < l; i++) if (!deepEqual(a[i], b[i], opts)) return false;\n\t\treturn true;\n\t}\n\tif (isPlainObject(a) && isPlainObject(b)) {\n\t\tconst ignoreUndefined = opts?.ignoreUndefined ?? true;\n\t\tif (opts?.partial) {\n\t\t\tfor (const k in b) if (!ignoreUndefined || b[k] !== void 0) {\n\t\t\t\tif (!deepEqual(a[k], b[k], opts)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tlet aCount = 0;\n\t\tif (!ignoreUndefined) aCount = Object.keys(a).length;\n\t\telse for (const k in a) if (a[k] !== void 0) aCount++;\n\t\tlet bCount = 0;\n\t\tfor (const k in b) if (!ignoreUndefined || b[k] !== void 0) {\n\t\t\tbCount++;\n\t\t\tif (bCount > aCount || !deepEqual(a[k], b[k], opts)) return false;\n\t\t}\n\t\treturn aCount === bCount;\n\t}\n\treturn false;\n}\n/**\n* Create a promise with exposed resolve/reject and status fields.\n* Useful for coordinating async router lifecycle operations.\n*/\nfunction createControlledPromise(onResolve) {\n\tlet resolveLoadPromise;\n\tlet rejectLoadPromise;\n\tconst controlledPromise = new Promise((resolve, reject) => {\n\t\tresolveLoadPromise = resolve;\n\t\trejectLoadPromise = reject;\n\t});\n\tcontrolledPromise.status = \"pending\";\n\tcontrolledPromise.resolve = (value) => {\n\t\tcontrolledPromise.status = \"resolved\";\n\t\tcontrolledPromise.value = value;\n\t\tresolveLoadPromise(value);\n\t\tonResolve?.(value);\n\t};\n\tcontrolledPromise.reject = (e) => {\n\t\tcontrolledPromise.status = \"rejected\";\n\t\trejectLoadPromise(e);\n\t};\n\treturn controlledPromise;\n}\n/**\n* Heuristically detect dynamic import \"module not found\" errors\n* across major browsers for lazy route component handling.\n*/\nfunction isModuleNotFoundError(error) {\n\tif (typeof error?.message !== \"string\") return false;\n\treturn error.message.startsWith(\"Failed to fetch dynamically imported module\") || error.message.startsWith(\"error loading dynamically imported module\") || error.message.startsWith(\"Importing a module script failed\");\n}\nfunction isPromise(value) {\n\treturn Boolean(value && typeof value === \"object\" && typeof value.then === \"function\");\n}\nfunction findLast(array, predicate) {\n\tfor (let i = array.length - 1; i >= 0; i--) {\n\t\tconst item = array[i];\n\t\tif (predicate(item)) return item;\n\t}\n}\n/**\n* Re-encode characters that are unsafe in URL paths.\n* Includes ASCII control characters (0x00-0x1F, 0x7F) and a subset of the\n* WHATWG URL \"path percent-encode set\" (\", <, >, `, {, }).\n*\n* Space (0x20) is intentionally excluded — decodeURI decodes %20 to space\n* and the router stores decoded spaces in location.pathname. The existing\n* encodePathLikeUrl already handles re-encoding spaces for outgoing URLs.\n*\n* These characters are decoded by decodeURI but must remain percent-encoded\n* in paths to match how upstream layers (CDNs, edge middleware, browsers)\n* interpret the URL, preventing infinite redirect loops and path mismatches.\n*/\nconst PATH_UNSAFE_RE = /[\\x00-\\x1f\\x7f\"<>`{}]/g;\nfunction sanitizePathSegment(segment) {\n\treturn segment.replace(PATH_UNSAFE_RE, (ch) => \"%\" + ch.charCodeAt(0).toString(16).toUpperCase().padStart(2, \"0\"));\n}\nfunction decodeSegment(segment) {\n\tlet decoded;\n\ttry {\n\t\tdecoded = decodeURI(segment);\n\t} catch {\n\t\tdecoded = segment.replaceAll(/%[0-9A-F]{2}/gi, (match) => {\n\t\t\ttry {\n\t\t\t\treturn decodeURI(match);\n\t\t\t} catch {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t});\n\t}\n\treturn sanitizePathSegment(decoded);\n}\n/**\n* Default list of URL protocols to allow in links, redirects, and navigation.\n* Any absolute URL protocol not in this list is treated as dangerous by default.\n*/\nconst DEFAULT_PROTOCOL_ALLOWLIST = [\n\t\"http:\",\n\t\"https:\",\n\t\"mailto:\",\n\t\"tel:\"\n];\n/**\n* Check if a URL string uses a protocol that is not in the allowlist.\n* Returns true for blocked protocols like javascript:, blob:, data:, etc.\n*\n* The URL constructor correctly normalizes:\n* - Mixed case (JavaScript: → javascript:)\n* - Whitespace/control characters (java\\nscript: → javascript:)\n* - Leading whitespace\n*\n* For relative URLs (no protocol), returns false (safe).\n*\n* @param url - The URL string to check\n* @param allowlist - Set of protocols to allow\n* @returns true if the URL uses a protocol that is not allowed\n*/\nfunction isDangerousProtocol(url, allowlist) {\n\tif (!url) return false;\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn !allowlist.has(parsed.protocol);\n\t} catch {\n\t\treturn false;\n\t}\n}\nconst HTML_ESCAPE_LOOKUP = {\n\t\"&\": \"\\\\u0026\",\n\t\">\": \"\\\\u003e\",\n\t\"<\": \"\\\\u003c\",\n\t\"\\u2028\": \"\\\\u2028\",\n\t\"\\u2029\": \"\\\\u2029\"\n};\nconst HTML_ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\n/**\n* Escape HTML special characters in a string to prevent XSS attacks\n* when embedding strings in script tags during SSR.\n*\n* This is essential for preventing XSS vulnerabilities when user-controlled\n* content is embedded in inline scripts.\n*/\nfunction escapeHtml(str) {\n\treturn str.replace(HTML_ESCAPE_REGEX, (match) => HTML_ESCAPE_LOOKUP[match]);\n}\nfunction decodePath(path) {\n\tif (!path) return {\n\t\tpath,\n\t\thandledProtocolRelativeURL: false\n\t};\n\tif (!/[%\\\\\\x00-\\x1f\\x7f]/.test(path) && !path.startsWith(\"//\")) return {\n\t\tpath,\n\t\thandledProtocolRelativeURL: false\n\t};\n\tconst re = /%25|%5C/gi;\n\tlet cursor = 0;\n\tlet result = \"\";\n\tlet match;\n\twhile (null !== (match = re.exec(path))) {\n\t\tresult += decodeSegment(path.slice(cursor, match.index)) + match[0];\n\t\tcursor = re.lastIndex;\n\t}\n\tresult = result + decodeSegment(cursor ? path.slice(cursor) : path);\n\tlet handledProtocolRelativeURL = false;\n\tif (result.startsWith(\"//\")) {\n\t\thandledProtocolRelativeURL = true;\n\t\tresult = \"/\" + result.replace(/^\\/+/, \"\");\n\t}\n\treturn {\n\t\tpath: result,\n\t\thandledProtocolRelativeURL\n\t};\n}\n/**\n* Encodes a path the same way `new URL()` would, but without the overhead of full URL parsing.\n*\n* This function encodes:\n* - Whitespace characters (spaces → %20, tabs → %09, etc.)\n* - Non-ASCII/Unicode characters (emojis, accented characters, etc.)\n*\n* It preserves:\n* - Already percent-encoded sequences (won't double-encode %2F, %25, etc.)\n* - ASCII special characters valid in URL paths (@, $, &, +, etc.)\n* - Forward slashes as path separators\n*\n* Used to generate proper href values for SSR without constructing URL objects.\n*\n* @example\n* encodePathLikeUrl('/path/file name.pdf') // '/path/file%20name.pdf'\n* encodePathLikeUrl('/path/日本語') // '/path/%E6%97%A5%E6%9C%AC%E8%AA%9E'\n* encodePathLikeUrl('/path/already%20encoded') // '/path/already%20encoded' (preserved)\n*/\nfunction encodePathLikeUrl(path) {\n\tif (!/\\s|[^\\u0000-\\u007F]/.test(path)) return path;\n\treturn path.replace(/\\s|[^\\u0000-\\u007F]/gu, encodeURIComponent);\n}\n/**\n* Builds the dev-mode CSS styles URL for route-scoped CSS collection.\n* Used by HeadContent components in all framework implementations to construct\n* the URL for the `/@tanstack-start/styles.css` endpoint.\n*\n* @param basepath - The router's basepath (may or may not have leading slash)\n* @param routeIds - Array of matched route IDs to include in the CSS collection\n* @returns The full URL path for the dev styles CSS endpoint\n*/\nfunction buildDevStylesUrl(basepath, routeIds) {\n\tconst trimmedBasepath = basepath.replace(/^\\/+|\\/+$/g, \"\");\n\treturn `${trimmedBasepath === \"\" ? \"\" : `/${trimmedBasepath}`}/@tanstack-start/styles.css?routes=${encodeURIComponent(routeIds.join(\",\"))}`;\n}\nfunction arraysEqual(a, b) {\n\tif (a === b) return true;\n\tif (a.length !== b.length) return false;\n\tfor (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;\n\treturn true;\n}\n//#endregion\nexport { DEFAULT_PROTOCOL_ALLOWLIST, arraysEqual, buildDevStylesUrl, createControlledPromise, decodePath, deepEqual, encodePathLikeUrl, escapeHtml, findLast, functionalUpdate, hasKeys, hasOwn, isDangerousProtocol, isModuleNotFoundError, isPlainArray, isPlainObject, isPromise, last, nullReplaceEqualDeep, replaceEqualDeep };\n\n//# sourceMappingURL=utils.js.map","//#region src/invariant.ts\nfunction invariant() {\n\tthrow new Error(\"Invariant failed\");\n}\n//#endregion\nexport { invariant };\n\n//# sourceMappingURL=invariant.js.map","//#region src/lru-cache.ts\nfunction createLRUCache(max) {\n\tconst cache = /* @__PURE__ */ new Map();\n\tlet oldest;\n\tlet newest;\n\tconst touch = (entry) => {\n\t\tif (!entry.next) return;\n\t\tif (!entry.prev) {\n\t\t\tentry.next.prev = void 0;\n\t\t\toldest = entry.next;\n\t\t\tentry.next = void 0;\n\t\t\tif (newest) {\n\t\t\t\tentry.prev = newest;\n\t\t\t\tnewest.next = entry;\n\t\t\t}\n\t\t} else {\n\t\t\tentry.prev.next = entry.next;\n\t\t\tentry.next.prev = entry.prev;\n\t\t\tentry.next = void 0;\n\t\t\tif (newest) {\n\t\t\t\tnewest.next = entry;\n\t\t\t\tentry.prev = newest;\n\t\t\t}\n\t\t}\n\t\tnewest = entry;\n\t};\n\treturn {\n\t\tget(key) {\n\t\t\tconst entry = cache.get(key);\n\t\t\tif (!entry) return void 0;\n\t\t\ttouch(entry);\n\t\t\treturn entry.value;\n\t\t},\n\t\tset(key, value) {\n\t\t\tif (cache.size >= max && oldest) {\n\t\t\t\tconst toDelete = oldest;\n\t\t\t\tcache.delete(toDelete.key);\n\t\t\t\tif (toDelete.next) {\n\t\t\t\t\toldest = toDelete.next;\n\t\t\t\t\ttoDelete.next.prev = void 0;\n\t\t\t\t}\n\t\t\t\tif (toDelete === newest) newest = void 0;\n\t\t\t}\n\t\t\tconst existing = cache.get(key);\n\t\t\tif (existing) {\n\t\t\t\texisting.value = value;\n\t\t\t\ttouch(existing);\n\t\t\t} else {\n\t\t\t\tconst entry = {\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tprev: newest\n\t\t\t\t};\n\t\t\t\tif (newest) newest.next = entry;\n\t\t\t\tnewest = entry;\n\t\t\t\tif (!oldest) oldest = entry;\n\t\t\t\tcache.set(key, entry);\n\t\t\t}\n\t\t},\n\t\tclear() {\n\t\t\tcache.clear();\n\t\t\toldest = void 0;\n\t\t\tnewest = void 0;\n\t\t}\n\t};\n}\n//#endregion\nexport { createLRUCache };\n\n//# sourceMappingURL=lru-cache.js.map","import { last } from \"./utils.js\";\nimport { invariant } from \"./invariant.js\";\nimport { createLRUCache } from \"./lru-cache.js\";\nconst SEGMENT_TYPE_INDEX = 4;\nconst SEGMENT_TYPE_PATHLESS = 5;\nfunction getOpenAndCloseBraces(part) {\n\tconst openBrace = part.indexOf(\"{\");\n\tif (openBrace === -1) return null;\n\tconst closeBrace = part.indexOf(\"}\", openBrace);\n\tif (closeBrace === -1) return null;\n\tif (openBrace + 1 >= part.length) return null;\n\treturn [openBrace, closeBrace];\n}\n/**\n* Populates the `output` array with the parsed representation of the given `segment` string.\n*\n* Usage:\n* ```ts\n* let output\n* let cursor = 0\n* while (cursor < path.length) {\n* output = parseSegment(path, cursor, output)\n* const end = output[5]\n* cursor = end + 1\n* ```\n*\n* `output` is stored outside to avoid allocations during repeated calls. It doesn't need to be typed\n* or initialized, it will be done automatically.\n*/\nfunction parseSegment(path, start, output = new Uint16Array(6)) {\n\tconst next = path.indexOf(\"/\", start);\n\tconst end = next === -1 ? path.length : next;\n\tconst part = path.substring(start, end);\n\tif (!part || !part.includes(\"$\")) {\n\t\toutput[0] = 0;\n\t\toutput[1] = start;\n\t\toutput[2] = start;\n\t\toutput[3] = end;\n\t\toutput[4] = end;\n\t\toutput[5] = end;\n\t\treturn output;\n\t}\n\tif (part === \"$\") {\n\t\tconst total = path.length;\n\t\toutput[0] = 2;\n\t\toutput[1] = start;\n\t\toutput[2] = start;\n\t\toutput[3] = total;\n\t\toutput[4] = total;\n\t\toutput[5] = total;\n\t\treturn output;\n\t}\n\tif (part.charCodeAt(0) === 36) {\n\t\toutput[0] = 1;\n\t\toutput[1] = start;\n\t\toutput[2] = start + 1;\n\t\toutput[3] = end;\n\t\toutput[4] = end;\n\t\toutput[5] = end;\n\t\treturn output;\n\t}\n\tconst braces = getOpenAndCloseBraces(part);\n\tif (braces) {\n\t\tconst [openBrace, closeBrace] = braces;\n\t\tconst firstChar = part.charCodeAt(openBrace + 1);\n\t\tif (firstChar === 45) {\n\t\t\tif (openBrace + 2 < part.length && part.charCodeAt(openBrace + 2) === 36) {\n\t\t\t\tconst paramStart = openBrace + 3;\n\t\t\t\tconst paramEnd = closeBrace;\n\t\t\t\tif (paramStart < paramEnd) {\n\t\t\t\t\toutput[0] = 3;\n\t\t\t\t\toutput[1] = start + openBrace;\n\t\t\t\t\toutput[2] = start + paramStart;\n\t\t\t\t\toutput[3] = start + paramEnd;\n\t\t\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\t\t\toutput[5] = end;\n\t\t\t\t\treturn output;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (firstChar === 36) {\n\t\t\tconst dollarPos = openBrace + 1;\n\t\t\tconst afterDollar = openBrace + 2;\n\t\t\tif (afterDollar === closeBrace) {\n\t\t\t\toutput[0] = 2;\n\t\t\t\toutput[1] = start + openBrace;\n\t\t\t\toutput[2] = start + dollarPos;\n\t\t\t\toutput[3] = start + afterDollar;\n\t\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\t\toutput[5] = path.length;\n\t\t\t\treturn output;\n\t\t\t}\n\t\t\toutput[0] = 1;\n\t\t\toutput[1] = start + openBrace;\n\t\t\toutput[2] = start + afterDollar;\n\t\t\toutput[3] = start + closeBrace;\n\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\toutput[5] = end;\n\t\t\treturn output;\n\t\t}\n\t}\n\toutput[0] = 0;\n\toutput[1] = start;\n\toutput[2] = start;\n\toutput[3] = end;\n\toutput[4] = end;\n\toutput[5] = end;\n\treturn output;\n}\n/**\n* Recursively parses the segments of the given route tree and populates a segment trie.\n*\n* @param data A reusable Uint16Array for parsing segments. (non important, we're just avoiding allocations)\n* @param route The current route to parse.\n* @param start The starting index for parsing within the route's full path.\n* @param node The current segment node in the trie to populate.\n* @param onRoute Callback invoked for each route processed.\n*/\nfunction parseSegments(defaultCaseSensitive, data, route, start, node, depth, onRoute) {\n\tonRoute?.(route);\n\tlet cursor = start;\n\t{\n\t\tconst path = route.fullPath ?? route.from;\n\t\tconst length = path.length;\n\t\tconst caseSensitive = route.options?.caseSensitive ?? defaultCaseSensitive;\n\t\tconst parseParams = route.options?.params?.parse ?? route.options?.parseParams;\n\t\twhile (cursor < length) {\n\t\t\tconst segment = parseSegment(path, cursor, data);\n\t\t\tlet nextNode;\n\t\t\tconst start = cursor;\n\t\t\tconst end = segment[5];\n\t\t\tcursor = end + 1;\n\t\t\tdepth++;\n\t\t\tswitch (segment[0]) {\n\t\t\t\tcase 0: {\n\t\t\t\t\tconst value = path.substring(segment[2], segment[3]);\n\t\t\t\t\tif (caseSensitive) {\n\t\t\t\t\t\tconst existingNode = node.static?.get(value);\n\t\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.static ??= /* @__PURE__ */ new Map();\n\t\t\t\t\t\t\tconst next = createStaticNode(route.fullPath ?? route.from);\n\t\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\t\tnode.static.set(value, next);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst name = value.toLowerCase();\n\t\t\t\t\t\tconst existingNode = node.staticInsensitive?.get(name);\n\t\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.staticInsensitive ??= /* @__PURE__ */ new Map();\n\t\t\t\t\t\t\tconst next = createStaticNode(route.fullPath ?? route.from);\n\t\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\t\tnode.staticInsensitive.set(name, next);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 1: {\n\t\t\t\t\tconst prefix_raw = path.substring(start, segment[1]);\n\t\t\t\t\tconst suffix_raw = path.substring(segment[4], end);\n\t\t\t\t\tconst actuallyCaseSensitive = caseSensitive && !!(prefix_raw || suffix_raw);\n\t\t\t\t\tconst prefix = !prefix_raw ? void 0 : actuallyCaseSensitive ? prefix_raw : prefix_raw.toLowerCase();\n\t\t\t\t\tconst suffix = !suffix_raw ? void 0 : actuallyCaseSensitive ? suffix_raw : suffix_raw.toLowerCase();\n\t\t\t\t\tconst existingNode = !parseParams && node.dynamic?.find((s) => !s.parse && s.caseSensitive === actuallyCaseSensitive && s.prefix === prefix && s.suffix === suffix);\n\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst next = createDynamicNode(1, route.fullPath ?? route.from, actuallyCaseSensitive, prefix, suffix);\n\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\tnode.dynamic ??= [];\n\t\t\t\t\t\tnode.dynamic.push(next);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 3: {\n\t\t\t\t\tconst prefix_raw = path.substring(start, segment[1]);\n\t\t\t\t\tconst suffix_raw = path.substring(segment[4], end);\n\t\t\t\t\tconst actuallyCaseSensitive = caseSensitive && !!(prefix_raw || suffix_raw);\n\t\t\t\t\tconst prefix = !prefix_raw ? void 0 : actuallyCaseSensitive ? prefix_raw : prefix_raw.toLowerCase();\n\t\t\t\t\tconst suffix = !suffix_raw ? void 0 : actuallyCaseSensitive ? suffix_raw : suffix_raw.toLowerCase();\n\t\t\t\t\tconst existingNode = !parseParams && node.optional?.find((s) => !s.parse && s.caseSensitive === actuallyCaseSensitive && s.prefix === prefix && s.suffix === suffix);\n\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst next = createDynamicNode(3, route.fullPath ?? route.from, actuallyCaseSensitive, prefix, suffix);\n\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\tnode.optional ??= [];\n\t\t\t\t\t\tnode.optional.push(next);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 2: {\n\t\t\t\t\tconst prefix_raw = path.substring(start, segment[1]);\n\t\t\t\t\tconst suffix_raw = path.substring(segment[4], end);\n\t\t\t\t\tconst actuallyCaseSensitive = caseSensitive && !!(prefix_raw || suffix_raw);\n\t\t\t\t\tconst prefix = !prefix_raw ? void 0 : actuallyCaseSensitive ? prefix_raw : prefix_raw.toLowerCase();\n\t\t\t\t\tconst suffix = !suffix_raw ? void 0 : actuallyCaseSensitive ? suffix_raw : suffix_raw.toLowerCase();\n\t\t\t\t\tconst next = createDynamicNode(2, route.fullPath ?? route.from, actuallyCaseSensitive, prefix, suffix);\n\t\t\t\t\tnextNode = next;\n\t\t\t\t\tnext.parent = node;\n\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\tnode.wildcard ??= [];\n\t\t\t\t\tnode.wildcard.push(next);\n\t\t\t\t}\n\t\t\t}\n\t\t\tnode = nextNode;\n\t\t}\n\t\tif (parseParams && route.children && !route.isRoot && route.id && route.id.charCodeAt(route.id.lastIndexOf(\"/\") + 1) === 95) {\n\t\t\tconst pathlessNode = createStaticNode(route.fullPath ?? route.from);\n\t\t\tpathlessNode.kind = SEGMENT_TYPE_PATHLESS;\n\t\t\tpathlessNode.parent = node;\n\t\t\tdepth++;\n\t\t\tpathlessNode.depth = depth;\n\t\t\tnode.pathless ??= [];\n\t\t\tnode.pathless.push(pathlessNode);\n\t\t\tnode = pathlessNode;\n\t\t}\n\t\tconst isLeaf = (route.path || !route.children) && !route.isRoot;\n\t\tif (isLeaf && path.endsWith(\"/\")) {\n\t\t\tconst indexNode = createStaticNode(route.fullPath ?? route.from);\n\t\t\tindexNode.kind = SEGMENT_TYPE_INDEX;\n\t\t\tindexNode.parent = node;\n\t\t\tdepth++;\n\t\t\tindexNode.depth = depth;\n\t\t\tnode.index = indexNode;\n\t\t\tnode = indexNode;\n\t\t}\n\t\tnode.parse = parseParams ?? null;\n\t\tnode.priority = route.options?.params?.priority ?? 0;\n\t\tif (isLeaf && !node.route) {\n\t\t\tnode.route = route;\n\t\t\tnode.fullPath = route.fullPath ?? route.from;\n\t\t}\n\t}\n\tif (route.children) for (const child of route.children) parseSegments(defaultCaseSensitive, data, child, cursor, node, depth, onRoute);\n}\nfunction sortDynamic(a, b) {\n\tif (a.parse && !b.parse) return -1;\n\tif (!a.parse && b.parse) return 1;\n\tif (a.parse && b.parse && (a.priority || b.priority)) return b.priority - a.priority;\n\tif (a.prefix && b.prefix && a.prefix !== b.prefix) {\n\t\tif (a.prefix.startsWith(b.prefix)) return -1;\n\t\tif (b.prefix.startsWith(a.prefix)) return 1;\n\t}\n\tif (a.suffix && b.suffix && a.suffix !== b.suffix) {\n\t\tif (a.suffix.endsWith(b.suffix)) return -1;\n\t\tif (b.suffix.endsWith(a.suffix)) return 1;\n\t}\n\tif (a.prefix && !b.prefix) return -1;\n\tif (!a.prefix && b.prefix) return 1;\n\tif (a.suffix && !b.suffix) return -1;\n\tif (!a.suffix && b.suffix) return 1;\n\tif (a.caseSensitive && !b.caseSensitive) return -1;\n\tif (!a.caseSensitive && b.caseSensitive) return 1;\n\treturn 0;\n}\nfunction sortTreeNodes(node) {\n\tif (node.pathless) for (const child of node.pathless) sortTreeNodes(child);\n\tif (node.static) for (const child of node.static.values()) sortTreeNodes(child);\n\tif (node.staticInsensitive) for (const child of node.staticInsensitive.values()) sortTreeNodes(child);\n\tif (node.dynamic?.length) {\n\t\tnode.dynamic.sort(sortDynamic);\n\t\tfor (const child of node.dynamic) sortTreeNodes(child);\n\t}\n\tif (node.optional?.length) {\n\t\tnode.optional.sort(sortDynamic);\n\t\tfor (const child of node.optional) sortTreeNodes(child);\n\t}\n\tif (node.wildcard?.length) {\n\t\tnode.wildcard.sort(sortDynamic);\n\t\tfor (const child of node.wildcard) sortTreeNodes(child);\n\t}\n}\nfunction createStaticNode(fullPath) {\n\treturn {\n\t\tkind: 0,\n\t\tdepth: 0,\n\t\tpathless: null,\n\t\tindex: null,\n\t\tstatic: null,\n\t\tstaticInsensitive: null,\n\t\tdynamic: null,\n\t\toptional: null,\n\t\twildcard: null,\n\t\troute: null,\n\t\tfullPath,\n\t\tparent: null,\n\t\tparse: null,\n\t\tpriority: 0\n\t};\n}\n/**\n* Keys must be declared in the same order as in `SegmentNode` type,\n* to ensure they are represented as the same object class in the engine.\n*/\nfunction createDynamicNode(kind, fullPath, caseSensitive, prefix, suffix) {\n\treturn {\n\t\tkind,\n\t\tdepth: 0,\n\t\tpathless: null,\n\t\tindex: null,\n\t\tstatic: null,\n\t\tstaticInsensitive: null,\n\t\tdynamic: null,\n\t\toptional: null,\n\t\twildcard: null,\n\t\troute: null,\n\t\tfullPath,\n\t\tparent: null,\n\t\tparse: null,\n\t\tpriority: 0,\n\t\tcaseSensitive,\n\t\tprefix,\n\t\tsuffix\n\t};\n}\nfunction processRouteMasks(routeList, processedTree) {\n\tconst segmentTree = createStaticNode(\"/\");\n\tconst data = new Uint16Array(6);\n\tfor (const route of routeList) parseSegments(false, data, route, 1, segmentTree, 0);\n\tsortTreeNodes(segmentTree);\n\tprocessedTree.masksTree = segmentTree;\n\tprocessedTree.flatCache = createLRUCache(1e3);\n}\n/**\n* Take an arbitrary list of routes, create a tree from them (if it hasn't been created already), and match a path against it.\n*/\nfunction findFlatMatch(path, processedTree) {\n\tpath ||= \"/\";\n\tconst cached = processedTree.flatCache.get(path);\n\tif (cached) return cached;\n\tconst result = findMatch(path, processedTree.masksTree);\n\tprocessedTree.flatCache.set(path, result);\n\treturn result;\n}\n/**\n* @deprecated keep until v2 so that `router.matchRoute` can keep not caring about the actual route tree\n*/\nfunction findSingleMatch(from, caseSensitive, fuzzy, path, processedTree) {\n\tfrom ||= \"/\";\n\tpath ||= \"/\";\n\tconst key = caseSensitive ? `case\\0${from}` : from;\n\tlet tree = processedTree.singleCache.get(key);\n\tif (!tree) {\n\t\ttree = createStaticNode(\"/\");\n\t\tparseSegments(caseSensitive, new Uint16Array(6), { from }, 1, tree, 0);\n\t\tprocessedTree.singleCache.set(key, tree);\n\t}\n\treturn findMatch(path, tree, fuzzy);\n}\nfunction findRouteMatch(path, processedTree, fuzzy = false) {\n\tconst key = fuzzy ? path : `nofuzz\\0${path}`;\n\tconst cached = processedTree.matchCache.get(key);\n\tif (cached !== void 0) return cached;\n\tpath ||= \"/\";\n\tlet result;\n\ttry {\n\t\tresult = findMatch(path, processedTree.segmentTree, fuzzy);\n\t} catch (err) {\n\t\tif (err instanceof URIError) result = null;\n\t\telse throw err;\n\t}\n\tif (result) result.branch = buildRouteBranch(result.route);\n\tprocessedTree.matchCache.set(key, result);\n\treturn result;\n}\n/** Trim trailing slashes (except preserving root '/'). */\nfunction trimPathRight(path) {\n\treturn path === \"/\" ? path : path.replace(/\\/{1,}$/, \"\");\n}\n/**\n* Processes a route tree into a segment trie for efficient path matching.\n* Also builds lookup maps for routes by ID and by trimmed full path.\n*/\nfunction processRouteTree(routeTree, caseSensitive = false, initRoute) {\n\tconst segmentTree = createStaticNode(routeTree.fullPath);\n\tconst data = new Uint16Array(6);\n\tconst routesById = {};\n\tconst routesByPath = {};\n\tlet index = 0;\n\tparseSegments(caseSensitive, data, routeTree, 1, segmentTree, 0, (route) => {\n\t\tinitRoute?.(route, index);\n\t\tif (route.id in routesById) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Duplicate routes found with id: ${String(route.id)}`);\n\t\t\tinvariant();\n\t\t}\n\t\troutesById[route.id] = route;\n\t\tif (index !== 0 && route.path) {\n\t\t\tconst trimmedFullPath = trimPathRight(route.fullPath);\n\t\t\tif (!routesByPath[trimmedFullPath] || route.fullPath.endsWith(\"/\")) routesByPath[trimmedFullPath] = route;\n\t\t}\n\t\tindex++;\n\t});\n\tsortTreeNodes(segmentTree);\n\treturn {\n\t\tprocessedTree: {\n\t\t\tsegmentTree,\n\t\t\tsingleCache: createLRUCache(1e3),\n\t\t\tmatchCache: createLRUCache(1e3),\n\t\t\tflatCache: null,\n\t\t\tmasksTree: null\n\t\t},\n\t\troutesById,\n\t\troutesByPath\n\t};\n}\nfunction findMatch(path, segmentTree, fuzzy = false) {\n\tconst parts = path.split(\"/\");\n\tconst leaf = getNodeMatch(path, parts, segmentTree, fuzzy);\n\tif (!leaf) return null;\n\tconst [rawParams] = extractParams(path, parts, leaf);\n\treturn {\n\t\troute: leaf.node.route,\n\t\trawParams\n\t};\n}\n/**\n* This function is \"resumable\":\n* - the `leaf` input can contain `extract` and `rawParams` properties from a previous `extractParams` call\n* - the returned `state` can be passed back as `extract` in a future call to continue extracting params from where we left off\n*\n* Inputs are *not* mutated.\n*/\nfunction extractParams(path, parts, leaf) {\n\tconst list = buildBranch(leaf.node);\n\tlet nodeParts = null;\n\tconst rawParams = Object.create(null);\n\t/** which segment of the path we're currently processing */\n\tlet partIndex = leaf.extract?.part ?? 0;\n\t/** which node of the route tree branch we're currently processing */\n\tlet nodeIndex = leaf.extract?.node ?? 0;\n\t/** index of the 1st character of the segment we're processing in the path string */\n\tlet pathIndex = leaf.extract?.path ?? 0;\n\t/** which fullPath segment we're currently processing */\n\tlet segmentCount = leaf.extract?.segment ?? 0;\n\tfor (; nodeIndex < list.length; partIndex++, nodeIndex++, pathIndex++, segmentCount++) {\n\t\tconst node = list[nodeIndex];\n\t\tif (node.kind === SEGMENT_TYPE_INDEX) break;\n\t\tif (node.kind === SEGMENT_TYPE_PATHLESS) {\n\t\t\tsegmentCount--;\n\t\t\tpartIndex--;\n\t\t\tpathIndex--;\n\t\t\tcontinue;\n\t\t}\n\t\tconst part = parts[partIndex];\n\t\tconst currentPathIndex = pathIndex;\n\t\tif (part) pathIndex += part.length;\n\t\tif (node.kind === 1) {\n\t\t\tnodeParts ??= leaf.node.fullPath.split(\"/\");\n\t\t\tconst nodePart = nodeParts[segmentCount];\n\t\t\tconst preLength = node.prefix?.length ?? 0;\n\t\t\tif (nodePart.charCodeAt(preLength) === 123) {\n\t\t\t\tconst sufLength = node.suffix?.length ?? 0;\n\t\t\t\tconst name = nodePart.substring(preLength + 2, nodePart.length - sufLength - 1);\n\t\t\t\tconst value = part.substring(preLength, part.length - sufLength);\n\t\t\t\trawParams[name] = decodeURIComponent(value);\n\t\t\t} else {\n\t\t\t\tconst name = nodePart.substring(1);\n\t\t\t\trawParams[name] = decodeURIComponent(part);\n\t\t\t}\n\t\t} else if (node.kind === 3) {\n\t\t\tif (leaf.skipped & 1 << nodeIndex) {\n\t\t\t\tpartIndex--;\n\t\t\t\tpathIndex = currentPathIndex - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tnodeParts ??= leaf.node.fullPath.split(\"/\");\n\t\t\tconst nodePart = nodeParts[segmentCount];\n\t\t\tconst preLength = node.prefix?.length ?? 0;\n\t\t\tconst sufLength = node.suffix?.length ?? 0;\n\t\t\tconst name = nodePart.substring(preLength + 3, nodePart.length - sufLength - 1);\n\t\t\tconst value = node.suffix || node.prefix ? part.substring(preLength, part.length - sufLength) : part;\n\t\t\tif (value) rawParams[name] = decodeURIComponent(value);\n\t\t} else if (node.kind === 2) {\n\t\t\tconst n = node;\n\t\t\tconst value = path.substring(currentPathIndex + (n.prefix?.length ?? 0), path.length - (n.suffix?.length ?? 0));\n\t\t\tconst splat = decodeURIComponent(value);\n\t\t\trawParams[\"*\"] = splat;\n\t\t\trawParams._splat = splat;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (leaf.rawParams) Object.assign(rawParams, leaf.rawParams);\n\treturn [rawParams, {\n\t\tpart: partIndex,\n\t\tnode: nodeIndex,\n\t\tpath: pathIndex,\n\t\tsegment: segmentCount\n\t}];\n}\nfunction buildRouteBranch(route) {\n\tconst list = [route];\n\twhile (route.parentRoute) {\n\t\troute = route.parentRoute;\n\t\tlist.push(route);\n\t}\n\tlist.reverse();\n\treturn list;\n}\nfunction buildBranch(node) {\n\tconst list = Array(node.depth + 1);\n\tdo {\n\t\tlist[node.depth] = node;\n\t\tnode = node.parent;\n\t} while (node);\n\treturn list;\n}\nfunction getNodeMatch(path, parts, segmentTree, fuzzy) {\n\tif (path === \"/\" && segmentTree.index) return {\n\t\tnode: segmentTree.index,\n\t\tskipped: 0\n\t};\n\tconst trailingSlash = !last(parts);\n\tconst pathIsIndex = trailingSlash && path !== \"/\";\n\tconst partsLength = parts.length - (trailingSlash ? 1 : 0);\n\tconst stack = [{\n\t\tnode: segmentTree,\n\t\tindex: 1,\n\t\tskipped: 0,\n\t\tdepth: 1,\n\t\tstatics: 0,\n\t\tdynamics: 0,\n\t\toptionals: 0\n\t}];\n\tlet bestFuzzy = null;\n\tlet bestMatch = null;\n\twhile (stack.length) {\n\t\tconst frame = stack.pop();\n\t\tconst { node, index, skipped, depth, statics, dynamics, optionals } = frame;\n\t\tlet { extract, rawParams } = frame;\n\t\tif (node.kind === 2 && node.route && !isFrameMoreSpecific(bestMatch, frame)) continue;\n\t\tif (node.parse) {\n\t\t\tif (!validateParseParams(path, parts, frame)) continue;\n\t\t\trawParams = frame.rawParams;\n\t\t\textract = frame.extract;\n\t\t}\n\t\tif (fuzzy && node.route && node.kind !== SEGMENT_TYPE_INDEX && isFrameMoreSpecific(bestFuzzy, frame)) bestFuzzy = frame;\n\t\tconst isBeyondPath = index === partsLength;\n\t\tif (isBeyondPath) {\n\t\t\tif (node.route && (!pathIsIndex || node.kind === SEGMENT_TYPE_INDEX || node.kind === 2) && isFrameMoreSpecific(bestMatch, frame)) bestMatch = frame;\n\t\t\tif (!node.optional && !node.wildcard && !node.index && !node.pathless) continue;\n\t\t}\n\t\tconst part = isBeyondPath ? void 0 : parts[index];\n\t\tlet lowerPart;\n\t\tif (isBeyondPath && node.index) {\n\t\t\tconst indexFrame = {\n\t\t\t\tnode: node.index,\n\t\t\t\tindex,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics,\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t};\n\t\t\tlet indexValid = true;\n\t\t\tif (node.index.parse) {\n\t\t\t\tif (!validateParseParams(path, parts, indexFrame)) indexValid = false;\n\t\t\t}\n\t\t\tif (indexValid) {\n\t\t\t\tif (!dynamics && !optionals && !skipped && isPerfectStaticMatch(statics, partsLength)) return indexFrame;\n\t\t\t\tif (isFrameMoreSpecific(bestMatch, indexFrame)) bestMatch = indexFrame;\n\t\t\t}\n\t\t}\n\t\tif (node.wildcard) for (let i = node.wildcard.length - 1; i >= 0; i--) {\n\t\t\tconst segment = node.wildcard[i];\n\t\t\tconst { prefix, suffix } = segment;\n\t\t\tif (prefix) {\n\t\t\t\tif (isBeyondPath) continue;\n\t\t\t\tif (!(segment.caseSensitive ? part : lowerPart ??= part.toLowerCase()).startsWith(prefix)) continue;\n\t\t\t}\n\t\t\tif (suffix) {\n\t\t\t\tif (isBeyondPath) continue;\n\t\t\t\tconst end = parts.slice(index).join(\"/\").slice(-suffix.length);\n\t\t\t\tif ((segment.caseSensitive ? end : end.toLowerCase()) !== suffix) continue;\n\t\t\t}\n\t\t\tstack.push({\n\t\t\t\tnode: segment,\n\t\t\t\tindex: partsLength,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics,\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (node.optional) {\n\t\t\tconst nextSkipped = skipped | 1 << depth;\n\t\t\tconst nextDepth = depth + 1;\n\t\t\tfor (let i = node.optional.length - 1; i >= 0; i--) {\n\t\t\t\tconst segment = node.optional[i];\n\t\t\t\tstack.push({\n\t\t\t\t\tnode: segment,\n\t\t\t\t\tindex,\n\t\t\t\t\tskipped: nextSkipped,\n\t\t\t\t\tdepth: nextDepth,\n\t\t\t\t\tstatics,\n\t\t\t\t\tdynamics,\n\t\t\t\t\toptionals,\n\t\t\t\t\textract,\n\t\t\t\t\trawParams\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!isBeyondPath) for (let i = node.optional.length - 1; i >= 0; i--) {\n\t\t\t\tconst segment = node.optional[i];\n\t\t\t\tconst { prefix, suffix } = segment;\n\t\t\t\tif (prefix || suffix) {\n\t\t\t\t\tconst casePart = segment.caseSensitive ? part : lowerPart ??= part.toLowerCase();\n\t\t\t\t\tif (prefix && !casePart.startsWith(prefix)) continue;\n\t\t\t\t\tif (suffix && !casePart.endsWith(suffix)) continue;\n\t\t\t\t}\n\t\t\t\tstack.push({\n\t\t\t\t\tnode: segment,\n\t\t\t\t\tindex: index + 1,\n\t\t\t\t\tskipped,\n\t\t\t\t\tdepth: nextDepth,\n\t\t\t\t\tstatics,\n\t\t\t\t\tdynamics,\n\t\t\t\t\toptionals: optionals + segmentScore(partsLength, index),\n\t\t\t\t\textract,\n\t\t\t\t\trawParams\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (!isBeyondPath && node.dynamic && part) for (let i = node.dynamic.length - 1; i >= 0; i--) {\n\t\t\tconst segment = node.dynamic[i];\n\t\t\tconst { prefix, suffix } = segment;\n\t\t\tif (prefix || suffix) {\n\t\t\t\tconst casePart = segment.caseSensitive ? part : lowerPart ??= part.toLowerCase();\n\t\t\t\tif (prefix && !casePart.startsWith(prefix)) continue;\n\t\t\t\tif (suffix && !casePart.endsWith(suffix)) continue;\n\t\t\t}\n\t\t\tstack.push({\n\t\t\t\tnode: segment,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics,\n\t\t\t\tdynamics: dynamics + segmentScore(partsLength, index),\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (!isBeyondPath && node.staticInsensitive) {\n\t\t\tconst match = node.staticInsensitive.get(lowerPart ??= part.toLowerCase());\n\t\t\tif (match) stack.push({\n\t\t\t\tnode: match,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics: statics + segmentScore(partsLength, index),\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (!isBeyondPath && node.static) {\n\t\t\tconst match = node.static.get(part);\n\t\t\tif (match) stack.push({\n\t\t\t\tnode: match,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics: statics + segmentScore(partsLength, index),\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (node.pathless) {\n\t\t\tconst nextDepth = depth + 1;\n\t\t\tfor (let i = node.pathless.length - 1; i >= 0; i--) {\n\t\t\t\tconst segment = node.pathless[i];\n\t\t\t\tstack.push({\n\t\t\t\t\tnode: segment,\n\t\t\t\t\tindex,\n\t\t\t\t\tskipped,\n\t\t\t\t\tdepth: nextDepth,\n\t\t\t\t\tstatics,\n\t\t\t\t\tdynamics,\n\t\t\t\t\toptionals,\n\t\t\t\t\textract,\n\t\t\t\t\trawParams\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tif (bestMatch) return bestMatch;\n\tif (fuzzy && bestFuzzy) {\n\t\tlet sliceIndex = bestFuzzy.index;\n\t\tfor (let i = 0; i < bestFuzzy.index; i++) sliceIndex += parts[i].length;\n\t\tconst splat = sliceIndex === path.length ? \"/\" : path.slice(sliceIndex);\n\t\tbestFuzzy.rawParams ??= Object.create(null);\n\t\tbestFuzzy.rawParams[\"**\"] = decodeURIComponent(splat);\n\t\treturn bestFuzzy;\n\t}\n\treturn null;\n}\nfunction segmentScore(partsLength, index) {\n\treturn 2 ** (partsLength - index - 1);\n}\nfunction isPerfectStaticMatch(statics, partsLength) {\n\treturn statics === 2 ** (partsLength - 1) - 1;\n}\nfunction validateParseParams(path, parts, frame) {\n\tlet rawParams;\n\tlet state;\n\ttry {\n\t\t[rawParams, state] = extractParams(path, parts, frame);\n\t} catch {\n\t\treturn null;\n\t}\n\tframe.rawParams = rawParams;\n\tframe.extract = state;\n\tif (!frame.node.parse) return true;\n\ttry {\n\t\tif (frame.node.parse(rawParams) === false) return null;\n\t} catch {}\n\treturn true;\n}\nfunction isFrameMoreSpecific(prev, next) {\n\tif (!prev) return true;\n\treturn next.statics > prev.statics || next.statics === prev.statics && (next.dynamics > prev.dynamics || next.dynamics === prev.dynamics && (next.optionals > prev.optionals || next.optionals === prev.optionals && ((next.node.kind === SEGMENT_TYPE_INDEX) > (prev.node.kind === SEGMENT_TYPE_INDEX) || next.node.kind === SEGMENT_TYPE_INDEX === (prev.node.kind === SEGMENT_TYPE_INDEX) && next.depth > prev.depth)));\n}\n//#endregion\nexport { buildRouteBranch, findFlatMatch, findRouteMatch, findSingleMatch, parseSegment, processRouteMasks, processRouteTree };\n\n//# sourceMappingURL=new-process-route-tree.js.map","import { last } from \"./utils.js\";\nimport { parseSegment } from \"./new-process-route-tree.js\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/path.ts\n/** Join path segments, cleaning duplicate slashes between parts. */\nfunction joinPaths(paths) {\n\treturn cleanPath(paths.filter((val) => {\n\t\treturn val !== void 0;\n\t}).join(\"/\"));\n}\n/** Remove repeated slashes from a path string. */\nfunction cleanPath(path) {\n\treturn path.replace(/\\/{2,}/g, \"/\");\n}\n/** Trim leading slashes (except preserving root '/'). */\nfunction trimPathLeft(path) {\n\treturn path === \"/\" ? path : path.replace(/^\\/{1,}/, \"\");\n}\n/** Trim trailing slashes (except preserving root '/'). */\nfunction trimPathRight(path) {\n\tconst len = path.length;\n\treturn len > 1 && path[len - 1] === \"/\" ? path.replace(/\\/{1,}$/, \"\") : path;\n}\n/** Trim both leading and trailing slashes. */\nfunction trimPath(path) {\n\treturn trimPathRight(trimPathLeft(path));\n}\n/** Remove a trailing slash from value when appropriate for comparisons. */\nfunction removeTrailingSlash(value, basepath) {\n\tif (value?.endsWith(\"/\") && value !== \"/\" && value !== `${basepath}/`) return value.slice(0, -1);\n\treturn value;\n}\n/**\n* Compare two pathnames for exact equality after normalizing trailing slashes\n* relative to the provided `basepath`.\n*/\nfunction exactPathTest(pathName1, pathName2, basepath) {\n\treturn removeTrailingSlash(pathName1, basepath) === removeTrailingSlash(pathName2, basepath);\n}\n/**\n* Resolve a destination path against a base, honoring trailing-slash policy\n* and supporting relative segments (`.`/`..`) and absolute `to` values.\n*/\nfunction resolvePath({ base, to, trailingSlash = \"never\", cache }) {\n\tconst isAbsolute = to.startsWith(\"/\");\n\tconst isBase = !isAbsolute && to === \".\";\n\tlet key;\n\tif (cache) {\n\t\tkey = isAbsolute ? to : isBase ? base : base + \"\\0\" + to;\n\t\tconst cached = cache.get(key);\n\t\tif (cached) return cached;\n\t}\n\tlet baseSegments;\n\tif (isBase) baseSegments = base.split(\"/\");\n\telse if (isAbsolute) baseSegments = to.split(\"/\");\n\telse {\n\t\tbaseSegments = base.split(\"/\");\n\t\twhile (baseSegments.length > 1 && last(baseSegments) === \"\") baseSegments.pop();\n\t\tconst toSegments = to.split(\"/\");\n\t\tfor (let index = 0, length = toSegments.length; index < length; index++) {\n\t\t\tconst value = toSegments[index];\n\t\t\tif (value === \"\") {\n\t\t\t\tif (!index) baseSegments = [value];\n\t\t\t\telse if (index === length - 1) baseSegments.push(value);\n\t\t\t} else if (value === \"..\") baseSegments.pop();\n\t\t\telse if (value === \".\") {} else baseSegments.push(value);\n\t\t}\n\t}\n\tif (baseSegments.length > 1) {\n\t\tif (last(baseSegments) === \"\") {\n\t\t\tif (trailingSlash === \"never\") baseSegments.pop();\n\t\t} else if (trailingSlash === \"always\") baseSegments.push(\"\");\n\t}\n\tconst result = cleanPath(baseSegments.join(\"/\")) || \"/\";\n\tif (key && cache) cache.set(key, result);\n\treturn result;\n}\n/**\n* Create a pre-compiled decode config from allowed characters.\n* This should be called once at router initialization.\n*/\nfunction compileDecodeCharMap(pathParamsAllowedCharacters) {\n\tconst charMap = new Map(pathParamsAllowedCharacters.map((char) => [encodeURIComponent(char), char]));\n\tconst pattern = Array.from(charMap.keys()).map((key) => key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\"|\");\n\tconst regex = new RegExp(pattern, \"g\");\n\treturn (encoded) => encoded.replace(regex, (match) => charMap.get(match) ?? match);\n}\nfunction encodeParam(key, params, decoder) {\n\tconst value = params[key];\n\tif (typeof value !== \"string\") return value;\n\tif (key === \"_splat\") {\n\t\tif (/^[a-zA-Z0-9\\-._~!/]*$/.test(value)) return value;\n\t\treturn value.split(\"/\").map((segment) => encodePathParam(segment, decoder)).join(\"/\");\n\t} else return encodePathParam(value, decoder);\n}\n/**\n* Interpolate params and wildcards into a route path template.\n*\n* - Encodes params safely (configurable allowed characters)\n* - Supports `{-$optional}` segments, `{prefix{$id}suffix}` and `{$}` wildcards\n*/\nfunction interpolatePath({ path, params, decoder, ...rest }) {\n\tlet isMissingParams = false;\n\tconst usedParams = Object.create(null);\n\tif (!path || path === \"/\") return {\n\t\tinterpolatedPath: \"/\",\n\t\tusedParams,\n\t\tisMissingParams\n\t};\n\tif (!path.includes(\"$\")) return {\n\t\tinterpolatedPath: path,\n\t\tusedParams,\n\t\tisMissingParams\n\t};\n\tif (isServer ?? rest.server) {\n\t\tif (path.indexOf(\"{\") === -1) {\n\t\t\tconst length = path.length;\n\t\t\tlet cursor = 0;\n\t\t\tlet joined = \"\";\n\t\t\twhile (cursor < length) {\n\t\t\t\twhile (cursor < length && path.charCodeAt(cursor) === 47) cursor++;\n\t\t\t\tif (cursor >= length) break;\n\t\t\t\tconst start = cursor;\n\t\t\t\tlet end = path.indexOf(\"/\", cursor);\n\t\t\t\tif (end === -1) end = length;\n\t\t\t\tcursor = end;\n\t\t\t\tconst part = path.substring(start, end);\n\t\t\t\tif (!part) continue;\n\t\t\t\tif (part.charCodeAt(0) === 36) if (part.length === 1) {\n\t\t\t\t\tconst splat = params._splat;\n\t\t\t\t\tusedParams._splat = splat;\n\t\t\t\t\tusedParams[\"*\"] = splat;\n\t\t\t\t\tif (!splat) {\n\t\t\t\t\t\tisMissingParams = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst value = encodeParam(\"_splat\", params, decoder);\n\t\t\t\t\tjoined += \"/\" + value;\n\t\t\t\t} else {\n\t\t\t\t\tconst key = part.substring(1);\n\t\t\t\t\tif (!isMissingParams && !(key in params)) isMissingParams = true;\n\t\t\t\t\tusedParams[key] = params[key];\n\t\t\t\t\tconst value = encodeParam(key, params, decoder) ?? \"undefined\";\n\t\t\t\t\tjoined += \"/\" + value;\n\t\t\t\t}\n\t\t\t\telse joined += \"/\" + part;\n\t\t\t}\n\t\t\tif (path.endsWith(\"/\")) joined += \"/\";\n\t\t\treturn {\n\t\t\t\tusedParams,\n\t\t\t\tinterpolatedPath: joined || \"/\",\n\t\t\t\tisMissingParams\n\t\t\t};\n\t\t}\n\t}\n\tconst length = path.length;\n\tlet cursor = 0;\n\tlet segment;\n\tlet joined = \"\";\n\twhile (cursor < length) {\n\t\tconst start = cursor;\n\t\tsegment = parseSegment(path, start, segment);\n\t\tconst end = segment[5];\n\t\tcursor = end + 1;\n\t\tif (start === end) continue;\n\t\tconst kind = segment[0];\n\t\tif (kind === 0) {\n\t\t\tjoined += \"/\" + path.substring(start, end);\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 2) {\n\t\t\tconst splat = params._splat;\n\t\t\tusedParams._splat = splat;\n\t\t\tusedParams[\"*\"] = splat;\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tif (!splat) {\n\t\t\t\tisMissingParams = true;\n\t\t\t\tif (prefix || suffix) joined += \"/\" + prefix + suffix;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst value = encodeParam(\"_splat\", params, decoder);\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 1) {\n\t\t\tconst key = path.substring(segment[2], segment[3]);\n\t\t\tif (!isMissingParams && !(key in params)) isMissingParams = true;\n\t\t\tusedParams[key] = params[key];\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tconst value = encodeParam(key, params, decoder) ?? \"undefined\";\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 3) {\n\t\t\tconst key = path.substring(segment[2], segment[3]);\n\t\t\tconst valueRaw = params[key];\n\t\t\tif (valueRaw == null) continue;\n\t\t\tusedParams[key] = valueRaw;\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tconst value = encodeParam(key, params, decoder) ?? \"\";\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t}\n\tif (path.endsWith(\"/\")) joined += \"/\";\n\treturn {\n\t\tusedParams,\n\t\tinterpolatedPath: joined || \"/\",\n\t\tisMissingParams\n\t};\n}\nfunction encodePathParam(value, decoder) {\n\tconst encoded = encodeURIComponent(value);\n\treturn decoder?.(encoded) ?? encoded;\n}\n//#endregion\nexport { cleanPath, compileDecodeCharMap, exactPathTest, interpolatePath, joinPaths, removeTrailingSlash, resolvePath, trimPath, trimPathLeft, trimPathRight };\n\n//# sourceMappingURL=path.js.map","//#region src/not-found.ts\n/**\n* Create a not-found error object recognized by TanStack Router.\n*\n* Throw this from loaders/actions to trigger the nearest `notFoundComponent`.\n* Use `routeId` to target a specific route's not-found boundary. If `throw`\n* is true, the error is thrown instead of returned.\n*\n* @param options Optional settings including `routeId`, `headers`, and `throw`.\n* @returns A not-found error object that can be thrown or returned.\n* @link https://tanstack.com/router/latest/docs/router/framework/react/api/router/notFoundFunction\n*/\nfunction notFound(options = {}) {\n\toptions.isNotFound = true;\n\tif (options.throw) throw options;\n\treturn options;\n}\n/** Determine if a value is a TanStack Router not-found error. */\nfunction isNotFound(obj) {\n\treturn obj?.isNotFound === true;\n}\n//#endregion\nexport { isNotFound, notFound };\n\n//# sourceMappingURL=not-found.js.map","//#region src/qss.ts\n/**\n* Program is a reimplementation of the `qss` package:\n* Copyright (c) Luke Edwards luke.edwards05@gmail.com, MIT License\n* https://github.com/lukeed/qss/blob/master/license.md\n*\n* This reimplementation uses modern browser APIs\n* (namely URLSearchParams) and TypeScript while still\n* maintaining the original functionality and interface.\n*\n* Update: this implementation has also been mangled to\n* fit exactly our use-case (single value per key in encoding).\n*/\n/**\n* Encodes an object into a query string.\n* @param obj - The object to encode into a query string.\n* @param stringify - An optional custom stringify function.\n* @returns The encoded query string.\n* @example\n* ```\n* // Example input: encode({ token: 'foo', key: 'value' })\n* // Expected output: \"token=foo&key=value\"\n* ```\n*/\nfunction encode(obj, stringify = String) {\n\tconst result = new URLSearchParams();\n\tfor (const key in obj) {\n\t\tconst val = obj[key];\n\t\tif (val !== void 0) result.set(key, stringify(val));\n\t}\n\treturn result.toString();\n}\n/**\n* Converts a string value to its appropriate type (string, number, boolean).\n* @param mix - The string value to convert.\n* @returns The converted value.\n* @example\n* // Example input: toValue(\"123\")\n* // Expected output: 123\n*/\nfunction toValue(str) {\n\tif (!str) return \"\";\n\tif (str === \"false\") return false;\n\tif (str === \"true\") return true;\n\treturn +str * 0 === 0 && +str + \"\" === str ? +str : str;\n}\n/**\n* Decodes a query string into an object.\n* @param str - The query string to decode.\n* @returns The decoded key-value pairs in an object format.\n* @example\n* // Example input: decode(\"token=foo&key=value\")\n* // Expected output: { \"token\": \"foo\", \"key\": \"value\" }\n*/\nfunction decode(str) {\n\tconst searchParams = new URLSearchParams(str);\n\tconst result = Object.create(null);\n\tfor (const [key, value] of searchParams.entries()) {\n\t\tconst previousValue = result[key];\n\t\tif (previousValue == null) result[key] = toValue(value);\n\t\telse if (Array.isArray(previousValue)) previousValue.push(toValue(value));\n\t\telse result[key] = [previousValue, toValue(value)];\n\t}\n\treturn result;\n}\n//#endregion\nexport { decode, encode };\n\n//# sourceMappingURL=qss.js.map","import { decode, encode } from \"./qss.js\";\n//#region src/searchParams.ts\n/** Default `parseSearch` that strips leading '?' and JSON-parses values. */\nconst defaultParseSearch = parseSearchWith(JSON.parse);\n/** Default `stringifySearch` using JSON.stringify for complex values. */\nconst defaultStringifySearch = stringifySearchWith(JSON.stringify, JSON.parse);\n/**\n* Build a `parseSearch` function using a provided JSON-like parser.\n*\n* The returned function strips a leading `?`, decodes values, and attempts to\n* JSON-parse string values using the given `parser`.\n*\n* @param parser Function to parse a string value (e.g. `JSON.parse`).\n* @returns A `parseSearch` function compatible with `Router` options.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-search-param-serialization\n*/\nfunction parseSearchWith(parser) {\n\treturn (searchStr) => {\n\t\tif (searchStr[0] === \"?\") searchStr = searchStr.substring(1);\n\t\tconst query = decode(searchStr);\n\t\tfor (const key in query) {\n\t\t\tconst value = query[key];\n\t\t\tif (typeof value === \"string\") try {\n\t\t\t\tquery[key] = parser(value);\n\t\t\t} catch (_err) {}\n\t\t}\n\t\treturn query;\n\t};\n}\n/**\n* Build a `stringifySearch` function using a provided serializer.\n*\n* Non-primitive values are serialized with `stringify`. If a `parser` is\n* supplied, string values that are parseable are re-serialized to ensure\n* symmetry with `parseSearch`.\n*\n* @param stringify Function to serialize a value (e.g. `JSON.stringify`).\n* @param parser Optional parser to detect parseable strings.\n* @returns A `stringifySearch` function compatible with `Router` options.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-search-param-serialization\n*/\nfunction stringifySearchWith(stringify, parser) {\n\tconst hasParser = typeof parser === \"function\";\n\tfunction stringifyValue(val) {\n\t\tif (typeof val === \"object\" && val !== null) try {\n\t\t\treturn stringify(val);\n\t\t} catch (_err) {}\n\t\telse if (hasParser && typeof val === \"string\") try {\n\t\t\tparser(val);\n\t\t\treturn stringify(val);\n\t\t} catch (_err) {}\n\t\treturn val;\n\t}\n\treturn (search) => {\n\t\tconst searchStr = encode(search, stringifyValue);\n\t\treturn searchStr ? `?${searchStr}` : \"\";\n\t};\n}\n//#endregion\nexport { defaultParseSearch, defaultStringifySearch, parseSearchWith, stringifySearchWith };\n\n//# sourceMappingURL=searchParams.js.map","//#region src/root.ts\n/** Stable identifier used for the root route in a route tree. */\nconst rootRouteId = \"__root__\";\n//#endregion\nexport { rootRouteId };\n\n//# sourceMappingURL=root.js.map","//#region src/redirect.ts\n/**\n* Create a redirect Response understood by TanStack Router.\n*\n* Use from route `loader`/`beforeLoad` or server functions to trigger a\n* navigation. If `throw: true` is set, the redirect is thrown instead of\n* returned. When an absolute `href` is supplied and `reloadDocument` is not\n* set, a full-document navigation is inferred.\n*\n* @param opts Options for the redirect. Common fields:\n* - `href`: absolute URL for external redirects; infers `reloadDocument`.\n* - `statusCode`: HTTP status code to use (defaults to 307).\n* - `headers`: additional headers to include on the Response.\n* - Standard navigation options like `to`, `params`, `search`, `replace`,\n* and `reloadDocument` for internal redirects.\n* @returns A Response augmented with router navigation options.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/redirectFunction\n*/\nfunction redirect(opts) {\n\topts.statusCode = opts.statusCode || opts.code || 307;\n\tif (!opts._builtLocation && !opts.reloadDocument && typeof opts.href === \"string\") try {\n\t\tnew URL(opts.href);\n\t\topts.reloadDocument = true;\n\t} catch {}\n\tconst headers = new Headers(opts.headers);\n\tif (opts.href && headers.get(\"Location\") === null) headers.set(\"Location\", opts.href);\n\tconst response = new Response(null, {\n\t\tstatus: opts.statusCode,\n\t\theaders\n\t});\n\tresponse.options = opts;\n\tif (opts.throw) throw response;\n\treturn response;\n}\n/** Check whether a value is a TanStack Router redirect Response. */\n/** Check whether a value is a TanStack Router redirect Response. */\nfunction isRedirect(obj) {\n\treturn obj instanceof Response && !!obj.options;\n}\n/** True if value is a redirect with a resolved `href` location. */\n/** True if value is a redirect with a resolved `href` location. */\nfunction isResolvedRedirect(obj) {\n\treturn isRedirect(obj) && !!obj.options.href;\n}\n/** Parse a serialized redirect object back into a redirect Response. */\n/** Parse a serialized redirect object back into a redirect Response. */\nfunction parseRedirect(obj) {\n\tif (obj !== null && typeof obj === \"object\" && obj.isSerializedRedirect) return redirect(obj);\n}\n//#endregion\nexport { isRedirect, isResolvedRedirect, parseRedirect, redirect };\n\n//# sourceMappingURL=redirect.js.map","import { createControlledPromise, isPromise } from \"./utils.js\";\nimport { invariant } from \"./invariant.js\";\nimport { isNotFound } from \"./not-found.js\";\nimport { rootRouteId } from \"./root.js\";\nimport { isRedirect } from \"./redirect.js\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/load-matches.ts\nconst triggerOnReady = (inner) => {\n\tif (!inner.rendered) {\n\t\tinner.rendered = true;\n\t\treturn inner.onReady?.();\n\t}\n};\nconst hasForcePendingActiveMatch = (router) => {\n\treturn router.stores.matchesId.get().some((matchId) => {\n\t\treturn router.stores.matchStores.get(matchId)?.get()._forcePending;\n\t});\n};\nconst resolvePreload = (inner, matchId) => {\n\treturn !!(inner.preload && !inner.router.stores.matchStores.has(matchId));\n};\n/**\n* Builds the accumulated context from router options and all matches up to (and optionally including) the given index.\n* Merges __routeContext and __beforeLoadContext from each match.\n*/\nconst buildMatchContext = (inner, index, includeCurrentMatch = true) => {\n\tconst context = { ...inner.router.options.context ?? {} };\n\tconst end = includeCurrentMatch ? index : index - 1;\n\tfor (let i = 0; i <= end; i++) {\n\t\tconst innerMatch = inner.matches[i];\n\t\tif (!innerMatch) continue;\n\t\tconst m = inner.router.getMatch(innerMatch.id);\n\t\tif (!m) continue;\n\t\tObject.assign(context, m.__routeContext, m.__beforeLoadContext);\n\t}\n\treturn context;\n};\nconst getNotFoundBoundaryIndex = (inner, err) => {\n\tif (!inner.matches.length) return;\n\tconst requestedRouteId = err.routeId;\n\tconst matchedRootIndex = inner.matches.findIndex((m) => m.routeId === inner.router.routeTree.id);\n\tconst rootIndex = matchedRootIndex >= 0 ? matchedRootIndex : 0;\n\tlet startIndex = requestedRouteId ? inner.matches.findIndex((match) => match.routeId === requestedRouteId) : inner.firstBadMatchIndex ?? inner.matches.length - 1;\n\tif (startIndex < 0) startIndex = rootIndex;\n\tfor (let i = startIndex; i >= 0; i--) {\n\t\tconst match = inner.matches[i];\n\t\tif (inner.router.looseRoutesById[match.routeId].options.notFoundComponent) return i;\n\t}\n\treturn requestedRouteId ? startIndex : rootIndex;\n};\nconst handleRedirectAndNotFound = (inner, match, err) => {\n\tif (!isRedirect(err) && !isNotFound(err)) return;\n\tif (isRedirect(err) && err.redirectHandled && !err.options.reloadDocument) throw err;\n\tif (match) {\n\t\tmatch._nonReactive.beforeLoadPromise?.resolve();\n\t\tmatch._nonReactive.loaderPromise?.resolve();\n\t\tmatch._nonReactive.beforeLoadPromise = void 0;\n\t\tmatch._nonReactive.loaderPromise = void 0;\n\t\tmatch._nonReactive.error = err;\n\t\tinner.updateMatch(match.id, (prev) => ({\n\t\t\t...prev,\n\t\t\tstatus: isRedirect(err) ? \"redirected\" : isNotFound(err) ? \"notFound\" : prev.status === \"pending\" ? \"success\" : prev.status,\n\t\t\tcontext: buildMatchContext(inner, match.index),\n\t\t\tisFetching: false,\n\t\t\terror: err\n\t\t}));\n\t\tif (isNotFound(err) && !err.routeId) err.routeId = match.routeId;\n\t\tmatch._nonReactive.loadPromise?.resolve();\n\t}\n\tif (isRedirect(err)) {\n\t\tinner.rendered = true;\n\t\terr.options._fromLocation = inner.location;\n\t\terr.redirectHandled = true;\n\t\terr = inner.router.resolveRedirect(err);\n\t}\n\tthrow err;\n};\nconst shouldSkipLoader = (inner, matchId) => {\n\tconst match = inner.router.getMatch(matchId);\n\tif (!match) return true;\n\tif (!(isServer ?? inner.router.isServer) && match._nonReactive.dehydrated) return true;\n\tif ((isServer ?? inner.router.isServer) && match.ssr === false) return true;\n\treturn false;\n};\nconst syncMatchContext = (inner, matchId, index) => {\n\tconst nextContext = buildMatchContext(inner, index);\n\tinner.updateMatch(matchId, (prev) => {\n\t\treturn {\n\t\t\t...prev,\n\t\t\tcontext: nextContext\n\t\t};\n\t});\n};\nconst handleSerialError = (inner, index, err) => {\n\tconst { id: matchId, routeId } = inner.matches[index];\n\tconst route = inner.router.looseRoutesById[routeId];\n\tif (err instanceof Promise) throw err;\n\tinner.firstBadMatchIndex ??= index;\n\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), err);\n\ttry {\n\t\troute.options.onError?.(err);\n\t} catch (errorHandlerErr) {\n\t\terr = errorHandlerErr;\n\t\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), err);\n\t}\n\tinner.updateMatch(matchId, (prev) => {\n\t\tprev._nonReactive.beforeLoadPromise?.resolve();\n\t\tprev._nonReactive.beforeLoadPromise = void 0;\n\t\tprev._nonReactive.loadPromise?.resolve();\n\t\treturn {\n\t\t\t...prev,\n\t\t\terror: err,\n\t\t\tstatus: \"error\",\n\t\t\tisFetching: false,\n\t\t\tupdatedAt: Date.now(),\n\t\t\tabortController: new AbortController()\n\t\t};\n\t});\n\tif (!inner.preload && !isRedirect(err) && !isNotFound(err)) inner.serialError ??= err;\n};\nconst isBeforeLoadSsr = (inner, matchId, index, route) => {\n\tconst existingMatch = inner.router.getMatch(matchId);\n\tconst parentMatchId = inner.matches[index - 1]?.id;\n\tconst parentMatch = parentMatchId ? inner.router.getMatch(parentMatchId) : void 0;\n\tif (inner.router.isShell()) {\n\t\texistingMatch.ssr = route.id === rootRouteId;\n\t\treturn;\n\t}\n\tif (parentMatch?.ssr === false) {\n\t\texistingMatch.ssr = false;\n\t\treturn;\n\t}\n\tconst parentOverride = (tempSsr) => {\n\t\tif (tempSsr === true && parentMatch?.ssr === \"data-only\") return \"data-only\";\n\t\treturn tempSsr;\n\t};\n\tconst defaultSsr = inner.router.options.defaultSsr ?? true;\n\tif (route.options.ssr === void 0) {\n\t\texistingMatch.ssr = parentOverride(defaultSsr);\n\t\treturn;\n\t}\n\tif (typeof route.options.ssr !== \"function\") {\n\t\texistingMatch.ssr = parentOverride(route.options.ssr);\n\t\treturn;\n\t}\n\tconst { search, params } = existingMatch;\n\tconst ssrFnContext = {\n\t\tsearch: makeMaybe(search, existingMatch.searchError),\n\t\tparams: makeMaybe(params, existingMatch.paramsError),\n\t\tlocation: inner.location,\n\t\tmatches: inner.matches.map((match) => ({\n\t\t\tindex: match.index,\n\t\t\tpathname: match.pathname,\n\t\t\tfullPath: match.fullPath,\n\t\t\tstaticData: match.staticData,\n\t\t\tid: match.id,\n\t\t\trouteId: match.routeId,\n\t\t\tsearch: makeMaybe(match.search, match.searchError),\n\t\t\tparams: makeMaybe(match.params, match.paramsError),\n\t\t\tssr: match.ssr\n\t\t}))\n\t};\n\tconst tempSsr = route.options.ssr(ssrFnContext);\n\tif (isPromise(tempSsr)) return tempSsr.then((ssr) => {\n\t\texistingMatch.ssr = parentOverride(ssr ?? defaultSsr);\n\t});\n\texistingMatch.ssr = parentOverride(tempSsr ?? defaultSsr);\n};\nconst setupPendingTimeout = (inner, matchId, route, match) => {\n\tif (match._nonReactive.pendingTimeout !== void 0) return;\n\tconst pendingMs = route.options.pendingMs ?? inner.router.options.defaultPendingMs;\n\tif (!!(inner.onReady && !(isServer ?? inner.router.isServer) && !resolvePreload(inner, matchId) && (route.options.loader || route.options.beforeLoad || routeNeedsPreload(route)) && typeof pendingMs === \"number\" && pendingMs !== Infinity && (route.options.pendingComponent ?? inner.router.options?.defaultPendingComponent))) {\n\t\tconst pendingTimeout = setTimeout(() => {\n\t\t\ttriggerOnReady(inner);\n\t\t}, pendingMs);\n\t\tmatch._nonReactive.pendingTimeout = pendingTimeout;\n\t}\n};\nconst preBeforeLoadSetup = (inner, matchId, route) => {\n\tconst existingMatch = inner.router.getMatch(matchId);\n\tif (!existingMatch._nonReactive.beforeLoadPromise && !existingMatch._nonReactive.loaderPromise) return;\n\tsetupPendingTimeout(inner, matchId, route, existingMatch);\n\tconst then = () => {\n\t\tconst match = inner.router.getMatch(matchId);\n\t\tif (match.preload && (match.status === \"redirected\" || match.status === \"notFound\")) handleRedirectAndNotFound(inner, match, match.error);\n\t};\n\treturn existingMatch._nonReactive.beforeLoadPromise ? existingMatch._nonReactive.beforeLoadPromise.then(then) : then();\n};\nconst executeBeforeLoad = (inner, matchId, index, route) => {\n\tconst match = inner.router.getMatch(matchId);\n\tlet prevLoadPromise = match._nonReactive.loadPromise;\n\tmatch._nonReactive.loadPromise = createControlledPromise(() => {\n\t\tprevLoadPromise?.resolve();\n\t\tprevLoadPromise = void 0;\n\t});\n\tconst { paramsError, searchError } = match;\n\tif (paramsError) handleSerialError(inner, index, paramsError);\n\tif (searchError) handleSerialError(inner, index, searchError);\n\tsetupPendingTimeout(inner, matchId, route, match);\n\tconst abortController = new AbortController();\n\tlet isPending = false;\n\tconst pending = () => {\n\t\tif (isPending) return;\n\t\tisPending = true;\n\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t...prev,\n\t\t\tisFetching: \"beforeLoad\",\n\t\t\tfetchCount: prev.fetchCount + 1,\n\t\t\tabortController\n\t\t}));\n\t};\n\tconst resolve = () => {\n\t\tmatch._nonReactive.beforeLoadPromise?.resolve();\n\t\tmatch._nonReactive.beforeLoadPromise = void 0;\n\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t...prev,\n\t\t\tisFetching: false\n\t\t}));\n\t};\n\tif (!route.options.beforeLoad) {\n\t\tinner.router.batch(() => {\n\t\t\tpending();\n\t\t\tresolve();\n\t\t});\n\t\treturn;\n\t}\n\tmatch._nonReactive.beforeLoadPromise = createControlledPromise();\n\tconst context = {\n\t\t...buildMatchContext(inner, index, false),\n\t\t...match.__routeContext\n\t};\n\tconst { search, params, cause } = match;\n\tconst preload = resolvePreload(inner, matchId);\n\tconst beforeLoadFnContext = {\n\t\tsearch,\n\t\tabortController,\n\t\tparams,\n\t\tpreload,\n\t\tcontext,\n\t\tlocation: inner.location,\n\t\tnavigate: (opts) => inner.router.navigate({\n\t\t\t...opts,\n\t\t\t_fromLocation: inner.location\n\t\t}),\n\t\tbuildLocation: inner.router.buildLocation,\n\t\tcause: preload ? \"preload\" : cause,\n\t\tmatches: inner.matches,\n\t\trouteId: route.id,\n\t\t...inner.router.options.additionalContext\n\t};\n\tconst updateContext = (beforeLoadContext) => {\n\t\tif (beforeLoadContext === void 0) {\n\t\t\tinner.router.batch(() => {\n\t\t\t\tpending();\n\t\t\t\tresolve();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (isRedirect(beforeLoadContext) || isNotFound(beforeLoadContext)) {\n\t\t\tpending();\n\t\t\thandleSerialError(inner, index, beforeLoadContext);\n\t\t}\n\t\tinner.router.batch(() => {\n\t\t\tpending();\n\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\t__beforeLoadContext: beforeLoadContext\n\t\t\t}));\n\t\t\tresolve();\n\t\t});\n\t};\n\tlet beforeLoadContext;\n\ttry {\n\t\tbeforeLoadContext = route.options.beforeLoad(beforeLoadFnContext);\n\t\tif (isPromise(beforeLoadContext)) {\n\t\t\tpending();\n\t\t\treturn beforeLoadContext.catch((err) => {\n\t\t\t\thandleSerialError(inner, index, err);\n\t\t\t}).then(updateContext);\n\t\t}\n\t} catch (err) {\n\t\tpending();\n\t\thandleSerialError(inner, index, err);\n\t}\n\tupdateContext(beforeLoadContext);\n};\nconst handleBeforeLoad = (inner, index) => {\n\tconst { id: matchId, routeId } = inner.matches[index];\n\tconst route = inner.router.looseRoutesById[routeId];\n\tconst serverSsr = () => {\n\t\tif (isServer ?? inner.router.isServer) {\n\t\t\tconst maybePromise = isBeforeLoadSsr(inner, matchId, index, route);\n\t\t\tif (isPromise(maybePromise)) return maybePromise.then(queueExecution);\n\t\t}\n\t\treturn queueExecution();\n\t};\n\tconst execute = () => executeBeforeLoad(inner, matchId, index, route);\n\tconst queueExecution = () => {\n\t\tif (shouldSkipLoader(inner, matchId)) return;\n\t\tconst result = preBeforeLoadSetup(inner, matchId, route);\n\t\treturn isPromise(result) ? result.then(execute) : execute();\n\t};\n\treturn serverSsr();\n};\nconst executeHead = (inner, matchId, route) => {\n\tconst match = inner.router.getMatch(matchId);\n\tif (!match) return;\n\tif (!route.options.head && !route.options.scripts && !route.options.headers) return;\n\tconst assetContext = {\n\t\tssr: inner.router.options.ssr,\n\t\tmatches: inner.matches,\n\t\tmatch,\n\t\tparams: match.params,\n\t\tloaderData: match.loaderData\n\t};\n\treturn Promise.all([\n\t\troute.options.head?.(assetContext),\n\t\troute.options.scripts?.(assetContext),\n\t\troute.options.headers?.(assetContext)\n\t]).then(([headFnContent, scripts, headers]) => {\n\t\treturn {\n\t\t\tmeta: headFnContent?.meta,\n\t\t\tlinks: headFnContent?.links,\n\t\t\theadScripts: headFnContent?.scripts,\n\t\t\theaders,\n\t\t\tscripts,\n\t\t\tstyles: headFnContent?.styles\n\t\t};\n\t});\n};\nconst getLoaderContext = (inner, matchPromises, matchId, index, route) => {\n\tconst parentMatchPromise = matchPromises[index - 1];\n\tconst { params, loaderDeps, abortController, cause } = inner.router.getMatch(matchId);\n\tconst context = buildMatchContext(inner, index);\n\tconst preload = resolvePreload(inner, matchId);\n\treturn {\n\t\tparams,\n\t\tdeps: loaderDeps,\n\t\tpreload: !!preload,\n\t\tparentMatchPromise,\n\t\tabortController,\n\t\tcontext,\n\t\tlocation: inner.location,\n\t\tnavigate: (opts) => inner.router.navigate({\n\t\t\t...opts,\n\t\t\t_fromLocation: inner.location\n\t\t}),\n\t\tcause: preload ? \"preload\" : cause,\n\t\troute,\n\t\t...inner.router.options.additionalContext\n\t};\n};\nconst runLoader = async (inner, matchPromises, matchId, index, route) => {\n\ttry {\n\t\tconst match = inner.router.getMatch(matchId);\n\t\ttry {\n\t\t\tif (!(isServer ?? inner.router.isServer) || match.ssr === true) loadRouteChunk(route);\n\t\t\tconst routeLoader = route.options.loader;\n\t\t\tconst loader = typeof routeLoader === \"function\" ? routeLoader : routeLoader?.handler;\n\t\t\tconst loaderResult = loader?.(getLoaderContext(inner, matchPromises, matchId, index, route));\n\t\t\tconst loaderResultIsPromise = !!loader && isPromise(loaderResult);\n\t\t\tif (!!(loaderResultIsPromise || route._lazyPromise || route._componentsPromise || route.options.head || route.options.scripts || route.options.headers || match._nonReactive.minPendingPromise)) inner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tisFetching: \"loader\"\n\t\t\t}));\n\t\t\tif (loader) {\n\t\t\t\tconst loaderData = loaderResultIsPromise ? await loaderResult : loaderResult;\n\t\t\t\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), loaderData);\n\t\t\t\tif (loaderData !== void 0) inner.updateMatch(matchId, (prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tloaderData\n\t\t\t\t}));\n\t\t\t}\n\t\t\tif (route._lazyPromise) await route._lazyPromise;\n\t\t\tconst pendingPromise = match._nonReactive.minPendingPromise;\n\t\t\tif (pendingPromise) await pendingPromise;\n\t\t\tif (route._componentsPromise) await route._componentsPromise;\n\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\terror: void 0,\n\t\t\t\tcontext: buildMatchContext(inner, index),\n\t\t\t\tstatus: \"success\",\n\t\t\t\tisFetching: false,\n\t\t\t\tupdatedAt: Date.now()\n\t\t\t}));\n\t\t} catch (e) {\n\t\t\tlet error = e;\n\t\t\tif (error?.name === \"AbortError\") {\n\t\t\t\tif (match.abortController.signal.aborted) {\n\t\t\t\t\tmatch._nonReactive.loaderPromise?.resolve();\n\t\t\t\t\tmatch._nonReactive.loaderPromise = void 0;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tstatus: prev.status === \"pending\" ? \"success\" : prev.status,\n\t\t\t\t\tisFetching: false,\n\t\t\t\t\tcontext: buildMatchContext(inner, index)\n\t\t\t\t}));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst pendingPromise = match._nonReactive.minPendingPromise;\n\t\t\tif (pendingPromise) await pendingPromise;\n\t\t\tif (isNotFound(e)) await route.options.notFoundComponent?.preload?.();\n\t\t\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), e);\n\t\t\ttry {\n\t\t\t\troute.options.onError?.(e);\n\t\t\t} catch (onErrorError) {\n\t\t\t\terror = onErrorError;\n\t\t\t\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), onErrorError);\n\t\t\t}\n\t\t\tif (!isRedirect(error) && !isNotFound(error)) await loadRouteChunk(route, [\"errorComponent\"]);\n\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\terror,\n\t\t\t\tcontext: buildMatchContext(inner, index),\n\t\t\t\tstatus: \"error\",\n\t\t\t\tisFetching: false\n\t\t\t}));\n\t\t}\n\t} catch (err) {\n\t\tconst match = inner.router.getMatch(matchId);\n\t\tif (match) match._nonReactive.loaderPromise = void 0;\n\t\thandleRedirectAndNotFound(inner, match, err);\n\t}\n};\nconst loadRouteMatch = async (inner, matchPromises, index) => {\n\tasync function handleLoader(preload, prevMatch, previousRouteMatchId, match, route) {\n\t\tconst age = Date.now() - prevMatch.updatedAt;\n\t\tconst staleAge = preload ? route.options.preloadStaleTime ?? inner.router.options.defaultPreloadStaleTime ?? 3e4 : route.options.staleTime ?? inner.router.options.defaultStaleTime ?? 0;\n\t\tconst shouldReloadOption = route.options.shouldReload;\n\t\tconst shouldReload = typeof shouldReloadOption === \"function\" ? shouldReloadOption(getLoaderContext(inner, matchPromises, matchId, index, route)) : shouldReloadOption;\n\t\tconst { status, invalid } = match;\n\t\tconst staleMatchShouldReload = age >= staleAge && (!!inner.forceStaleReload || match.cause === \"enter\" || previousRouteMatchId !== void 0 && previousRouteMatchId !== match.id);\n\t\tloaderShouldRunAsync = status === \"success\" && (invalid || (shouldReload ?? staleMatchShouldReload));\n\t\tif (preload && route.options.preload === false) {} else if (loaderShouldRunAsync && !inner.sync && shouldReloadInBackground) {\n\t\t\tloaderIsRunningAsync = true;\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tawait runLoader(inner, matchPromises, matchId, index, route);\n\t\t\t\t\tconst match = inner.router.getMatch(matchId);\n\t\t\t\t\tmatch._nonReactive.loaderPromise?.resolve();\n\t\t\t\t\tmatch._nonReactive.loadPromise?.resolve();\n\t\t\t\t\tmatch._nonReactive.loaderPromise = void 0;\n\t\t\t\t\tmatch._nonReactive.loadPromise = void 0;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (isRedirect(err)) await inner.router.navigate(err.options);\n\t\t\t\t}\n\t\t\t})();\n\t\t} else if (status !== \"success\" || loaderShouldRunAsync) await runLoader(inner, matchPromises, matchId, index, route);\n\t\telse syncMatchContext(inner, matchId, index);\n\t}\n\tconst { id: matchId, routeId } = inner.matches[index];\n\tlet loaderShouldRunAsync = false;\n\tlet loaderIsRunningAsync = false;\n\tconst route = inner.router.looseRoutesById[routeId];\n\tconst routeLoader = route.options.loader;\n\tconst shouldReloadInBackground = ((typeof routeLoader === \"function\" ? void 0 : routeLoader?.staleReloadMode) ?? inner.router.options.defaultStaleReloadMode) !== \"blocking\";\n\tif (shouldSkipLoader(inner, matchId)) {\n\t\tif (!inner.router.getMatch(matchId)) return inner.matches[index];\n\t\tsyncMatchContext(inner, matchId, index);\n\t\tif (isServer ?? inner.router.isServer) return inner.router.getMatch(matchId);\n\t} else {\n\t\tconst prevMatch = inner.router.getMatch(matchId);\n\t\tconst activeIdAtIndex = inner.router.stores.matchesId.get()[index];\n\t\tconst previousRouteMatchId = (activeIdAtIndex && inner.router.stores.matchStores.get(activeIdAtIndex) || null)?.routeId === routeId ? activeIdAtIndex : inner.router.stores.matches.get().find((d) => d.routeId === routeId)?.id;\n\t\tconst preload = resolvePreload(inner, matchId);\n\t\tif (prevMatch._nonReactive.loaderPromise) {\n\t\t\tif (prevMatch.status === \"success\" && !inner.sync && !prevMatch.preload && shouldReloadInBackground) return prevMatch;\n\t\t\tawait prevMatch._nonReactive.loaderPromise;\n\t\t\tconst match = inner.router.getMatch(matchId);\n\t\t\tconst error = match._nonReactive.error || match.error;\n\t\t\tif (error) handleRedirectAndNotFound(inner, match, error);\n\t\t\tif (match.status === \"pending\") await handleLoader(preload, prevMatch, previousRouteMatchId, match, route);\n\t\t} else {\n\t\t\tconst nextPreload = preload && !inner.router.stores.matchStores.has(matchId);\n\t\t\tconst match = inner.router.getMatch(matchId);\n\t\t\tmatch._nonReactive.loaderPromise = createControlledPromise();\n\t\t\tif (nextPreload !== match.preload) inner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tpreload: nextPreload\n\t\t\t}));\n\t\t\tawait handleLoader(preload, prevMatch, previousRouteMatchId, match, route);\n\t\t}\n\t}\n\tconst match = inner.router.getMatch(matchId);\n\tif (!loaderIsRunningAsync) {\n\t\tmatch._nonReactive.loaderPromise?.resolve();\n\t\tmatch._nonReactive.loadPromise?.resolve();\n\t\tmatch._nonReactive.loadPromise = void 0;\n\t}\n\tclearTimeout(match._nonReactive.pendingTimeout);\n\tmatch._nonReactive.pendingTimeout = void 0;\n\tif (!loaderIsRunningAsync) match._nonReactive.loaderPromise = void 0;\n\tmatch._nonReactive.dehydrated = void 0;\n\tconst nextIsFetching = loaderIsRunningAsync ? match.isFetching : false;\n\tif (nextIsFetching !== match.isFetching || match.invalid !== false) {\n\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t...prev,\n\t\t\tisFetching: nextIsFetching,\n\t\t\tinvalid: false\n\t\t}));\n\t\treturn inner.router.getMatch(matchId);\n\t} else return match;\n};\nasync function loadMatches(arg) {\n\tconst inner = arg;\n\tconst matchPromises = [];\n\tif (!(isServer ?? inner.router.isServer) && hasForcePendingActiveMatch(inner.router)) triggerOnReady(inner);\n\tlet beforeLoadNotFound;\n\tfor (let i = 0; i < inner.matches.length; i++) {\n\t\ttry {\n\t\t\tconst beforeLoad = handleBeforeLoad(inner, i);\n\t\t\tif (isPromise(beforeLoad)) await beforeLoad;\n\t\t} catch (err) {\n\t\t\tif (isRedirect(err)) throw err;\n\t\t\tif (isNotFound(err)) beforeLoadNotFound = err;\n\t\t\telse if (!inner.preload) throw err;\n\t\t\tbreak;\n\t\t}\n\t\tif (inner.serialError || inner.firstBadMatchIndex != null) break;\n\t}\n\tconst baseMaxIndexExclusive = inner.firstBadMatchIndex ?? inner.matches.length;\n\tconst boundaryIndex = beforeLoadNotFound && !inner.preload ? getNotFoundBoundaryIndex(inner, beforeLoadNotFound) : void 0;\n\tconst maxIndexExclusive = beforeLoadNotFound && inner.preload ? 0 : boundaryIndex !== void 0 ? Math.min(boundaryIndex + 1, baseMaxIndexExclusive) : baseMaxIndexExclusive;\n\tlet firstNotFound;\n\tlet firstUnhandledRejection;\n\tfor (let i = 0; i < maxIndexExclusive; i++) matchPromises.push(loadRouteMatch(inner, matchPromises, i));\n\ttry {\n\t\tawait Promise.all(matchPromises);\n\t} catch {\n\t\tconst settled = await Promise.allSettled(matchPromises);\n\t\tfor (const result of settled) {\n\t\t\tif (result.status !== \"rejected\") continue;\n\t\t\tconst reason = result.reason;\n\t\t\tif (isRedirect(reason)) throw reason;\n\t\t\tif (isNotFound(reason)) firstNotFound ??= reason;\n\t\t\telse firstUnhandledRejection ??= reason;\n\t\t}\n\t\tif (firstUnhandledRejection !== void 0) throw firstUnhandledRejection;\n\t}\n\tconst notFoundToThrow = firstNotFound ?? (beforeLoadNotFound && !inner.preload ? beforeLoadNotFound : void 0);\n\tlet headMaxIndex = inner.firstBadMatchIndex !== void 0 ? inner.firstBadMatchIndex : inner.matches.length - 1;\n\tif (!notFoundToThrow && beforeLoadNotFound && inner.preload) return inner.matches;\n\tif (notFoundToThrow) {\n\t\tconst renderedBoundaryIndex = getNotFoundBoundaryIndex(inner, notFoundToThrow);\n\t\tif (renderedBoundaryIndex === void 0) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Could not find match for notFound boundary\");\n\t\t\tinvariant();\n\t\t}\n\t\tconst boundaryMatch = inner.matches[renderedBoundaryIndex];\n\t\tconst boundaryRoute = inner.router.looseRoutesById[boundaryMatch.routeId];\n\t\tconst defaultNotFoundComponent = inner.router.options?.defaultNotFoundComponent;\n\t\tif (!boundaryRoute.options.notFoundComponent && defaultNotFoundComponent) boundaryRoute.options.notFoundComponent = defaultNotFoundComponent;\n\t\tnotFoundToThrow.routeId = boundaryMatch.routeId;\n\t\tconst boundaryIsRoot = boundaryMatch.routeId === inner.router.routeTree.id;\n\t\tinner.updateMatch(boundaryMatch.id, (prev) => ({\n\t\t\t...prev,\n\t\t\t...boundaryIsRoot ? {\n\t\t\t\tstatus: \"success\",\n\t\t\t\tglobalNotFound: true,\n\t\t\t\terror: void 0\n\t\t\t} : {\n\t\t\t\tstatus: \"notFound\",\n\t\t\t\terror: notFoundToThrow\n\t\t\t},\n\t\t\tisFetching: false\n\t\t}));\n\t\theadMaxIndex = renderedBoundaryIndex;\n\t\tawait loadRouteChunk(boundaryRoute, [\"notFoundComponent\"]);\n\t} else if (!inner.preload) {\n\t\tconst rootMatch = inner.matches[0];\n\t\tif (!rootMatch.globalNotFound) {\n\t\t\tif (inner.router.getMatch(rootMatch.id)?.globalNotFound) inner.updateMatch(rootMatch.id, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tglobalNotFound: false,\n\t\t\t\terror: void 0\n\t\t\t}));\n\t\t}\n\t}\n\tif (inner.serialError && inner.firstBadMatchIndex !== void 0) {\n\t\tconst errorRoute = inner.router.looseRoutesById[inner.matches[inner.firstBadMatchIndex].routeId];\n\t\tawait loadRouteChunk(errorRoute, [\"errorComponent\"]);\n\t}\n\tfor (let i = 0; i <= headMaxIndex; i++) {\n\t\tconst { id: matchId, routeId } = inner.matches[i];\n\t\tconst route = inner.router.looseRoutesById[routeId];\n\t\ttry {\n\t\t\tconst headResult = executeHead(inner, matchId, route);\n\t\t\tif (headResult) {\n\t\t\t\tconst head = await headResult;\n\t\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...head\n\t\t\t\t}));\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(`Error executing head for route ${routeId}:`, err);\n\t\t}\n\t}\n\tconst readyPromise = triggerOnReady(inner);\n\tif (isPromise(readyPromise)) await readyPromise;\n\tif (notFoundToThrow) throw notFoundToThrow;\n\tif (inner.serialError && !inner.preload && !inner.onReady) throw inner.serialError;\n\treturn inner.matches;\n}\nfunction preloadRouteComponents(route, componentTypesToLoad) {\n\tconst preloads = componentTypesToLoad.map((type) => route.options[type]?.preload?.()).filter(Boolean);\n\tif (preloads.length === 0) return void 0;\n\treturn Promise.all(preloads);\n}\nfunction loadRouteChunk(route, componentTypesToLoad = componentTypes) {\n\tif (!route._lazyLoaded && route._lazyPromise === void 0) if (route.lazyFn) route._lazyPromise = route.lazyFn().then((lazyRoute) => {\n\t\tconst { id: _id, ...options } = lazyRoute.options;\n\t\tObject.assign(route.options, options);\n\t\troute._lazyLoaded = true;\n\t\troute._lazyPromise = void 0;\n\t});\n\telse route._lazyLoaded = true;\n\tconst runAfterLazy = () => route._componentsLoaded ? void 0 : componentTypesToLoad === componentTypes ? (() => {\n\t\tif (route._componentsPromise === void 0) {\n\t\t\tconst componentsPromise = preloadRouteComponents(route, componentTypes);\n\t\t\tif (componentsPromise) route._componentsPromise = componentsPromise.then(() => {\n\t\t\t\troute._componentsLoaded = true;\n\t\t\t\troute._componentsPromise = void 0;\n\t\t\t});\n\t\t\telse route._componentsLoaded = true;\n\t\t}\n\t\treturn route._componentsPromise;\n\t})() : preloadRouteComponents(route, componentTypesToLoad);\n\treturn route._lazyPromise ? route._lazyPromise.then(runAfterLazy) : runAfterLazy();\n}\nfunction makeMaybe(value, error) {\n\tif (error) return {\n\t\tstatus: \"error\",\n\t\terror\n\t};\n\treturn {\n\t\tstatus: \"success\",\n\t\tvalue\n\t};\n}\nfunction routeNeedsPreload(route) {\n\tfor (const componentType of componentTypes) if (route.options[componentType]?.preload) return true;\n\treturn false;\n}\nconst componentTypes = [\n\t\"component\",\n\t\"errorComponent\",\n\t\"pendingComponent\",\n\t\"notFoundComponent\"\n];\n//#endregion\nexport { loadMatches, loadRouteChunk, routeNeedsPreload };\n\n//# sourceMappingURL=load-matches.js.map","import { joinPaths, trimPath } from \"./path.js\";\n//#region src/rewrite.ts\n/** Compose multiple rewrite pairs into a single in/out rewrite. */\nfunction composeRewrites(rewrites) {\n\treturn {\n\t\tinput: ({ url }) => {\n\t\t\tfor (const rewrite of rewrites) url = executeRewriteInput(rewrite, url);\n\t\t\treturn url;\n\t\t},\n\t\toutput: ({ url }) => {\n\t\t\tfor (let i = rewrites.length - 1; i >= 0; i--) url = executeRewriteOutput(rewrites[i], url);\n\t\t\treturn url;\n\t\t}\n\t};\n}\n/** Create a rewrite pair that strips/adds a basepath on input/output. */\nfunction rewriteBasepath(opts) {\n\tconst trimmedBasepath = trimPath(opts.basepath);\n\tconst normalizedBasepath = `/${trimmedBasepath}`;\n\tconst checkBasepath = opts.caseSensitive ? normalizedBasepath : normalizedBasepath.toLowerCase();\n\tconst checkBasepathWithSlash = `${checkBasepath}/`;\n\treturn {\n\t\tinput: ({ url }) => {\n\t\t\tconst pathname = opts.caseSensitive ? url.pathname : url.pathname.toLowerCase();\n\t\t\tif (pathname === checkBasepath) url.pathname = \"/\";\n\t\t\telse if (pathname.startsWith(checkBasepathWithSlash)) url.pathname = url.pathname.slice(normalizedBasepath.length);\n\t\t\treturn url;\n\t\t},\n\t\toutput: ({ url }) => {\n\t\t\turl.pathname = joinPaths([\n\t\t\t\t\"/\",\n\t\t\t\ttrimmedBasepath,\n\t\t\t\turl.pathname\n\t\t\t]);\n\t\t\treturn url;\n\t\t}\n\t};\n}\n/** Execute a location input rewrite if provided. */\nfunction executeRewriteInput(rewrite, url) {\n\tconst res = rewrite?.input?.({ url });\n\tif (res) {\n\t\tif (typeof res === \"string\") return new URL(res);\n\t\telse if (res instanceof URL) return res;\n\t}\n\treturn url;\n}\n/** Execute a location output rewrite if provided. */\nfunction executeRewriteOutput(rewrite, url) {\n\tconst res = rewrite?.output?.({ url });\n\tif (res) {\n\t\tif (typeof res === \"string\") return new URL(res);\n\t\telse if (res instanceof URL) return res;\n\t}\n\treturn url;\n}\n//#endregion\nexport { composeRewrites, executeRewriteInput, executeRewriteOutput, rewriteBasepath };\n\n//# sourceMappingURL=rewrite.js.map","import { arraysEqual, functionalUpdate } from \"./utils.js\";\nimport { createLRUCache } from \"./lru-cache.js\";\n//#region src/stores.ts\n/** SSR non-reactive createMutableStore */\nfunction createNonReactiveMutableStore(initialValue) {\n\tlet value = initialValue;\n\treturn {\n\t\tget() {\n\t\t\treturn value;\n\t\t},\n\t\tset(nextOrUpdater) {\n\t\t\tvalue = functionalUpdate(nextOrUpdater, value);\n\t\t}\n\t};\n}\n/** SSR non-reactive createReadonlyStore */\nfunction createNonReactiveReadonlyStore(read) {\n\treturn { get() {\n\t\treturn read();\n\t} };\n}\nfunction createRouterStores(initialState, config) {\n\tconst { createMutableStore, createReadonlyStore, batch, init } = config;\n\tconst matchStores = /* @__PURE__ */ new Map();\n\tconst pendingMatchStores = /* @__PURE__ */ new Map();\n\tconst cachedMatchStores = /* @__PURE__ */ new Map();\n\tconst status = createMutableStore(initialState.status);\n\tconst loadedAt = createMutableStore(initialState.loadedAt);\n\tconst isLoading = createMutableStore(initialState.isLoading);\n\tconst isTransitioning = createMutableStore(initialState.isTransitioning);\n\tconst location = createMutableStore(initialState.location);\n\tconst resolvedLocation = createMutableStore(initialState.resolvedLocation);\n\tconst statusCode = createMutableStore(initialState.statusCode);\n\tconst redirect = createMutableStore(initialState.redirect);\n\tconst matchesId = createMutableStore([]);\n\tconst pendingIds = createMutableStore([]);\n\tconst cachedIds = createMutableStore([]);\n\tconst matches = createReadonlyStore(() => readPoolMatches(matchStores, matchesId.get()));\n\tconst pendingMatches = createReadonlyStore(() => readPoolMatches(pendingMatchStores, pendingIds.get()));\n\tconst cachedMatches = createReadonlyStore(() => readPoolMatches(cachedMatchStores, cachedIds.get()));\n\tconst firstId = createReadonlyStore(() => matchesId.get()[0]);\n\tconst hasPending = createReadonlyStore(() => matchesId.get().some((matchId) => {\n\t\treturn matchStores.get(matchId)?.get().status === \"pending\";\n\t}));\n\tconst matchRouteDeps = createReadonlyStore(() => ({\n\t\tlocationHref: location.get().href,\n\t\tresolvedLocationHref: resolvedLocation.get()?.href,\n\t\tstatus: status.get()\n\t}));\n\tconst __store = createReadonlyStore(() => ({\n\t\tstatus: status.get(),\n\t\tloadedAt: loadedAt.get(),\n\t\tisLoading: isLoading.get(),\n\t\tisTransitioning: isTransitioning.get(),\n\t\tmatches: matches.get(),\n\t\tlocation: location.get(),\n\t\tresolvedLocation: resolvedLocation.get(),\n\t\tstatusCode: statusCode.get(),\n\t\tredirect: redirect.get()\n\t}));\n\tconst matchStoreByRouteIdCache = createLRUCache(64);\n\tfunction getRouteMatchStore(routeId) {\n\t\tlet cached = matchStoreByRouteIdCache.get(routeId);\n\t\tif (!cached) {\n\t\t\tcached = createReadonlyStore(() => {\n\t\t\t\tconst ids = matchesId.get();\n\t\t\t\tfor (const id of ids) {\n\t\t\t\t\tconst matchStore = matchStores.get(id);\n\t\t\t\t\tif (matchStore && matchStore.routeId === routeId) return matchStore.get();\n\t\t\t\t}\n\t\t\t});\n\t\t\tmatchStoreByRouteIdCache.set(routeId, cached);\n\t\t}\n\t\treturn cached;\n\t}\n\tconst store = {\n\t\tstatus,\n\t\tloadedAt,\n\t\tisLoading,\n\t\tisTransitioning,\n\t\tlocation,\n\t\tresolvedLocation,\n\t\tstatusCode,\n\t\tredirect,\n\t\tmatchesId,\n\t\tpendingIds,\n\t\tcachedIds,\n\t\tmatches,\n\t\tpendingMatches,\n\t\tcachedMatches,\n\t\tfirstId,\n\t\thasPending,\n\t\tmatchRouteDeps,\n\t\tmatchStores,\n\t\tpendingMatchStores,\n\t\tcachedMatchStores,\n\t\t__store,\n\t\tgetRouteMatchStore,\n\t\tsetMatches,\n\t\tsetPending,\n\t\tsetCached\n\t};\n\tsetMatches(initialState.matches);\n\tinit?.(store);\n\tfunction setMatches(nextMatches) {\n\t\treconcileMatchPool(nextMatches, matchStores, matchesId, createMutableStore, batch);\n\t}\n\tfunction setPending(nextMatches) {\n\t\treconcileMatchPool(nextMatches, pendingMatchStores, pendingIds, createMutableStore, batch);\n\t}\n\tfunction setCached(nextMatches) {\n\t\treconcileMatchPool(nextMatches, cachedMatchStores, cachedIds, createMutableStore, batch);\n\t}\n\treturn store;\n}\nfunction readPoolMatches(pool, ids) {\n\tconst matches = [];\n\tfor (const id of ids) {\n\t\tconst matchStore = pool.get(id);\n\t\tif (matchStore) matches.push(matchStore.get());\n\t}\n\treturn matches;\n}\nfunction reconcileMatchPool(nextMatches, pool, idStore, createMutableStore, batch) {\n\tconst nextIds = nextMatches.map((d) => d.id);\n\tconst nextIdSet = new Set(nextIds);\n\tbatch(() => {\n\t\tfor (const id of pool.keys()) if (!nextIdSet.has(id)) pool.delete(id);\n\t\tfor (const nextMatch of nextMatches) {\n\t\t\tconst existing = pool.get(nextMatch.id);\n\t\t\tif (!existing) {\n\t\t\t\tconst matchStore = createMutableStore(nextMatch);\n\t\t\t\tmatchStore.routeId = nextMatch.routeId;\n\t\t\t\tpool.set(nextMatch.id, matchStore);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\texisting.routeId = nextMatch.routeId;\n\t\t\tif (existing.get() !== nextMatch) existing.set(nextMatch);\n\t\t}\n\t\tif (!arraysEqual(idStore.get(), nextIds)) idStore.set(nextIds);\n\t});\n}\n//#endregion\nexport { createNonReactiveMutableStore, createNonReactiveReadonlyStore, createRouterStores };\n\n//# sourceMappingURL=stores.js.map","//#region src/index.ts\nvar stateIndexKey = \"__TSR_index\";\nvar popStateEvent = \"popstate\";\nvar beforeUnloadEvent = \"beforeunload\";\nfunction createHistory(opts) {\n\tlet location = opts.getLocation();\n\tconst subscribers = /* @__PURE__ */ new Set();\n\tconst notify = (action) => {\n\t\tlocation = opts.getLocation();\n\t\tsubscribers.forEach((subscriber) => subscriber({\n\t\t\tlocation,\n\t\t\taction\n\t\t}));\n\t};\n\tconst handleIndexChange = (action) => {\n\t\tif (opts.notifyOnIndexChange ?? true) notify(action);\n\t\telse location = opts.getLocation();\n\t};\n\tconst tryNavigation = async ({ task, navigateOpts, ...actionInfo }) => {\n\t\tif (navigateOpts?.ignoreBlocker ?? false) {\n\t\t\ttask();\n\t\t\treturn;\n\t\t}\n\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\tconst isPushOrReplace = actionInfo.type === \"PUSH\" || actionInfo.type === \"REPLACE\";\n\t\tif (typeof document !== \"undefined\" && blockers.length && isPushOrReplace) for (const blocker of blockers) {\n\t\t\tconst nextLocation = parseHref(actionInfo.path, actionInfo.state);\n\t\t\tif (await blocker.blockerFn({\n\t\t\t\tcurrentLocation: location,\n\t\t\t\tnextLocation,\n\t\t\t\taction: actionInfo.type\n\t\t\t})) {\n\t\t\t\topts.onBlocked?.();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\ttask();\n\t};\n\treturn {\n\t\tget location() {\n\t\t\treturn location;\n\t\t},\n\t\tget length() {\n\t\t\treturn opts.getLength();\n\t\t},\n\t\tsubscribers,\n\t\tsubscribe: (cb) => {\n\t\t\tsubscribers.add(cb);\n\t\t\treturn () => {\n\t\t\t\tsubscribers.delete(cb);\n\t\t\t};\n\t\t},\n\t\tpush: (path, state, navigateOpts) => {\n\t\t\tconst currentIndex = location.state[stateIndexKey];\n\t\t\tstate = assignKeyAndIndex(currentIndex + 1, state);\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.pushState(path, state);\n\t\t\t\t\tnotify({ type: \"PUSH\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"PUSH\",\n\t\t\t\tpath,\n\t\t\t\tstate\n\t\t\t});\n\t\t},\n\t\treplace: (path, state, navigateOpts) => {\n\t\t\tconst currentIndex = location.state[stateIndexKey];\n\t\t\tstate = assignKeyAndIndex(currentIndex, state);\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.replaceState(path, state);\n\t\t\t\t\tnotify({ type: \"REPLACE\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"REPLACE\",\n\t\t\t\tpath,\n\t\t\t\tstate\n\t\t\t});\n\t\t},\n\t\tgo: (index, navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.go(index);\n\t\t\t\t\thandleIndexChange({\n\t\t\t\t\t\ttype: \"GO\",\n\t\t\t\t\t\tindex\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"GO\"\n\t\t\t});\n\t\t},\n\t\tback: (navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.back(navigateOpts?.ignoreBlocker ?? false);\n\t\t\t\t\thandleIndexChange({ type: \"BACK\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"BACK\"\n\t\t\t});\n\t\t},\n\t\tforward: (navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.forward(navigateOpts?.ignoreBlocker ?? false);\n\t\t\t\t\thandleIndexChange({ type: \"FORWARD\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"FORWARD\"\n\t\t\t});\n\t\t},\n\t\tcanGoBack: () => location.state[stateIndexKey] !== 0,\n\t\tcreateHref: (str) => opts.createHref(str),\n\t\tblock: (blocker) => {\n\t\t\tif (!opts.setBlockers) return () => {};\n\t\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\t\topts.setBlockers([...blockers, blocker]);\n\t\t\treturn () => {\n\t\t\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\t\t\topts.setBlockers?.(blockers.filter((b) => b !== blocker));\n\t\t\t};\n\t\t},\n\t\tflush: () => opts.flush?.(),\n\t\tdestroy: () => opts.destroy?.(),\n\t\tnotify\n\t};\n}\nfunction assignKeyAndIndex(index, state) {\n\tif (!state) state = {};\n\tconst key = createRandomKey();\n\treturn {\n\t\t...state,\n\t\tkey,\n\t\t__TSR_key: key,\n\t\t[stateIndexKey]: index\n\t};\n}\n/**\n* Creates a history object that can be used to interact with the browser's\n* navigation. This is a lightweight API wrapping the browser's native methods.\n* It is designed to work with TanStack Router, but could be used as a standalone API as well.\n* IMPORTANT: This API implements history throttling via a microtask to prevent\n* excessive calls to the history API. In some browsers, calling history.pushState or\n* history.replaceState in quick succession can cause the browser to ignore subsequent\n* calls. This API smooths out those differences and ensures that your application\n* state will *eventually* match the browser state. In most cases, this is not a problem,\n* but if you need to ensure that the browser state is up to date, you can use the\n* `history.flush` method to immediately flush all pending state changes to the browser URL.\n* @param opts\n* @param opts.getHref A function that returns the current href (path + search + hash)\n* @param opts.createHref A function that takes a path and returns a href (path + search + hash)\n* @returns A history instance\n*/\nfunction createBrowserHistory(opts) {\n\tconst win = opts?.window ?? (typeof document !== \"undefined\" ? window : void 0);\n\tconst originalPushState = win.history.pushState;\n\tconst originalReplaceState = win.history.replaceState;\n\tlet blockers = [];\n\tconst _getBlockers = () => blockers;\n\tconst _setBlockers = (newBlockers) => blockers = newBlockers;\n\tconst createHref = opts?.createHref ?? ((path) => path);\n\tconst parseLocation = opts?.parseLocation ?? (() => parseHref(`${win.location.pathname}${win.location.search}${win.location.hash}`, win.history.state));\n\tif (!win.history.state?.__TSR_key && !win.history.state?.key) {\n\t\tconst addedKey = createRandomKey();\n\t\twin.history.replaceState({\n\t\t\t[stateIndexKey]: 0,\n\t\t\tkey: addedKey,\n\t\t\t__TSR_key: addedKey\n\t\t}, \"\");\n\t}\n\tlet currentLocation = parseLocation();\n\tlet rollbackLocation;\n\tlet nextPopIsGo = false;\n\tlet ignoreNextPop = false;\n\tlet skipBlockerNextPop = false;\n\tlet ignoreNextBeforeUnload = false;\n\tconst getLocation = () => currentLocation;\n\tlet next;\n\tlet scheduled;\n\tconst flush = () => {\n\t\tif (!next) return;\n\t\thistory._ignoreSubscribers = true;\n\t\t(next.isPush ? win.history.pushState : win.history.replaceState)(next.state, \"\", next.href);\n\t\thistory._ignoreSubscribers = false;\n\t\tnext = void 0;\n\t\tscheduled = void 0;\n\t\trollbackLocation = void 0;\n\t};\n\tconst queueHistoryAction = (type, destHref, state) => {\n\t\tconst href = createHref(destHref);\n\t\tif (!scheduled) rollbackLocation = currentLocation;\n\t\tcurrentLocation = parseHref(destHref, state);\n\t\tnext = {\n\t\t\thref,\n\t\t\tstate,\n\t\t\tisPush: next?.isPush || type === \"push\"\n\t\t};\n\t\tif (!scheduled) scheduled = Promise.resolve().then(() => flush());\n\t};\n\tconst onPushPop = (type) => {\n\t\tcurrentLocation = parseLocation();\n\t\thistory.notify({ type });\n\t};\n\tconst onPushPopEvent = async () => {\n\t\tif (ignoreNextPop) {\n\t\t\tignoreNextPop = false;\n\t\t\treturn;\n\t\t}\n\t\tconst nextLocation = parseLocation();\n\t\tconst delta = nextLocation.state[stateIndexKey] - currentLocation.state[stateIndexKey];\n\t\tconst isForward = delta === 1;\n\t\tconst isBack = delta === -1;\n\t\tconst isGo = !isForward && !isBack || nextPopIsGo;\n\t\tnextPopIsGo = false;\n\t\tconst action = isGo ? \"GO\" : isBack ? \"BACK\" : \"FORWARD\";\n\t\tconst notify = isGo ? {\n\t\t\ttype: \"GO\",\n\t\t\tindex: delta\n\t\t} : { type: isBack ? \"BACK\" : \"FORWARD\" };\n\t\tif (skipBlockerNextPop) skipBlockerNextPop = false;\n\t\telse {\n\t\t\tconst blockers = _getBlockers();\n\t\t\tif (typeof document !== \"undefined\" && blockers.length) {\n\t\t\t\tfor (const blocker of blockers) if (await blocker.blockerFn({\n\t\t\t\t\tcurrentLocation,\n\t\t\t\t\tnextLocation,\n\t\t\t\t\taction\n\t\t\t\t})) {\n\t\t\t\t\tignoreNextPop = true;\n\t\t\t\t\twin.history.go(1);\n\t\t\t\t\thistory.notify(notify);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcurrentLocation = parseLocation();\n\t\thistory.notify(notify);\n\t};\n\tconst onBeforeUnload = (e) => {\n\t\tif (ignoreNextBeforeUnload) {\n\t\t\tignoreNextBeforeUnload = false;\n\t\t\treturn;\n\t\t}\n\t\tlet shouldBlock = false;\n\t\tconst blockers = _getBlockers();\n\t\tif (typeof document !== \"undefined\" && blockers.length) for (const blocker of blockers) {\n\t\t\tconst shouldHaveBeforeUnload = blocker.enableBeforeUnload ?? true;\n\t\t\tif (shouldHaveBeforeUnload === true) {\n\t\t\t\tshouldBlock = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (typeof shouldHaveBeforeUnload === \"function\" && shouldHaveBeforeUnload() === true) {\n\t\t\t\tshouldBlock = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (shouldBlock) {\n\t\t\te.preventDefault();\n\t\t\treturn e.returnValue = \"\";\n\t\t}\n\t};\n\tconst history = createHistory({\n\t\tgetLocation,\n\t\tgetLength: () => win.history.length,\n\t\tpushState: (href, state) => queueHistoryAction(\"push\", href, state),\n\t\treplaceState: (href, state) => queueHistoryAction(\"replace\", href, state),\n\t\tback: (ignoreBlocker) => {\n\t\t\tif (ignoreBlocker) skipBlockerNextPop = true;\n\t\t\tignoreNextBeforeUnload = true;\n\t\t\treturn win.history.back();\n\t\t},\n\t\tforward: (ignoreBlocker) => {\n\t\t\tif (ignoreBlocker) skipBlockerNextPop = true;\n\t\t\tignoreNextBeforeUnload = true;\n\t\t\twin.history.forward();\n\t\t},\n\t\tgo: (n) => {\n\t\t\tnextPopIsGo = true;\n\t\t\twin.history.go(n);\n\t\t},\n\t\tcreateHref: (href) => createHref(href),\n\t\tflush,\n\t\tdestroy: () => {\n\t\t\twin.history.pushState = originalPushState;\n\t\t\twin.history.replaceState = originalReplaceState;\n\t\t\twin.removeEventListener(beforeUnloadEvent, onBeforeUnload, { capture: true });\n\t\t\twin.removeEventListener(popStateEvent, onPushPopEvent);\n\t\t},\n\t\tonBlocked: () => {\n\t\t\tif (rollbackLocation && currentLocation !== rollbackLocation) currentLocation = rollbackLocation;\n\t\t},\n\t\tgetBlockers: _getBlockers,\n\t\tsetBlockers: _setBlockers,\n\t\tnotifyOnIndexChange: false\n\t});\n\twin.addEventListener(beforeUnloadEvent, onBeforeUnload, { capture: true });\n\twin.addEventListener(popStateEvent, onPushPopEvent);\n\twin.history.pushState = function(...args) {\n\t\tconst res = originalPushState.apply(win.history, args);\n\t\tif (!history._ignoreSubscribers) onPushPop(\"PUSH\");\n\t\treturn res;\n\t};\n\twin.history.replaceState = function(...args) {\n\t\tconst res = originalReplaceState.apply(win.history, args);\n\t\tif (!history._ignoreSubscribers) onPushPop(\"REPLACE\");\n\t\treturn res;\n\t};\n\treturn history;\n}\n/**\n* Create a hash-based history implementation.\n* Useful for static hosts or environments without server URL rewriting.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/history-types\n*/\nfunction createHashHistory(opts) {\n\tconst win = opts?.window ?? (typeof document !== \"undefined\" ? window : void 0);\n\treturn createBrowserHistory({\n\t\twindow: win,\n\t\tparseLocation: () => {\n\t\t\tconst hashSplit = win.location.hash.split(\"#\").slice(1);\n\t\t\tconst pathPart = hashSplit[0] ?? \"/\";\n\t\t\tconst searchPart = win.location.search;\n\t\t\tconst hashEntries = hashSplit.slice(1);\n\t\t\treturn parseHref(`${pathPart}${searchPart}${hashEntries.length === 0 ? \"\" : `#${hashEntries.join(\"#\")}`}`, win.history.state);\n\t\t},\n\t\tcreateHref: (href) => `${win.location.pathname}${win.location.search}#${href}`\n\t});\n}\n/**\n* Create an in-memory history implementation.\n* Ideal for server rendering, tests, and non-DOM environments.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/history-types\n*/\nfunction createMemoryHistory(opts = { initialEntries: [\"/\"] }) {\n\tconst entries = opts.initialEntries;\n\tlet index = opts.initialIndex ? Math.min(Math.max(opts.initialIndex, 0), entries.length - 1) : entries.length - 1;\n\tconst states = entries.map((_entry, index) => assignKeyAndIndex(index, void 0));\n\tconst getLocation = () => parseHref(entries[index], states[index]);\n\tlet blockers = [];\n\tconst _getBlockers = () => blockers;\n\tconst _setBlockers = (newBlockers) => blockers = newBlockers;\n\treturn createHistory({\n\t\tgetLocation,\n\t\tgetLength: () => entries.length,\n\t\tpushState: (path, state) => {\n\t\t\tif (index < entries.length - 1) {\n\t\t\t\tentries.splice(index + 1);\n\t\t\t\tstates.splice(index + 1);\n\t\t\t}\n\t\t\tstates.push(state);\n\t\t\tentries.push(path);\n\t\t\tindex = Math.max(entries.length - 1, 0);\n\t\t},\n\t\treplaceState: (path, state) => {\n\t\t\tstates[index] = state;\n\t\t\tentries[index] = path;\n\t\t},\n\t\tback: () => {\n\t\t\tindex = Math.max(index - 1, 0);\n\t\t},\n\t\tforward: () => {\n\t\t\tindex = Math.min(index + 1, entries.length - 1);\n\t\t},\n\t\tgo: (n) => {\n\t\t\tindex = Math.min(Math.max(index + n, 0), entries.length - 1);\n\t\t},\n\t\tcreateHref: (path) => path,\n\t\tgetBlockers: _getBlockers,\n\t\tsetBlockers: _setBlockers\n\t});\n}\n/**\n* Sanitize a path to prevent open redirect vulnerabilities.\n* Removes control characters and collapses leading double slashes.\n*/\nfunction sanitizePath(path) {\n\tlet sanitized = path.replace(/[\\x00-\\x1f\\x7f]/g, \"\");\n\tif (sanitized.startsWith(\"//\")) sanitized = \"/\" + sanitized.replace(/^\\/+/, \"\");\n\treturn sanitized;\n}\nfunction parseHref(href, state) {\n\tconst sanitizedHref = sanitizePath(href);\n\tconst hashIndex = sanitizedHref.indexOf(\"#\");\n\tconst searchIndex = sanitizedHref.indexOf(\"?\");\n\tconst addedKey = createRandomKey();\n\treturn {\n\t\thref: sanitizedHref,\n\t\tpathname: sanitizedHref.substring(0, hashIndex > 0 ? searchIndex > 0 ? Math.min(hashIndex, searchIndex) : hashIndex : searchIndex > 0 ? searchIndex : sanitizedHref.length),\n\t\thash: hashIndex > -1 ? sanitizedHref.substring(hashIndex) : \"\",\n\t\tsearch: searchIndex > -1 ? sanitizedHref.slice(searchIndex, hashIndex === -1 ? void 0 : hashIndex) : \"\",\n\t\tstate: state || {\n\t\t\t[stateIndexKey]: 0,\n\t\t\tkey: addedKey,\n\t\t\t__TSR_key: addedKey\n\t\t}\n\t};\n}\nfunction createRandomKey() {\n\treturn (Math.random() + 1).toString(36).substring(7);\n}\n//#endregion\nexport { createBrowserHistory, createHashHistory, createHistory, createMemoryHistory, parseHref };\n\n//# sourceMappingURL=index.js.map","import { DEFAULT_PROTOCOL_ALLOWLIST, createControlledPromise, decodePath, deepEqual, encodePathLikeUrl, findLast, functionalUpdate, hasKeys, isDangerousProtocol, last, nullReplaceEqualDeep, replaceEqualDeep } from \"./utils.js\";\nimport { createLRUCache } from \"./lru-cache.js\";\nimport { buildRouteBranch, findFlatMatch, findRouteMatch, findSingleMatch, processRouteMasks, processRouteTree } from \"./new-process-route-tree.js\";\nimport { cleanPath, compileDecodeCharMap, interpolatePath, resolvePath, trimPath, trimPathRight } from \"./path.js\";\nimport { isNotFound } from \"./not-found.js\";\nimport { setupScrollRestoration } from \"./scroll-restoration.js\";\nimport { defaultParseSearch, defaultStringifySearch } from \"./searchParams.js\";\nimport { rootRouteId } from \"./root.js\";\nimport { isRedirect, redirect } from \"./redirect.js\";\nimport { loadMatches, loadRouteChunk, routeNeedsPreload } from \"./load-matches.js\";\nimport { composeRewrites, executeRewriteInput, executeRewriteOutput, rewriteBasepath } from \"./rewrite.js\";\nimport { createRouterStores } from \"./stores.js\";\nimport { createBrowserHistory, parseHref } from \"@tanstack/history\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/router.ts\n/**\n* Convert an unknown error into a minimal, serializable object.\n* Includes name and message (and stack in development).\n*/\nfunction defaultSerializeError(err) {\n\tif (err instanceof Error) {\n\t\tconst obj = {\n\t\t\tname: err.name,\n\t\t\tmessage: err.message\n\t\t};\n\t\tif (process.env.NODE_ENV === \"development\") obj.stack = err.stack;\n\t\treturn obj;\n\t}\n\treturn { data: err };\n}\n/** Options for configuring trailing-slash behavior. */\nconst trailingSlashOptions = {\n\talways: \"always\",\n\tnever: \"never\",\n\tpreserve: \"preserve\"\n};\n/**\n* Compute whether path, href or hash changed between previous and current\n* resolved locations.\n*/\nfunction getLocationChangeInfo(location, resolvedLocation) {\n\tconst fromLocation = resolvedLocation;\n\tconst toLocation = location;\n\treturn {\n\t\tfromLocation,\n\t\ttoLocation,\n\t\tpathChanged: fromLocation?.pathname !== toLocation.pathname,\n\t\threfChanged: fromLocation?.href !== toLocation.href,\n\t\thashChanged: fromLocation?.hash !== toLocation.hash\n\t};\n}\nconst locationHistoryActions = /* @__PURE__ */ new WeakMap();\n/**\n* Core, framework-agnostic router engine that powers TanStack Router.\n*\n* Provides navigation, matching, loading, preloading, caching and event APIs\n* used by framework adapters (React/Solid). Prefer framework helpers like\n* `createRouter` in app code.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/RouterType\n*/\nvar RouterCore = class {\n\t/**\n\t* @deprecated Use the `createRouter` function instead\n\t*/\n\tconstructor(options, getStoreConfig) {\n\t\tthis.tempLocationKey = `${Math.round(Math.random() * 1e7)}`;\n\t\tthis._scroll = { next: true };\n\t\tthis.shouldViewTransition = void 0;\n\t\tthis.isViewTransitionTypesSupported = void 0;\n\t\tthis.subscribers = /* @__PURE__ */ new Set();\n\t\tthis.routeBranchCache = /* @__PURE__ */ new WeakMap();\n\t\tthis.lightweightCache = /* @__PURE__ */ new WeakMap();\n\t\tthis.startTransition = (fn) => fn();\n\t\tthis.update = (newOptions) => {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (newOptions.notFoundRoute) console.warn(\"The notFoundRoute API is deprecated and will be removed in the next major version. See https://tanstack.com/router/v1/docs/framework/react/guide/not-found-errors#migrating-from-notfoundroute for more info.\");\n\t\t\t}\n\t\t\tconst prevOptions = this.options;\n\t\t\tconst prevBasepath = this.basepath ?? prevOptions?.basepath ?? \"/\";\n\t\t\tconst basepathWasUnset = this.basepath === void 0;\n\t\t\tconst prevRewriteOption = prevOptions?.rewrite;\n\t\t\tthis.options = {\n\t\t\t\t...prevOptions,\n\t\t\t\t...newOptions\n\t\t\t};\n\t\t\tthis.isServer = this.options.isServer ?? typeof document === \"undefined\";\n\t\t\tthis.protocolAllowlist = new Set(this.options.protocolAllowlist);\n\t\t\tif (this.options.pathParamsAllowedCharacters) this.pathParamsDecoder = compileDecodeCharMap(this.options.pathParamsAllowedCharacters);\n\t\t\tif (!this.history || this.options.history && this.options.history !== this.history) if (!this.options.history) {\n\t\t\t\tif (!(isServer ?? this.isServer)) this.history = createBrowserHistory();\n\t\t\t} else this.history = this.options.history;\n\t\t\tthis.origin = this.options.origin;\n\t\t\tif (!this.origin) if (!(isServer ?? this.isServer) && window?.origin && window.origin !== \"null\") this.origin = window.origin;\n\t\t\telse this.origin = \"http://localhost\";\n\t\t\tif (this.history) this.updateLatestLocation();\n\t\t\tif (this.options.routeTree !== this.routeTree) {\n\t\t\t\tthis.routeTree = this.options.routeTree;\n\t\t\t\tlet processRouteTreeResult;\n\t\t\t\tif ((isServer ?? this.isServer) && process.env.NODE_ENV !== \"development\" && globalThis.__TSR_CACHE__ && globalThis.__TSR_CACHE__.routeTree === this.routeTree) {\n\t\t\t\t\tconst cached = globalThis.__TSR_CACHE__;\n\t\t\t\t\tthis.resolvePathCache = cached.resolvePathCache;\n\t\t\t\t\tprocessRouteTreeResult = cached.processRouteTreeResult;\n\t\t\t\t} else {\n\t\t\t\t\tthis.resolvePathCache = createLRUCache(1e3);\n\t\t\t\t\tprocessRouteTreeResult = this.buildRouteTree();\n\t\t\t\t\tif ((isServer ?? this.isServer) && process.env.NODE_ENV !== \"development\" && globalThis.__TSR_CACHE__ === void 0) globalThis.__TSR_CACHE__ = {\n\t\t\t\t\t\trouteTree: this.routeTree,\n\t\t\t\t\t\tprocessRouteTreeResult,\n\t\t\t\t\t\tresolvePathCache: this.resolvePathCache\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis.setRoutes(processRouteTreeResult);\n\t\t\t}\n\t\t\tif (!this.stores && this.latestLocation) {\n\t\t\t\tconst config = this.getStoreConfig(this);\n\t\t\t\tthis.batch = config.batch;\n\t\t\t\tthis.stores = createRouterStores(getInitialRouterState(this.latestLocation), config);\n\t\t\t\tif (!(isServer ?? this.isServer)) setupScrollRestoration(this);\n\t\t\t}\n\t\t\tlet needsLocationUpdate = false;\n\t\t\tconst nextBasepath = this.options.basepath ?? \"/\";\n\t\t\tconst nextRewriteOption = this.options.rewrite;\n\t\t\tif (basepathWasUnset || prevBasepath !== nextBasepath || prevRewriteOption !== nextRewriteOption) {\n\t\t\t\tthis.basepath = nextBasepath;\n\t\t\t\tconst rewrites = [];\n\t\t\t\tconst trimmed = trimPath(nextBasepath);\n\t\t\t\tif (trimmed && trimmed !== \"/\") rewrites.push(rewriteBasepath({ basepath: nextBasepath }));\n\t\t\t\tif (nextRewriteOption) rewrites.push(nextRewriteOption);\n\t\t\t\tthis.rewrite = rewrites.length === 0 ? void 0 : rewrites.length === 1 ? rewrites[0] : composeRewrites(rewrites);\n\t\t\t\tif (this.history) this.updateLatestLocation();\n\t\t\t\tneedsLocationUpdate = true;\n\t\t\t}\n\t\t\tif (needsLocationUpdate && this.stores) this.stores.location.set(this.latestLocation);\n\t\t\tif (typeof window !== \"undefined\" && \"CSS\" in window && typeof window.CSS?.supports === \"function\") this.isViewTransitionTypesSupported = window.CSS.supports(\"selector(:active-view-transition-type(a))\");\n\t\t};\n\t\tthis.updateLatestLocation = () => {\n\t\t\tthis.latestLocation = this.parseLocation(this.history.location, this.latestLocation);\n\t\t};\n\t\tthis.buildRouteTree = () => {\n\t\t\tconst result = processRouteTree(this.routeTree, this.options.caseSensitive, (route, i) => {\n\t\t\t\troute.init({ originalIndex: i });\n\t\t\t});\n\t\t\tif (this.options.routeMasks) processRouteMasks(this.options.routeMasks, result.processedTree);\n\t\t\treturn result;\n\t\t};\n\t\tthis.subscribe = (eventType, fn) => {\n\t\t\tconst listener = {\n\t\t\t\teventType,\n\t\t\t\tfn\n\t\t\t};\n\t\t\tthis.subscribers.add(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.subscribers.delete(listener);\n\t\t\t};\n\t\t};\n\t\tthis.emit = (routerEvent) => {\n\t\t\tthis.subscribers.forEach((listener) => {\n\t\t\t\tif (listener.eventType === routerEvent.type) listener.fn(routerEvent);\n\t\t\t});\n\t\t};\n\t\tthis.parseLocation = (locationToParse, previousLocation) => {\n\t\t\tconst parse = ({ pathname, search, hash, href, state }) => {\n\t\t\t\tif (!this.rewrite && !/[ \\x00-\\x1f\\x7f\\u0080-\\uffff]/.test(pathname)) {\n\t\t\t\t\tconst parsedSearch = this.options.parseSearch(search);\n\t\t\t\t\tconst searchStr = this.options.stringifySearch(parsedSearch);\n\t\t\t\t\treturn {\n\t\t\t\t\t\thref: pathname + searchStr + hash,\n\t\t\t\t\t\tpublicHref: pathname + searchStr + hash,\n\t\t\t\t\t\tpathname: decodePath(pathname).path,\n\t\t\t\t\t\texternal: false,\n\t\t\t\t\t\tsearchStr,\n\t\t\t\t\t\tsearch: nullReplaceEqualDeep(previousLocation?.search, parsedSearch),\n\t\t\t\t\t\thash: decodePath(hash.slice(1)).path,\n\t\t\t\t\t\tstate: replaceEqualDeep(previousLocation?.state, state)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst fullUrl = new URL(href, this.origin);\n\t\t\t\tconst url = executeRewriteInput(this.rewrite, fullUrl);\n\t\t\t\tconst parsedSearch = this.options.parseSearch(url.search);\n\t\t\t\tconst searchStr = this.options.stringifySearch(parsedSearch);\n\t\t\t\turl.search = searchStr;\n\t\t\t\treturn {\n\t\t\t\t\thref: url.href.replace(url.origin, \"\"),\n\t\t\t\t\tpublicHref: href,\n\t\t\t\t\tpathname: decodePath(url.pathname).path,\n\t\t\t\t\texternal: !!this.rewrite && url.origin !== this.origin,\n\t\t\t\t\tsearchStr,\n\t\t\t\t\tsearch: nullReplaceEqualDeep(previousLocation?.search, parsedSearch),\n\t\t\t\t\thash: decodePath(url.hash.slice(1)).path,\n\t\t\t\t\tstate: replaceEqualDeep(previousLocation?.state, state)\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst location = parse(locationToParse);\n\t\t\tconst { __tempLocation, __tempKey } = location.state;\n\t\t\tif (__tempLocation && (!__tempKey || __tempKey === this.tempLocationKey)) {\n\t\t\t\tconst parsedTempLocation = parse(__tempLocation);\n\t\t\t\tparsedTempLocation.state.key = location.state.key;\n\t\t\t\tparsedTempLocation.state.__TSR_key = location.state.__TSR_key;\n\t\t\t\tdelete parsedTempLocation.state.__tempLocation;\n\t\t\t\treturn {\n\t\t\t\t\t...parsedTempLocation,\n\t\t\t\t\tmaskedLocation: location\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn location;\n\t\t};\n\t\tthis.resolvePathWithBase = (from, path) => {\n\t\t\treturn resolvePath({\n\t\t\t\tbase: from,\n\t\t\t\tto: path.includes(\"//\") ? cleanPath(path) : path,\n\t\t\t\ttrailingSlash: this.options.trailingSlash,\n\t\t\t\tcache: this.resolvePathCache\n\t\t\t});\n\t\t};\n\t\tthis.matchRoutes = (pathnameOrNext, locationSearchOrOpts, opts) => {\n\t\t\tif (typeof pathnameOrNext === \"string\") return this.matchRoutesInternal({\n\t\t\t\tpathname: pathnameOrNext,\n\t\t\t\tsearch: locationSearchOrOpts\n\t\t\t}, opts);\n\t\t\treturn this.matchRoutesInternal(pathnameOrNext, locationSearchOrOpts);\n\t\t};\n\t\tthis.getMatchedRoutes = (pathname) => {\n\t\t\treturn getMatchedRoutes({\n\t\t\t\tpathname,\n\t\t\t\troutesById: this.routesById,\n\t\t\t\tprocessedTree: this.processedTree\n\t\t\t});\n\t\t};\n\t\tthis.cancelMatch = (id) => {\n\t\t\tconst match = this.getMatch(id);\n\t\t\tif (!match) return;\n\t\t\tmatch.abortController.abort();\n\t\t\tclearTimeout(match._nonReactive.pendingTimeout);\n\t\t\tmatch._nonReactive.pendingTimeout = void 0;\n\t\t};\n\t\tthis.cancelMatches = () => {\n\t\t\tthis.stores.pendingIds.get().forEach((matchId) => {\n\t\t\t\tthis.cancelMatch(matchId);\n\t\t\t});\n\t\t\tthis.stores.matchesId.get().forEach((matchId) => {\n\t\t\t\tif (this.stores.pendingMatchStores.has(matchId)) return;\n\t\t\t\tconst match = this.stores.matchStores.get(matchId)?.get();\n\t\t\t\tif (!match) return;\n\t\t\t\tif (match.status === \"pending\" || match.isFetching === \"loader\") this.cancelMatch(matchId);\n\t\t\t});\n\t\t};\n\t\tthis.buildLocation = (opts) => {\n\t\t\tconst build = (dest = {}) => {\n\t\t\t\tconst currentLocation = dest._fromLocation || this.pendingBuiltLocation || this.latestLocation;\n\t\t\t\tconst lightweightResult = this.matchRoutesLightweight(currentLocation);\n\t\t\t\tif (dest.from && process.env.NODE_ENV !== \"production\" && dest._isNavigate) {\n\t\t\t\t\tconst allFromMatches = this.getMatchedRoutes(dest.from).matchedRoutes;\n\t\t\t\t\tconst matchedFrom = findLast(lightweightResult.matchedRoutes, (d) => {\n\t\t\t\t\t\treturn comparePaths(d.fullPath, dest.from);\n\t\t\t\t\t});\n\t\t\t\t\tconst matchedCurrent = findLast(allFromMatches, (d) => {\n\t\t\t\t\t\treturn comparePaths(d.fullPath, lightweightResult.fullPath);\n\t\t\t\t\t});\n\t\t\t\t\tif (!matchedFrom && !matchedCurrent) console.warn(`Could not find match for from: ${dest.from}`);\n\t\t\t\t}\n\t\t\t\tconst defaultedFromPath = dest.unsafeRelative === \"path\" ? currentLocation.pathname : dest.from ?? lightweightResult.fullPath;\n\t\t\t\tconst destTo = dest.to ? `${dest.to}` : void 0;\n\t\t\t\tconst fromSearch = lightweightResult.search;\n\t\t\t\tconst fromParams = Object.assign(Object.create(null), lightweightResult.params);\n\t\t\t\tconst sourcePath = destTo?.charCodeAt(0) === 47 ? \"/\" : this.resolvePathWithBase(defaultedFromPath, \".\");\n\t\t\t\tconst nextTo = destTo ? this.resolvePathWithBase(sourcePath, destTo) : sourcePath;\n\t\t\t\tconst nextParams = dest.params === false || dest.params === null ? Object.create(null) : (dest.params ?? true) === true ? fromParams : Object.assign(fromParams, functionalUpdate(dest.params, fromParams));\n\t\t\t\tconst destRoute = this.routesByPath[trimPathRight(nextTo)];\n\t\t\t\tlet destRoutes;\n\t\t\t\tif (destRoute) destRoutes = this.getRouteBranch(destRoute);\n\t\t\t\telse if (nextTo.includes(\"$\")) destRoutes = [];\n\t\t\t\telse {\n\t\t\t\t\tconst destMatchResult = this.getMatchedRoutes(nextTo);\n\t\t\t\t\tdestRoutes = destMatchResult.matchedRoutes;\n\t\t\t\t\tif (this.options.notFoundRoute && (!destMatchResult.foundRoute || destMatchResult.foundRoute.path !== \"/\" && destMatchResult.routeParams[\"**\"])) destRoutes = [...destRoutes, this.options.notFoundRoute];\n\t\t\t\t}\n\t\t\t\tif (destRoutes.length && hasKeys(nextParams)) for (const route of destRoutes) {\n\t\t\t\t\tconst fn = route.options.params?.stringify ?? route.options.stringifyParams;\n\t\t\t\t\tif (fn) try {\n\t\t\t\t\t\tObject.assign(nextParams, fn(nextParams));\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t\tconst nextPathname = opts.leaveParams ? nextTo : decodePath(interpolatePath({\n\t\t\t\t\tpath: nextTo,\n\t\t\t\t\tparams: nextParams,\n\t\t\t\t\tdecoder: this.pathParamsDecoder,\n\t\t\t\t\tserver: this.isServer\n\t\t\t\t}).interpolatedPath).path;\n\t\t\t\tif (process.env.NODE_ENV !== \"production\" && destRoute && !opts.leaveParams) try {\n\t\t\t\t\tconst roundTrip = this.getMatchedRoutes(nextPathname);\n\t\t\t\t\tif (roundTrip.foundRoute?.id !== destRoute.id) console.warn(`Generated path \"${nextPathname}\" for route \"${destRoute.id}\" matched route \"${roundTrip.foundRoute?.id}\" instead. This can happen when multiple route templates resolve to the same URL. Use the route template that matches the intended route, or adjust params.stringify if it changed the target path.`);\n\t\t\t\t} catch {}\n\t\t\t\tlet nextSearch = fromSearch;\n\t\t\t\tif (opts._includeValidateSearch && this.options.search?.strict) {\n\t\t\t\t\tconst validatedSearch = {};\n\t\t\t\t\tdestRoutes.forEach((route) => {\n\t\t\t\t\t\tif (route.options.validateSearch) try {\n\t\t\t\t\t\t\tObject.assign(validatedSearch, validateSearch(route.options.validateSearch, {\n\t\t\t\t\t\t\t\t...validatedSearch,\n\t\t\t\t\t\t\t\t...nextSearch\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t});\n\t\t\t\t\tnextSearch = validatedSearch;\n\t\t\t\t}\n\t\t\t\tnextSearch = applySearchMiddleware({\n\t\t\t\t\tsearch: nextSearch,\n\t\t\t\t\tdest,\n\t\t\t\t\tdestRoutes,\n\t\t\t\t\t_includeValidateSearch: opts._includeValidateSearch\n\t\t\t\t});\n\t\t\t\tnextSearch = nullReplaceEqualDeep(fromSearch, nextSearch);\n\t\t\t\tconst searchStr = this.options.stringifySearch(nextSearch);\n\t\t\t\tconst hash = dest.hash === true ? currentLocation.hash : dest.hash ? functionalUpdate(dest.hash, currentLocation.hash) : void 0;\n\t\t\t\tconst hashStr = hash ? `#${hash}` : \"\";\n\t\t\t\tlet nextState = dest.state === true ? currentLocation.state : dest.state ? functionalUpdate(dest.state, currentLocation.state) : {};\n\t\t\t\tnextState = replaceEqualDeep(currentLocation.state, nextState);\n\t\t\t\tconst fullPath = `${nextPathname}${searchStr}${hashStr}`;\n\t\t\t\tlet href;\n\t\t\t\tlet publicHref;\n\t\t\t\tlet external = false;\n\t\t\t\tif (this.rewrite) {\n\t\t\t\t\tconst url = new URL(fullPath, this.origin);\n\t\t\t\t\tconst rewrittenUrl = executeRewriteOutput(this.rewrite, url);\n\t\t\t\t\thref = url.href.replace(url.origin, \"\");\n\t\t\t\t\tif (rewrittenUrl.origin !== this.origin) {\n\t\t\t\t\t\tpublicHref = rewrittenUrl.href;\n\t\t\t\t\t\texternal = true;\n\t\t\t\t\t} else publicHref = rewrittenUrl.pathname + rewrittenUrl.search + rewrittenUrl.hash;\n\t\t\t\t} else {\n\t\t\t\t\thref = encodePathLikeUrl(fullPath);\n\t\t\t\t\tpublicHref = href;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tpublicHref,\n\t\t\t\t\thref,\n\t\t\t\t\tpathname: nextPathname,\n\t\t\t\t\tsearch: nextSearch,\n\t\t\t\t\tsearchStr,\n\t\t\t\t\tstate: nextState,\n\t\t\t\t\thash: hash ?? \"\",\n\t\t\t\t\texternal,\n\t\t\t\t\tunmaskOnReload: dest.unmaskOnReload\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst buildWithMatches = (dest = {}, maskedDest) => {\n\t\t\t\tconst next = build(dest);\n\t\t\t\tlet maskedNext = maskedDest ? build(maskedDest) : void 0;\n\t\t\t\tif (!maskedNext) {\n\t\t\t\t\tconst params = Object.create(null);\n\t\t\t\t\tif (this.options.routeMasks) {\n\t\t\t\t\t\tconst match = findFlatMatch(next.pathname, this.processedTree);\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tObject.assign(params, match.rawParams);\n\t\t\t\t\t\t\tconst { from: _from, params: maskParams, ...maskProps } = match.route;\n\t\t\t\t\t\t\tconst nextParams = maskParams === false || maskParams === null ? Object.create(null) : (maskParams ?? true) === true ? params : Object.assign(params, functionalUpdate(maskParams, params));\n\t\t\t\t\t\t\tmaskedDest = {\n\t\t\t\t\t\t\t\tfrom: opts.from,\n\t\t\t\t\t\t\t\t...maskProps,\n\t\t\t\t\t\t\t\tparams: nextParams\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tmaskedNext = build(maskedDest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (maskedNext) next.maskedLocation = maskedNext;\n\t\t\t\treturn next;\n\t\t\t};\n\t\t\tif (opts.mask) return buildWithMatches(opts, {\n\t\t\t\tfrom: opts.from,\n\t\t\t\t...opts.mask\n\t\t\t});\n\t\t\treturn buildWithMatches(opts);\n\t\t};\n\t\tthis.commitLocation = async ({ viewTransition, ignoreBlocker, ...next }) => {\n\t\t\tlet historyAction;\n\t\t\tconst isSameState = () => {\n\t\t\t\tconst ignoredProps = [\n\t\t\t\t\t\"key\",\n\t\t\t\t\t\"__TSR_key\",\n\t\t\t\t\t\"__TSR_index\",\n\t\t\t\t\t\"__hashScrollIntoViewOptions\"\n\t\t\t\t];\n\t\t\t\tignoredProps.forEach((prop) => {\n\t\t\t\t\tnext.state[prop] = this.latestLocation.state[prop];\n\t\t\t\t});\n\t\t\t\tconst isEqual = deepEqual(next.state, this.latestLocation.state);\n\t\t\t\tignoredProps.forEach((prop) => {\n\t\t\t\t\tdelete next.state[prop];\n\t\t\t\t});\n\t\t\t\treturn isEqual;\n\t\t\t};\n\t\t\tconst isSameUrl = trimPathRight(this.latestLocation.href) === trimPathRight(next.href);\n\t\t\tlet previousCommitPromise = this.commitLocationPromise;\n\t\t\tthis.commitLocationPromise = createControlledPromise(() => {\n\t\t\t\tpreviousCommitPromise?.resolve();\n\t\t\t\tpreviousCommitPromise = void 0;\n\t\t\t});\n\t\t\tif (isSameUrl && isSameState()) this.load();\n\t\t\telse {\n\t\t\t\tlet { maskedLocation, hashScrollIntoView, ...nextHistory } = next;\n\t\t\t\tif (maskedLocation) {\n\t\t\t\t\tnextHistory = {\n\t\t\t\t\t\t...maskedLocation,\n\t\t\t\t\t\tstate: {\n\t\t\t\t\t\t\t...maskedLocation.state,\n\t\t\t\t\t\t\t__tempKey: void 0,\n\t\t\t\t\t\t\t__tempLocation: {\n\t\t\t\t\t\t\t\t...nextHistory,\n\t\t\t\t\t\t\t\tsearch: nextHistory.searchStr,\n\t\t\t\t\t\t\t\tstate: {\n\t\t\t\t\t\t\t\t\t...nextHistory.state,\n\t\t\t\t\t\t\t\t\t__tempKey: void 0,\n\t\t\t\t\t\t\t\t\t__tempLocation: void 0,\n\t\t\t\t\t\t\t\t\t__TSR_key: void 0,\n\t\t\t\t\t\t\t\t\tkey: void 0\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tif (nextHistory.unmaskOnReload ?? this.options.unmaskOnReload ?? false) nextHistory.state.__tempKey = this.tempLocationKey;\n\t\t\t\t}\n\t\t\t\tnextHistory.state.__hashScrollIntoViewOptions = hashScrollIntoView ?? this.options.defaultHashScrollIntoView ?? true;\n\t\t\t\tthis.shouldViewTransition = viewTransition;\n\t\t\t\thistoryAction = next.replace ? \"REPLACE\" : \"PUSH\";\n\t\t\t\tthis.history[historyAction === \"REPLACE\" ? \"replace\" : \"push\"](nextHistory.publicHref, nextHistory.state, { ignoreBlocker });\n\t\t\t}\n\t\t\tthis._scroll.next = next.resetScroll ?? true;\n\t\t\tif (!this.history.subscribers.size) this.load(historyAction ? { action: { type: historyAction } } : void 0);\n\t\t\treturn this.commitLocationPromise;\n\t\t};\n\t\tthis.buildAndCommitLocation = ({ replace, resetScroll, hashScrollIntoView, viewTransition, ignoreBlocker, href, ...rest } = {}) => {\n\t\t\tif (href) {\n\t\t\t\tconst currentIndex = this.history.location.state.__TSR_index;\n\t\t\t\tconst parsed = parseHref(href, { __TSR_index: replace ? currentIndex : currentIndex + 1 });\n\t\t\t\tconst hrefUrl = new URL(parsed.pathname, this.origin);\n\t\t\t\trest.to = executeRewriteInput(this.rewrite, hrefUrl).pathname;\n\t\t\t\trest.search = this.options.parseSearch(parsed.search);\n\t\t\t\trest.hash = parsed.hash.slice(1);\n\t\t\t}\n\t\t\tconst location = this.buildLocation({\n\t\t\t\t...rest,\n\t\t\t\t_includeValidateSearch: true\n\t\t\t});\n\t\t\tthis.pendingBuiltLocation = location;\n\t\t\tconst commitPromise = this.commitLocation({\n\t\t\t\t...location,\n\t\t\t\tviewTransition,\n\t\t\t\treplace,\n\t\t\t\tresetScroll,\n\t\t\t\thashScrollIntoView,\n\t\t\t\tignoreBlocker\n\t\t\t});\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tif (this.pendingBuiltLocation === location) this.pendingBuiltLocation = void 0;\n\t\t\t});\n\t\t\treturn commitPromise;\n\t\t};\n\t\tthis.navigate = async ({ to, reloadDocument, href, publicHref, ...rest }) => {\n\t\t\tlet hrefIsUrl = false;\n\t\t\tif (href) try {\n\t\t\t\tnew URL(`${href}`);\n\t\t\t\threfIsUrl = true;\n\t\t\t} catch {}\n\t\t\tif (hrefIsUrl && !reloadDocument) reloadDocument = true;\n\t\t\tif (reloadDocument) {\n\t\t\t\tif (to !== void 0 || !href) {\n\t\t\t\t\tconst location = this.buildLocation({\n\t\t\t\t\t\tto,\n\t\t\t\t\t\t...rest\n\t\t\t\t\t});\n\t\t\t\t\thref = href ?? location.publicHref;\n\t\t\t\t\tpublicHref = publicHref ?? location.publicHref;\n\t\t\t\t}\n\t\t\t\tconst reloadHref = !hrefIsUrl && publicHref ? publicHref : href;\n\t\t\t\tif (isDangerousProtocol(reloadHref, this.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked navigation to dangerous protocol: ${reloadHref}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!rest.ignoreBlocker) {\n\t\t\t\t\tconst blockers = this.history.getBlockers?.() ?? [];\n\t\t\t\t\tfor (const blocker of blockers) if (blocker?.blockerFn) {\n\t\t\t\t\t\tif (await blocker.blockerFn({\n\t\t\t\t\t\t\tcurrentLocation: this.latestLocation,\n\t\t\t\t\t\t\tnextLocation: this.latestLocation,\n\t\t\t\t\t\t\taction: \"PUSH\"\n\t\t\t\t\t\t})) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (rest.replace) window.location.replace(reloadHref);\n\t\t\t\telse window.location.href = reloadHref;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn this.buildAndCommitLocation({\n\t\t\t\t...rest,\n\t\t\t\thref,\n\t\t\t\tto,\n\t\t\t\t_isNavigate: true\n\t\t\t});\n\t\t};\n\t\tthis.beforeLoad = () => {\n\t\t\tthis.cancelMatches();\n\t\t\tthis.updateLatestLocation();\n\t\t\tif (isServer ?? this.isServer) {\n\t\t\t\tconst nextLocation = this.buildLocation({\n\t\t\t\t\tto: this.latestLocation.pathname,\n\t\t\t\t\tsearch: true,\n\t\t\t\t\tparams: true,\n\t\t\t\t\thash: true,\n\t\t\t\t\tstate: true,\n\t\t\t\t\t_includeValidateSearch: true\n\t\t\t\t});\n\t\t\t\tif (this.latestLocation.publicHref !== nextLocation.publicHref) {\n\t\t\t\t\tconst href = this.getParsedLocationHref(nextLocation);\n\t\t\t\t\tif (nextLocation.external) throw redirect({ href });\n\t\t\t\t\telse throw redirect({\n\t\t\t\t\t\thref,\n\t\t\t\t\t\t_builtLocation: nextLocation\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pendingMatches = this.matchRoutes(this.latestLocation);\n\t\t\tconst nextCachedMatches = this.stores.cachedMatches.get().filter((d) => !pendingMatches.some((e) => e.id === d.id));\n\t\t\tthis.batch(() => {\n\t\t\t\tthis.stores.status.set(\"pending\");\n\t\t\t\tthis.stores.statusCode.set(200);\n\t\t\t\tthis.stores.isLoading.set(true);\n\t\t\t\tthis.stores.location.set(this.latestLocation);\n\t\t\t\tthis.stores.setPending(pendingMatches);\n\t\t\t\tthis.stores.setCached(nextCachedMatches);\n\t\t\t});\n\t\t};\n\t\tthis.load = async (opts) => {\n\t\t\tconst historyAction = opts?.action?.type;\n\t\t\tlet redirect;\n\t\t\tlet notFound;\n\t\t\tlet loadPromise;\n\t\t\tconst previousLocation = this.stores.resolvedLocation.get() ?? this.stores.location.get();\n\t\t\tloadPromise = new Promise((resolve) => {\n\t\t\t\tthis.startTransition(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.beforeLoad();\n\t\t\t\t\t\tif (historyAction) locationHistoryActions.set(this.latestLocation, historyAction);\n\t\t\t\t\t\telse locationHistoryActions.delete(this.latestLocation);\n\t\t\t\t\t\tconst next = this.latestLocation;\n\t\t\t\t\t\tconst locationChangeInfo = getLocationChangeInfo(next, this.stores.resolvedLocation.get());\n\t\t\t\t\t\tif (!this.stores.redirect.get()) this.emit({\n\t\t\t\t\t\t\ttype: \"onBeforeNavigate\",\n\t\t\t\t\t\t\t...locationChangeInfo\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.emit({\n\t\t\t\t\t\t\ttype: \"onBeforeLoad\",\n\t\t\t\t\t\t\t...locationChangeInfo\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait loadMatches({\n\t\t\t\t\t\t\trouter: this,\n\t\t\t\t\t\t\tsync: opts?.sync,\n\t\t\t\t\t\t\tforceStaleReload: previousLocation.href === next.href,\n\t\t\t\t\t\t\tmatches: this.stores.pendingMatches.get(),\n\t\t\t\t\t\t\tlocation: next,\n\t\t\t\t\t\t\tupdateMatch: this.updateMatch,\n\t\t\t\t\t\t\tonReady: async () => {\n\t\t\t\t\t\t\t\tthis.startTransition(() => {\n\t\t\t\t\t\t\t\t\tthis.startViewTransition(async () => {\n\t\t\t\t\t\t\t\t\t\tlet exitingMatches = null;\n\t\t\t\t\t\t\t\t\t\tlet hookExitingMatches = null;\n\t\t\t\t\t\t\t\t\t\tlet hookEnteringMatches = null;\n\t\t\t\t\t\t\t\t\t\tlet hookStayingMatches = null;\n\t\t\t\t\t\t\t\t\t\tthis.batch(() => {\n\t\t\t\t\t\t\t\t\t\t\tconst pendingMatches = this.stores.pendingMatches.get();\n\t\t\t\t\t\t\t\t\t\t\tconst mountPending = pendingMatches.length;\n\t\t\t\t\t\t\t\t\t\t\tconst currentMatches = this.stores.matches.get();\n\t\t\t\t\t\t\t\t\t\t\texitingMatches = mountPending ? currentMatches.filter((match) => !this.stores.pendingMatchStores.has(match.id)) : null;\n\t\t\t\t\t\t\t\t\t\t\tconst pendingRouteIds = /* @__PURE__ */ new Set();\n\t\t\t\t\t\t\t\t\t\t\tfor (const s of this.stores.pendingMatchStores.values()) if (s.routeId) pendingRouteIds.add(s.routeId);\n\t\t\t\t\t\t\t\t\t\t\tconst activeRouteIds = /* @__PURE__ */ new Set();\n\t\t\t\t\t\t\t\t\t\t\tfor (const s of this.stores.matchStores.values()) if (s.routeId) activeRouteIds.add(s.routeId);\n\t\t\t\t\t\t\t\t\t\t\thookExitingMatches = mountPending ? currentMatches.filter((match) => !pendingRouteIds.has(match.routeId)) : null;\n\t\t\t\t\t\t\t\t\t\t\thookEnteringMatches = mountPending ? pendingMatches.filter((match) => !activeRouteIds.has(match.routeId)) : null;\n\t\t\t\t\t\t\t\t\t\t\thookStayingMatches = mountPending ? pendingMatches.filter((match) => activeRouteIds.has(match.routeId)) : currentMatches;\n\t\t\t\t\t\t\t\t\t\t\tthis.stores.isLoading.set(false);\n\t\t\t\t\t\t\t\t\t\t\tthis.stores.loadedAt.set(Date.now());\n\t\t\t\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t\t\t\t* When committing new matches, cache any exiting matches that are still usable.\n\t\t\t\t\t\t\t\t\t\t\t* Routes that resolved with `status: 'error'` or `status: 'notFound'` are\n\t\t\t\t\t\t\t\t\t\t\t* deliberately excluded from `cachedMatches` so that subsequent invalidations\n\t\t\t\t\t\t\t\t\t\t\t* or reloads re-run their loaders instead of reusing the failed/not-found data.\n\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\t\t\t\tif (mountPending) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.stores.setMatches(pendingMatches);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.stores.setPending([]);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.stores.setCached([...this.stores.cachedMatches.get(), ...exitingMatches.filter((d) => d.status !== \"error\" && d.status !== \"notFound\" && d.status !== \"redirected\")]);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.clearExpiredCache();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tfor (const [matches, hook] of [\n\t\t\t\t\t\t\t\t\t\t\t[hookExitingMatches, \"onLeave\"],\n\t\t\t\t\t\t\t\t\t\t\t[hookEnteringMatches, \"onEnter\"],\n\t\t\t\t\t\t\t\t\t\t\t[hookStayingMatches, \"onStay\"]\n\t\t\t\t\t\t\t\t\t\t]) {\n\t\t\t\t\t\t\t\t\t\t\tif (!matches) continue;\n\t\t\t\t\t\t\t\t\t\t\tfor (const match of matches) this.looseRoutesById[match.routeId].options[hook]?.(match);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tif (isRedirect(err)) {\n\t\t\t\t\t\t\tredirect = err;\n\t\t\t\t\t\t\tif (!(isServer ?? this.isServer)) this.navigate({\n\t\t\t\t\t\t\t\t...redirect.options,\n\t\t\t\t\t\t\t\treplace: true,\n\t\t\t\t\t\t\t\tignoreBlocker: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (isNotFound(err)) notFound = err;\n\t\t\t\t\t\tconst nextStatusCode = redirect ? redirect.status : notFound ? 404 : this.stores.matches.get().some((d) => d.status === \"error\") ? 500 : 200;\n\t\t\t\t\t\tthis.batch(() => {\n\t\t\t\t\t\t\tthis.stores.statusCode.set(nextStatusCode);\n\t\t\t\t\t\t\tthis.stores.redirect.set(redirect);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.latestLoadPromise === loadPromise) {\n\t\t\t\t\t\tthis.commitLocationPromise?.resolve();\n\t\t\t\t\t\tthis.latestLoadPromise = void 0;\n\t\t\t\t\t\tthis.commitLocationPromise = void 0;\n\t\t\t\t\t}\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis.latestLoadPromise = loadPromise;\n\t\t\tawait loadPromise;\n\t\t\twhile (this.latestLoadPromise && loadPromise !== this.latestLoadPromise) await this.latestLoadPromise;\n\t\t\tlet newStatusCode = void 0;\n\t\t\tif (this.hasNotFoundMatch()) newStatusCode = 404;\n\t\t\telse if (this.stores.matches.get().some((d) => d.status === \"error\")) newStatusCode = 500;\n\t\t\tif (newStatusCode !== void 0) this.stores.statusCode.set(newStatusCode);\n\t\t};\n\t\tthis.startViewTransition = (fn) => {\n\t\t\tconst shouldViewTransition = this.shouldViewTransition ?? this.options.defaultViewTransition;\n\t\t\tthis.shouldViewTransition = void 0;\n\t\t\tif (shouldViewTransition && typeof document !== \"undefined\" && \"startViewTransition\" in document && typeof document.startViewTransition === \"function\") {\n\t\t\t\tlet startViewTransitionParams;\n\t\t\t\tif (typeof shouldViewTransition === \"object\" && this.isViewTransitionTypesSupported) {\n\t\t\t\t\tconst next = this.latestLocation;\n\t\t\t\t\tconst prevLocation = this.stores.resolvedLocation.get();\n\t\t\t\t\tconst resolvedViewTransitionTypes = typeof shouldViewTransition.types === \"function\" ? shouldViewTransition.types(getLocationChangeInfo(next, prevLocation)) : shouldViewTransition.types;\n\t\t\t\t\tif (resolvedViewTransitionTypes === false) {\n\t\t\t\t\t\tfn();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tstartViewTransitionParams = {\n\t\t\t\t\t\tupdate: fn,\n\t\t\t\t\t\ttypes: resolvedViewTransitionTypes\n\t\t\t\t\t};\n\t\t\t\t} else startViewTransitionParams = fn;\n\t\t\t\tdocument.startViewTransition(startViewTransitionParams);\n\t\t\t} else fn();\n\t\t};\n\t\tthis.updateMatch = (id, updater) => {\n\t\t\tthis.startTransition(() => {\n\t\t\t\tconst pendingMatch = this.stores.pendingMatchStores.get(id);\n\t\t\t\tif (pendingMatch) {\n\t\t\t\t\tpendingMatch.set(updater);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst activeMatch = this.stores.matchStores.get(id);\n\t\t\t\tif (activeMatch) {\n\t\t\t\t\tactiveMatch.set(updater);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst cachedMatch = this.stores.cachedMatchStores.get(id);\n\t\t\t\tif (cachedMatch) {\n\t\t\t\t\tconst next = updater(cachedMatch.get());\n\t\t\t\t\tif (next.status === \"redirected\") {\n\t\t\t\t\t\tif (this.stores.cachedMatchStores.delete(id)) this.stores.cachedIds.set((prev) => prev.filter((matchId) => matchId !== id));\n\t\t\t\t\t} else cachedMatch.set(next);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tthis.getMatch = (matchId) => {\n\t\t\treturn this.stores.cachedMatchStores.get(matchId)?.get() ?? this.stores.pendingMatchStores.get(matchId)?.get() ?? this.stores.matchStores.get(matchId)?.get();\n\t\t};\n\t\tthis.invalidate = (opts) => {\n\t\t\tconst invalidate = (d) => {\n\t\t\t\tif (opts?.filter?.(d) ?? true) return {\n\t\t\t\t\t...d,\n\t\t\t\t\tinvalid: true,\n\t\t\t\t\t...opts?.forcePending || d.status === \"error\" || d.status === \"notFound\" ? {\n\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\terror: void 0\n\t\t\t\t\t} : void 0\n\t\t\t\t};\n\t\t\t\treturn d;\n\t\t\t};\n\t\t\tthis.batch(() => {\n\t\t\t\tthis.stores.setMatches(this.stores.matches.get().map(invalidate));\n\t\t\t\tthis.stores.setCached(this.stores.cachedMatches.get().map(invalidate));\n\t\t\t\tthis.stores.setPending(this.stores.pendingMatches.get().map(invalidate));\n\t\t\t});\n\t\t\tthis.shouldViewTransition = false;\n\t\t\treturn this.load({ sync: opts?.sync });\n\t\t};\n\t\tthis.getParsedLocationHref = (location) => {\n\t\t\treturn location.publicHref || \"/\";\n\t\t};\n\t\tthis.resolveRedirect = (redirect) => {\n\t\t\tconst locationHeader = redirect.headers.get(\"Location\");\n\t\t\tif (!redirect.options.href || redirect.options._builtLocation) {\n\t\t\t\tconst location = redirect.options._builtLocation ?? this.buildLocation(redirect.options);\n\t\t\t\tconst href = this.getParsedLocationHref(location);\n\t\t\t\tredirect.options.href = href;\n\t\t\t\tredirect.headers.set(\"Location\", href);\n\t\t\t} else if (locationHeader) try {\n\t\t\t\tconst url = new URL(locationHeader);\n\t\t\t\tif (this.origin && url.origin === this.origin) {\n\t\t\t\t\tconst href = url.pathname + url.search + url.hash;\n\t\t\t\t\tredirect.options.href = href;\n\t\t\t\t\tredirect.headers.set(\"Location\", href);\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\tif (redirect.options.href && !redirect.options._builtLocation && isDangerousProtocol(redirect.options.href, this.protocolAllowlist)) throw new Error(process.env.NODE_ENV !== \"production\" ? `Redirect blocked: unsafe protocol in href \"${redirect.options.href}\". Allowed protocols: ${Array.from(this.protocolAllowlist).join(\", \")}.` : \"Redirect blocked: unsafe protocol\");\n\t\t\tif (!redirect.headers.get(\"Location\")) redirect.headers.set(\"Location\", redirect.options.href);\n\t\t\treturn redirect;\n\t\t};\n\t\tthis.clearCache = (opts) => {\n\t\t\tconst filter = opts?.filter;\n\t\t\tif (filter !== void 0) this.stores.setCached(this.stores.cachedMatches.get().filter((m) => !filter(m)));\n\t\t\telse this.stores.setCached([]);\n\t\t};\n\t\tthis.clearExpiredCache = () => {\n\t\t\tconst now = Date.now();\n\t\t\tconst filter = (d) => {\n\t\t\t\tconst route = this.looseRoutesById[d.routeId];\n\t\t\t\tif (!route.options.loader) return true;\n\t\t\t\tconst gcTime = (d.preload ? route.options.preloadGcTime ?? this.options.defaultPreloadGcTime : route.options.gcTime ?? this.options.defaultGcTime) ?? 300 * 1e3;\n\t\t\t\tif (d.status === \"error\") return true;\n\t\t\t\treturn now - d.updatedAt >= gcTime;\n\t\t\t};\n\t\t\tthis.clearCache({ filter });\n\t\t};\n\t\tthis.loadRouteChunk = loadRouteChunk;\n\t\tthis.preloadRoute = async (opts) => {\n\t\t\tconst next = opts._builtLocation ?? this.buildLocation(opts);\n\t\t\tlet matches = this.matchRoutes(next, {\n\t\t\t\tthrowOnError: true,\n\t\t\t\tpreload: true,\n\t\t\t\tdest: opts\n\t\t\t});\n\t\t\tconst activeMatchIds = new Set([...this.stores.matchesId.get(), ...this.stores.pendingIds.get()]);\n\t\t\tconst loadedMatchIds = new Set([...activeMatchIds, ...this.stores.cachedIds.get()]);\n\t\t\tconst matchesToCache = matches.filter((match) => !loadedMatchIds.has(match.id));\n\t\t\tif (matchesToCache.length) {\n\t\t\t\tconst cachedMatches = this.stores.cachedMatches.get();\n\t\t\t\tthis.stores.setCached([...cachedMatches, ...matchesToCache]);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmatches = await loadMatches({\n\t\t\t\t\trouter: this,\n\t\t\t\t\tmatches,\n\t\t\t\t\tlocation: next,\n\t\t\t\t\tpreload: true,\n\t\t\t\t\tupdateMatch: (id, updater) => {\n\t\t\t\t\t\tif (activeMatchIds.has(id)) matches = matches.map((d) => d.id === id ? updater(d) : d);\n\t\t\t\t\t\telse this.updateMatch(id, updater);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn matches;\n\t\t\t} catch (err) {\n\t\t\t\tif (isRedirect(err)) {\n\t\t\t\t\tif (err.options.reloadDocument) return;\n\t\t\t\t\treturn await this.preloadRoute({\n\t\t\t\t\t\t...err.options,\n\t\t\t\t\t\t_fromLocation: next\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (!isNotFound(err)) console.error(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\t\tthis.matchRoute = (location, opts) => {\n\t\t\tconst matchLocation = {\n\t\t\t\t...location,\n\t\t\t\tto: location.to ? this.resolvePathWithBase(location.from || \"\", location.to) : void 0,\n\t\t\t\tparams: location.params || {},\n\t\t\t\tleaveParams: true\n\t\t\t};\n\t\t\tconst next = this.buildLocation(matchLocation);\n\t\t\tif (opts?.pending && this.stores.status.get() !== \"pending\") return false;\n\t\t\tconst baseLocation = (opts?.pending === void 0 ? !this.stores.isLoading.get() : opts.pending) ? this.latestLocation : this.stores.resolvedLocation.get() || this.stores.location.get();\n\t\t\tconst match = findSingleMatch(next.pathname, opts?.caseSensitive ?? false, opts?.fuzzy ?? false, baseLocation.pathname, this.processedTree);\n\t\t\tif (!match) return false;\n\t\t\tif (location.params) {\n\t\t\t\tif (!deepEqual(match.rawParams, location.params, { partial: true })) return false;\n\t\t\t}\n\t\t\tif (opts?.includeSearch ?? true) return deepEqual(baseLocation.search, next.search, { partial: true }) ? match.rawParams : false;\n\t\t\treturn match.rawParams;\n\t\t};\n\t\tthis.hasNotFoundMatch = () => {\n\t\t\treturn this.stores.matches.get().some((d) => d.status === \"notFound\" || d.globalNotFound);\n\t\t};\n\t\tthis.getStoreConfig = getStoreConfig;\n\t\tthis.update({\n\t\t\tdefaultPreloadDelay: 50,\n\t\t\tdefaultPendingMs: 1e3,\n\t\t\tdefaultPendingMinMs: 500,\n\t\t\tcontext: void 0,\n\t\t\t...options,\n\t\t\tcaseSensitive: options.caseSensitive ?? false,\n\t\t\tnotFoundMode: options.notFoundMode ?? \"fuzzy\",\n\t\t\tstringifySearch: options.stringifySearch ?? defaultStringifySearch,\n\t\t\tparseSearch: options.parseSearch ?? defaultParseSearch,\n\t\t\tprotocolAllowlist: options.protocolAllowlist ?? DEFAULT_PROTOCOL_ALLOWLIST\n\t\t});\n\t\tif (typeof document !== \"undefined\") self.__TSR_ROUTER__ = this;\n\t}\n\tisShell() {\n\t\treturn !!this.options.isShell;\n\t}\n\tisPrerendering() {\n\t\treturn !!this.options.isPrerendering;\n\t}\n\tget state() {\n\t\treturn this.stores.__store.get();\n\t}\n\tsetRoutes({ routesById, routesByPath, processedTree }) {\n\t\tthis.routesById = routesById;\n\t\tthis.routesByPath = routesByPath;\n\t\tthis.processedTree = processedTree;\n\t\tconst notFoundRoute = this.options.notFoundRoute;\n\t\tif (notFoundRoute) {\n\t\t\tnotFoundRoute.init({ originalIndex: 99999999999 });\n\t\t\tthis.routesById[notFoundRoute.id] = notFoundRoute;\n\t\t}\n\t}\n\tgetRouteBranch(route) {\n\t\tlet branch = this.routeBranchCache.get(route);\n\t\tif (!branch) {\n\t\t\tbranch = buildRouteBranch(route);\n\t\t\tthis.routeBranchCache.set(route, branch);\n\t\t}\n\t\treturn branch;\n\t}\n\tget looseRoutesById() {\n\t\treturn this.routesById;\n\t}\n\tgetParentContext(parentMatch) {\n\t\treturn !parentMatch?.id ? this.options.context ?? void 0 : parentMatch.context ?? this.options.context ?? void 0;\n\t}\n\tmatchRoutesInternal(next, opts) {\n\t\tconst matchedRoutesResult = this.getMatchedRoutes(next.pathname);\n\t\tconst { foundRoute, routeParams } = matchedRoutesResult;\n\t\tlet { matchedRoutes } = matchedRoutesResult;\n\t\tlet isGlobalNotFound = false;\n\t\tif (foundRoute ? foundRoute.path !== \"/\" && routeParams[\"**\"] : trimPathRight(next.pathname)) if (this.options.notFoundRoute) matchedRoutes = [...matchedRoutes, this.options.notFoundRoute];\n\t\telse isGlobalNotFound = true;\n\t\tconst globalNotFoundRouteId = isGlobalNotFound ? findGlobalNotFoundRouteId(this.options.notFoundMode, matchedRoutes) : void 0;\n\t\tconst matches = new Array(matchedRoutes.length);\n\t\tconst previousActiveMatchesByRouteId = /* @__PURE__ */ new Map();\n\t\tfor (const store of this.stores.matchStores.values()) if (store.routeId) previousActiveMatchesByRouteId.set(store.routeId, store.get());\n\t\tfor (let index = 0; index < matchedRoutes.length; index++) {\n\t\t\tconst route = matchedRoutes[index];\n\t\t\tconst parentMatch = matches[index - 1];\n\t\t\tlet preMatchSearch;\n\t\t\tlet strictMatchSearch;\n\t\t\tlet searchError;\n\t\t\t{\n\t\t\t\tconst parentSearch = parentMatch?.search ?? next.search;\n\t\t\t\tconst parentStrictSearch = parentMatch?._strictSearch ?? void 0;\n\t\t\t\ttry {\n\t\t\t\t\tconst strictSearch = validateSearch(route.options.validateSearch, { ...parentSearch }) ?? void 0;\n\t\t\t\t\tpreMatchSearch = {\n\t\t\t\t\t\t...parentSearch,\n\t\t\t\t\t\t...strictSearch\n\t\t\t\t\t};\n\t\t\t\t\tstrictMatchSearch = {\n\t\t\t\t\t\t...parentStrictSearch,\n\t\t\t\t\t\t...strictSearch\n\t\t\t\t\t};\n\t\t\t\t\tsearchError = void 0;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlet searchParamError = err;\n\t\t\t\t\tif (!(err instanceof SearchParamError)) searchParamError = new SearchParamError(err.message, { cause: err });\n\t\t\t\t\tif (opts?.throwOnError) throw searchParamError;\n\t\t\t\t\tpreMatchSearch = parentSearch;\n\t\t\t\t\tstrictMatchSearch = {};\n\t\t\t\t\tsearchError = searchParamError;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst loaderDeps = route.options.loaderDeps?.({ search: preMatchSearch }) ?? \"\";\n\t\t\tconst loaderDepsHash = loaderDeps ? JSON.stringify(loaderDeps) : \"\";\n\t\t\tconst { interpolatedPath, usedParams } = interpolatePath({\n\t\t\t\tpath: route.fullPath,\n\t\t\t\tparams: routeParams,\n\t\t\t\tdecoder: this.pathParamsDecoder,\n\t\t\t\tserver: this.isServer\n\t\t\t});\n\t\t\tconst matchId = route.id + interpolatedPath + loaderDepsHash;\n\t\t\tconst existingMatch = this.getMatch(matchId);\n\t\t\tconst previousMatch = previousActiveMatchesByRouteId.get(route.id);\n\t\t\tconst strictParams = existingMatch?._strictParams ?? usedParams;\n\t\t\tlet paramsError = void 0;\n\t\t\tif (!existingMatch) try {\n\t\t\t\textractStrictParams(route, strictParams);\n\t\t\t} catch (err) {\n\t\t\t\tif (isNotFound(err) || isRedirect(err)) paramsError = err;\n\t\t\t\telse paramsError = new PathParamError(err.message, { cause: err });\n\t\t\t\tif (opts?.throwOnError) throw paramsError;\n\t\t\t}\n\t\t\tObject.assign(routeParams, strictParams);\n\t\t\tconst cause = previousMatch ? \"stay\" : \"enter\";\n\t\t\tlet match;\n\t\t\tif (existingMatch) match = {\n\t\t\t\t...existingMatch,\n\t\t\t\tcause,\n\t\t\t\tparams: previousMatch?.params ?? routeParams,\n\t\t\t\t_strictParams: strictParams,\n\t\t\t\tsearch: previousMatch ? nullReplaceEqualDeep(previousMatch.search, preMatchSearch) : nullReplaceEqualDeep(existingMatch.search, preMatchSearch),\n\t\t\t\t_strictSearch: strictMatchSearch\n\t\t\t};\n\t\t\telse {\n\t\t\t\tconst status = route.options.loader || route.options.beforeLoad || route.lazyFn || routeNeedsPreload(route) ? \"pending\" : \"success\";\n\t\t\t\tmatch = {\n\t\t\t\t\tid: matchId,\n\t\t\t\t\tssr: isServer ?? this.isServer ? void 0 : route.options.ssr,\n\t\t\t\t\tindex,\n\t\t\t\t\trouteId: route.id,\n\t\t\t\t\tparams: previousMatch?.params ?? routeParams,\n\t\t\t\t\t_strictParams: strictParams,\n\t\t\t\t\tpathname: interpolatedPath,\n\t\t\t\t\tupdatedAt: Date.now(),\n\t\t\t\t\tsearch: previousMatch ? nullReplaceEqualDeep(previousMatch.search, preMatchSearch) : preMatchSearch,\n\t\t\t\t\t_strictSearch: strictMatchSearch,\n\t\t\t\t\tsearchError: void 0,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisFetching: false,\n\t\t\t\t\terror: void 0,\n\t\t\t\t\tparamsError,\n\t\t\t\t\t__routeContext: void 0,\n\t\t\t\t\t_nonReactive: { loadPromise: createControlledPromise() },\n\t\t\t\t\t__beforeLoadContext: void 0,\n\t\t\t\t\tcontext: {},\n\t\t\t\t\tabortController: new AbortController(),\n\t\t\t\t\tfetchCount: 0,\n\t\t\t\t\tcause,\n\t\t\t\t\tloaderDeps: previousMatch ? replaceEqualDeep(previousMatch.loaderDeps, loaderDeps) : loaderDeps,\n\t\t\t\t\tinvalid: false,\n\t\t\t\t\tpreload: false,\n\t\t\t\t\tlinks: void 0,\n\t\t\t\t\tscripts: void 0,\n\t\t\t\t\theadScripts: void 0,\n\t\t\t\t\tmeta: void 0,\n\t\t\t\t\tstaticData: route.options.staticData || {},\n\t\t\t\t\tfullPath: route.fullPath\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!opts?.preload) match.globalNotFound = globalNotFoundRouteId === route.id;\n\t\t\tmatch.searchError = searchError;\n\t\t\tconst parentContext = this.getParentContext(parentMatch);\n\t\t\tmatch.context = {\n\t\t\t\t...parentContext,\n\t\t\t\t...match.__routeContext,\n\t\t\t\t...match.__beforeLoadContext\n\t\t\t};\n\t\t\tmatches[index] = match;\n\t\t}\n\t\tfor (let index = 0; index < matches.length; index++) {\n\t\t\tconst match = matches[index];\n\t\t\tconst route = this.looseRoutesById[match.routeId];\n\t\t\tconst existingMatch = this.getMatch(match.id);\n\t\t\tconst previousMatch = previousActiveMatchesByRouteId.get(match.routeId);\n\t\t\tmatch.params = previousMatch ? nullReplaceEqualDeep(previousMatch.params, routeParams) : routeParams;\n\t\t\tif (!existingMatch) {\n\t\t\t\tconst parentMatch = matches[index - 1];\n\t\t\t\tconst parentContext = this.getParentContext(parentMatch);\n\t\t\t\tif (route.options.context) {\n\t\t\t\t\tconst contextFnContext = {\n\t\t\t\t\t\tdeps: match.loaderDeps,\n\t\t\t\t\t\tparams: match.params,\n\t\t\t\t\t\tcontext: parentContext ?? {},\n\t\t\t\t\t\tlocation: next,\n\t\t\t\t\t\tnavigate: (opts) => this.navigate({\n\t\t\t\t\t\t\t...opts,\n\t\t\t\t\t\t\t_fromLocation: next\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tbuildLocation: this.buildLocation,\n\t\t\t\t\t\tcause: match.cause,\n\t\t\t\t\t\tabortController: match.abortController,\n\t\t\t\t\t\tpreload: !!match.preload,\n\t\t\t\t\t\tmatches,\n\t\t\t\t\t\trouteId: route.id\n\t\t\t\t\t};\n\t\t\t\t\tmatch.__routeContext = route.options.context(contextFnContext) ?? void 0;\n\t\t\t\t}\n\t\t\t\tmatch.context = {\n\t\t\t\t\t...parentContext,\n\t\t\t\t\t...match.__routeContext,\n\t\t\t\t\t...match.__beforeLoadContext\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn matches;\n\t}\n\t/**\n\t* Lightweight route matching for buildLocation.\n\t* Only computes fullPath, accumulated search, and params - skipping expensive\n\t* operations like AbortController, ControlledPromise, loaderDeps, and full match objects.\n\t*/\n\tmatchRoutesLightweight(location) {\n\t\tconst lastStateMatchId = last(this.stores.matchesId.get());\n\t\tconst cached = this.lightweightCache.get(location);\n\t\tif (cached && cached[0] === lastStateMatchId) return cached[1];\n\t\tconst { matchedRoutes, routeParams } = this.getMatchedRoutes(location.pathname);\n\t\tconst lastRoute = last(matchedRoutes);\n\t\tconst accumulatedSearch = { ...location.search };\n\t\tfor (const route of matchedRoutes) try {\n\t\t\tObject.assign(accumulatedSearch, validateSearch(route.options.validateSearch, accumulatedSearch));\n\t\t} catch {}\n\t\tconst lastStateMatch = lastStateMatchId && this.stores.matchStores.get(lastStateMatchId)?.get();\n\t\tconst canReuseParams = lastStateMatch && lastStateMatch.routeId === lastRoute.id && lastStateMatch.pathname === location.pathname;\n\t\tlet params;\n\t\tif (canReuseParams) params = lastStateMatch.params;\n\t\telse {\n\t\t\tconst strictParams = Object.assign(Object.create(null), routeParams);\n\t\t\tfor (const route of matchedRoutes) try {\n\t\t\t\textractStrictParams(route, strictParams);\n\t\t\t} catch {}\n\t\t\tparams = strictParams;\n\t\t}\n\t\tconst result = {\n\t\t\tmatchedRoutes,\n\t\t\tfullPath: lastRoute.fullPath,\n\t\t\tsearch: accumulatedSearch,\n\t\t\tparams\n\t\t};\n\t\tthis.lightweightCache.set(location, [lastStateMatchId, result]);\n\t\treturn result;\n\t}\n};\n/** Error thrown when search parameter validation fails. */\nvar SearchParamError = class extends Error {};\n/** Error thrown when path parameter parsing/validation fails. */\nvar PathParamError = class extends Error {};\nconst normalize = (str) => str.endsWith(\"/\") && str.length > 1 ? str.slice(0, -1) : str;\nfunction comparePaths(a, b) {\n\treturn normalize(a) === normalize(b);\n}\n/**\n* Lazily import a module function and forward arguments to it, retaining\n* parameter and return types for the selected export key.\n*/\nfunction lazyFn(fn, key) {\n\treturn async (...args) => {\n\t\treturn (await fn())[key || \"default\"](...args);\n\t};\n}\n/** Create an initial RouterState from a parsed location. */\nfunction getInitialRouterState(location) {\n\treturn {\n\t\tloadedAt: 0,\n\t\tisLoading: false,\n\t\tisTransitioning: false,\n\t\tstatus: \"idle\",\n\t\tresolvedLocation: void 0,\n\t\tlocation,\n\t\tmatches: [],\n\t\tstatusCode: 200\n\t};\n}\nfunction validateSearch(validateSearch, input) {\n\tif (validateSearch == null) return {};\n\tif (\"~standard\" in validateSearch) {\n\t\tconst result = validateSearch[\"~standard\"].validate(input);\n\t\tif (result instanceof Promise) throw new SearchParamError(\"Async validation not supported\");\n\t\tif (result.issues) throw new SearchParamError(JSON.stringify(result.issues, void 0, 2), { cause: result });\n\t\treturn result.value;\n\t}\n\tif (\"parse\" in validateSearch) return validateSearch.parse(input);\n\tif (typeof validateSearch === \"function\") return validateSearch(input);\n\treturn {};\n}\n/**\n* Build the matched route chain and extract params for a pathname.\n* Falls back to the root route if no specific route is found.\n*/\nfunction getMatchedRoutes({ pathname, routesById, processedTree }) {\n\tconst routeParams = Object.create(null);\n\tconst trimmedPath = trimPathRight(pathname);\n\tlet foundRoute = void 0;\n\tconst match = findRouteMatch(trimmedPath, processedTree, true);\n\tif (match) {\n\t\tfoundRoute = match.route;\n\t\tObject.assign(routeParams, match.rawParams);\n\t}\n\treturn {\n\t\tmatchedRoutes: match?.branch || [routesById[\"__root__\"]],\n\t\trouteParams,\n\t\tfoundRoute\n\t};\n}\n/**\n* TODO: once caches are persisted across requests on the server,\n* we can cache the built middleware chain using `last(destRoutes)` as the key\n*/\nfunction applySearchMiddleware({ search, dest, destRoutes, _includeValidateSearch }) {\n\treturn buildMiddlewareChain(destRoutes)(search, dest, _includeValidateSearch ?? false);\n}\nfunction buildMiddlewareChain(destRoutes) {\n\tlet dest;\n\tlet includeValidateSearch;\n\tconst middlewares = [];\n\tfor (const route of destRoutes) {\n\t\tconst routeOptions = route.options;\n\t\tif (\"search\" in routeOptions) {\n\t\t\tif (routeOptions.search?.middlewares) middlewares.push(...routeOptions.search.middlewares);\n\t\t} else if (routeOptions.preSearchFilters || routeOptions.postSearchFilters) {\n\t\t\tconst legacyMiddleware = ({ search, next }) => {\n\t\t\t\tconst result = next(routeOptions.preSearchFilters ? routeOptions.preSearchFilters.reduce((prev, next) => next(prev), search) : search);\n\t\t\t\treturn routeOptions.postSearchFilters ? routeOptions.postSearchFilters.reduce((prev, next) => next(prev), result) : result;\n\t\t\t};\n\t\t\tmiddlewares.push(legacyMiddleware);\n\t\t}\n\t\tconst routeValidateSearch = routeOptions.validateSearch;\n\t\tif (routeValidateSearch) {\n\t\t\tconst validate = ({ search, next, meta }) => {\n\t\t\t\tconst result = next(search);\n\t\t\t\tif (includeValidateSearch) try {\n\t\t\t\t\tconst validated = validateSearch(routeValidateSearch, result);\n\t\t\t\t\tif (meta && validated) {\n\t\t\t\t\t\tfor (const key in validated) if (!(key in result)) (meta.defaulted ||= /* @__PURE__ */ new Map()).set(key, validated[key]);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t...validated\n\t\t\t\t\t};\n\t\t\t\t} catch {}\n\t\t\t\treturn result;\n\t\t\t};\n\t\t\tmiddlewares.push(validate);\n\t\t}\n\t}\n\tconst applyNext = (index, currentSearch, meta) => {\n\t\tif (index >= middlewares.length) {\n\t\t\tif (!dest.search) return {};\n\t\t\tif (dest.search === true) return currentSearch;\n\t\t\tconst result = functionalUpdate(dest.search, currentSearch);\n\t\t\tif (meta) meta.explicit = result;\n\t\t\treturn result;\n\t\t}\n\t\tconst next = (newSearch, collectMeta) => {\n\t\t\tif (collectMeta) {\n\t\t\t\tconst nextMeta = meta || {};\n\t\t\t\treturn {\n\t\t\t\t\tsearch: applyNext(index + 1, newSearch, nextMeta),\n\t\t\t\t\tmeta: nextMeta\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn applyNext(index + 1, newSearch, meta);\n\t\t};\n\t\treturn middlewares[index]({\n\t\t\tsearch: currentSearch,\n\t\t\tnext,\n\t\t\tmeta\n\t\t});\n\t};\n\treturn function middleware(search, nextDest, _includeValidateSearch) {\n\t\tdest = nextDest;\n\t\tincludeValidateSearch = _includeValidateSearch;\n\t\treturn applyNext(0, search);\n\t};\n}\nfunction findGlobalNotFoundRouteId(notFoundMode, routes) {\n\tif (notFoundMode !== \"root\") for (let i = routes.length - 1; i >= 0; i--) {\n\t\tconst route = routes[i];\n\t\tif (route.children) return route.id;\n\t}\n\treturn rootRouteId;\n}\nfunction extractStrictParams(route, accumulatedParams) {\n\tconst parseParams = route.options.params?.parse ?? route.options.parseParams;\n\tif (parseParams) {\n\t\tconst result = parseParams(accumulatedParams);\n\t\tif (result === false) throw new Error(\"Route params.parse returned false for a matched route\");\n\t\tObject.assign(accumulatedParams, result);\n\t}\n}\n//#endregion\nexport { PathParamError, RouterCore, SearchParamError, defaultSerializeError, getInitialRouterState, getLocationChangeInfo, getMatchedRoutes, lazyFn, locationHistoryActions, trailingSlashOptions };\n\n//# sourceMappingURL=router.js.map","import { locationHistoryActions } from \"./router.js\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/scroll-restoration.ts\nfunction getSafeSessionStorage() {\n\ttry {\n\t\treturn sessionStorage;\n\t} catch {\n\t\treturn;\n\t}\n}\nconst storageKey = \"tsr-scroll-restoration-v1_3\";\nconst safeSessionStorage = getSafeSessionStorage();\nfunction createScrollRestorationCache() {\n\ttry {\n\t\treturn JSON.parse(safeSessionStorage?.getItem(\"tsr-scroll-restoration-v1_3\") || \"{}\");\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction persistScrollRestorationCache() {\n\ttry {\n\t\tsafeSessionStorage?.setItem(storageKey, JSON.stringify(scrollRestorationCache));\n\t} catch {\n\t\tif (process.env.NODE_ENV !== \"production\") console.warn(\"[ts-router] Could not persist scroll restoration state to sessionStorage.\");\n\t}\n}\nconst scrollRestorationCache = /* @__PURE__ */ createScrollRestorationCache();\nconst scrollRestorationIdAttribute = \"data-scroll-restoration-id\";\n/**\n* The default `getKey` function for `useScrollRestoration`.\n* It returns the `key` from the location state or the `href` of the location.\n*\n* The `location.href` is used as a fallback to support the use case where the location state is not available like the initial render.\n*/\nconst defaultGetScrollRestorationKey = (location) => {\n\treturn location.state.__TSR_key || location.href;\n};\nfunction getScrollRestorationSelector(element) {\n\tconst attrId = element.getAttribute(scrollRestorationIdAttribute);\n\tif (attrId) return `[${scrollRestorationIdAttribute}=\"${attrId}\"]`;\n\tlet selector = \"\";\n\tlet el = element;\n\tlet parent;\n\twhile (parent = el.parentNode) {\n\t\tlet index = 1;\n\t\tlet sibling = el;\n\t\twhile (sibling = sibling.previousElementSibling) index++;\n\t\tconst part = `${el.localName}:nth-child(${index})`;\n\t\tselector = selector ? `${part} > ${selector}` : part;\n\t\tel = parent;\n\t}\n\treturn selector;\n}\nfunction getElementScrollRestorationEntry(router, options) {\n\tconst entries = scrollRestorationCache[(options.getKey || defaultGetScrollRestorationKey)(router.latestLocation)];\n\tif (!entries) return;\n\tif (options.id) return entries[`[${scrollRestorationIdAttribute}=\"${options.id}\"]`];\n\tconst element = options.getElement?.();\n\tif (!element) return;\n\treturn entries[element === window ? windowScrollTarget : getScrollRestorationSelector(element)];\n}\nlet ignoreScroll = false;\nconst windowScrollTarget = \"window\";\nfunction getElement(selector) {\n\ttry {\n\t\treturn typeof selector === \"function\" ? selector() : document.querySelector(selector);\n\t} catch {}\n}\nfunction getScrollToTopElements(scrollToTopSelectors) {\n\tconst elements = [];\n\tfor (const selector of scrollToTopSelectors) {\n\t\tif (selector === windowScrollTarget) continue;\n\t\tconst element = getElement(selector);\n\t\tif (element) elements.push(element);\n\t}\n\treturn elements;\n}\nfunction setupScrollRestoration(router, force) {\n\tconst shouldSetupScrollRestoration = force ?? router.options.scrollRestoration;\n\tconst scroll = router._scroll;\n\tif (shouldSetupScrollRestoration) scroll.restoring = true;\n\tif (isServer ?? router.isServer) return;\n\tconst getKey = router.options.getScrollRestorationKey || defaultGetScrollRestorationKey;\n\tconst trackedScrollEntries = /* @__PURE__ */ new Map();\n\tconst setTrackedScrollEntry = (target, scrollX, scrollY) => {\n\t\tconst entry = trackedScrollEntries.get(target) || {};\n\t\tentry.scrollX = scrollX;\n\t\tentry.scrollY = scrollY;\n\t\ttrackedScrollEntries.set(target, entry);\n\t};\n\tconst onScroll = (event) => {\n\t\tif (ignoreScroll || !scroll.restoring) return;\n\t\tif (event.target === document) setTrackedScrollEntry(windowScrollTarget, scrollX, scrollY);\n\t\telse {\n\t\t\tconst target = event.target;\n\t\t\tsetTrackedScrollEntry(target, target.scrollLeft, target.scrollTop);\n\t\t}\n\t};\n\tconst snapshotCurrentScrollTargets = (restoreKey) => {\n\t\tif (!scroll.restoring) return;\n\t\tconst keyEntry = scrollRestorationCache[restoreKey] ||= {};\n\t\tfor (const [target, position] of trackedScrollEntries) if (target === windowScrollTarget) keyEntry[windowScrollTarget] = position;\n\t\telse if (target.isConnected) keyEntry[getScrollRestorationSelector(target)] = position;\n\t};\n\tif (shouldSetupScrollRestoration && !scroll.restoration) {\n\t\tscroll.restoration = true;\n\t\tignoreScroll = false;\n\t\thistory.scrollRestoration = \"manual\";\n\t\tdocument.addEventListener(\"scroll\", onScroll, true);\n\t\trouter.subscribe(\"onBeforeLoad\", (event) => {\n\t\t\tif (event.fromLocation) snapshotCurrentScrollTargets(getKey(event.fromLocation));\n\t\t\ttrackedScrollEntries.clear();\n\t\t});\n\t\taddEventListener(\"pagehide\", () => {\n\t\t\tsnapshotCurrentScrollTargets(getKey(router.stores.resolvedLocation.get() ?? router.stores.location.get()));\n\t\t\tpersistScrollRestorationCache();\n\t\t});\n\t}\n\tif (scroll.reset) return;\n\tscroll.reset = true;\n\trouter.subscribe(\"onRendered\", (event) => {\n\t\tconst behavior = router.options.scrollRestorationBehavior;\n\t\tconst scrollToTopSelectors = router.options.scrollToTopSelectors;\n\t\tconst shouldResetScroll = scroll.next;\n\t\tlet scrollToTopElements;\n\t\ttrackedScrollEntries.clear();\n\t\tif (!shouldResetScroll) scroll.next = true;\n\t\tif (typeof router.options.scrollRestoration === \"function\" && !router.options.scrollRestoration({ location: router.latestLocation })) return;\n\t\tconst cacheKey = getKey(event.toLocation);\n\t\tconst fromCacheKey = event.fromLocation && getKey(event.fromLocation);\n\t\tif (scroll.restoring && fromCacheKey && fromCacheKey !== cacheKey) {\n\t\t\tconst fromElementEntries = scrollRestorationCache[fromCacheKey];\n\t\t\tif (fromElementEntries) {\n\t\t\t\tlet toElementEntries = scrollRestorationCache[cacheKey];\n\t\t\t\tfor (const elementSelector in fromElementEntries) {\n\t\t\t\t\tif (elementSelector === windowScrollTarget) {\n\t\t\t\t\t\tif (shouldResetScroll) continue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst element = getElement(elementSelector);\n\t\t\t\t\t\tif (!element) continue;\n\t\t\t\t\t\tif (shouldResetScroll && scrollToTopSelectors) {\n\t\t\t\t\t\t\tscrollToTopElements ??= getScrollToTopElements(scrollToTopSelectors);\n\t\t\t\t\t\t\tif (scrollToTopElements.includes(element)) continue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!toElementEntries) toElementEntries = scrollRestorationCache[cacheKey] = {};\n\t\t\t\t\ttoElementEntries[elementSelector] ??= fromElementEntries[elementSelector];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tignoreScroll = true;\n\t\ttry {\n\t\t\tconst hash = event.toLocation.hash;\n\t\t\tconst hashScrollIntoViewOptions = event.toLocation.state.__hashScrollIntoViewOptions ?? true;\n\t\t\tlet windowRestored = false;\n\t\t\tif (shouldResetScroll) {\n\t\t\t\tconst action = locationHistoryActions.get(event.toLocation);\n\t\t\t\tconst skipWindowRestore = hash && hashScrollIntoViewOptions && (action === \"PUSH\" || action === \"REPLACE\");\n\t\t\t\tconst elementEntries = scroll.restoring ? scrollRestorationCache[cacheKey] : void 0;\n\t\t\t\tif (elementEntries) for (const elementSelector in elementEntries) {\n\t\t\t\t\tconst { scrollX, scrollY } = elementEntries[elementSelector];\n\t\t\t\t\tif (elementSelector === windowScrollTarget) {\n\t\t\t\t\t\tif (skipWindowRestore) continue;\n\t\t\t\t\t\tscrollTo({\n\t\t\t\t\t\t\ttop: scrollY,\n\t\t\t\t\t\t\tleft: scrollX,\n\t\t\t\t\t\t\tbehavior\n\t\t\t\t\t\t});\n\t\t\t\t\t\twindowRestored = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst element = getElement(elementSelector);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\telement.scrollLeft = scrollX;\n\t\t\t\t\t\t\telement.scrollTop = scrollY;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!windowRestored && !hash) {\n\t\t\t\t\tconst scrollOptions = {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbehavior\n\t\t\t\t\t};\n\t\t\t\t\tscrollTo(scrollOptions);\n\t\t\t\t\tif (scrollToTopSelectors) {\n\t\t\t\t\t\tscrollToTopElements ??= getScrollToTopElements(scrollToTopSelectors);\n\t\t\t\t\t\tfor (const element of scrollToTopElements) element.scrollTo(scrollOptions);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!windowRestored && hash && hashScrollIntoViewOptions) document.getElementById(hash)?.scrollIntoView(hashScrollIntoViewOptions);\n\t\t} finally {\n\t\t\tignoreScroll = false;\n\t\t}\n\t});\n}\n//#endregion\nexport { defaultGetScrollRestorationKey, getElementScrollRestorationEntry, setupScrollRestoration, storageKey };\n\n//# sourceMappingURL=scroll-restoration.js.map","//#region src/link.ts\nconst preloadWarning = \"Error preloading route! ☝️\";\n//#endregion\nexport { preloadWarning };\n\n//# sourceMappingURL=link.js.map","import { invariant } from \"./invariant.js\";\nimport { joinPaths, trimPathLeft, trimPathRight } from \"./path.js\";\nimport { notFound } from \"./not-found.js\";\nimport { rootRouteId } from \"./root.js\";\nimport { redirect } from \"./redirect.js\";\n//#region src/route.ts\nvar BaseRoute = class {\n\tget to() {\n\t\treturn this._to;\n\t}\n\tget id() {\n\t\treturn this._id;\n\t}\n\tget path() {\n\t\treturn this._path;\n\t}\n\tget fullPath() {\n\t\treturn this._fullPath;\n\t}\n\tconstructor(options) {\n\t\tthis.init = (opts) => {\n\t\t\tthis.originalIndex = opts.originalIndex;\n\t\t\tconst options = this.options;\n\t\t\tconst isRoot = !options?.path && !options?.id;\n\t\t\tthis.parentRoute = this.options.getParentRoute?.();\n\t\t\tif (isRoot) this._path = rootRouteId;\n\t\t\telse if (!this.parentRoute) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Child Route instances must pass a 'getParentRoute: () => ParentRoute' option that returns a Route instance.`);\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\tlet path = isRoot ? rootRouteId : options?.path;\n\t\t\tif (path && path !== \"/\") path = trimPathLeft(path);\n\t\t\tconst customId = options?.id || path;\n\t\t\tlet id = isRoot ? rootRouteId : joinPaths([this.parentRoute.id === \"__root__\" ? \"\" : this.parentRoute.id, customId]);\n\t\t\tif (path === \"__root__\") path = \"/\";\n\t\t\tif (id !== \"__root__\") id = joinPaths([\"/\", id]);\n\t\t\tconst fullPath = id === \"__root__\" ? \"/\" : joinPaths([this.parentRoute.fullPath, path]);\n\t\t\tthis._path = path;\n\t\t\tthis._id = id;\n\t\t\tthis._fullPath = fullPath;\n\t\t\tthis._to = trimPathRight(fullPath);\n\t\t};\n\t\tthis.addChildren = (children) => {\n\t\t\treturn this._addFileChildren(children);\n\t\t};\n\t\tthis._addFileChildren = (children) => {\n\t\t\tif (Array.isArray(children)) this.children = children;\n\t\t\tif (typeof children === \"object\" && children !== null) this.children = Object.values(children);\n\t\t\treturn this;\n\t\t};\n\t\tthis._addFileTypes = () => {\n\t\t\treturn this;\n\t\t};\n\t\tthis.updateLoader = (options) => {\n\t\t\tObject.assign(this.options, options);\n\t\t\treturn this;\n\t\t};\n\t\tthis.update = (options) => {\n\t\t\tObject.assign(this.options, options);\n\t\t\treturn this;\n\t\t};\n\t\tthis.lazy = (lazyFn) => {\n\t\t\tthis.lazyFn = lazyFn;\n\t\t\treturn this;\n\t\t};\n\t\tthis.redirect = (opts) => redirect({\n\t\t\tfrom: this.fullPath,\n\t\t\t...opts\n\t\t});\n\t\tthis.options = options || {};\n\t\tthis.isRoot = !options?.getParentRoute;\n\t\tif (options?.id && options?.path) throw new Error(`Route cannot have both an 'id' and a 'path' option.`);\n\t}\n};\nvar BaseRouteApi = class {\n\tconstructor({ id }) {\n\t\tthis.notFound = (opts) => {\n\t\t\treturn notFound({\n\t\t\t\trouteId: this.id,\n\t\t\t\t...opts\n\t\t\t});\n\t\t};\n\t\tthis.redirect = (opts) => redirect({\n\t\t\tfrom: this.id,\n\t\t\t...opts\n\t\t});\n\t\tthis.id = id;\n\t}\n};\nvar BaseRootRoute = class extends BaseRoute {\n\tconstructor(options) {\n\t\tsuper(options);\n\t}\n};\n//#endregion\nexport { BaseRootRoute, BaseRoute, BaseRouteApi };\n\n//# sourceMappingURL=route.js.map","\"use client\";\nimport * as React$1 from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\n//#region src/CatchBoundary.tsx\nfunction CatchBoundary(props) {\n\tconst errorComponent = props.errorComponent ?? ErrorComponent;\n\treturn /* @__PURE__ */ jsx(CatchBoundaryImpl, {\n\t\tgetResetKey: props.getResetKey,\n\t\tonCatch: props.onCatch,\n\t\tchildren: ({ error, reset }) => {\n\t\t\tif (error) return React$1.createElement(errorComponent, {\n\t\t\t\terror,\n\t\t\t\treset\n\t\t\t});\n\t\t\treturn props.children;\n\t\t}\n\t});\n}\nvar CatchBoundaryImpl = class extends React$1.Component {\n\tconstructor(..._args) {\n\t\tsuper(..._args);\n\t\tthis.state = { error: null };\n\t}\n\tstatic getDerivedStateFromProps(props, state) {\n\t\tconst resetKey = props.getResetKey();\n\t\tif (state.error && state.resetKey !== resetKey) return {\n\t\t\tresetKey,\n\t\t\terror: null\n\t\t};\n\t\treturn { resetKey };\n\t}\n\tstatic getDerivedStateFromError(error) {\n\t\treturn { error };\n\t}\n\treset() {\n\t\tthis.setState({ error: null });\n\t}\n\tcomponentDidCatch(error, errorInfo) {\n\t\tif (this.props.onCatch) this.props.onCatch(error, errorInfo);\n\t}\n\trender() {\n\t\treturn this.props.children({\n\t\t\terror: this.state.error,\n\t\t\treset: () => {\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t});\n\t}\n};\nfunction ErrorComponent({ error }) {\n\tconst [show, setShow] = React$1.useState(process.env.NODE_ENV !== \"production\");\n\treturn /* @__PURE__ */ jsxs(\"div\", {\n\t\tstyle: {\n\t\t\tpadding: \".5rem\",\n\t\t\tmaxWidth: \"100%\"\n\t\t},\n\t\tchildren: [\n\t\t\t/* @__PURE__ */ jsxs(\"div\", {\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: \".5rem\"\n\t\t\t\t},\n\t\t\t\tchildren: [/* @__PURE__ */ jsx(\"strong\", {\n\t\t\t\t\tstyle: { fontSize: \"1rem\" },\n\t\t\t\t\tchildren: \"Something went wrong!\"\n\t\t\t\t}), /* @__PURE__ */ jsx(\"button\", {\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tappearance: \"none\",\n\t\t\t\t\t\tfontSize: \".6em\",\n\t\t\t\t\t\tborder: \"1px solid currentColor\",\n\t\t\t\t\t\tpadding: \".1rem .2rem\",\n\t\t\t\t\t\tfontWeight: \"bold\",\n\t\t\t\t\t\tborderRadius: \".25rem\"\n\t\t\t\t\t},\n\t\t\t\t\tonClick: () => setShow((d) => !d),\n\t\t\t\t\tchildren: show ? \"Hide Error\" : \"Show Error\"\n\t\t\t\t})]\n\t\t\t}),\n\t\t\t/* @__PURE__ */ jsx(\"div\", { style: { height: \".25rem\" } }),\n\t\t\tshow ? /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsx(\"pre\", {\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: \".7em\",\n\t\t\t\t\tborder: \"1px solid red\",\n\t\t\t\t\tborderRadius: \".25rem\",\n\t\t\t\t\tpadding: \".3rem\",\n\t\t\t\t\tcolor: \"red\",\n\t\t\t\t\toverflow: \"auto\"\n\t\t\t\t},\n\t\t\t\tchildren: error.message ? /* @__PURE__ */ jsx(\"code\", { children: error.message }) : null\n\t\t\t}) }) : null\n\t\t]\n\t});\n}\n//#endregion\nexport { CatchBoundary, ErrorComponent };\n\n//# sourceMappingURL=CatchBoundary.js.map","\"use client\";\nimport React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/ClientOnly.tsx\n/**\n* Render the children only after the JS has loaded client-side. Use an optional\n* fallback component if the JS is not yet loaded.\n*\n* @example\n* Render a Chart component if JS loads, renders a simple FakeChart\n* component server-side or if there is no JS. The FakeChart can have only the\n* UI without the behavior or be a loading spinner or skeleton.\n*\n* ```tsx\n* return (\n* <ClientOnly fallback={<FakeChart />}>\n* <Chart />\n* </ClientOnly>\n* )\n* ```\n*/\nfunction ClientOnly({ children, fallback = null }) {\n\treturn useHydrated() ? /* @__PURE__ */ jsx(React.Fragment, { children }) : /* @__PURE__ */ jsx(React.Fragment, { children: fallback });\n}\n/**\n* Return a boolean indicating if the JS has been hydrated already.\n* When doing Server-Side Rendering, the result will always be false.\n* When doing Client-Side Rendering, the result will always be false on the\n* first render and true from then on. Even if a new component renders it will\n* always start with true.\n*\n* @example\n* ```tsx\n* // Disable a button that needs JS to work.\n* let hydrated = useHydrated()\n* return (\n* <button type=\"button\" disabled={!hydrated} onClick={doSomethingCustom}>\n* Click me\n* </button>\n* )\n* ```\n* @returns True if the JS has been hydrated already, false otherwise.\n*/\nfunction useHydrated() {\n\treturn React.useSyncExternalStore(subscribe, () => true, () => false);\n}\nfunction subscribe() {\n\treturn () => {};\n}\n//#endregion\nexport { ClientOnly, useHydrated };\n\n//# sourceMappingURL=ClientOnly.js.map","\"use client\";\nimport * as React$1 from \"react\";\n//#region src/routerContext.tsx\nvar routerContext = React$1.createContext(null);\n//#endregion\nexport { routerContext };\n\n//# sourceMappingURL=routerContext.js.map","\"use client\";\nimport { routerContext } from \"./routerContext.js\";\nimport * as React$1 from \"react\";\n//#region src/useRouter.tsx\n/**\n* Access the current TanStack Router instance from React context.\n* Must be used within a `RouterProvider`.\n*\n* Options:\n* - `warn`: Log a warning if no router context is found (default: true).\n*\n* @returns The registered router instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useRouterHook\n*/\nfunction useRouter(opts) {\n\tconst value = React$1.useContext(routerContext);\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif ((opts?.warn ?? true) && !value) console.warn(\"Warning: useRouter must be used inside a <RouterProvider> component!\");\n\t}\n\treturn value;\n}\n//#endregion\nexport { useRouter };\n\n//# sourceMappingURL=useRouter.js.map","\"use client\";\nimport * as React$1 from \"react\";\n//#region src/matchContext.tsx\nvar matchContext = React$1.createContext(void 0);\nvar dummyMatchContext = React$1.createContext(void 0);\n//#endregion\nexport { dummyMatchContext, matchContext };\n\n//# sourceMappingURL=matchContext.js.map","var ReactiveFlags = /* @__PURE__ */ ((ReactiveFlags2) => {\n ReactiveFlags2[ReactiveFlags2[\"None\"] = 0] = \"None\";\n ReactiveFlags2[ReactiveFlags2[\"Mutable\"] = 1] = \"Mutable\";\n ReactiveFlags2[ReactiveFlags2[\"Watching\"] = 2] = \"Watching\";\n ReactiveFlags2[ReactiveFlags2[\"RecursedCheck\"] = 4] = \"RecursedCheck\";\n ReactiveFlags2[ReactiveFlags2[\"Recursed\"] = 8] = \"Recursed\";\n ReactiveFlags2[ReactiveFlags2[\"Dirty\"] = 16] = \"Dirty\";\n ReactiveFlags2[ReactiveFlags2[\"Pending\"] = 32] = \"Pending\";\n return ReactiveFlags2;\n})(ReactiveFlags || {});\n// @__NO_SIDE_EFFECTS__\nfunction createReactiveSystem({\n update,\n notify,\n unwatched\n}) {\n return {\n link,\n unlink,\n propagate,\n checkDirty,\n shallowPropagate\n };\n function link(dep, sub, version) {\n const prevDep = sub.depsTail;\n if (prevDep !== void 0 && prevDep.dep === dep) {\n return;\n }\n const nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;\n if (nextDep !== void 0 && nextDep.dep === dep) {\n nextDep.version = version;\n sub.depsTail = nextDep;\n return;\n }\n const prevSub = dep.subsTail;\n if (prevSub !== void 0 && prevSub.version === version && prevSub.sub === sub) {\n return;\n }\n const newLink = sub.depsTail = dep.subsTail = {\n version,\n dep,\n sub,\n prevDep,\n nextDep,\n prevSub,\n nextSub: void 0\n };\n if (nextDep !== void 0) {\n nextDep.prevDep = newLink;\n }\n if (prevDep !== void 0) {\n prevDep.nextDep = newLink;\n } else {\n sub.deps = newLink;\n }\n if (prevSub !== void 0) {\n prevSub.nextSub = newLink;\n } else {\n dep.subs = newLink;\n }\n }\n function unlink(link2, sub = link2.sub) {\n const dep = link2.dep;\n const prevDep = link2.prevDep;\n const nextDep = link2.nextDep;\n const nextSub = link2.nextSub;\n const prevSub = link2.prevSub;\n if (nextDep !== void 0) {\n nextDep.prevDep = prevDep;\n } else {\n sub.depsTail = prevDep;\n }\n if (prevDep !== void 0) {\n prevDep.nextDep = nextDep;\n } else {\n sub.deps = nextDep;\n }\n if (nextSub !== void 0) {\n nextSub.prevSub = prevSub;\n } else {\n dep.subsTail = prevSub;\n }\n if (prevSub !== void 0) {\n prevSub.nextSub = nextSub;\n } else if ((dep.subs = nextSub) === void 0) {\n unwatched(dep);\n }\n return nextDep;\n }\n function propagate(link2) {\n let next = link2.nextSub;\n let stack;\n top: do {\n const sub = link2.sub;\n let flags = sub.flags;\n if (!(flags & (4 | 8 | 16 | 32))) {\n sub.flags = flags | 32;\n } else if (!(flags & (4 | 8))) {\n flags = 0;\n } else if (!(flags & 4)) {\n sub.flags = flags & -9 | 32;\n } else if (!(flags & (16 | 32)) && isValidLink(link2, sub)) {\n sub.flags = flags | (8 | 32);\n flags &= 1;\n } else {\n flags = 0;\n }\n if (flags & 2) {\n notify(sub);\n }\n if (flags & 1) {\n const subSubs = sub.subs;\n if (subSubs !== void 0) {\n const nextSub = (link2 = subSubs).nextSub;\n if (nextSub !== void 0) {\n stack = { value: next, prev: stack };\n next = nextSub;\n }\n continue;\n }\n }\n if ((link2 = next) !== void 0) {\n next = link2.nextSub;\n continue;\n }\n while (stack !== void 0) {\n link2 = stack.value;\n stack = stack.prev;\n if (link2 !== void 0) {\n next = link2.nextSub;\n continue top;\n }\n }\n break;\n } while (true);\n }\n function checkDirty(link2, sub) {\n let stack;\n let checkDepth = 0;\n let dirty = false;\n top: do {\n const dep = link2.dep;\n const flags = dep.flags;\n if (sub.flags & 16) {\n dirty = true;\n } else if ((flags & (1 | 16)) === (1 | 16)) {\n if (update(dep)) {\n const subs = dep.subs;\n if (subs.nextSub !== void 0) {\n shallowPropagate(subs);\n }\n dirty = true;\n }\n } else if ((flags & (1 | 32)) === (1 | 32)) {\n if (link2.nextSub !== void 0 || link2.prevSub !== void 0) {\n stack = { value: link2, prev: stack };\n }\n link2 = dep.deps;\n sub = dep;\n ++checkDepth;\n continue;\n }\n if (!dirty) {\n const nextDep = link2.nextDep;\n if (nextDep !== void 0) {\n link2 = nextDep;\n continue;\n }\n }\n while (checkDepth--) {\n const firstSub = sub.subs;\n const hasMultipleSubs = firstSub.nextSub !== void 0;\n if (hasMultipleSubs) {\n link2 = stack.value;\n stack = stack.prev;\n } else {\n link2 = firstSub;\n }\n if (dirty) {\n if (update(sub)) {\n if (hasMultipleSubs) {\n shallowPropagate(firstSub);\n }\n sub = link2.sub;\n continue;\n }\n dirty = false;\n } else {\n sub.flags &= -33;\n }\n sub = link2.sub;\n const nextDep = link2.nextDep;\n if (nextDep !== void 0) {\n link2 = nextDep;\n continue top;\n }\n }\n return dirty;\n } while (true);\n }\n function shallowPropagate(link2) {\n do {\n const sub = link2.sub;\n const flags = sub.flags;\n if ((flags & (32 | 16)) === 32) {\n sub.flags = flags | 16;\n if ((flags & (2 | 4)) === 2) {\n notify(sub);\n }\n }\n } while ((link2 = link2.nextSub) !== void 0);\n }\n function isValidLink(checkLink, sub) {\n let link2 = sub.depsTail;\n while (link2 !== void 0) {\n if (link2 === checkLink) {\n return true;\n }\n link2 = link2.prevDep;\n }\n return false;\n }\n}\nexport {\n ReactiveFlags,\n createReactiveSystem\n};\n//# sourceMappingURL=alien.js.map\n","import { createReactiveSystem, ReactiveFlags } from \"./alien.js\";\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n const isObserver = typeof nextHandler === \"object\";\n const self = isObserver ? nextHandler : void 0;\n return {\n next: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n error: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n complete: (isObserver ? nextHandler.complete : completionHandler)?.bind(\n self\n )\n };\n}\nconst queuedEffects = [];\nlet cycle = 0;\nconst { link, unlink, propagate, checkDirty, shallowPropagate } = createReactiveSystem({\n update(atom) {\n return atom._update();\n },\n // eslint-disable-next-line no-shadow\n notify(effect2) {\n queuedEffects[queuedEffectsLength++] = effect2;\n effect2.flags &= ~ReactiveFlags.Watching;\n },\n unwatched(atom) {\n if (atom.depsTail !== void 0) {\n atom.depsTail = void 0;\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.Dirty;\n purgeDeps(atom);\n }\n }\n});\nlet notifyIndex = 0;\nlet queuedEffectsLength = 0;\nlet activeSub;\nlet batchDepth = 0;\nfunction batch(fn) {\n try {\n ++batchDepth;\n fn();\n } finally {\n if (!--batchDepth) {\n flush();\n }\n }\n}\nfunction purgeDeps(sub) {\n const depsTail = sub.depsTail;\n let dep = depsTail !== void 0 ? depsTail.nextDep : sub.deps;\n while (dep !== void 0) {\n dep = unlink(dep, sub);\n }\n}\nfunction flush() {\n if (batchDepth > 0) {\n return;\n }\n while (notifyIndex < queuedEffectsLength) {\n const effect2 = queuedEffects[notifyIndex];\n queuedEffects[notifyIndex++] = void 0;\n effect2.notify();\n }\n notifyIndex = 0;\n queuedEffectsLength = 0;\n}\nfunction createAsyncAtom(getValue, options) {\n const ref = {};\n const atom = createAtom(() => {\n getValue().then(\n (data) => {\n const internalAtom = ref.current;\n if (internalAtom._update({ status: \"done\", data })) {\n const subs = internalAtom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n },\n (error) => {\n const internalAtom = ref.current;\n if (internalAtom._update({ status: \"error\", error })) {\n const subs = internalAtom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n }\n );\n return { status: \"pending\" };\n }, options);\n ref.current = atom;\n return atom;\n}\nfunction createAtom(valueOrFn, options) {\n const isComputed = typeof valueOrFn === \"function\";\n const getter = valueOrFn;\n const atom = {\n _snapshot: isComputed ? void 0 : valueOrFn,\n subs: void 0,\n subsTail: void 0,\n deps: void 0,\n depsTail: void 0,\n flags: isComputed ? ReactiveFlags.None : ReactiveFlags.Mutable,\n get() {\n if (activeSub !== void 0) {\n link(atom, activeSub, cycle);\n }\n return atom._snapshot;\n },\n subscribe(observerOrFn) {\n const obs = toObserver(observerOrFn);\n const observed = { current: false };\n const e = effect(() => {\n atom.get();\n if (!observed.current) {\n observed.current = true;\n } else {\n obs.next?.(atom._snapshot);\n }\n });\n return {\n unsubscribe: () => {\n e.stop();\n }\n };\n },\n _update(getValue) {\n const prevSub = activeSub;\n const compare = options?.compare ?? Object.is;\n if (isComputed) {\n activeSub = atom;\n ++cycle;\n atom.depsTail = void 0;\n } else if (getValue === void 0) {\n return false;\n }\n if (isComputed) {\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.RecursedCheck;\n }\n try {\n const oldValue = atom._snapshot;\n const newValue = typeof getValue === \"function\" ? getValue(oldValue) : getValue === void 0 && isComputed ? getter(oldValue) : getValue;\n if (oldValue === void 0 || !compare(oldValue, newValue)) {\n atom._snapshot = newValue;\n return true;\n }\n return false;\n } finally {\n activeSub = prevSub;\n if (isComputed) {\n atom.flags &= ~ReactiveFlags.RecursedCheck;\n }\n purgeDeps(atom);\n }\n }\n };\n if (isComputed) {\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.Dirty;\n atom.get = function() {\n const flags = atom.flags;\n if (flags & ReactiveFlags.Dirty || flags & ReactiveFlags.Pending && checkDirty(atom.deps, atom)) {\n if (atom._update()) {\n const subs = atom.subs;\n if (subs !== void 0) {\n shallowPropagate(subs);\n }\n }\n } else if (flags & ReactiveFlags.Pending) {\n atom.flags = flags & ~ReactiveFlags.Pending;\n }\n if (activeSub !== void 0) {\n link(atom, activeSub, cycle);\n }\n return atom._snapshot;\n };\n } else {\n atom.set = function(valueOrFn2) {\n if (atom._update(valueOrFn2)) {\n const subs = atom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n };\n }\n return atom;\n}\nfunction effect(fn) {\n const run = () => {\n const prevSub = activeSub;\n activeSub = effectObj;\n ++cycle;\n effectObj.depsTail = void 0;\n effectObj.flags = ReactiveFlags.Watching | ReactiveFlags.RecursedCheck;\n try {\n return fn();\n } finally {\n activeSub = prevSub;\n effectObj.flags &= ~ReactiveFlags.RecursedCheck;\n purgeDeps(effectObj);\n }\n };\n const effectObj = {\n deps: void 0,\n depsTail: void 0,\n subs: void 0,\n subsTail: void 0,\n flags: ReactiveFlags.Watching | ReactiveFlags.RecursedCheck,\n notify() {\n const flags = this.flags;\n if (flags & ReactiveFlags.Dirty || flags & ReactiveFlags.Pending && checkDirty(this.deps, this)) {\n run();\n } else {\n this.flags = ReactiveFlags.Watching;\n }\n },\n stop() {\n this.flags = ReactiveFlags.None;\n this.depsTail = void 0;\n purgeDeps(this);\n }\n };\n run();\n return effectObj;\n}\nexport {\n batch,\n createAsyncAtom,\n createAtom,\n flush,\n toObserver\n};\n//# sourceMappingURL=atom.js.map\n","/**\n * @license React\n * use-sync-external-store-shim.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 = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.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 = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { useCallback } from \"react\";\nimport { useSyncExternalStoreWithSelector } from \"use-sync-external-store/shim/with-selector\";\nfunction defaultCompare(a, b) {\n return a === b;\n}\nfunction useStore(atom, selector, compare = defaultCompare) {\n const subscribe = useCallback(\n (handleStoreChange) => {\n if (!atom) {\n return () => {\n };\n }\n const { unsubscribe } = atom.subscribe(handleStoreChange);\n return unsubscribe;\n },\n [atom]\n );\n const boundGetSnapshot = useCallback(() => atom?.get(), [atom]);\n const selectedSnapshot = useSyncExternalStoreWithSelector(\n subscribe,\n boundGetSnapshot,\n boundGetSnapshot,\n selector,\n compare\n );\n return selectedSnapshot;\n}\nexport {\n useStore\n};\n//# sourceMappingURL=useStore.js.map\n","\"use client\";\nimport { dummyMatchContext, matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { invariant, replaceEqualDeep } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/useMatch.tsx\nvar dummyStore = {\n\tget() {},\n\tsubscribe() {\n\t\treturn { unsubscribe() {} };\n\t}\n};\nfunction useStructuralSharing(opts, router) {\n\tconst previousResult = React$1.useRef();\n\treturn (slice) => {\n\t\tconst selected = opts?.select ? opts.select(slice) : slice;\n\t\tif (opts?.structuralSharing ?? router.options.defaultStructuralSharing) return previousResult.current = replaceEqualDeep(previousResult.current, selected);\n\t\treturn selected;\n\t};\n}\n/**\n* Read and select the nearest or targeted route match.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchHook\n*/\nfunction useMatch(opts) {\n\tconst router = useRouter();\n\tconst nearestMatchId = React$1.useContext(opts.from ? dummyMatchContext : matchContext);\n\tconst matchStore = opts.from ? router.stores.getRouteMatchStore(opts.from) : router.stores.matchStores.get(nearestMatchId);\n\tif (isServer ?? router.isServer) {\n\t\tconst match = matchStore?.get();\n\t\tif (!match) {\n\t\t\tif (opts.shouldThrow ?? true) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find ${opts.from ? `an active match from \"${opts.from}\"` : \"a nearest match!\"}`);\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\treturn opts.select ? opts.select(match) : match;\n\t}\n\tconst selector = useStructuralSharing(opts, router);\n\tconst matchSelection = useStore(matchStore ?? dummyStore, (match) => match ? selector(match) : dummyStore);\n\tif (matchSelection !== dummyStore) return matchSelection;\n\tif (opts.shouldThrow ?? true) {\n\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find ${opts.from ? `an active match from \"${opts.from}\"` : \"a nearest match!\"}`);\n\t\tinvariant();\n\t}\n}\n//#endregion\nexport { useMatch, useStructuralSharing };\n\n//# sourceMappingURL=useMatch.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useLoaderData.tsx\n/**\n* Read and select the current route's loader data with type‑safety.\n*\n* Options:\n* - `from`/`strict`: Choose which route's data to read and strictness\n* - `select`: Map the loader data to a derived value\n* - `structuralSharing`: Enable structural sharing for stable references\n*\n* @returns The loader data (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLoaderDataHook\n*/\nfunction useLoaderData(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tstrict: opts.strict,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tselect: (match) => {\n\t\t\treturn opts.select ? opts.select(match.loaderData) : match.loaderData;\n\t\t}\n\t});\n}\n//#endregion\nexport { useLoaderData };\n\n//# sourceMappingURL=useLoaderData.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useLoaderDeps.tsx\n/**\n* Read and select the current route's loader dependencies object.\n*\n* Options:\n* - `from`: Choose which route's loader deps to read\n* - `select`: Map the deps to a derived value\n* - `structuralSharing`: Enable structural sharing for stable references\n*\n* @returns The loader deps (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLoaderDepsHook\n*/\nfunction useLoaderDeps(opts) {\n\tconst { select, ...rest } = opts;\n\treturn useMatch({\n\t\t...rest,\n\t\tselect: (match) => {\n\t\t\treturn select ? select(match.loaderDeps) : match.loaderDeps;\n\t\t}\n\t});\n}\n//#endregion\nexport { useLoaderDeps };\n\n//# sourceMappingURL=useLoaderDeps.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useParams.tsx\n/**\n* Access the current route's path parameters with type-safety.\n*\n* Options:\n* - `from`/`strict`: Specify the matched route and whether to enforce strict typing\n* - `select`: Project the params object to a derived value for memoized renders\n* - `structuralSharing`: Enable structural sharing for stable references\n* - `shouldThrow`: Throw if the route is not found in strict contexts\n*\n* @returns The params object (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useParamsHook\n*/\nfunction useParams(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tshouldThrow: opts.shouldThrow,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tstrict: opts.strict,\n\t\tselect: (match) => {\n\t\t\tconst params = opts.strict === false ? match.params : match._strictParams;\n\t\t\treturn opts.select ? opts.select(params) : params;\n\t\t}\n\t});\n}\n//#endregion\nexport { useParams };\n\n//# sourceMappingURL=useParams.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useSearch.tsx\n/**\n* Read and select the current route's search parameters with type-safety.\n*\n* Options:\n* - `from`/`strict`: Control which route's search is read and how strictly it's typed\n* - `select`: Map the search object to a derived value for render optimization\n* - `structuralSharing`: Enable structural sharing for stable references\n* - `shouldThrow`: Throw when the route is not found (strict contexts)\n*\n* @returns The search object (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useSearchHook\n*/\nfunction useSearch(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tstrict: opts.strict,\n\t\tshouldThrow: opts.shouldThrow,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tselect: (match) => {\n\t\t\treturn opts.select ? opts.select(match.search) : match.search;\n\t\t}\n\t});\n}\n//#endregion\nexport { useSearch };\n\n//# sourceMappingURL=useSearch.js.map","\"use client\";\nimport { useLayoutEffect } from \"./utils.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport * as React$1 from \"react\";\n//#region src/useNavigate.tsx\n/**\n* Imperative navigation hook.\n*\n* Returns a stable `navigate(options)` function to change the current location\n* programmatically. Prefer the `Link` component for user-initiated navigation,\n* and use this hook from effects, callbacks, or handlers where imperative\n* navigation is required.\n*\n* Options:\n* - `from`: Optional route base used to resolve relative `to` paths.\n*\n* @returns A function that accepts `NavigateOptions`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useNavigateHook\n*/\nfunction useNavigate(_defaultOpts) {\n\tconst router = useRouter();\n\treturn React$1.useCallback((options) => {\n\t\treturn router.navigate({\n\t\t\t...options,\n\t\t\tfrom: options.from ?? _defaultOpts?.from\n\t\t});\n\t}, [_defaultOpts?.from, router]);\n}\n/**\n* Component that triggers a navigation when rendered. Navigation executes\n* in an effect after mount/update.\n*\n* Props are the same as `NavigateOptions` used by `navigate()`.\n*\n* @returns null\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/navigateComponent\n*/\nfunction Navigate(props) {\n\tconst router = useRouter();\n\tconst navigate = useNavigate();\n\tconst previousPropsRef = React$1.useRef(null);\n\tuseLayoutEffect(() => {\n\t\tif (previousPropsRef.current !== props) {\n\t\t\tnavigate(props);\n\t\t\tpreviousPropsRef.current = props;\n\t\t}\n\t}, [\n\t\trouter,\n\t\tprops,\n\t\tnavigate\n\t]);\n\treturn null;\n}\n//#endregion\nexport { Navigate, useNavigate };\n\n//# sourceMappingURL=useNavigate.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useRouteContext.ts\nfunction useRouteContext(opts) {\n\treturn useMatch({\n\t\t...opts,\n\t\tselect: (match) => opts.select ? opts.select(match.context) : match.context\n\t});\n}\n//#endregion\nexport { useRouteContext };\n\n//# sourceMappingURL=useRouteContext.js.map","\"use client\";\nimport { useForwardedRef, useIntersectionObserver } from \"./utils.js\";\nimport { useHydrated } from \"./ClientOnly.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { deepEqual, exactPathTest, functionalUpdate, hasKeys, isDangerousProtocol, preloadWarning, removeTrailingSlash } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\nimport { flushSync } from \"react-dom\";\n//#region src/link.tsx\n/**\n* Build anchor-like props for declarative navigation and preloading.\n*\n* Returns stable `href`, event handlers and accessibility props derived from\n* router options and active state. Used internally by `Link` and custom links.\n*\n* Options cover `to`, `params`, `search`, `hash`, `state`, `preload`,\n* `activeProps`, `inactiveProps`, and more.\n*\n* @returns React anchor props suitable for `<a>` or custom components.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLinkPropsHook\n*/\nfunction useLinkProps(options, forwardedRef) {\n\tconst router = useRouter();\n\tconst innerRef = useForwardedRef(forwardedRef);\n\tconst _isServer = isServer ?? router.isServer;\n\tconst { activeProps, inactiveProps, activeOptions, to, preload: userPreload, preloadDelay: userPreloadDelay, preloadIntentProximity: _preloadIntentProximity, hashScrollIntoView, replace, startTransition, resetScroll, viewTransition, children, target, disabled, style, className, onClick, onBlur, onFocus, onMouseEnter, onMouseLeave, onTouchStart, ignoreBlocker, params: _params, search: _search, hash: _hash, state: _state, mask: _mask, reloadDocument: _reloadDocument, unsafeRelative: _unsafeRelative, from: _from, _fromLocation, ...propsSafeToSpread } = options;\n\tif (_isServer) {\n\t\tconst safeInternal = isSafeInternal(to);\n\t\tif (typeof to === \"string\" && !safeInternal && to.indexOf(\":\") > -1) try {\n\t\t\tnew URL(to);\n\t\t\tif (isDangerousProtocol(to, router.protocolAllowlist)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\t\treturn {\n\t\t\t\t\t...propsSafeToSpread,\n\t\t\t\t\tref: innerRef,\n\t\t\t\t\thref: void 0,\n\t\t\t\t\t...children && { children },\n\t\t\t\t\t...target && { target },\n\t\t\t\t\t...disabled && { disabled },\n\t\t\t\t\t...style && { style },\n\t\t\t\t\t...className && { className }\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...propsSafeToSpread,\n\t\t\t\tref: innerRef,\n\t\t\t\thref: to,\n\t\t\t\t...children && { children },\n\t\t\t\t...target && { target },\n\t\t\t\t...disabled && { disabled },\n\t\t\t\t...style && { style },\n\t\t\t\t...className && { className }\n\t\t\t};\n\t\t} catch {}\n\t\tconst next = router.buildLocation({\n\t\t\t...options,\n\t\t\tfrom: options.from\n\t\t});\n\t\tconst hrefOption = getHrefOption(next.maskedLocation ? next.maskedLocation.publicHref : next.publicHref, next.maskedLocation ? next.maskedLocation.external : next.external, router.history, disabled);\n\t\tconst externalLink = (() => {\n\t\t\tif (hrefOption?.external) {\n\t\t\t\tif (isDangerousProtocol(hrefOption.href, router.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${hrefOption.href}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn hrefOption.href;\n\t\t\t}\n\t\t\tif (safeInternal) return void 0;\n\t\t\tif (typeof to === \"string\" && to.indexOf(\":\") > -1) try {\n\t\t\t\tnew URL(to);\n\t\t\t\tif (isDangerousProtocol(to, router.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn to;\n\t\t\t} catch {}\n\t\t})();\n\t\tconst isActive = (() => {\n\t\t\tif (externalLink) return false;\n\t\t\tconst currentLocation = router.stores.location.get();\n\t\t\tconst exact = activeOptions?.exact ?? false;\n\t\t\tif (exact) {\n\t\t\t\tif (!exactPathTest(currentLocation.pathname, next.pathname, router.basepath)) return false;\n\t\t\t} else {\n\t\t\t\tconst currentPathSplit = removeTrailingSlash(currentLocation.pathname, router.basepath);\n\t\t\t\tconst nextPathSplit = removeTrailingSlash(next.pathname, router.basepath);\n\t\t\t\tif (!(currentPathSplit.startsWith(nextPathSplit) && (currentPathSplit.length === nextPathSplit.length || currentPathSplit[nextPathSplit.length] === \"/\"))) return false;\n\t\t\t}\n\t\t\tif (activeOptions?.includeSearch ?? true) {\n\t\t\t\tif (currentLocation.search !== next.search) {\n\t\t\t\t\tconst currentSearchEmpty = !currentLocation.search || typeof currentLocation.search === \"object\" && !hasKeys(currentLocation.search);\n\t\t\t\t\tconst nextSearchEmpty = !next.search || typeof next.search === \"object\" && !hasKeys(next.search);\n\t\t\t\t\tif (!(currentSearchEmpty && nextSearchEmpty)) {\n\t\t\t\t\t\tif (!deepEqual(currentLocation.search, next.search, {\n\t\t\t\t\t\t\tpartial: !exact,\n\t\t\t\t\t\t\tignoreUndefined: !activeOptions?.explicitUndefined\n\t\t\t\t\t\t})) return false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (activeOptions?.includeHash) return false;\n\t\t\treturn true;\n\t\t})();\n\t\tif (externalLink) return {\n\t\t\t...propsSafeToSpread,\n\t\t\tref: innerRef,\n\t\t\thref: externalLink,\n\t\t\t...children && { children },\n\t\t\t...target && { target },\n\t\t\t...disabled && { disabled },\n\t\t\t...style && { style },\n\t\t\t...className && { className }\n\t\t};\n\t\tconst resolvedActiveProps = isActive ? functionalUpdate(activeProps, {}) ?? STATIC_ACTIVE_OBJECT : STATIC_EMPTY_OBJECT;\n\t\tconst resolvedInactiveProps = isActive ? STATIC_EMPTY_OBJECT : functionalUpdate(inactiveProps, {}) ?? STATIC_EMPTY_OBJECT;\n\t\tconst resolvedStyle = (() => {\n\t\t\tconst baseStyle = style;\n\t\t\tconst activeStyle = resolvedActiveProps.style;\n\t\t\tconst inactiveStyle = resolvedInactiveProps.style;\n\t\t\tif (!baseStyle && !activeStyle && !inactiveStyle) return;\n\t\t\tif (baseStyle && !activeStyle && !inactiveStyle) return baseStyle;\n\t\t\tif (!baseStyle && activeStyle && !inactiveStyle) return activeStyle;\n\t\t\tif (!baseStyle && !activeStyle && inactiveStyle) return inactiveStyle;\n\t\t\treturn {\n\t\t\t\t...baseStyle,\n\t\t\t\t...activeStyle,\n\t\t\t\t...inactiveStyle\n\t\t\t};\n\t\t})();\n\t\tconst resolvedClassName = (() => {\n\t\t\tconst baseClassName = className;\n\t\t\tconst activeClassName = resolvedActiveProps.className;\n\t\t\tconst inactiveClassName = resolvedInactiveProps.className;\n\t\t\tif (!baseClassName && !activeClassName && !inactiveClassName) return \"\";\n\t\t\tlet out = \"\";\n\t\t\tif (baseClassName) out = baseClassName;\n\t\t\tif (activeClassName) out = out ? `${out} ${activeClassName}` : activeClassName;\n\t\t\tif (inactiveClassName) out = out ? `${out} ${inactiveClassName}` : inactiveClassName;\n\t\t\treturn out;\n\t\t})();\n\t\treturn {\n\t\t\t...propsSafeToSpread,\n\t\t\t...resolvedActiveProps,\n\t\t\t...resolvedInactiveProps,\n\t\t\thref: hrefOption?.href,\n\t\t\tref: innerRef,\n\t\t\tdisabled: !!disabled,\n\t\t\ttarget,\n\t\t\t...resolvedStyle && { style: resolvedStyle },\n\t\t\t...resolvedClassName && { className: resolvedClassName },\n\t\t\t...disabled && STATIC_DISABLED_PROPS,\n\t\t\t...isActive && STATIC_ACTIVE_PROPS\n\t\t};\n\t}\n\tconst isHydrated = useHydrated();\n\tconst _options = React$1.useMemo(() => options, [\n\t\trouter,\n\t\toptions.from,\n\t\toptions._fromLocation,\n\t\toptions.hash,\n\t\toptions.to,\n\t\toptions.search,\n\t\toptions.params,\n\t\toptions.state,\n\t\toptions.mask,\n\t\toptions.unsafeRelative\n\t]);\n\tconst currentLocation = useStore(router.stores.location, (l) => l, (prev, next) => prev.href === next.href);\n\tconst next = React$1.useMemo(() => {\n\t\tconst opts = {\n\t\t\t_fromLocation: currentLocation,\n\t\t\t..._options\n\t\t};\n\t\treturn router.buildLocation(opts);\n\t}, [\n\t\trouter,\n\t\tcurrentLocation,\n\t\t_options\n\t]);\n\tconst hrefOptionPublicHref = next.maskedLocation ? next.maskedLocation.publicHref : next.publicHref;\n\tconst hrefOptionExternal = next.maskedLocation ? next.maskedLocation.external : next.external;\n\tconst hrefOption = React$1.useMemo(() => getHrefOption(hrefOptionPublicHref, hrefOptionExternal, router.history, disabled), [\n\t\tdisabled,\n\t\threfOptionExternal,\n\t\threfOptionPublicHref,\n\t\trouter.history\n\t]);\n\tconst externalLink = React$1.useMemo(() => {\n\t\tif (hrefOption?.external) {\n\t\t\tif (isDangerousProtocol(hrefOption.href, router.protocolAllowlist)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${hrefOption.href}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn hrefOption.href;\n\t\t}\n\t\tif (isSafeInternal(to)) return void 0;\n\t\tif (typeof to !== \"string\" || to.indexOf(\":\") === -1) return void 0;\n\t\ttry {\n\t\t\tnew URL(to);\n\t\t\tif (isDangerousProtocol(to, router.protocolAllowlist)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn to;\n\t\t} catch {}\n\t}, [\n\t\tto,\n\t\threfOption,\n\t\trouter.protocolAllowlist\n\t]);\n\tconst isActive = React$1.useMemo(() => {\n\t\tif (externalLink) return false;\n\t\tif (activeOptions?.exact) {\n\t\t\tif (!exactPathTest(currentLocation.pathname, next.pathname, router.basepath)) return false;\n\t\t} else {\n\t\t\tconst currentPathSplit = removeTrailingSlash(currentLocation.pathname, router.basepath);\n\t\t\tconst nextPathSplit = removeTrailingSlash(next.pathname, router.basepath);\n\t\t\tif (!(currentPathSplit.startsWith(nextPathSplit) && (currentPathSplit.length === nextPathSplit.length || currentPathSplit[nextPathSplit.length] === \"/\"))) return false;\n\t\t}\n\t\tif (activeOptions?.includeSearch ?? true) {\n\t\t\tif (!deepEqual(currentLocation.search, next.search, {\n\t\t\t\tpartial: !activeOptions?.exact,\n\t\t\t\tignoreUndefined: !activeOptions?.explicitUndefined\n\t\t\t})) return false;\n\t\t}\n\t\tif (activeOptions?.includeHash) return isHydrated && currentLocation.hash === next.hash;\n\t\treturn true;\n\t}, [\n\t\tactiveOptions?.exact,\n\t\tactiveOptions?.explicitUndefined,\n\t\tactiveOptions?.includeHash,\n\t\tactiveOptions?.includeSearch,\n\t\tcurrentLocation,\n\t\texternalLink,\n\t\tisHydrated,\n\t\tnext.hash,\n\t\tnext.pathname,\n\t\tnext.search,\n\t\trouter.basepath\n\t]);\n\tconst resolvedActiveProps = isActive ? functionalUpdate(activeProps, {}) ?? STATIC_ACTIVE_OBJECT : STATIC_EMPTY_OBJECT;\n\tconst resolvedInactiveProps = isActive ? STATIC_EMPTY_OBJECT : functionalUpdate(inactiveProps, {}) ?? STATIC_EMPTY_OBJECT;\n\tconst resolvedClassName = [\n\t\tclassName,\n\t\tresolvedActiveProps.className,\n\t\tresolvedInactiveProps.className\n\t].filter(Boolean).join(\" \");\n\tconst resolvedStyle = (style || resolvedActiveProps.style || resolvedInactiveProps.style) && {\n\t\t...style,\n\t\t...resolvedActiveProps.style,\n\t\t...resolvedInactiveProps.style\n\t};\n\tconst [isTransitioning, setIsTransitioning] = React$1.useState(false);\n\tconst hasRenderFetched = React$1.useRef(false);\n\tconst preload = options.reloadDocument || externalLink ? false : userPreload ?? router.options.defaultPreload;\n\tconst preloadDelay = userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0;\n\tconst doPreload = React$1.useCallback(() => {\n\t\trouter.preloadRoute({\n\t\t\t..._options,\n\t\t\t_builtLocation: next\n\t\t}).catch((err) => {\n\t\t\tconsole.warn(err);\n\t\t\tconsole.warn(preloadWarning);\n\t\t});\n\t}, [\n\t\trouter,\n\t\t_options,\n\t\tnext\n\t]);\n\tuseIntersectionObserver(innerRef, React$1.useCallback((entry) => {\n\t\tif (entry?.isIntersecting) doPreload();\n\t}, [doPreload]), intersectionObserverOptions, { disabled: !!disabled || !(preload === \"viewport\") });\n\tReact$1.useEffect(() => {\n\t\tif (hasRenderFetched.current) return;\n\t\tif (!disabled && preload === \"render\") {\n\t\t\tdoPreload();\n\t\t\thasRenderFetched.current = true;\n\t\t}\n\t}, [\n\t\tdisabled,\n\t\tdoPreload,\n\t\tpreload\n\t]);\n\tconst handleClick = (e) => {\n\t\tconst elementTarget = e.currentTarget.getAttribute(\"target\");\n\t\tconst effectiveTarget = target !== void 0 ? target : elementTarget;\n\t\tif (!disabled && !isCtrlEvent(e) && !e.defaultPrevented && (!effectiveTarget || effectiveTarget === \"_self\") && e.button === 0) {\n\t\t\te.preventDefault();\n\t\t\tflushSync(() => {\n\t\t\t\tsetIsTransitioning(true);\n\t\t\t});\n\t\t\tconst unsub = router.subscribe(\"onResolved\", () => {\n\t\t\t\tunsub();\n\t\t\t\tsetIsTransitioning(false);\n\t\t\t});\n\t\t\trouter.navigate({\n\t\t\t\t..._options,\n\t\t\t\treplace,\n\t\t\t\tresetScroll,\n\t\t\t\thashScrollIntoView,\n\t\t\t\tstartTransition,\n\t\t\t\tviewTransition,\n\t\t\t\tignoreBlocker\n\t\t\t});\n\t\t}\n\t};\n\tif (externalLink) return {\n\t\t...propsSafeToSpread,\n\t\tref: innerRef,\n\t\thref: externalLink,\n\t\t...children && { children },\n\t\t...target && { target },\n\t\t...disabled && { disabled },\n\t\t...style && { style },\n\t\t...className && { className },\n\t\t...onClick && { onClick },\n\t\t...onBlur && { onBlur },\n\t\t...onFocus && { onFocus },\n\t\t...onMouseEnter && { onMouseEnter },\n\t\t...onMouseLeave && { onMouseLeave },\n\t\t...onTouchStart && { onTouchStart }\n\t};\n\tconst enqueueIntentPreload = (e) => {\n\t\tif (disabled || preload !== \"intent\") return;\n\t\tif (!preloadDelay) {\n\t\t\tdoPreload();\n\t\t\treturn;\n\t\t}\n\t\tconst eventTarget = e.currentTarget;\n\t\tif (timeoutMap.has(eventTarget)) return;\n\t\tconst id = setTimeout(() => {\n\t\t\ttimeoutMap.delete(eventTarget);\n\t\t\tdoPreload();\n\t\t}, preloadDelay);\n\t\ttimeoutMap.set(eventTarget, id);\n\t};\n\tconst handleTouchStart = (_) => {\n\t\tif (disabled || preload !== \"intent\") return;\n\t\tdoPreload();\n\t};\n\tconst handleLeave = (e) => {\n\t\tif (disabled || !preload || !preloadDelay) return;\n\t\tconst eventTarget = e.currentTarget;\n\t\tconst id = timeoutMap.get(eventTarget);\n\t\tif (id) {\n\t\t\tclearTimeout(id);\n\t\t\ttimeoutMap.delete(eventTarget);\n\t\t}\n\t};\n\treturn {\n\t\t...propsSafeToSpread,\n\t\t...resolvedActiveProps,\n\t\t...resolvedInactiveProps,\n\t\thref: hrefOption?.href,\n\t\tref: innerRef,\n\t\tonClick: composeHandlers([onClick, handleClick]),\n\t\tonBlur: composeHandlers([onBlur, handleLeave]),\n\t\tonFocus: composeHandlers([onFocus, enqueueIntentPreload]),\n\t\tonMouseEnter: composeHandlers([onMouseEnter, enqueueIntentPreload]),\n\t\tonMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n\t\tonTouchStart: composeHandlers([onTouchStart, handleTouchStart]),\n\t\tdisabled: !!disabled,\n\t\ttarget,\n\t\t...resolvedStyle && { style: resolvedStyle },\n\t\t...resolvedClassName && { className: resolvedClassName },\n\t\t...disabled && STATIC_DISABLED_PROPS,\n\t\t...isActive && STATIC_ACTIVE_PROPS,\n\t\t...isHydrated && isTransitioning && STATIC_TRANSITIONING_PROPS\n\t};\n}\nvar STATIC_EMPTY_OBJECT = {};\nvar STATIC_ACTIVE_OBJECT = { className: \"active\" };\nvar STATIC_DISABLED_PROPS = {\n\trole: \"link\",\n\t\"aria-disabled\": true\n};\nvar STATIC_ACTIVE_PROPS = {\n\t\"data-status\": \"active\",\n\t\"aria-current\": \"page\"\n};\nvar STATIC_TRANSITIONING_PROPS = { \"data-transitioning\": \"transitioning\" };\nvar timeoutMap = /* @__PURE__ */ new WeakMap();\nvar intersectionObserverOptions = { rootMargin: \"100px\" };\nvar composeHandlers = (handlers) => (e) => {\n\tfor (const handler of handlers) {\n\t\tif (!handler) continue;\n\t\tif (e.defaultPrevented) return;\n\t\thandler(e);\n\t}\n};\nfunction getHrefOption(publicHref, external, history, disabled) {\n\tif (disabled) return void 0;\n\tif (external) return {\n\t\thref: publicHref,\n\t\texternal: true\n\t};\n\treturn {\n\t\thref: history.createHref(publicHref) || \"/\",\n\t\texternal: false\n\t};\n}\nfunction isSafeInternal(to) {\n\tif (typeof to !== \"string\") return false;\n\tconst zero = to.charCodeAt(0);\n\tif (zero === 47) return to.charCodeAt(1) !== 47;\n\treturn zero === 46;\n}\n/**\n* Creates a typed Link-like component that preserves TanStack Router's\n* navigation semantics and type-safety while delegating rendering to the\n* provided host component.\n*\n* Useful for integrating design system anchors/buttons while keeping\n* router-aware props (eg. `to`, `params`, `search`, `preload`).\n*\n* @param Comp The host component to render (eg. a design-system Link/Button)\n* @returns A router-aware component with the same API as `Link`.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-link\n*/\nfunction createLink(Comp) {\n\treturn React$1.forwardRef(function CreatedLink(props, ref) {\n\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t...props,\n\t\t\t_asChild: Comp,\n\t\t\tref\n\t\t});\n\t});\n}\n/**\n* A strongly-typed anchor component for declarative navigation.\n* Handles path, search, hash and state updates with optional route preloading\n* and active-state styling.\n*\n* Props:\n* - `preload`: Controls route preloading (eg. 'intent', 'render', 'viewport', true/false)\n* - `preloadDelay`: Delay in ms before preloading on hover\n* - `activeProps`/`inactiveProps`: Additional props merged when link is active/inactive\n* - `resetScroll`/`hashScrollIntoView`: Control scroll behavior on navigation\n* - `viewTransition`/`startTransition`: Use View Transitions/React transitions for navigation\n* - `ignoreBlocker`: Bypass registered blockers\n*\n* @returns An anchor-like element that navigates without full page reloads.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkComponent\n*/\nvar Link = React$1.forwardRef((props, ref) => {\n\tconst { _asChild, ...rest } = props;\n\tconst { type: _type, ...linkProps } = useLinkProps(rest, ref);\n\tconst children = typeof rest.children === \"function\" ? rest.children({ isActive: linkProps[\"data-status\"] === \"active\" }) : rest.children;\n\tif (!_asChild) {\n\t\tconst { disabled: _, ...rest } = linkProps;\n\t\treturn React$1.createElement(\"a\", rest, children);\n\t}\n\treturn React$1.createElement(_asChild, linkProps, children);\n});\nfunction isCtrlEvent(e) {\n\treturn !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey);\n}\n/**\n* Validate and reuse navigation options for `Link`, `navigate` or `redirect`.\n* Accepts a literal options object and returns it typed for later spreading.\n* @example\n* const opts = linkOptions({ to: '/dashboard', search: { tab: 'home' } })\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkOptions\n*/\nvar linkOptions = (options) => {\n\treturn options;\n};\n/**\n* Type-check a literal object for use with `Link`, `navigate` or `redirect`.\n* Use to validate and reuse navigation options across your app.\n* @example\n* const opts = linkOptions({ to: '/dashboard', search: { tab: 'home' } })\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkOptions\n*/\n//#endregion\nexport { Link, createLink, linkOptions, useLinkProps };\n\n//# sourceMappingURL=link.js.map","import { useRouter } from \"./useRouter.js\";\nimport { useMatch } from \"./useMatch.js\";\nimport { useLoaderData } from \"./useLoaderData.js\";\nimport { useLoaderDeps } from \"./useLoaderDeps.js\";\nimport { useParams } from \"./useParams.js\";\nimport { useSearch } from \"./useSearch.js\";\nimport { useNavigate } from \"./useNavigate.js\";\nimport { useRouteContext } from \"./useRouteContext.js\";\nimport { Link } from \"./link.js\";\nimport { BaseRootRoute, BaseRoute, BaseRouteApi, notFound } from \"@tanstack/router-core\";\nimport React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/route.tsx\n/**\n* Returns a route-specific API that exposes type-safe hooks pre-bound\n* to a single route ID. Useful for consuming a route's APIs from files\n* where the route object isn't directly imported (e.g. code-split files).\n*\n* @param id Route ID string literal for the target route.\n* @returns A `RouteApi` instance bound to the given route ID.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/getRouteApiFunction\n*/\nfunction getRouteApi(id) {\n\treturn new RouteApi({ id });\n}\nvar RouteApi = class extends BaseRouteApi {\n\t/**\n\t* @deprecated Use the `getRouteApi` function instead.\n\t*/\n\tconstructor({ id }) {\n\t\tsuper({ id });\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstrict: false\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstrict: false\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: useRouter().routesById[this.id].fullPath });\n\t\t};\n\t\tthis.notFound = (opts) => {\n\t\t\treturn notFound({\n\t\t\t\trouteId: this.id,\n\t\t\t\t...opts\n\t\t\t});\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\tconst fullPath = useRouter().routesById[this.id].fullPath;\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\nvar Route = class extends BaseRoute {\n\t/**\n\t* @deprecated Use the `createRoute` function instead.\n\t*/\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: this.fullPath });\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: this.fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Creates a non-root Route instance for code-based routing.\n*\n* Use this to define a route that will be composed into a route tree\n* (typically via a parent route's `addChildren`). If you're using file-based\n* routing, prefer `createFileRoute`.\n*\n* @param options Route options (path, component, loader, context, etc.).\n* @returns A Route instance to be attached to the route tree.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouteFunction\n*/\nfunction createRoute(options) {\n\treturn new Route(options);\n}\n/**\n* Creates a root route factory that requires a router context type.\n*\n* Use when your root route expects `context` to be provided to `createRouter`.\n* The returned function behaves like `createRootRoute` but enforces a context type.\n*\n* @returns A factory function to configure and return a root route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRootRouteWithContextFunction\n*/\nfunction createRootRouteWithContext() {\n\treturn (options) => {\n\t\treturn createRootRoute(options);\n\t};\n}\n/**\n* @deprecated Use the `createRootRouteWithContext` function instead.\n*/\nvar rootRouteWithContext = createRootRouteWithContext;\nvar RootRoute = class extends BaseRootRoute {\n\t/**\n\t* @deprecated `RootRoute` is now an internal implementation detail. Use `createRootRoute()` instead.\n\t*/\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: this.fullPath });\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: this.fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Creates a root Route instance used to build your route tree.\n*\n* Typically paired with `createRouter({ routeTree })`. If you need to require\n* a typed router context, use `createRootRouteWithContext` instead.\n*\n* @param options Root route options (component, error, pending, etc.).\n* @returns A root route instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRootRouteFunction\n*/\nfunction createRootRoute(options) {\n\treturn new RootRoute(options);\n}\nfunction createRouteMask(opts) {\n\treturn opts;\n}\nvar NotFoundRoute = class extends Route {\n\tconstructor(options) {\n\t\tsuper({\n\t\t\t...options,\n\t\t\tid: \"404\"\n\t\t});\n\t}\n};\n//#endregion\nexport { NotFoundRoute, RootRoute, Route, RouteApi, createRootRoute, createRootRouteWithContext, createRoute, createRouteMask, getRouteApi, rootRouteWithContext };\n\n//# sourceMappingURL=route.js.map","import { useRouter } from \"./useRouter.js\";\nimport { useMatch } from \"./useMatch.js\";\nimport { useLoaderData } from \"./useLoaderData.js\";\nimport { useLoaderDeps } from \"./useLoaderDeps.js\";\nimport { useParams } from \"./useParams.js\";\nimport { useSearch } from \"./useSearch.js\";\nimport { useNavigate } from \"./useNavigate.js\";\nimport { useRouteContext } from \"./useRouteContext.js\";\nimport { createRoute } from \"./route.js\";\n//#region src/fileRoute.ts\n/**\n* Creates a file-based Route factory for a given path.\n*\n* Used by TanStack Router's file-based routing to associate a file with a\n* route. The returned function accepts standard route options. In normal usage\n* the `path` string is inserted and maintained by the `tsr` generator.\n*\n* @param path File path literal for the route (usually auto-generated).\n* @returns A function that accepts Route options and returns a Route instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createFileRouteFunction\n*/\nfunction createFileRoute(path) {\n\treturn new FileRoute(path, { silent: true }).createRoute;\n}\n/** \n@deprecated It's no longer recommended to use the `FileRoute` class directly.\nInstead, use `createFileRoute('/path/to/file')(options)` to create a file route.\n*/\nvar FileRoute = class {\n\tconstructor(path, _opts) {\n\t\tthis.path = path;\n\t\tthis.createRoute = (options) => {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (!this.silent) console.warn(\"Warning: FileRoute is deprecated and will be removed in the next major version. Use the createFileRoute(path)(options) function instead.\");\n\t\t\t}\n\t\t\tconst route = createRoute(options);\n\t\t\troute.isRoot = false;\n\t\t\treturn route;\n\t\t};\n\t\tthis.silent = _opts?.silent;\n\t}\n};\n/**\n@deprecated It's recommended not to split loaders into separate files.\nInstead, place the loader function in the main route file via `createFileRoute`.\n*/\nfunction FileRouteLoader(_path) {\n\tif (process.env.NODE_ENV !== \"production\") console.warn(`Warning: FileRouteLoader is deprecated and will be removed in the next major version. Please place the loader function in the main route file, inside the \\`createFileRoute('/path/to/file')(options)\\` options`);\n\treturn (loaderFn) => loaderFn;\n}\nvar LazyRoute = class {\n\tconstructor(opts) {\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.options.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: useRouter().routesById[this.options.id].fullPath });\n\t\t};\n\t\tthis.options = opts;\n\t}\n};\n/**\n* Creates a lazily-configurable code-based route stub by ID.\n*\n* Use this for code-splitting with code-based routes. The returned function\n* accepts only non-critical route options like `component`, `pendingComponent`,\n* `errorComponent`, and `notFoundComponent` which are applied when the route\n* is matched.\n*\n* @param id Route ID string literal to associate with the lazy route.\n* @returns A function that accepts lazy route options and returns a `LazyRoute`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createLazyRouteFunction\n*/\nfunction createLazyRoute(id) {\n\treturn (opts) => {\n\t\treturn new LazyRoute({\n\t\t\tid,\n\t\t\t...opts\n\t\t});\n\t};\n}\n/**\n* Creates a lazily-configurable file-based route stub by file path.\n*\n* Use this for code-splitting with file-based routes (eg. `.lazy.tsx` files).\n* The returned function accepts only non-critical route options like\n* `component`, `pendingComponent`, `errorComponent`, and `notFoundComponent`.\n*\n* @param id File path literal for the route file.\n* @returns A function that accepts lazy route options and returns a `LazyRoute`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createLazyFileRouteFunction\n*/\nfunction createLazyFileRoute(id) {\n\tif (typeof id === \"object\") return new LazyRoute(id);\n\treturn (opts) => new LazyRoute({\n\t\tid,\n\t\t...opts\n\t});\n}\n//#endregion\nexport { FileRoute, FileRouteLoader, LazyRoute, createFileRoute, createLazyFileRoute, createLazyRoute };\n\n//# sourceMappingURL=fileRoute.js.map","import { reactUse } from \"./utils.js\";\nimport { isModuleNotFoundError } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\n//#region src/lazyRouteComponent.tsx\n/**\n* Wrap a dynamic import to create a route component that supports\n* `.preload()` and friendly reload-on-module-missing behavior.\n*\n* @param importer Function returning a module promise\n* @param exportName Named export to use (default: `default`)\n* @returns A lazy route component compatible with TanStack Router\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/lazyRouteComponentFunction\n*/\nfunction lazyRouteComponent(importer, exportName) {\n\tlet loadPromise;\n\tlet comp;\n\tlet error;\n\tlet reload;\n\tconst load = () => {\n\t\tif (!loadPromise) loadPromise = importer().then((res) => {\n\t\t\tloadPromise = void 0;\n\t\t\tcomp = res[exportName ?? \"default\"];\n\t\t}).catch((err) => {\n\t\t\terror = err;\n\t\t\tif (isModuleNotFoundError(error)) {\n\t\t\t\tif (error instanceof Error && typeof window !== \"undefined\" && typeof sessionStorage !== \"undefined\") {\n\t\t\t\t\tconst storageKey = `tanstack_router_reload:${error.message}`;\n\t\t\t\t\tif (!sessionStorage.getItem(storageKey)) {\n\t\t\t\t\t\tsessionStorage.setItem(storageKey, \"1\");\n\t\t\t\t\t\treload = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn loadPromise;\n\t};\n\tconst lazyComp = function Lazy(props) {\n\t\tif (reload) {\n\t\t\twindow.location.reload();\n\t\t\tthrow new Promise(() => {});\n\t\t}\n\t\tif (error) throw error;\n\t\tif (!comp) if (reactUse) reactUse(load());\n\t\telse throw load();\n\t\treturn React$1.createElement(comp, props);\n\t};\n\tlazyComp.preload = load;\n\treturn lazyComp;\n}\n//#endregion\nexport { lazyRouteComponent };\n\n//# sourceMappingURL=lazyRouteComponent.js.map","import { CatchBoundary } from \"./CatchBoundary.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { isNotFound } from \"@tanstack/router-core\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/not-found.tsx\nfunction CatchNotFound(props) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst resetKey = `not-found-${router.stores.location.get().pathname}-${router.stores.status.get()}`;\n\t\treturn /* @__PURE__ */ jsx(CatchBoundary, {\n\t\t\tgetResetKey: () => resetKey,\n\t\t\tonCatch: (error, errorInfo) => {\n\t\t\t\tif (isNotFound(error)) props.onCatch?.(error, errorInfo);\n\t\t\t\telse throw error;\n\t\t\t},\n\t\t\terrorComponent: ({ error }) => {\n\t\t\t\tif (isNotFound(error)) return props.fallback?.(error);\n\t\t\t\telse throw error;\n\t\t\t},\n\t\t\tchildren: props.children\n\t\t});\n\t}\n\tconst resetKey = `not-found-${useStore(router.stores.location, (location) => location.pathname)}-${useStore(router.stores.status, (status) => status)}`;\n\treturn /* @__PURE__ */ jsx(CatchBoundary, {\n\t\tgetResetKey: () => resetKey,\n\t\tonCatch: (error, errorInfo) => {\n\t\t\tif (isNotFound(error)) props.onCatch?.(error, errorInfo);\n\t\t\telse throw error;\n\t\t},\n\t\terrorComponent: ({ error }) => {\n\t\t\tif (isNotFound(error)) return props.fallback?.(error);\n\t\t\telse throw error;\n\t\t},\n\t\tchildren: props.children\n\t});\n}\nfunction DefaultGlobalNotFound() {\n\treturn /* @__PURE__ */ jsx(\"p\", { children: \"Not Found\" });\n}\n//#endregion\nexport { CatchNotFound, DefaultGlobalNotFound };\n\n//# sourceMappingURL=not-found.js.map","import { useRouter } from \"./useRouter.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/ScriptOnce.tsx\n/**\n* Server-only helper to emit a script tag exactly once during SSR.\n*/\nfunction ScriptOnce({ children }) {\n\tconst router = useRouter();\n\tif (!(isServer ?? router.isServer)) return null;\n\treturn /* @__PURE__ */ jsx(\"script\", {\n\t\tnonce: router.options.ssr?.nonce,\n\t\tdangerouslySetInnerHTML: { __html: children + \";document.currentScript.remove()\" }\n\t});\n}\n//#endregion\nexport { ScriptOnce };\n\n//# sourceMappingURL=ScriptOnce.js.map","import \"react\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\n//#region src/SafeFragment.tsx\nfunction SafeFragment(props) {\n\treturn /* @__PURE__ */ jsx(Fragment, { children: props.children });\n}\n//#endregion\nexport { SafeFragment };\n\n//# sourceMappingURL=SafeFragment.js.map","import { DefaultGlobalNotFound } from \"./not-found.js\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/renderRouteNotFound.tsx\n/**\n* Renders a not found component for a route when no matching route is found.\n*\n* @param router - The router instance containing the route configuration\n* @param route - The route that triggered the not found state\n* @param data - Additional data to pass to the not found component\n* @returns The rendered not found component or a default fallback component\n*/\nfunction renderRouteNotFound(router, route, data) {\n\tif (!route.options.notFoundComponent) {\n\t\tif (router.options.defaultNotFoundComponent) return /* @__PURE__ */ jsx(router.options.defaultNotFoundComponent, { ...data });\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (!route.options.notFoundComponent) console.warn(`Warning: A notFoundError was encountered on the route with ID \"${route.id}\", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<p>Not Found</p>)`);\n\t\t}\n\t\treturn /* @__PURE__ */ jsx(DefaultGlobalNotFound, {});\n\t}\n\treturn /* @__PURE__ */ jsx(route.options.notFoundComponent, { ...data });\n}\n//#endregion\nexport { renderRouteNotFound };\n\n//# sourceMappingURL=renderRouteNotFound.js.map","//#region src/scroll-restoration-script/client.ts\nfunction getScrollRestorationScriptForRouter(_router) {\n\treturn null;\n}\n//#endregion\nexport { getScrollRestorationScriptForRouter };\n\n//# sourceMappingURL=client.js.map","import { useRouter } from \"./useRouter.js\";\nimport { ScriptOnce } from \"./ScriptOnce.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { getScrollRestorationScriptForRouter } from \"@tanstack/router-core/scroll-restoration-script\";\n//#region src/scroll-restoration.tsx\nfunction ScrollRestoration() {\n\tconst script = getScrollRestorationScriptForRouter(useRouter());\n\tif (!script) return null;\n\treturn /* @__PURE__ */ jsx(ScriptOnce, { children: script });\n}\n//#endregion\nexport { ScrollRestoration };\n\n//# sourceMappingURL=scroll-restoration.js.map","\"use client\";\nimport { useLayoutEffect } from \"./utils.js\";\nimport { CatchBoundary, ErrorComponent } from \"./CatchBoundary.js\";\nimport { ClientOnly } from \"./ClientOnly.js\";\nimport { matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { CatchNotFound } from \"./not-found.js\";\nimport { SafeFragment } from \"./SafeFragment.js\";\nimport { renderRouteNotFound } from \"./renderRouteNotFound.js\";\nimport { ScrollRestoration } from \"./scroll-restoration.js\";\nimport { createControlledPromise, getLocationChangeInfo, invariant, isNotFound, isRedirect, rootRouteId } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/Match.tsx\nvar matchViewFieldsEqual = (a, b) => a.routeId === b.routeId && a._displayPending === b._displayPending;\nvar outletMatchSelectionEqual = (a, b) => a[0] === b[0] && a[1] === b[1];\nvar Match = React$1.memo(function MatchImpl({ matchId }) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst match = router.stores.matchStores.get(matchId)?.get();\n\t\tif (!match) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find match for matchId \"${matchId}\". Please file an issue!`);\n\t\t\tinvariant();\n\t\t}\n\t\tconst routeId = match.routeId;\n\t\tconst parentRouteId = router.routesById[routeId].parentRoute?.id;\n\t\treturn /* @__PURE__ */ jsx(MatchView, {\n\t\t\trouter,\n\t\t\tmatchId,\n\t\t\tresetKey: router.stores.loadedAt.get(),\n\t\t\tmatchState: {\n\t\t\t\trouteId,\n\t\t\t\tssr: match.ssr,\n\t\t\t\t_displayPending: match._displayPending,\n\t\t\t\tparentRouteId\n\t\t\t}\n\t\t});\n\t}\n\tconst matchStore = router.stores.matchStores.get(matchId);\n\tif (!matchStore) {\n\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find match for matchId \"${matchId}\". Please file an issue!`);\n\t\tinvariant();\n\t}\n\tconst resetKey = useStore(router.stores.loadedAt, (loadedAt) => loadedAt);\n\tconst match = useStore(matchStore, (value) => value, matchViewFieldsEqual);\n\treturn /* @__PURE__ */ jsx(MatchView, {\n\t\trouter,\n\t\tmatchId,\n\t\tresetKey,\n\t\tmatchState: React$1.useMemo(() => {\n\t\t\tconst routeId = match.routeId;\n\t\t\tconst parentRouteId = router.routesById[routeId].parentRoute?.id;\n\t\t\treturn {\n\t\t\t\trouteId,\n\t\t\t\tssr: match.ssr,\n\t\t\t\t_displayPending: match._displayPending,\n\t\t\t\tparentRouteId\n\t\t\t};\n\t\t}, [\n\t\t\tmatch._displayPending,\n\t\t\tmatch.routeId,\n\t\t\tmatch.ssr,\n\t\t\trouter.routesById\n\t\t])\n\t});\n});\nfunction MatchView({ router, matchId, resetKey, matchState }) {\n\tconst route = router.routesById[matchState.routeId];\n\tconst PendingComponent = route.options.pendingComponent ?? router.options.defaultPendingComponent;\n\tconst pendingElement = PendingComponent ? /* @__PURE__ */ jsx(PendingComponent, {}) : null;\n\tconst routeErrorComponent = route.options.errorComponent ?? router.options.defaultErrorComponent;\n\tconst routeOnCatch = route.options.onCatch ?? router.options.defaultOnCatch;\n\tconst routeNotFoundComponent = route.isRoot ? route.options.notFoundComponent ?? router.options.notFoundRoute?.options.component : route.options.notFoundComponent;\n\tconst resolvedNoSsr = matchState.ssr === false || matchState.ssr === \"data-only\";\n\tconst ResolvedSuspenseBoundary = (!route.isRoot || route.options.wrapInSuspense || resolvedNoSsr) && (route.options.wrapInSuspense ?? PendingComponent ?? (route.options.errorComponent?.preload || resolvedNoSsr)) ? React$1.Suspense : SafeFragment;\n\tconst ResolvedCatchBoundary = routeErrorComponent ? CatchBoundary : SafeFragment;\n\tconst ResolvedNotFoundBoundary = routeNotFoundComponent ? CatchNotFound : SafeFragment;\n\treturn /* @__PURE__ */ jsxs(route.isRoot ? route.options.shellComponent ?? SafeFragment : SafeFragment, { children: [/* @__PURE__ */ jsx(matchContext.Provider, {\n\t\tvalue: matchId,\n\t\tchildren: /* @__PURE__ */ jsx(ResolvedSuspenseBoundary, {\n\t\t\tfallback: pendingElement,\n\t\t\tchildren: /* @__PURE__ */ jsx(ResolvedCatchBoundary, {\n\t\t\t\tgetResetKey: () => resetKey,\n\t\t\t\terrorComponent: routeErrorComponent || ErrorComponent,\n\t\t\t\tonCatch: (error, errorInfo) => {\n\t\t\t\t\tif (isNotFound(error)) {\n\t\t\t\t\t\terror.routeId ??= matchState.routeId;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Warning: Error in route match: ${matchId}`);\n\t\t\t\t\trouteOnCatch?.(error, errorInfo);\n\t\t\t\t},\n\t\t\t\tchildren: /* @__PURE__ */ jsx(ResolvedNotFoundBoundary, {\n\t\t\t\t\tfallback: (error) => {\n\t\t\t\t\t\terror.routeId ??= matchState.routeId;\n\t\t\t\t\t\tif (!routeNotFoundComponent || error.routeId && error.routeId !== matchState.routeId || !error.routeId && !route.isRoot) throw error;\n\t\t\t\t\t\treturn React$1.createElement(routeNotFoundComponent, error);\n\t\t\t\t\t},\n\t\t\t\t\tchildren: resolvedNoSsr || matchState._displayPending ? /* @__PURE__ */ jsx(ClientOnly, {\n\t\t\t\t\t\tfallback: pendingElement,\n\t\t\t\t\t\tchildren: /* @__PURE__ */ jsx(MatchInner, { matchId })\n\t\t\t\t\t}) : /* @__PURE__ */ jsx(MatchInner, { matchId })\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t}), matchState.parentRouteId === rootRouteId ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(OnRendered, {}), router.options.scrollRestoration && (isServer ?? router.isServer) ? /* @__PURE__ */ jsx(ScrollRestoration, {}) : null] }) : null] });\n}\nfunction OnRendered() {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) return null;\n\tconst prevResolvedLocationRef = React$1.useRef();\n\tuseLayoutEffect(() => {\n\t\tconst currentResolvedLocation = router.stores.resolvedLocation.get();\n\t\tconst previousResolvedLocation = prevResolvedLocationRef.current;\n\t\tif (currentResolvedLocation && (!previousResolvedLocation || previousResolvedLocation.href !== currentResolvedLocation.href)) router.emit({\n\t\t\ttype: \"onRendered\",\n\t\t\t...getLocationChangeInfo(router.stores.location.get(), previousResolvedLocation ?? currentResolvedLocation)\n\t\t});\n\t\tprevResolvedLocationRef.current = currentResolvedLocation;\n\t}, [useStore(router.stores.resolvedLocation, (resolvedLocation) => resolvedLocation?.state.__TSR_key), router]);\n\treturn null;\n}\nvar MatchInner = React$1.memo(function MatchInnerImpl({ matchId }) {\n\tconst router = useRouter();\n\tconst getMatchPromise = (match, key) => {\n\t\treturn router.getMatch(match.id)?._nonReactive[key] ?? match._nonReactive[key];\n\t};\n\tif (isServer ?? router.isServer) {\n\t\tconst match = router.stores.matchStores.get(matchId)?.get();\n\t\tif (!match) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find match for matchId \"${matchId}\". Please file an issue!`);\n\t\t\tinvariant();\n\t\t}\n\t\tconst routeId = match.routeId;\n\t\tconst route = router.routesById[routeId];\n\t\tconst remountDeps = (router.routesById[routeId].options.remountDeps ?? router.options.defaultRemountDeps)?.({\n\t\t\trouteId,\n\t\t\tloaderDeps: match.loaderDeps,\n\t\t\tparams: match._strictParams,\n\t\t\tsearch: match._strictSearch\n\t\t});\n\t\tconst key = remountDeps ? JSON.stringify(remountDeps) : void 0;\n\t\tconst Comp = route.options.component ?? router.options.defaultComponent;\n\t\tconst out = Comp ? /* @__PURE__ */ jsx(Comp, {}, key) : /* @__PURE__ */ jsx(Outlet, {});\n\t\tif (match._displayPending) throw getMatchPromise(match, \"displayPendingPromise\");\n\t\tif (match._forcePending) throw getMatchPromise(match, \"minPendingPromise\");\n\t\tif (match.status === \"pending\") throw getMatchPromise(match, \"loadPromise\");\n\t\tif (match.status === \"notFound\") {\n\t\t\tif (!isNotFound(match.error)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Expected a notFound error\");\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\treturn renderRouteNotFound(router, route, match.error);\n\t\t}\n\t\tif (match.status === \"redirected\") {\n\t\t\tif (!isRedirect(match.error)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Expected a redirect error\");\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\tthrow getMatchPromise(match, \"loadPromise\");\n\t\t}\n\t\tif (match.status === \"error\") return /* @__PURE__ */ jsx((route.options.errorComponent ?? router.options.defaultErrorComponent) || ErrorComponent, {\n\t\t\terror: match.error,\n\t\t\treset: void 0,\n\t\t\tinfo: { componentStack: \"\" }\n\t\t});\n\t\treturn out;\n\t}\n\tconst matchStore = router.stores.matchStores.get(matchId);\n\tif (!matchStore) {\n\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find match for matchId \"${matchId}\". Please file an issue!`);\n\t\tinvariant();\n\t}\n\tconst match = useStore(matchStore, (value) => value);\n\tconst routeId = match.routeId;\n\tconst route = router.routesById[routeId];\n\tconst key = React$1.useMemo(() => {\n\t\tconst remountDeps = (router.routesById[routeId].options.remountDeps ?? router.options.defaultRemountDeps)?.({\n\t\t\trouteId,\n\t\t\tloaderDeps: match.loaderDeps,\n\t\t\tparams: match._strictParams,\n\t\t\tsearch: match._strictSearch\n\t\t});\n\t\treturn remountDeps ? JSON.stringify(remountDeps) : void 0;\n\t}, [\n\t\trouteId,\n\t\tmatch.loaderDeps,\n\t\tmatch._strictParams,\n\t\tmatch._strictSearch,\n\t\trouter.options.defaultRemountDeps,\n\t\trouter.routesById\n\t]);\n\tconst out = React$1.useMemo(() => {\n\t\tconst Comp = route.options.component ?? router.options.defaultComponent;\n\t\tif (Comp) return /* @__PURE__ */ jsx(Comp, {}, key);\n\t\treturn /* @__PURE__ */ jsx(Outlet, {});\n\t}, [\n\t\tkey,\n\t\troute.options.component,\n\t\trouter.options.defaultComponent\n\t]);\n\tif (match._displayPending) throw getMatchPromise(match, \"displayPendingPromise\");\n\tif (match._forcePending) throw getMatchPromise(match, \"minPendingPromise\");\n\tif (match.status === \"pending\") {\n\t\tconst pendingMinMs = route.options.pendingMinMs ?? router.options.defaultPendingMinMs;\n\t\tif (pendingMinMs) {\n\t\t\tconst routerMatch = router.getMatch(match.id);\n\t\t\tif (routerMatch && !routerMatch._nonReactive.minPendingPromise) {\n\t\t\t\tif (!(isServer ?? router.isServer)) {\n\t\t\t\t\tconst minPendingPromise = createControlledPromise();\n\t\t\t\t\trouterMatch._nonReactive.minPendingPromise = minPendingPromise;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tminPendingPromise.resolve();\n\t\t\t\t\t\trouterMatch._nonReactive.minPendingPromise = void 0;\n\t\t\t\t\t}, pendingMinMs);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow getMatchPromise(match, \"loadPromise\");\n\t}\n\tif (match.status === \"notFound\") {\n\t\tif (!isNotFound(match.error)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Expected a notFound error\");\n\t\t\tinvariant();\n\t\t}\n\t\treturn renderRouteNotFound(router, route, match.error);\n\t}\n\tif (match.status === \"redirected\") {\n\t\tif (!isRedirect(match.error)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Expected a redirect error\");\n\t\t\tinvariant();\n\t\t}\n\t\tthrow getMatchPromise(match, \"loadPromise\");\n\t}\n\tif (match.status === \"error\") {\n\t\tif (isServer ?? router.isServer) return /* @__PURE__ */ jsx((route.options.errorComponent ?? router.options.defaultErrorComponent) || ErrorComponent, {\n\t\t\terror: match.error,\n\t\t\treset: void 0,\n\t\t\tinfo: { componentStack: \"\" }\n\t\t});\n\t\tthrow match.error;\n\t}\n\treturn out;\n});\n/**\n* Render the next child match in the route tree. Typically used inside\n* a route component to render nested routes.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/outletComponent\n*/\nvar Outlet = React$1.memo(function OutletImpl() {\n\tconst router = useRouter();\n\tconst matchId = React$1.useContext(matchContext);\n\tlet routeId;\n\tlet parentGlobalNotFound = false;\n\tlet childMatchId;\n\tif (isServer ?? router.isServer) {\n\t\tconst matches = router.stores.matches.get();\n\t\tconst parentIndex = matchId ? matches.findIndex((match) => match.id === matchId) : -1;\n\t\tconst parentMatch = parentIndex >= 0 ? matches[parentIndex] : void 0;\n\t\trouteId = parentMatch?.routeId;\n\t\tparentGlobalNotFound = parentMatch?.globalNotFound ?? false;\n\t\tchildMatchId = parentIndex >= 0 ? matches[parentIndex + 1]?.id : void 0;\n\t} else {\n\t\tconst parentMatchStore = matchId ? router.stores.matchStores.get(matchId) : void 0;\n\t\t[routeId, parentGlobalNotFound] = useStore(parentMatchStore, (match) => [match?.routeId, match?.globalNotFound ?? false], outletMatchSelectionEqual);\n\t\tchildMatchId = useStore(router.stores.matchesId, (ids) => {\n\t\t\treturn ids[ids.findIndex((id) => id === matchId) + 1];\n\t\t});\n\t}\n\tconst route = routeId ? router.routesById[routeId] : void 0;\n\tconst pendingElement = router.options.defaultPendingComponent ? /* @__PURE__ */ jsx(router.options.defaultPendingComponent, {}) : null;\n\tif (parentGlobalNotFound) {\n\t\tif (!route) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Could not resolve route for Outlet render\");\n\t\t\tinvariant();\n\t\t}\n\t\treturn renderRouteNotFound(router, route, void 0);\n\t}\n\tif (!childMatchId) return null;\n\tconst nextMatch = /* @__PURE__ */ jsx(Match, { matchId: childMatchId });\n\tif (routeId === rootRouteId) return /* @__PURE__ */ jsx(React$1.Suspense, {\n\t\tfallback: pendingElement,\n\t\tchildren: nextMatch\n\t});\n\treturn nextMatch;\n});\n//#endregion\nexport { Match, Outlet };\n\n//# sourceMappingURL=Match.js.map","\"use client\";\nimport { useLayoutEffect, usePrevious } from \"./utils.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { getLocationChangeInfo, trimPathRight } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { batch, useStore } from \"@tanstack/react-store\";\n//#region src/Transitioner.tsx\nfunction Transitioner() {\n\tconst router = useRouter();\n\tconst mountLoadForRouter = React$1.useRef({\n\t\trouter,\n\t\tmounted: false\n\t});\n\tconst [isTransitioning, setIsTransitioning] = React$1.useState(false);\n\tconst isLoading = useStore(router.stores.isLoading, (value) => value);\n\tconst hasPending = useStore(router.stores.hasPending, (value) => value);\n\tconst previousIsLoading = usePrevious(isLoading);\n\tconst isAnyPending = isLoading || isTransitioning || hasPending;\n\tconst previousIsAnyPending = usePrevious(isAnyPending);\n\tconst isPagePending = isLoading || hasPending;\n\tconst previousIsPagePending = usePrevious(isPagePending);\n\trouter.startTransition = (fn) => {\n\t\tsetIsTransitioning(true);\n\t\tReact$1.startTransition(() => {\n\t\t\tfn();\n\t\t\tsetIsTransitioning(false);\n\t\t});\n\t};\n\tReact$1.useEffect(() => {\n\t\tconst unsub = router.history.subscribe(router.load);\n\t\tconst nextLocation = router.buildLocation({\n\t\t\tto: router.latestLocation.pathname,\n\t\t\tsearch: true,\n\t\t\tparams: true,\n\t\t\thash: true,\n\t\t\tstate: true,\n\t\t\t_includeValidateSearch: true\n\t\t});\n\t\tif (trimPathRight(router.latestLocation.publicHref) !== trimPathRight(nextLocation.publicHref)) router.commitLocation({\n\t\t\t...nextLocation,\n\t\t\treplace: true\n\t\t});\n\t\treturn () => {\n\t\t\tunsub();\n\t\t};\n\t}, [router, router.history]);\n\tuseLayoutEffect(() => {\n\t\tif (typeof window !== \"undefined\" && router.ssr || mountLoadForRouter.current.router === router && mountLoadForRouter.current.mounted) return;\n\t\tmountLoadForRouter.current = {\n\t\t\trouter,\n\t\t\tmounted: true\n\t\t};\n\t\tconst tryLoad = async () => {\n\t\t\ttry {\n\t\t\t\tawait router.load();\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err);\n\t\t\t}\n\t\t};\n\t\ttryLoad();\n\t}, [router]);\n\tuseLayoutEffect(() => {\n\t\tif (previousIsLoading && !isLoading) router.emit({\n\t\t\ttype: \"onLoad\",\n\t\t\t...getLocationChangeInfo(router.stores.location.get(), router.stores.resolvedLocation.get())\n\t\t});\n\t}, [\n\t\tpreviousIsLoading,\n\t\trouter,\n\t\tisLoading\n\t]);\n\tuseLayoutEffect(() => {\n\t\tif (previousIsPagePending && !isPagePending) router.emit({\n\t\t\ttype: \"onBeforeRouteMount\",\n\t\t\t...getLocationChangeInfo(router.stores.location.get(), router.stores.resolvedLocation.get())\n\t\t});\n\t}, [\n\t\tisPagePending,\n\t\tpreviousIsPagePending,\n\t\trouter\n\t]);\n\tuseLayoutEffect(() => {\n\t\tif (previousIsAnyPending && !isAnyPending) {\n\t\t\tconst changeInfo = getLocationChangeInfo(router.stores.location.get(), router.stores.resolvedLocation.get());\n\t\t\trouter.emit({\n\t\t\t\ttype: \"onResolved\",\n\t\t\t\t...changeInfo\n\t\t\t});\n\t\t\tbatch(() => {\n\t\t\t\trouter.stores.status.set(\"idle\");\n\t\t\t\trouter.stores.resolvedLocation.set(router.stores.location.get());\n\t\t\t});\n\t\t}\n\t}, [\n\t\tisAnyPending,\n\t\tpreviousIsAnyPending,\n\t\trouter\n\t]);\n\treturn null;\n}\n//#endregion\nexport { Transitioner };\n\n//# sourceMappingURL=Transitioner.js.map","\"use client\";\nimport { CatchBoundary, ErrorComponent } from \"./CatchBoundary.js\";\nimport { matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { useStructuralSharing } from \"./useMatch.js\";\nimport { Transitioner } from \"./Transitioner.js\";\nimport { SafeFragment } from \"./SafeFragment.js\";\nimport { Match } from \"./Match.js\";\nimport { rootRouteId } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/Matches.tsx\n/**\n* Internal component that renders the router's active match tree with\n* suspense, error, and not-found boundaries. Rendered by `RouterProvider`.\n*/\nfunction Matches() {\n\tconst router = useRouter();\n\tconst PendingComponent = router.routesById[rootRouteId].options.pendingComponent ?? router.options.defaultPendingComponent;\n\tconst pendingElement = PendingComponent ? /* @__PURE__ */ jsx(PendingComponent, {}) : null;\n\tconst inner = /* @__PURE__ */ jsxs((isServer ?? router.isServer) || typeof document !== \"undefined\" && router.ssr ? SafeFragment : React$1.Suspense, {\n\t\tfallback: pendingElement,\n\t\tchildren: [!(isServer ?? router.isServer) && /* @__PURE__ */ jsx(Transitioner, {}), /* @__PURE__ */ jsx(MatchesInner, {})]\n\t});\n\treturn router.options.InnerWrap ? /* @__PURE__ */ jsx(router.options.InnerWrap, { children: inner }) : inner;\n}\nfunction MatchesInner() {\n\tconst router = useRouter();\n\tconst _isServer = isServer ?? router.isServer;\n\tconst matchId = _isServer ? router.stores.firstId.get() : useStore(router.stores.firstId, (id) => id);\n\tconst resetKey = _isServer ? router.stores.loadedAt.get() : useStore(router.stores.loadedAt, (loadedAt) => loadedAt);\n\tconst matchComponent = matchId ? /* @__PURE__ */ jsx(Match, { matchId }) : null;\n\treturn /* @__PURE__ */ jsx(matchContext.Provider, {\n\t\tvalue: matchId,\n\t\tchildren: router.options.disableGlobalCatchBoundary ? matchComponent : /* @__PURE__ */ jsx(CatchBoundary, {\n\t\t\tgetResetKey: () => resetKey,\n\t\t\terrorComponent: ErrorComponent,\n\t\t\tonCatch: process.env.NODE_ENV !== \"production\" ? (error) => {\n\t\t\t\tconsole.warn(`Warning: The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`);\n\t\t\t\tconsole.warn(`Warning: ${error.message || error.toString()}`);\n\t\t\t} : void 0,\n\t\t\tchildren: matchComponent\n\t\t})\n\t});\n}\n/**\n* Create a matcher function for testing locations against route definitions.\n*\n* The returned function accepts standard navigation options (`to`, `params`,\n* `search`, etc.) and returns either `false` (no match) or the matched params\n* object when the route matches the current or pending location.\n*\n* Useful for conditional rendering and active UI states.\n*\n* @returns A `matchRoute(options)` function that returns `false` or params.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchRouteHook\n*/\nfunction useMatchRoute() {\n\tconst router = useRouter();\n\tif (!(isServer ?? router.isServer)) useStore(router.stores.matchRouteDeps, (d) => d);\n\treturn React$1.useCallback((opts) => {\n\t\tconst { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;\n\t\treturn router.matchRoute(rest, {\n\t\t\tpending,\n\t\t\tcaseSensitive,\n\t\t\tfuzzy,\n\t\t\tincludeSearch\n\t\t});\n\t}, [router]);\n}\n/**\n* Component that conditionally renders its children based on whether a route\n* matches the provided `from`/`to` options. If `children` is a function, it\n* receives the matched params object.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/matchRouteComponent\n*/\nfunction MatchRoute(props) {\n\tconst params = useMatchRoute()(props);\n\tif (typeof props.children === \"function\") return props.children(params);\n\treturn params ? props.children : null;\n}\nfunction useMatches(opts) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst matches = router.stores.matches.get();\n\t\treturn opts?.select ? opts.select(matches) : matches;\n\t}\n\treturn useStore(router.stores.matches, useStructuralSharing(opts, router));\n}\n/**\n* Read the full array of active route matches or select a derived subset.\n*\n* Useful for debugging, breadcrumbs, or aggregating metadata across matches.\n*\n* @returns The array of matches (or the selected value).\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchesHook\n*/\n/**\n* Read the full array of active route matches or select a derived subset.\n*\n* Useful for debugging, breadcrumbs, or aggregating metadata across matches.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchesHook\n*/\nfunction useParentMatches(opts) {\n\tconst contextMatchId = React$1.useContext(matchContext);\n\treturn useMatches({\n\t\tselect: (matches) => {\n\t\t\tmatches = matches.slice(0, matches.findIndex((d) => d.id === contextMatchId));\n\t\t\treturn opts?.select ? opts.select(matches) : matches;\n\t\t},\n\t\tstructuralSharing: opts?.structuralSharing\n\t});\n}\n/**\n* Read the array of active route matches that are children of the current\n* match (or selected parent) in the match tree.\n*/\nfunction useChildMatches(opts) {\n\tconst contextMatchId = React$1.useContext(matchContext);\n\treturn useMatches({\n\t\tselect: (matches) => {\n\t\t\tmatches = matches.slice(matches.findIndex((d) => d.id === contextMatchId) + 1);\n\t\t\treturn opts?.select ? opts.select(matches) : matches;\n\t\t},\n\t\tstructuralSharing: opts?.structuralSharing\n\t});\n}\n//#endregion\nexport { MatchRoute, Matches, useChildMatches, useMatchRoute, useMatches, useParentMatches };\n\n//# sourceMappingURL=Matches.js.map","import { createNonReactiveMutableStore, createNonReactiveReadonlyStore } from \"@tanstack/router-core\";\nimport { batch, createAtom } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/routerStores.ts\nvar getStoreFactory = (opts) => {\n\tif (isServer ?? opts.isServer) return {\n\t\tcreateMutableStore: createNonReactiveMutableStore,\n\t\tcreateReadonlyStore: createNonReactiveReadonlyStore,\n\t\tbatch: (fn) => fn()\n\t};\n\treturn {\n\t\tcreateMutableStore: createAtom,\n\t\tcreateReadonlyStore: createAtom,\n\t\tbatch\n\t};\n};\n//#endregion\nexport { getStoreFactory };\n\n//# sourceMappingURL=routerStores.js.map","import { getStoreFactory } from \"./routerStores.js\";\nimport { RouterCore } from \"@tanstack/router-core\";\n//#region src/router.ts\n/**\n* Creates a new Router instance for React.\n*\n* Pass the returned router to `RouterProvider` to enable routing.\n* Notable options: `routeTree` (your route definitions) and `context`\n* (required if the root route was created with `createRootRouteWithContext`).\n*\n* @param options Router options used to configure the router.\n* @returns A Router instance to be provided to `RouterProvider`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouterFunction\n*/\nvar createRouter = (options) => {\n\treturn new Router(options);\n};\nvar Router = class extends RouterCore {\n\tconstructor(options) {\n\t\tsuper(options, getStoreFactory);\n\t}\n};\n//#endregion\nexport { Router, createRouter };\n\n//# sourceMappingURL=router.js.map","\"use client\";\nimport { routerContext } from \"./routerContext.js\";\nimport { Matches } from \"./Matches.js\";\nimport { hasKeys } from \"@tanstack/router-core\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/RouterProvider.tsx\n/**\n* Low-level provider that places the router into React context and optionally\n* updates router options from props. Most apps should use `RouterProvider`.\n*/\nfunction RouterContextProvider({ router, children, ...rest }) {\n\tif (hasKeys(rest)) router.update({\n\t\t...router.options,\n\t\t...rest,\n\t\tcontext: {\n\t\t\t...router.options.context,\n\t\t\t...rest.context\n\t\t}\n\t});\n\tconst provider = /* @__PURE__ */ jsx(routerContext.Provider, {\n\t\tvalue: router,\n\t\tchildren\n\t});\n\tif (router.options.Wrap) return /* @__PURE__ */ jsx(router.options.Wrap, { children: provider });\n\treturn provider;\n}\n/**\n* Top-level component that renders the active route matches and provides the\n* router to the React tree via context.\n*\n* Accepts the same options as `createRouter` via props to update the router\n* instance after creation.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouterFunction\n*/\nfunction RouterProvider({ router, ...rest }) {\n\treturn /* @__PURE__ */ jsx(RouterContextProvider, {\n\t\trouter,\n\t\t...rest,\n\t\tchildren: /* @__PURE__ */ jsx(Matches, {})\n\t});\n}\n//#endregion\nexport { RouterContextProvider, RouterProvider };\n\n//# sourceMappingURL=RouterProvider.js.map","\"use client\";\nimport { useRouter } from \"./useRouter.js\";\nimport { useStructuralSharing } from \"./useMatch.js\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/useLocation.tsx\n/**\n* Read the current location from the router state with optional selection.\n* Useful for subscribing to just the pieces of location you care about.\n*\n* Options:\n* - `select`: Project the `location` object to a derived value\n* - `structuralSharing`: Enable structural sharing for stable references\n*\n* @returns The current location (or selected value).\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLocationHook\n*/\nfunction useLocation(opts) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst location = router.stores.location.get();\n\t\treturn opts?.select ? opts.select(location) : location;\n\t}\n\treturn useStore(router.stores.location, useStructuralSharing(opts, router));\n}\n//#endregion\nexport { useLocation };\n\n//# sourceMappingURL=useLocation.js.map","/**\n * table-core\n *\n * Copyright (c) TanStack\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 */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n let isInitial = true;\n function memoizedFunction() {\n var _a, _b, _c;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result);\n }\n isInitial = false;\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollState = null;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.now = () => {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();\n };\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n const node = entry.target;\n const index = this.indexFromElement(node);\n if (!node.isConnected) {\n this.observer.unobserve(node);\n return;\n }\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(\n index,\n this.options.measureElement(node, entry, this)\n );\n }\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n laneAssignmentMode: \"estimate\",\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n if (this.scrollState) {\n this.scheduleScrollReconcile();\n }\n this.maybeNotify();\n })\n );\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n }\n };\n this.rafId = null;\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n this.options.laneAssignmentMode\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMeasuredCacheIndexes = [];\n }\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n laneLastIndex[item.lane] = m;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n const shouldCacheLane = laneAssignmentMode === \"estimate\" || itemSizeCache.has(key);\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin;\n } else {\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n if (this.options.lanes > 1 && shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n laneLastIndex[lane] = i;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this.shouldMeasureDuringScroll = (index) => {\n var _a;\n if (!this.scrollState || this.scrollState.behavior !== \"smooth\") {\n return true;\n }\n const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);\n if (scrollIndex !== void 0 && this.range) {\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2)\n );\n const minIndex = Math.max(0, scrollIndex - bufferSize);\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize\n );\n return index >= minIndex && index <= maxIndex;\n }\n return true;\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key2) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key2);\n }\n });\n return;\n }\n const index = this.indexFromElement(node);\n const key = this.options.getItemKey(index);\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if ((!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, void 0, this));\n }\n };\n this.resizeItem = (index, size) => {\n var _a;\n const item = this.measurementsCache[index];\n if (!item) return;\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (((_a = this.scrollState) == null ? void 0 : _a.behavior) !== \"smooth\" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments)) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getMaxScrollOffset = () => {\n if (!this.scrollElement) return 0;\n if (\"scrollHeight\" in this.scrollElement) {\n return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;\n } else {\n const doc = this.scrollElement.document.documentElement;\n return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight;\n }\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n if (!this.scrollElement) return 0;\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getMaxScrollOffset();\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n const item = this.measurementsCache[index];\n if (!item) return;\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n if (align === \"end\" && index === this.options.count - 1) {\n return [this.getMaxScrollOffset(), align];\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior = \"auto\" } = {}) => {\n const offset = this.getOffsetForAlignment(toOffset, align);\n const now = this.now();\n this.scrollState = {\n index: null,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollToIndex = (index, {\n align: initialAlign = \"auto\",\n behavior = \"auto\"\n } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const offsetInfo = this.getOffsetForIndex(index, initialAlign);\n if (!offsetInfo) {\n return;\n }\n const [offset, align] = offsetInfo;\n const now = this.now();\n this.scrollState = {\n index,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollBy = (delta, { behavior = \"auto\" } = {}) => {\n const offset = this.getScrollOffset() + delta;\n const now = this.now();\n this.scrollState = {\n index: null,\n align: \"start\",\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null;\n return;\n }\n if (this.rafId != null) return;\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null;\n this.reconcileScroll();\n });\n }\n reconcileScroll() {\n if (!this.scrollState) return;\n const el = this.scrollElement;\n if (!el) return;\n const MAX_RECONCILE_MS = 5e3;\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null;\n return;\n }\n const offsetInfo = this.scrollState.index != null ? this.getOffsetForIndex(this.scrollState.index, this.scrollState.align) : void 0;\n const targetOffset = offsetInfo ? offsetInfo[0] : this.scrollState.lastTargetOffset;\n const STABLE_FRAMES = 1;\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n this.scrollState.stableFrames++;\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n this.scrollState = null;\n return;\n }\n } else {\n this.scrollState.stableFrames = 0;\n if (targetChanged) {\n this.scrollState.lastTargetOffset = targetOffset;\n this.scrollState.behavior = \"auto\";\n this._scrollToOffset(targetOffset, {\n adjustments: void 0,\n behavior: \"auto\"\n });\n }\n }\n this.scheduleScrollReconcile();\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase({\n useFlushSync = true,\n ...options\n}) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (useFlushSync && sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","function toJsonSchema(obj) {\n const result = {};\n for (const [key, value] of Object.entries(obj)) {\n if (key === \"$schema\") continue;\n result[key] = value;\n }\n return result;\n}\nfunction isPropertyCarrier(schema) {\n return (typeof schema === \"object\" || typeof schema === \"function\") && schema !== null;\n}\nfunction isStandardJSONSchema(schema) {\n if (!isPropertyCarrier(schema) || !(\"~standard\" in schema)) return false;\n const standard = schema[\"~standard\"];\n if (typeof standard !== \"object\" || standard === null || !(\"version\" in standard) || standard.version !== 1 || !(\"jsonSchema\" in standard) || typeof standard.jsonSchema !== \"object\" || standard.jsonSchema === null || !(\"input\" in standard.jsonSchema)) {\n return false;\n }\n return typeof standard.jsonSchema.input === \"function\";\n}\nfunction isStandardSchema(schema) {\n return isPropertyCarrier(schema) && \"~standard\" in schema && typeof schema[\"~standard\"] === \"object\" && schema[\"~standard\"] !== null && \"version\" in schema[\"~standard\"] && schema[\"~standard\"].version === 1 && \"validate\" in schema[\"~standard\"] && typeof schema[\"~standard\"].validate === \"function\";\n}\nfunction pruneMap(map) {\n return Object.keys(map).length > 0 ? map : void 0;\n}\nfunction makeStructuredOutputCompatible(schema, originalRequired = []) {\n const result = { ...schema };\n const map = {};\n if (result.type === \"object\" && result.properties) {\n const properties = { ...result.properties };\n const allPropertyNames = Object.keys(properties);\n const propertyMaps = {};\n for (const propName of allPropertyNames) {\n const prop = properties[propName];\n if (!prop) continue;\n const wasOptional = !originalRequired.includes(propName);\n let widenedHere = false;\n let childMap;\n if (prop.type === \"object\" && prop.properties) {\n const nested = makeStructuredOutputCompatible(prop, prop.required || []);\n properties[propName] = wasOptional ? { ...nested.schema, type: [\"object\", \"null\"] } : nested.schema;\n widenedHere = wasOptional;\n childMap = nested.nullWidening;\n } else if (prop.type === \"array\" && prop.items) {\n const items = Array.isArray(prop.items) ? prop.items[0] : prop.items;\n const nestedItems = items ? makeStructuredOutputCompatible(items, items.required || []) : void 0;\n properties[propName] = {\n ...prop,\n items: nestedItems ? nestedItems.schema : prop.items,\n ...wasOptional ? { type: [\"array\", \"null\"] } : {}\n };\n widenedHere = wasOptional;\n childMap = nestedItems?.nullWidening ? { items: nestedItems.nullWidening } : void 0;\n } else if (wasOptional) {\n if (prop.type && !Array.isArray(prop.type)) {\n properties[propName] = { ...prop, type: [prop.type, \"null\"] };\n widenedHere = true;\n } else if (Array.isArray(prop.type) && !prop.type.includes(\"null\")) {\n properties[propName] = { ...prop, type: [...prop.type, \"null\"] };\n widenedHere = true;\n }\n }\n if (widenedHere || childMap) {\n propertyMaps[propName] = {\n ...childMap ?? {},\n ...widenedHere ? { widened: true } : {}\n };\n }\n }\n result.properties = properties;\n result.required = allPropertyNames;\n result.additionalProperties = false;\n if (Object.keys(propertyMaps).length > 0) map.properties = propertyMaps;\n }\n if (result.type === \"array\" && result.items) {\n const items = Array.isArray(result.items) ? result.items[0] : result.items;\n if (items) {\n const nestedItems = makeStructuredOutputCompatible(\n items,\n items.required || []\n );\n result.items = nestedItems.schema;\n if (nestedItems.nullWidening) map.items = nestedItems.nullWidening;\n }\n }\n return { schema: result, nullWidening: pruneMap(map) };\n}\nfunction toTypedJsonSchema(schema) {\n if (isStandardJSONSchema(schema)) {\n const jsonSchema = schema[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n const result = toJsonSchema(jsonSchema);\n if (\"properties\" in result && !result.type) result.type = \"object\";\n if (result.type === \"object\" && !(\"properties\" in result)) {\n result.properties = {};\n }\n if (result.type === \"object\" && !(\"required\" in result)) {\n result.required = [];\n }\n return result;\n }\n if (isStandardSchema(schema)) {\n throw new Error(\n \"Schema is a Standard Schema validator but does not expose a JSON Schema converter on `~standard.jsonSchema`. Use Zod v4.2+, ArkType v2.1.28+, or wrap a Valibot schema with `toStandardJsonSchema()` from `@valibot/to-json-schema` before passing it as `outputSchema`.\"\n );\n }\n if (typeof schema !== \"object\") return schema;\n return toJsonSchema(schema);\n}\nfunction convertSchemaToJsonSchema(schema, options = {}) {\n if (!schema) return void 0;\n const { forStructuredOutput = false } = options;\n if (!forStructuredOutput && !isStandardJSONSchema(schema) && !isStandardSchema(schema)) {\n return schema;\n }\n const base = toTypedJsonSchema(schema);\n if (!base || typeof base !== \"object\") return base;\n if (!forStructuredOutput) return base;\n return makeStructuredOutputCompatible(base, base.required || []).schema;\n}\nfunction convertSchemaForStructuredOutput(schema) {\n if (!schema) return { jsonSchema: void 0, nullWideningMap: void 0 };\n const base = toTypedJsonSchema(schema);\n if (!base || typeof base !== \"object\") {\n return { jsonSchema: base, nullWideningMap: void 0 };\n }\n const { schema: jsonSchema, nullWidening } = makeStructuredOutputCompatible(\n base,\n base.required || []\n );\n return { jsonSchema, nullWideningMap: nullWidening };\n}\nclass StandardSchemaValidationError extends Error {\n name = \"StandardSchemaValidationError\";\n issues;\n constructor(issues) {\n super(\n `Validation failed: ${issues.map((i) => i.message || \"Validation failed\").join(\", \")}`\n );\n this.issues = issues;\n }\n}\nfunction parseWithStandardSchema(schema, data) {\n if (!isStandardSchema(schema)) {\n return data;\n }\n const result = schema[\"~standard\"].validate(data);\n if (result instanceof Promise) {\n throw new Error(\n \"Schema validation returned a Promise. Use validateWithStandardSchema for async validation.\"\n );\n }\n if (!result.issues) {\n return result.value;\n }\n throw new StandardSchemaValidationError(result.issues);\n}\nexport {\n StandardSchemaValidationError,\n convertSchemaForStructuredOutput,\n convertSchemaToJsonSchema,\n isStandardJSONSchema,\n isStandardSchema,\n parseWithStandardSchema\n};\n//# sourceMappingURL=schema-converter.js.map\n","const CONTENT_PART_TYPES = /* @__PURE__ */ new Set([\n \"text\",\n \"image\",\n \"audio\",\n \"video\",\n \"document\"\n]);\nfunction isContentPart(value) {\n if (typeof value !== \"object\" || value === null) return false;\n const part = value;\n if (typeof part.type !== \"string\" || !CONTENT_PART_TYPES.has(part.type)) {\n return false;\n }\n if (part.type === \"text\") {\n return typeof part.content === \"string\";\n }\n const source = part.source;\n if (typeof source !== \"object\" || source === null) return false;\n const src = source;\n if (typeof src.value !== \"string\") return false;\n if (src.type === \"data\") return typeof src.mimeType === \"string\";\n return src.type === \"url\";\n}\nfunction isContentPartArray(value) {\n return Array.isArray(value) && value.length > 0 && value.every(isContentPart);\n}\nfunction normalizeToolResult(result) {\n if (typeof result === \"string\") return result;\n if (isContentPartArray(result)) return result;\n return JSON.stringify(result);\n}\nexport {\n isContentPart,\n isContentPartArray,\n normalizeToolResult\n};\n//# sourceMappingURL=tool-result.js.map\n","import { normalizeToolResult } from \"../../utilities/tool-result.js\";\nfunction isContentPart(part) {\n return part.type === \"text\" || part.type === \"image\" || part.type === \"audio\" || part.type === \"video\" || part.type === \"document\";\n}\nfunction safeJsonStringify(value) {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n}\nfunction parseToolResultContent(content) {\n try {\n return JSON.parse(content);\n } catch {\n return content;\n }\n}\nfunction collapseContentParts(parts) {\n if (parts.length === 0) return null;\n const allText = parts.every((p) => p.type === \"text\");\n if (allText) {\n const joined = parts.map((p) => p.content).join(\"\");\n return joined || null;\n }\n return parts;\n}\nfunction getTextContent(content) {\n if (content === null) return \"\";\n if (typeof content === \"string\") return content;\n return content.filter((part) => part.type === \"text\").map((part) => part.content).join(\"\");\n}\nfunction convertMessagesToModelMessages(messages) {\n const anchoredToolCallIds = /* @__PURE__ */ new Set();\n for (const msg of messages) {\n if (\"parts\" in msg) {\n for (const part of msg.parts) {\n if (part.type === \"tool-result\") {\n anchoredToolCallIds.add(part.toolCallId);\n }\n }\n }\n }\n const modelMessages = [];\n for (const msg of messages) {\n if (\"parts\" in msg) {\n modelMessages.push(...uiMessageToModelMessages(msg));\n continue;\n }\n const role = msg.role;\n if (role === \"tool\" && msg.toolCallId && anchoredToolCallIds.has(msg.toolCallId)) {\n continue;\n }\n if (role === \"reasoning\" || role === \"activity\") {\n continue;\n }\n if (role === \"developer\") {\n modelMessages.push({\n role: \"system\",\n content: msg.content\n });\n continue;\n }\n modelMessages.push(msg);\n }\n return modelMessages;\n}\nfunction uiMessageToModelMessages(uiMessage) {\n if (uiMessage.role === \"system\") {\n return [];\n }\n if (uiMessage.role !== \"assistant\") {\n return [buildUserOrToolMessage(uiMessage)];\n }\n return buildAssistantMessages(uiMessage);\n}\nfunction buildUserOrToolMessage(uiMessage) {\n const contentParts = [];\n for (const part of uiMessage.parts) {\n if (isContentPart(part)) {\n contentParts.push(part);\n }\n }\n return {\n role: uiMessage.role,\n content: collapseContentParts(contentParts)\n };\n}\nfunction createSegment() {\n return { contentParts: [], toolCalls: [] };\n}\nfunction isToolCallIncluded(part) {\n return part.state === \"input-complete\" || part.state === \"complete\" || part.state === \"approval-responded\" || part.state === \"error\" || part.output !== void 0;\n}\nfunction buildAssistantMessages(uiMessage) {\n const messageList = [];\n let current = createSegment();\n let pendingThinking = [];\n const emittedToolResultIds = /* @__PURE__ */ new Set();\n function flushSegment() {\n const content = collapseContentParts(current.contentParts);\n const hasContent = content !== null;\n const hasToolCalls = current.toolCalls.length > 0;\n if (hasContent || hasToolCalls) {\n messageList.push({\n role: \"assistant\",\n content,\n ...hasToolCalls && { toolCalls: current.toolCalls },\n ...pendingThinking.length > 0 && { thinking: pendingThinking }\n });\n pendingThinking = [];\n }\n current = createSegment();\n }\n for (const part of uiMessage.parts) {\n switch (part.type) {\n case \"text\":\n case \"image\":\n case \"audio\":\n case \"video\":\n case \"document\":\n current.contentParts.push(part);\n break;\n case \"tool-call\":\n if (isToolCallIncluded(part)) {\n current.toolCalls.push({\n id: part.id,\n type: \"function\",\n function: {\n name: part.name,\n arguments: part.arguments\n },\n ...part.metadata !== void 0 && { metadata: part.metadata }\n });\n }\n break;\n case \"tool-result\":\n flushSegment();\n if ((part.state === \"complete\" || part.state === \"error\") && !emittedToolResultIds.has(part.toolCallId)) {\n messageList.push({\n role: \"tool\",\n content: part.content,\n toolCallId: part.toolCallId\n });\n emittedToolResultIds.add(part.toolCallId);\n }\n break;\n case \"thinking\":\n if (part.content) {\n pendingThinking.push({\n content: part.content,\n ...part.signature && { signature: part.signature }\n });\n }\n break;\n case \"structured-output\":\n if (part.status === \"complete\") {\n const serialized = part.raw !== \"\" ? part.raw : part.data !== void 0 ? safeJsonStringify(part.data) : \"\";\n if (serialized !== \"\") {\n current.contentParts.push({ type: \"text\", content: serialized });\n }\n }\n break;\n }\n }\n flushSegment();\n for (const part of uiMessage.parts) {\n if (part.type !== \"tool-call\") continue;\n if (part.output !== void 0 && !emittedToolResultIds.has(part.id)) {\n messageList.push({\n role: \"tool\",\n content: normalizeToolResult(part.output),\n toolCallId: part.id\n });\n emittedToolResultIds.add(part.id);\n }\n if (part.output === void 0 && part.state === \"approval-responded\" && part.approval?.approved !== void 0 && !emittedToolResultIds.has(part.id)) {\n const approved = part.approval.approved;\n messageList.push({\n role: \"tool\",\n content: JSON.stringify({\n approved,\n ...approved && { pendingExecution: true },\n message: approved ? \"User approved this action\" : \"User denied this action\"\n }),\n toolCallId: part.id\n });\n emittedToolResultIds.add(part.id);\n }\n }\n if (messageList.length === 0) {\n messageList.push({\n role: \"assistant\",\n content: null\n });\n }\n return messageList;\n}\nfunction modelMessageToUIMessage(modelMessage, id) {\n const parts = [];\n if (modelMessage.role === \"assistant\" && modelMessage.thinking?.length) {\n for (const thinking of modelMessage.thinking) {\n if (!thinking.content) continue;\n parts.push({\n type: \"thinking\",\n content: thinking.content,\n ...thinking.signature && { signature: thinking.signature }\n });\n }\n }\n if (modelMessage.role === \"tool\" && modelMessage.toolCallId) {\n parts.push({\n type: \"tool-result\",\n toolCallId: modelMessage.toolCallId,\n content: getTextContent(modelMessage.content),\n state: \"complete\"\n });\n } else if (Array.isArray(modelMessage.content)) {\n for (const part of modelMessage.content) {\n parts.push(part);\n }\n } else {\n const textContent = getTextContent(modelMessage.content);\n if (textContent) {\n parts.push({\n type: \"text\",\n content: textContent\n });\n }\n }\n if (modelMessage.toolCalls && modelMessage.toolCalls.length > 0) {\n for (const toolCall of modelMessage.toolCalls) {\n parts.push({\n type: \"tool-call\",\n id: toolCall.id,\n name: toolCall.function.name,\n arguments: toolCall.function.arguments,\n state: \"input-complete\",\n // Model messages have complete arguments\n ...toolCall.metadata !== void 0 && { metadata: toolCall.metadata }\n });\n }\n }\n return {\n id: id || generateMessageId(),\n role: modelMessage.role === \"tool\" ? \"assistant\" : modelMessage.role,\n parts\n };\n}\nfunction aguiSnapshotMessageToUIMessage(message) {\n if (\"parts\" in message) {\n return { ...message, id: message.id || generateMessageId() };\n }\n const id = message.id || generateMessageId();\n switch (message.role) {\n case \"user\":\n return {\n id,\n role: \"user\",\n parts: aguiUserContentToParts(message.content)\n };\n case \"assistant\":\n return modelMessageToUIMessage(\n {\n role: \"assistant\",\n content: message.content ?? null,\n ...message.toolCalls && { toolCalls: message.toolCalls }\n },\n id\n );\n case \"tool\":\n return modelMessageToUIMessage(\n {\n role: \"tool\",\n content: message.content,\n toolCallId: message.toolCallId\n },\n id\n );\n case \"system\":\n case \"developer\":\n return {\n id,\n role: \"system\",\n parts: message.content ? [{ type: \"text\", content: message.content }] : []\n };\n case \"reasoning\":\n return {\n id,\n role: \"assistant\",\n parts: message.content ? [{ type: \"thinking\", content: message.content }] : []\n };\n case \"activity\":\n default:\n return { id, role: \"assistant\", parts: [] };\n }\n}\nfunction aguiUserContentToParts(content) {\n if (typeof content === \"string\") {\n return content ? [{ type: \"text\", content }] : [];\n }\n const parts = [];\n for (const part of content) {\n if (part.type === \"text\") {\n parts.push({ type: \"text\", content: part.text });\n } else if (part.type !== \"binary\") {\n parts.push(part);\n }\n }\n return parts;\n}\nfunction modelMessagesToUIMessages(modelMessages) {\n const uiMessages = [];\n let currentAssistantMessage = null;\n for (const msg of modelMessages) {\n if (msg.role === \"tool\") {\n if (msg.toolCallId !== void 0 && currentAssistantMessage && currentAssistantMessage.role === \"assistant\") {\n const content = getTextContent(msg.content);\n const toolCallPart = currentAssistantMessage.parts.find(\n (part) => part.type === \"tool-call\" && part.id === msg.toolCallId\n );\n if (toolCallPart) {\n toolCallPart.output = parseToolResultContent(content);\n toolCallPart.state = \"complete\";\n }\n currentAssistantMessage.parts.push({\n type: \"tool-result\",\n toolCallId: msg.toolCallId,\n content,\n state: \"complete\"\n });\n } else {\n const toolResultUIMessage = modelMessageToUIMessage(msg);\n uiMessages.push(toolResultUIMessage);\n }\n } else {\n const uiMessage = modelMessageToUIMessage(msg);\n uiMessages.push(uiMessage);\n if (msg.role === \"assistant\") {\n currentAssistantMessage = uiMessage;\n } else {\n currentAssistantMessage = null;\n }\n }\n }\n return uiMessages;\n}\nfunction normalizeToUIMessage(message, generateId) {\n if (\"parts\" in message) {\n return {\n ...message,\n id: message.id || generateId(),\n createdAt: message.createdAt || /* @__PURE__ */ new Date()\n };\n } else {\n return {\n ...modelMessageToUIMessage(message, generateId()),\n createdAt: /* @__PURE__ */ new Date()\n };\n }\n}\nfunction generateMessageId() {\n return `msg-${Date.now()}-${Math.random().toString(36).substring(7)}`;\n}\nexport {\n aguiSnapshotMessageToUIMessage,\n convertMessagesToModelMessages,\n generateMessageId,\n modelMessageToUIMessage,\n modelMessagesToUIMessages,\n normalizeToUIMessage,\n uiMessageToModelMessages\n};\n//# sourceMappingURL=messages.js.map\n","function uiMessagesToWire(messages) {\n const wire = [];\n for (const msg of messages) {\n const parts = (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- runtime input may be ModelMessage-shaped (no `parts`); cast forces the optional-chain fallback below to remain in scope\n msg.parts ?? []\n );\n if (msg.role === \"system\") {\n wire.push({\n ...msg,\n content: parts.length > 0 ? collectText(parts) : msg.content ?? \"\"\n });\n continue;\n }\n if (msg.role === \"user\") {\n wire.push({\n ...msg,\n content: parts.length > 0 ? collectUserContent(parts) : msg.content ?? \"\"\n });\n continue;\n }\n for (const part of parts) {\n if (part.type === \"thinking\") {\n wire.push({\n role: \"reasoning\",\n id: deriveReasoningId(msg.id, part),\n content: part.content\n });\n }\n }\n const text = collectText(parts);\n const toolCalls = collectToolCalls(parts);\n wire.push({\n ...msg,\n ...text !== \"\" && { content: text },\n ...toolCalls && { toolCalls }\n });\n for (const part of parts) {\n if (part.type === \"tool-result\") {\n wire.push({\n role: \"tool\",\n id: deriveToolMessageId(part.toolCallId),\n toolCallId: part.toolCallId,\n content: typeof part.content === \"string\" ? part.content : JSON.stringify(part.content),\n ...part.error !== void 0 && { error: part.error }\n });\n }\n }\n }\n return wire;\n}\nfunction collectText(parts) {\n const out = [];\n for (const p of parts) {\n if (p.type === \"text\") {\n out.push(p.content);\n } else if (p.type === \"structured-output\" && p.status === \"complete\" && p.raw !== \"\") {\n out.push(p.raw);\n }\n }\n return out.join(\"\");\n}\nfunction collectUserContent(parts) {\n const hasMultimodal = parts.some(\n (p) => p.type === \"image\" || p.type === \"audio\" || p.type === \"video\" || p.type === \"document\"\n );\n if (!hasMultimodal) {\n return collectText(parts);\n }\n const out = [];\n for (const p of parts) {\n if (p.type === \"text\") {\n out.push({ type: \"text\", text: p.content });\n } else if (p.type === \"image\" || p.type === \"audio\" || p.type === \"video\" || p.type === \"document\") {\n out.push(p);\n }\n }\n return out;\n}\nfunction collectToolCalls(parts) {\n const calls = [];\n for (const p of parts) {\n if (p.type === \"tool-call\") {\n calls.push({\n id: p.id,\n type: \"function\",\n function: { name: p.name, arguments: p.arguments }\n });\n }\n }\n return calls.length > 0 ? calls : void 0;\n}\nfunction deriveReasoningId(messageId, part) {\n return `${messageId}-reasoning-${part.id ?? hashContent(part.content)}`;\n}\nfunction deriveToolMessageId(toolCallId) {\n return `tool-${toolCallId}`;\n}\nfunction hashContent(s) {\n let h = 0;\n for (let i = 0; i < s.length; i++) h = h * 31 + s.charCodeAt(i) | 0;\n return Math.abs(h).toString(36);\n}\nexport {\n uiMessagesToWire\n};\n//# sourceMappingURL=ag-ui-wire.js.map\n","class ImmediateStrategy {\n shouldEmit(_chunk, _accumulated) {\n return true;\n }\n}\nclass PunctuationStrategy {\n punctuation = /[.,!?;:\\n]/;\n shouldEmit(chunk, _accumulated) {\n return this.punctuation.test(chunk);\n }\n}\nclass BatchStrategy {\n constructor(batchSize = 5) {\n this.batchSize = batchSize;\n }\n batchSize;\n chunkCount = 0;\n shouldEmit(_chunk, _accumulated) {\n this.chunkCount++;\n if (this.chunkCount >= this.batchSize) {\n this.chunkCount = 0;\n return true;\n }\n return false;\n }\n reset() {\n this.chunkCount = 0;\n }\n}\nclass WordBoundaryStrategy {\n shouldEmit(chunk, _accumulated) {\n return /\\s$/.test(chunk);\n }\n}\nclass CompositeStrategy {\n constructor(strategies) {\n this.strategies = strategies;\n }\n strategies;\n shouldEmit(chunk, accumulated) {\n return this.strategies.some((s) => s.shouldEmit(chunk, accumulated));\n }\n reset() {\n this.strategies.forEach((s) => s.reset?.());\n }\n}\nexport {\n BatchStrategy,\n CompositeStrategy,\n ImmediateStrategy,\n PunctuationStrategy,\n WordBoundaryStrategy\n};\n//# sourceMappingURL=strategies.js.map\n","\"use strict\";\n/**\n * Sometimes you don't allow every type to be partially parsed.\n * For example, you may not want a partial number because it may increase its size gradually before it's complete.\n * In this case, you can use the `Allow` object to control what types you allow to be partially parsed.\n * @module\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Allow = exports.ALL = exports.COLLECTION = exports.ATOM = exports.SPECIAL = exports.INF = exports._INFINITY = exports.INFINITY = exports.NAN = exports.BOOL = exports.NULL = exports.OBJ = exports.ARR = exports.NUM = exports.STR = void 0;\n/**\n * allow partial strings like `\"hello \\u12` to be parsed as `\"hello \"`\n */\nexports.STR = 0b000000001;\n/**\n * allow partial numbers like `123.` to be parsed as `123`\n */\nexports.NUM = 0b000000010;\n/**\n * allow partial arrays like `[1, 2,` to be parsed as `[1, 2]`\n */\nexports.ARR = 0b000000100;\n/**\n * allow partial objects like `{\"a\": 1, \"b\":` to be parsed as `{\"a\": 1}`\n */\nexports.OBJ = 0b000001000;\n/**\n * allow `nu` to be parsed as `null`\n */\nexports.NULL = 0b000010000;\n/**\n * allow `tr` to be parsed as `true`, and `fa` to be parsed as `false`\n */\nexports.BOOL = 0b000100000;\n/**\n * allow `Na` to be parsed as `NaN`\n */\nexports.NAN = 0b001000000;\n/**\n * allow `Inf` to be parsed as `Infinity`\n */\nexports.INFINITY = 0b010000000;\n/**\n * allow `-Inf` to be parsed as `-Infinity`\n */\nexports._INFINITY = 0b100000000;\nexports.INF = exports.INFINITY | exports._INFINITY;\nexports.SPECIAL = exports.NULL | exports.BOOL | exports.INF | exports.NAN;\nexports.ATOM = exports.STR | exports.NUM | exports.SPECIAL;\nexports.COLLECTION = exports.ARR | exports.OBJ;\nexports.ALL = exports.ATOM | exports.COLLECTION;\n/**\n * Control what types you allow to be partially parsed.\n * The default is to allow all types to be partially parsed, which in most casees is the best option.\n * @example\n * If you don't want to allow partial objects, you can use the following code:\n * ```ts\n * import { Allow, parse } from \"partial-json\";\n * parse(`[{\"a\": 1, \"b\": 2}, {\"a\": 3,`, Allow.ARR); // [ { a: 1, b: 2 } ]\n * ```\n * Or you can use `~` to disallow a type:\n * ```ts\n * parse(`[{\"a\": 1, \"b\": 2}, {\"a\": 3,`, ~Allow.OBJ); // [ { a: 1, b: 2 } ]\n * ```\n * @example\n * If you don't want to allow partial strings, you can use the following code:\n * ```ts\n * import { Allow, parse } from \"partial-json\";\n * parse(`[\"complete string\", \"incompl`, ~Allow.STR); // [ 'complete string' ]\n * ```\n */\nexports.Allow = { STR: exports.STR, NUM: exports.NUM, ARR: exports.ARR, OBJ: exports.OBJ, NULL: exports.NULL, BOOL: exports.BOOL, NAN: exports.NAN, INFINITY: exports.INFINITY, _INFINITY: exports._INFINITY, INF: exports.INF, SPECIAL: exports.SPECIAL, ATOM: exports.ATOM, COLLECTION: exports.COLLECTION, ALL: exports.ALL };\nexports.default = exports.Allow;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Allow = exports.MalformedJSON = exports.PartialJSON = exports.parseJSON = exports.parse = void 0;\nconst options_1 = require(\"./options\");\nObject.defineProperty(exports, \"Allow\", { enumerable: true, get: function () { return options_1.Allow; } });\n__exportStar(require(\"./options\"), exports);\nclass PartialJSON extends Error {\n}\nexports.PartialJSON = PartialJSON;\nclass MalformedJSON extends Error {\n}\nexports.MalformedJSON = MalformedJSON;\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = options_1.Allow.ALL) {\n if (typeof jsonString !== \"string\") {\n throw new TypeError(`expecting str, got ${typeof jsonString}`);\n }\n if (!jsonString.trim()) {\n throw new Error(`${jsonString} is empty`);\n }\n return _parseJSON(jsonString.trim(), allowPartial);\n}\nexports.parseJSON = parseJSON;\n;\nconst _parseJSON = (jsonString, allow) => {\n const length = jsonString.length;\n let index = 0;\n const markPartialJSON = (msg) => {\n throw new PartialJSON(`${msg} at position ${index}`);\n };\n const throwMalformedError = (msg) => {\n throw new MalformedJSON(`${msg} at position ${index}`);\n };\n const parseAny = () => {\n skipBlank();\n if (index >= length)\n markPartialJSON(\"Unexpected end of input\");\n if (jsonString[index] === '\"')\n return parseStr();\n if (jsonString[index] === \"{\")\n return parseObj();\n if (jsonString[index] === \"[\")\n return parseArr();\n if (jsonString.substring(index, index + 4) === \"null\" || (options_1.Allow.NULL & allow && length - index < 4 && \"null\".startsWith(jsonString.substring(index)))) {\n index += 4;\n return null;\n }\n if (jsonString.substring(index, index + 4) === \"true\" || (options_1.Allow.BOOL & allow && length - index < 4 && \"true\".startsWith(jsonString.substring(index)))) {\n index += 4;\n return true;\n }\n if (jsonString.substring(index, index + 5) === \"false\" || (options_1.Allow.BOOL & allow && length - index < 5 && \"false\".startsWith(jsonString.substring(index)))) {\n index += 5;\n return false;\n }\n if (jsonString.substring(index, index + 8) === \"Infinity\" || (options_1.Allow.INFINITY & allow && length - index < 8 && \"Infinity\".startsWith(jsonString.substring(index)))) {\n index += 8;\n return Infinity;\n }\n if (jsonString.substring(index, index + 9) === \"-Infinity\" || (options_1.Allow._INFINITY & allow && 1 < length - index && length - index < 9 && \"-Infinity\".startsWith(jsonString.substring(index)))) {\n index += 9;\n return -Infinity;\n }\n if (jsonString.substring(index, index + 3) === \"NaN\" || (options_1.Allow.NAN & allow && length - index < 3 && \"NaN\".startsWith(jsonString.substring(index)))) {\n index += 3;\n return NaN;\n }\n return parseNum();\n };\n const parseStr = () => {\n const start = index;\n let escape = false;\n index++; // skip initial quote\n while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === \"\\\\\"))) {\n escape = jsonString[index] === \"\\\\\" ? !escape : false;\n index++;\n }\n if (jsonString.charAt(index) == '\"') {\n try {\n return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n else if (options_1.Allow.STR & allow) {\n try {\n return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n }\n catch (e) {\n // SyntaxError: Invalid escape sequence\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf(\"\\\\\")) + '\"');\n }\n }\n markPartialJSON(\"Unterminated string literal\");\n };\n const parseObj = () => {\n index++; // skip initial brace\n skipBlank();\n const obj = {};\n try {\n while (jsonString[index] !== \"}\") {\n skipBlank();\n if (index >= length && options_1.Allow.OBJ & allow)\n return obj;\n const key = parseStr();\n skipBlank();\n index++; // skip colon\n try {\n const value = parseAny();\n obj[key] = value;\n }\n catch (e) {\n if (options_1.Allow.OBJ & allow)\n return obj;\n else\n throw e;\n }\n skipBlank();\n if (jsonString[index] === \",\")\n index++; // skip comma\n }\n }\n catch (e) {\n if (options_1.Allow.OBJ & allow)\n return obj;\n else\n markPartialJSON(\"Expected '}' at end of object\");\n }\n index++; // skip final brace\n return obj;\n };\n const parseArr = () => {\n index++; // skip initial bracket\n const arr = [];\n try {\n while (jsonString[index] !== \"]\") {\n arr.push(parseAny());\n skipBlank();\n if (jsonString[index] === \",\") {\n index++; // skip comma\n }\n }\n }\n catch (e) {\n if (options_1.Allow.ARR & allow) {\n return arr;\n }\n markPartialJSON(\"Expected ']' at end of array\");\n }\n index++; // skip final bracket\n return arr;\n };\n const parseNum = () => {\n if (index === 0) {\n if (jsonString === \"-\")\n throwMalformedError(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n if (options_1.Allow.NUM & allow)\n try {\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf(\"e\")));\n }\n catch (e) { }\n throwMalformedError(String(e));\n }\n }\n const start = index;\n if (jsonString[index] === \"-\")\n index++;\n while (jsonString[index] && \",]}\".indexOf(jsonString[index]) === -1)\n index++;\n if (index == length && !(options_1.Allow.NUM & allow))\n markPartialJSON(\"Unterminated number literal\");\n try {\n return JSON.parse(jsonString.substring(start, index));\n }\n catch (e) {\n if (jsonString.substring(start, index) === \"-\")\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf(\"e\")));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n };\n const skipBlank = () => {\n while (index < length && \" \\n\\r\\t\".includes(jsonString[index])) {\n index++;\n }\n };\n return parseAny();\n};\nconst parse = parseJSON;\nexports.parse = parse;\n","import { parse } from \"partial-json\";\nclass PartialJSONParser {\n /**\n * Parse a potentially incomplete JSON string\n * @param jsonString - The JSON string to parse (may be incomplete)\n * @returns The parsed object, or undefined if parsing fails\n */\n parse(jsonString) {\n if (!jsonString || jsonString.trim() === \"\") {\n return void 0;\n }\n try {\n return parse(jsonString);\n } catch {\n return void 0;\n }\n }\n}\nconst defaultJSONParser = new PartialJSONParser();\nfunction parsePartialJSON(jsonString) {\n return defaultJSONParser.parse(jsonString);\n}\nexport {\n PartialJSONParser,\n defaultJSONParser,\n parsePartialJSON\n};\n//# sourceMappingURL=json-parser.js.map\n","import { parsePartialJSON } from \"./json-parser.js\";\nfunction updateTextPart(messages, messageId, content) {\n return messages.map((msg) => {\n if (msg.id !== messageId) {\n return msg;\n }\n const parts = [...msg.parts];\n const lastPart = parts.length > 0 ? parts[parts.length - 1] : null;\n if (lastPart && lastPart.type === \"text\") {\n parts[parts.length - 1] = { type: \"text\", content };\n } else {\n parts.push({ type: \"text\", content });\n }\n return { ...msg, parts };\n });\n}\nfunction updateToolCallPart(messages, messageId, toolCall) {\n return messages.map((msg) => {\n if (msg.id !== messageId) {\n return msg;\n }\n const parts = [...msg.parts];\n const existing = parts.find(\n (p) => p.type === \"tool-call\" && p.id === toolCall.id\n );\n const metadata = toolCall.metadata ?? existing?.metadata;\n const toolCallPart = {\n type: \"tool-call\",\n id: toolCall.id,\n name: toolCall.name,\n arguments: toolCall.arguments,\n state: toolCall.state,\n // Carry forward approval and output from the existing part\n ...existing?.approval && { approval: { ...existing.approval } },\n ...existing?.output !== void 0 && { output: existing.output },\n ...metadata !== void 0 && { metadata }\n };\n if (existing) {\n parts[parts.indexOf(existing)] = toolCallPart;\n } else {\n parts.push(toolCallPart);\n }\n return { ...msg, parts };\n });\n}\nfunction updateToolResultPart(messages, messageId, toolCallId, content, state, error) {\n return messages.map((msg) => {\n if (msg.id !== messageId) {\n return msg;\n }\n const parts = [...msg.parts];\n const resultPartIndex = parts.findIndex(\n (p) => p.type === \"tool-result\" && p.toolCallId === toolCallId\n );\n const toolResultPart = {\n type: \"tool-result\",\n toolCallId,\n content,\n state,\n ...error && { error }\n };\n if (resultPartIndex >= 0) {\n parts[resultPartIndex] = toolResultPart;\n } else {\n parts.push(toolResultPart);\n }\n return { ...msg, parts };\n });\n}\nfunction updateToolCallApproval(messages, messageId, toolCallId, approvalId) {\n return messages.map((msg) => {\n if (msg.id !== messageId) {\n return msg;\n }\n const parts = [...msg.parts];\n const toolCallPart = parts.find(\n (p) => p.type === \"tool-call\" && p.id === toolCallId\n );\n if (toolCallPart) {\n const index = parts.indexOf(toolCallPart);\n parts[index] = {\n ...toolCallPart,\n state: \"approval-requested\",\n approval: {\n id: approvalId,\n needsApproval: true\n }\n };\n }\n return { ...msg, parts };\n });\n}\nfunction updateToolCallWithOutput(messages, toolCallId, output, state, errorText) {\n return messages.map((msg) => {\n const parts = [...msg.parts];\n const toolCallPart = parts.find(\n (p) => p.type === \"tool-call\" && p.id === toolCallId\n );\n if (toolCallPart) {\n const index = parts.indexOf(toolCallPart);\n parts[index] = {\n ...toolCallPart,\n output: errorText ? { error: errorText } : output,\n state: state ?? (errorText ? \"error\" : \"complete\")\n };\n }\n return { ...msg, parts };\n });\n}\nfunction updateToolCallApprovalResponse(messages, approvalId, approved) {\n return messages.map((msg) => {\n const parts = [...msg.parts];\n const toolCallPart = parts.find(\n (p) => p.type === \"tool-call\" && p.approval?.id === approvalId\n );\n if (toolCallPart && toolCallPart.approval) {\n const index = parts.indexOf(toolCallPart);\n parts[index] = {\n ...toolCallPart,\n approval: { ...toolCallPart.approval, approved },\n state: \"approval-responded\"\n };\n }\n return { ...msg, parts };\n });\n}\nfunction appendStructuredOutputDelta(messages, messageId, delta) {\n return messages.map((msg) => {\n if (msg.id !== messageId) {\n return msg;\n }\n const parts = [...msg.parts];\n const existingIndex = parts.findIndex(\n (p) => p.type === \"structured-output\"\n );\n const existing = existingIndex >= 0 ? parts[existingIndex] : null;\n const nextRaw = (existing?.raw ?? \"\") + delta;\n const progressive = parsePartialJSON(nextRaw);\n const nextPartial = progressive !== void 0 && progressive !== null ? progressive : existing?.partial;\n const nextPart = {\n type: \"structured-output\",\n status: \"streaming\",\n raw: nextRaw,\n ...nextPartial !== void 0 ? { partial: nextPartial } : {},\n ...existing?.reasoning !== void 0 ? { reasoning: existing.reasoning } : {}\n };\n if (existingIndex >= 0) {\n parts[existingIndex] = nextPart;\n } else {\n parts.push(nextPart);\n }\n return { ...msg, parts };\n });\n}\nfunction completeStructuredOutputPart(messages, messageId, data, raw, reasoning) {\n return messages.map((msg) => {\n if (msg.id !== messageId) {\n return msg;\n }\n const parts = [...msg.parts];\n const existingIndex = parts.findIndex(\n (p) => p.type === \"structured-output\"\n );\n const existingRaw = existingIndex >= 0 ? parts[existingIndex].raw : \"\";\n let resolvedRaw = raw || existingRaw;\n if (resolvedRaw === \"\" && data !== void 0) {\n try {\n resolvedRaw = JSON.stringify(data);\n } catch {\n }\n }\n const nextPart = {\n type: \"structured-output\",\n status: \"complete\",\n data,\n partial: data,\n raw: resolvedRaw,\n ...reasoning !== void 0 ? { reasoning } : {}\n };\n if (existingIndex >= 0) {\n parts[existingIndex] = nextPart;\n } else {\n parts.push(nextPart);\n }\n return { ...msg, parts };\n });\n}\nfunction errorStructuredOutputPart(messages, messageId, errorMessage) {\n return messages.map((msg) => {\n if (msg.id !== messageId) {\n return msg;\n }\n const parts = [...msg.parts];\n const existingIndex = parts.findIndex(\n (p) => p.type === \"structured-output\"\n );\n if (existingIndex < 0) {\n parts.push({\n type: \"structured-output\",\n status: \"error\",\n raw: \"\",\n errorMessage\n });\n return { ...msg, parts };\n }\n const existing = parts[existingIndex];\n if (existing.status === \"complete\") {\n return msg;\n }\n parts[existingIndex] = {\n ...existing,\n status: \"error\",\n errorMessage\n };\n return { ...msg, parts };\n });\n}\nfunction updateThinkingPart(messages, messageId, stepId, content, signature) {\n return messages.map((msg) => {\n if (msg.id !== messageId) {\n return msg;\n }\n const parts = [...msg.parts];\n const thinkingPartIndex = parts.findIndex(\n (p) => p.type === \"thinking\" && p.stepId === stepId\n );\n const thinkingPart = {\n type: \"thinking\",\n content,\n stepId,\n ...signature && { signature }\n };\n if (thinkingPartIndex >= 0) {\n parts[thinkingPartIndex] = thinkingPart;\n } else {\n parts.push(thinkingPart);\n }\n return { ...msg, parts };\n });\n}\nexport {\n appendStructuredOutputDelta,\n completeStructuredOutputPart,\n errorStructuredOutputPart,\n updateTextPart,\n updateThinkingPart,\n updateToolCallApproval,\n updateToolCallApprovalResponse,\n updateToolCallPart,\n updateToolCallWithOutput,\n updateToolResultPart\n};\n//# sourceMappingURL=message-updaters.js.map\n","import { generateMessageId, uiMessageToModelMessages, aguiSnapshotMessageToUIMessage } from \"../messages.js\";\nimport { normalizeToolResult } from \"../../../utilities/tool-result.js\";\nimport { defaultJSONParser } from \"./json-parser.js\";\nimport { updateToolCallWithOutput, updateToolResultPart, updateToolCallApprovalResponse, appendStructuredOutputDelta, updateToolCallPart, errorStructuredOutputPart, updateThinkingPart, completeStructuredOutputPart, updateToolCallApproval, updateTextPart } from \"./message-updaters.js\";\nimport { ImmediateStrategy } from \"./strategies.js\";\nconst STRUCTURED_OUTPUT_UPDATE_BATCH_SIZE = 12;\nclass StreamProcessor {\n chunkStrategy;\n events;\n jsonParser;\n recordingEnabled;\n // Message state\n messages = [];\n // Per-message stream state\n messageStates = /* @__PURE__ */ new Map();\n activeMessageIds = /* @__PURE__ */ new Set();\n toolCallToMessage = /* @__PURE__ */ new Map();\n pendingManualMessageId = null;\n pendingThinkingStepId = null;\n structuredMessageIds = /* @__PURE__ */ new Set();\n structuredOutputUpdateBatches = /* @__PURE__ */ new Map();\n // Run tracking (for concurrent run safety)\n activeRuns = /* @__PURE__ */ new Set();\n // Shared stream state\n finishReason = null;\n hasError = false;\n isDone = false;\n // Recording\n recording = null;\n recordingStartTime = 0;\n constructor(options = {}) {\n this.chunkStrategy = options.chunkStrategy || new ImmediateStrategy();\n this.events = options.events || {};\n this.jsonParser = options.jsonParser || defaultJSONParser;\n this.recordingEnabled = options.recording ?? false;\n if (options.initialMessages) {\n this.messages = [...options.initialMessages];\n }\n }\n // ============================================\n // Message Management Methods\n // ============================================\n /**\n * Set the messages array (e.g., from persisted state)\n */\n setMessages(messages) {\n this.messages = [...messages];\n this.emitMessagesChange();\n }\n /**\n * Add a user message to the conversation.\n * Supports both simple string content and multimodal content arrays.\n *\n * @param content - The message content (string or array of content parts)\n * @param id - Optional custom message ID (generated if not provided)\n * @returns The created UIMessage\n *\n * @example\n * ```ts\n * // Simple text message\n * processor.addUserMessage('Hello!')\n *\n * // Multimodal message with image\n * processor.addUserMessage([\n * { type: 'text', content: 'What is in this image?' },\n * { type: 'image', source: { type: 'url', value: 'https://example.com/photo.jpg' } }\n * ])\n *\n * // With custom ID\n * processor.addUserMessage('Hello!', 'custom-id-123')\n * ```\n */\n addUserMessage(content, id) {\n const parts = typeof content === \"string\" ? [{ type: \"text\", content }] : content.map((part) => {\n return part;\n });\n const userMessage = {\n id: id ?? generateMessageId(),\n role: \"user\",\n parts,\n createdAt: /* @__PURE__ */ new Date()\n };\n this.messages = [...this.messages, userMessage];\n this.emitMessagesChange();\n return userMessage;\n }\n /**\n * Prepare for a new assistant message stream.\n * Does NOT create the message immediately -- the message is created lazily\n * when the first content-bearing chunk arrives via ensureAssistantMessage().\n * This prevents empty assistant messages from flickering in the UI when\n * auto-continuation produces no content.\n */\n prepareAssistantMessage() {\n this.resetStreamState();\n }\n /**\n * @deprecated Use prepareAssistantMessage() instead. This eagerly creates\n * an assistant message which can cause empty message flicker.\n */\n startAssistantMessage(messageId) {\n this.prepareAssistantMessage();\n const { messageId: id } = this.ensureAssistantMessage(messageId);\n this.pendingManualMessageId = id;\n return id;\n }\n /**\n * Get the current assistant message ID (if one has been created).\n * Returns null if prepareAssistantMessage() was called but no content\n * has arrived yet.\n */\n getCurrentAssistantMessageId() {\n let lastId = null;\n for (const [id, state] of this.messageStates) {\n if (state.role === \"assistant\") {\n lastId = id;\n }\n }\n return lastId;\n }\n /**\n * Add a tool result (called by client after handling onToolCall)\n */\n addToolResult(toolCallId, output, error) {\n const messageWithToolCall = this.messages.find(\n (msg) => msg.parts.some(\n (p) => p.type === \"tool-call\" && p.id === toolCallId\n )\n );\n if (!messageWithToolCall) {\n console.warn(\n `[StreamProcessor] Could not find message with tool call ${toolCallId}`\n );\n return;\n }\n let updatedMessages = updateToolCallWithOutput(\n this.messages,\n toolCallId,\n output,\n error ? \"error\" : void 0,\n error\n );\n const content = normalizeToolResult(output);\n const toolResultState = error ? \"error\" : \"complete\";\n updatedMessages = updateToolResultPart(\n updatedMessages,\n messageWithToolCall.id,\n toolCallId,\n content,\n toolResultState,\n error\n );\n this.messages = updatedMessages;\n this.emitMessagesChange();\n }\n /**\n * Add an approval response (called by client after handling onApprovalRequest)\n */\n addToolApprovalResponse(approvalId, approved) {\n this.messages = updateToolCallApprovalResponse(\n this.messages,\n approvalId,\n approved\n );\n this.emitMessagesChange();\n }\n /**\n * Get the conversation as ModelMessages (for sending to LLM)\n */\n toModelMessages() {\n const modelMessages = [];\n for (const msg of this.messages) {\n modelMessages.push(...uiMessageToModelMessages(msg));\n }\n return modelMessages;\n }\n /**\n * Get current messages\n */\n getMessages() {\n return this.messages;\n }\n /**\n * Check if all tool calls in the last assistant message are complete\n * Useful for auto-continue logic\n */\n areAllToolsComplete() {\n const lastAssistant = this.messages.findLast(\n (m) => m.role === \"assistant\"\n );\n if (!lastAssistant) return true;\n const toolParts = lastAssistant.parts.filter(\n (p) => p.type === \"tool-call\"\n );\n if (toolParts.length === 0) return true;\n const toolResultIds = new Set(\n lastAssistant.parts.filter((p) => p.type === \"tool-result\").map((p) => p.toolCallId)\n );\n return toolParts.every(\n (part) => part.state === \"complete\" || part.state === \"approval-responded\" || part.output !== void 0 && !part.approval || toolResultIds.has(part.id)\n );\n }\n /**\n * Remove messages after a certain index (for reload/retry)\n */\n removeMessagesAfter(index) {\n const keptIds = new Set(this.messages.slice(0, index + 1).map((m) => m.id));\n for (const id of this.structuredMessageIds) {\n if (!keptIds.has(id)) this.structuredMessageIds.delete(id);\n }\n for (const id of this.structuredOutputUpdateBatches.keys()) {\n if (!keptIds.has(id)) this.structuredOutputUpdateBatches.delete(id);\n }\n for (const id of this.messageStates.keys()) {\n if (!keptIds.has(id)) this.messageStates.delete(id);\n }\n for (const [toolCallId, msgId] of this.toolCallToMessage) {\n if (!keptIds.has(msgId)) this.toolCallToMessage.delete(toolCallId);\n }\n for (const id of this.activeMessageIds) {\n if (!keptIds.has(id)) this.activeMessageIds.delete(id);\n }\n this.messages = this.messages.slice(0, index + 1);\n this.emitMessagesChange();\n }\n /**\n * Clear all messages\n */\n clearMessages() {\n this.messages = [];\n this.messageStates.clear();\n this.activeMessageIds.clear();\n this.toolCallToMessage.clear();\n this.structuredMessageIds.clear();\n this.structuredOutputUpdateBatches.clear();\n this.pendingManualMessageId = null;\n this.emitMessagesChange();\n }\n // ============================================\n // Stream Processing Methods\n // ============================================\n /**\n * Process a stream and emit events through handlers\n */\n async process(stream) {\n this.resetStreamState();\n if (this.recordingEnabled) {\n this.startRecording();\n }\n for await (const chunk of stream) {\n this.processChunk(chunk);\n }\n this.finalizeStream();\n if (this.recording) {\n this.recording.result = this.getResult();\n }\n return this.getResult();\n }\n /**\n * Process a single chunk from the stream.\n *\n * Central dispatch for all AG-UI events. Each event type maps to a specific\n * handler. Events not listed in the switch are intentionally ignored\n * (STEP_STARTED, STATE_SNAPSHOT, STATE_DELTA).\n *\n * @see docs/chat-architecture.md#adapter-contract — Expected event types and ordering\n */\n processChunk(chunk) {\n if (this.recording) {\n this.recording.chunks.push({\n chunk,\n timestamp: Date.now(),\n index: this.recording.chunks.length\n });\n }\n const c = chunk;\n switch (c.type) {\n // AG-UI Events\n case \"TEXT_MESSAGE_START\":\n this.handleTextMessageStartEvent(\n chunk\n );\n break;\n case \"TEXT_MESSAGE_CONTENT\":\n this.handleTextMessageContentEvent(\n chunk\n );\n break;\n case \"TEXT_MESSAGE_END\":\n this.handleTextMessageEndEvent(\n chunk\n );\n break;\n case \"TOOL_CALL_START\":\n this.handleToolCallStartEvent(\n chunk\n );\n break;\n case \"TOOL_CALL_ARGS\":\n this.handleToolCallArgsEvent(\n chunk\n );\n break;\n case \"TOOL_CALL_END\":\n this.handleToolCallEndEvent(\n chunk\n );\n break;\n case \"RUN_FINISHED\":\n this.handleRunFinishedEvent(\n chunk\n );\n break;\n case \"RUN_ERROR\":\n this.handleRunErrorEvent(\n chunk\n );\n break;\n case \"STEP_FINISHED\":\n this.handleStepFinishedEvent(\n chunk\n );\n break;\n case \"MESSAGES_SNAPSHOT\":\n this.handleMessagesSnapshotEvent(\n chunk\n );\n break;\n case \"CUSTOM\":\n this.handleCustomEvent(\n chunk\n );\n break;\n case \"RUN_STARTED\":\n this.handleRunStartedEvent(\n chunk\n );\n break;\n case \"REASONING_START\":\n case \"REASONING_MESSAGE_START\":\n case \"REASONING_MESSAGE_END\":\n case \"REASONING_END\":\n break;\n case \"REASONING_MESSAGE_CONTENT\":\n this.handleReasoningMessageContentEvent(\n chunk\n );\n break;\n case \"TOOL_CALL_RESULT\":\n this.handleToolCallResultEvent(\n chunk\n );\n break;\n case \"STEP_STARTED\":\n this.handleStepStartedEvent(\n chunk\n );\n break;\n }\n }\n // ============================================\n // Per-Message State Helpers\n // ============================================\n /**\n * Create a new MessageStreamState for a message\n */\n createMessageState(messageId, role) {\n const state = {\n id: messageId,\n role,\n totalTextContent: \"\",\n currentSegmentText: \"\",\n lastEmittedText: \"\",\n hasSeenReasoningEvents: false,\n thinkingSteps: /* @__PURE__ */ new Map(),\n thinkingStepSignatures: /* @__PURE__ */ new Map(),\n thinkingStepOrder: [],\n currentThinkingStepId: null,\n toolCalls: /* @__PURE__ */ new Map(),\n toolCallOrder: [],\n hasToolCallsSinceTextStart: false,\n isComplete: false\n };\n this.messageStates.set(messageId, state);\n return state;\n }\n /**\n * Get the MessageStreamState for a message\n */\n getMessageState(messageId) {\n return this.messageStates.get(messageId);\n }\n /**\n * Promote a pending stepId from a STEP_STARTED that fired before the\n * assistant message existed onto the given message state, so the next\n * thinking event (STEP_FINISHED or REASONING_MESSAGE_CONTENT) attributes\n * to the correct step.\n */\n consumePendingThinkingStep(state) {\n if (!this.pendingThinkingStepId) return;\n const stepId = this.pendingThinkingStepId;\n state.currentThinkingStepId = stepId;\n if (!state.thinkingSteps.has(stepId)) {\n state.thinkingSteps.set(stepId, \"\");\n state.thinkingStepOrder.push(stepId);\n }\n this.pendingThinkingStepId = null;\n }\n /**\n * Get the most recent active assistant message ID.\n * Used as fallback for events that don't include a messageId.\n */\n getActiveAssistantMessageId() {\n const ids = Array.from(this.activeMessageIds).reverse();\n for (const id of ids) {\n const state = this.messageStates.get(id);\n if (state && state.role === \"assistant\") {\n return id;\n }\n }\n return null;\n }\n /**\n * Ensure an active assistant message exists, creating one if needed.\n * Used for backward compat when events arrive without prior TEXT_MESSAGE_START.\n *\n * On reconnect/resume, a TEXT_MESSAGE_CONTENT may arrive for a message that\n * already exists in this.messages (e.g. from initialMessages or a prior\n * MESSAGES_SNAPSHOT) but whose transient state was cleared. In that case we\n * hydrate state from the existing message rather than creating a duplicate.\n */\n ensureAssistantMessage(preferredId) {\n if (preferredId) {\n const state2 = this.getMessageState(preferredId);\n if (state2) return { messageId: preferredId, state: state2 };\n }\n const activeId = this.getActiveAssistantMessageId();\n if (activeId) {\n const state2 = this.getMessageState(activeId);\n if (state2) return { messageId: activeId, state: state2 };\n }\n if (preferredId) {\n const existingMsg = this.messages.find((m) => m.id === preferredId);\n if (existingMsg) {\n const state2 = this.createMessageState(preferredId, existingMsg.role);\n this.activeMessageIds.add(preferredId);\n const lastPart = existingMsg.parts.length > 0 ? existingMsg.parts[existingMsg.parts.length - 1] : null;\n if (lastPart && lastPart.type === \"text\") {\n state2.currentSegmentText = lastPart.content;\n state2.lastEmittedText = lastPart.content;\n state2.totalTextContent = lastPart.content;\n }\n return { messageId: preferredId, state: state2 };\n }\n }\n const id = preferredId || generateMessageId();\n const assistantMessage = {\n id,\n role: \"assistant\",\n parts: [],\n createdAt: /* @__PURE__ */ new Date()\n };\n this.messages = [...this.messages, assistantMessage];\n const state = this.createMessageState(id, \"assistant\");\n this.activeMessageIds.add(id);\n this.pendingManualMessageId = id;\n this.events.onStreamStart?.();\n this.emitMessagesChange();\n return { messageId: id, state };\n }\n // ============================================\n // Event Handlers\n // ============================================\n /**\n * Handle TEXT_MESSAGE_START event\n */\n handleTextMessageStartEvent(chunk) {\n const { messageId, role } = chunk;\n const uiRole = role === \"user\" || role === \"system\" ? role : \"assistant\";\n if (this.pendingManualMessageId) {\n const pendingId = this.pendingManualMessageId;\n this.pendingManualMessageId = null;\n if (pendingId !== messageId) {\n this.messages = this.messages.map(\n (msg) => msg.id === pendingId ? { ...msg, id: messageId } : msg\n );\n const existingState = this.messageStates.get(pendingId);\n if (existingState) {\n existingState.id = messageId;\n this.messageStates.delete(pendingId);\n this.messageStates.set(messageId, existingState);\n }\n this.activeMessageIds.delete(pendingId);\n this.activeMessageIds.add(messageId);\n }\n if (!this.messageStates.has(messageId)) {\n this.createMessageState(messageId, uiRole);\n this.activeMessageIds.add(messageId);\n }\n this.emitMessagesChange();\n return;\n }\n const existingMsg = this.messages.find((m) => m.id === messageId);\n if (existingMsg) {\n this.activeMessageIds.add(messageId);\n const existingState = this.messageStates.get(messageId);\n if (!existingState) {\n this.createMessageState(messageId, uiRole);\n } else {\n if (existingState.hasToolCallsSinceTextStart) {\n if (existingState.currentSegmentText !== existingState.lastEmittedText) {\n this.emitTextUpdateForMessage(messageId);\n }\n existingState.currentSegmentText = \"\";\n existingState.lastEmittedText = \"\";\n existingState.hasToolCallsSinceTextStart = false;\n }\n }\n return;\n }\n const newMessage = {\n id: messageId,\n role: uiRole,\n parts: [],\n createdAt: /* @__PURE__ */ new Date()\n };\n this.messages = [...this.messages, newMessage];\n this.createMessageState(messageId, uiRole);\n this.activeMessageIds.add(messageId);\n this.events.onStreamStart?.();\n this.emitMessagesChange();\n }\n /**\n * Handle TEXT_MESSAGE_END event\n */\n handleTextMessageEndEvent(chunk) {\n const { messageId } = chunk;\n const state = this.getMessageState(messageId);\n if (!state) return;\n if (state.isComplete) return;\n if (state.currentSegmentText !== state.lastEmittedText) {\n this.emitTextUpdateForMessage(messageId);\n }\n this.completeAllToolCallsForMessage(messageId);\n }\n /**\n * Handle MESSAGES_SNAPSHOT event\n */\n handleMessagesSnapshotEvent(chunk) {\n this.resetStreamState();\n this.messages = chunk.messages.map(aguiSnapshotMessageToUIMessage);\n this.emitMessagesChange();\n }\n /**\n * Handle TEXT_MESSAGE_CONTENT event.\n *\n * Accumulates delta into both currentSegmentText (for UI emission) and\n * totalTextContent (for ProcessorResult). Lazily creates the assistant\n * UIMessage on first content. Uses updateTextPart() which replaces the\n * last TextPart or creates a new one depending on part ordering.\n *\n * @see docs/chat-architecture.md#single-shot-text-response — Text accumulation step-by-step\n * @see docs/chat-architecture.md#uimessage-part-ordering-invariants — Replace vs. push logic\n */\n handleTextMessageContentEvent(chunk) {\n const { messageId, state } = this.ensureAssistantMessage(chunk.messageId);\n this.completeAllToolCallsForMessage(messageId);\n if (this.structuredMessageIds.has(messageId)) {\n let delta2 = chunk.delta || \"\";\n if (delta2 === \"\" && chunk.content !== void 0 && chunk.content !== \"\") {\n const existingRaw = (this.messages.find((m) => m.id === messageId)?.parts.find(\n (p) => p.type === \"structured-output\"\n ) ?? { raw: \"\" }).raw;\n if (chunk.content.startsWith(existingRaw)) {\n delta2 = chunk.content.slice(existingRaw.length);\n } else if (existingRaw.startsWith(chunk.content)) {\n delta2 = \"\";\n } else {\n delta2 = chunk.content;\n }\n }\n if (delta2 !== \"\") {\n this.messages = appendStructuredOutputDelta(\n this.messages,\n messageId,\n delta2\n );\n state.totalTextContent += delta2;\n this.queueStructuredOutputUpdate(messageId, delta2);\n this.emitMessagesChange();\n }\n return;\n }\n const previousSegment = state.currentSegmentText;\n const isNewSegment = state.hasToolCallsSinceTextStart && previousSegment.length > 0 && this.isNewTextSegment(chunk, previousSegment);\n if (isNewSegment) {\n if (previousSegment !== state.lastEmittedText) {\n this.emitTextUpdateForMessage(messageId);\n }\n state.currentSegmentText = \"\";\n state.lastEmittedText = \"\";\n state.hasToolCallsSinceTextStart = false;\n }\n const currentText = state.currentSegmentText;\n let nextText = currentText;\n const delta = chunk.delta || \"\";\n if (delta !== \"\") {\n nextText = currentText + delta;\n } else if (chunk.content !== void 0 && chunk.content !== \"\") {\n if (chunk.content.startsWith(currentText)) {\n nextText = chunk.content;\n } else if (currentText.startsWith(chunk.content)) {\n nextText = currentText;\n } else {\n nextText = currentText + chunk.content;\n }\n }\n const textDelta = nextText.slice(currentText.length);\n state.currentSegmentText = nextText;\n state.totalTextContent += textDelta;\n const chunkPortion = chunk.delta || chunk.content || \"\";\n const shouldEmit = this.chunkStrategy.shouldEmit(\n chunkPortion,\n state.currentSegmentText\n );\n if (shouldEmit && state.currentSegmentText !== state.lastEmittedText) {\n this.emitTextUpdateForMessage(messageId);\n }\n }\n /**\n * Handle TOOL_CALL_START event.\n *\n * Creates a new InternalToolCallState entry in the toolCalls Map and appends\n * a ToolCallPart to the UIMessage. Duplicate toolCallId is a no-op.\n *\n * CRITICAL: This MUST be received before any TOOL_CALL_ARGS for the same\n * toolCallId. Args for unknown IDs are silently dropped.\n *\n * @see docs/chat-architecture.md#single-shot-tool-call-response — Tool call state transitions\n * @see docs/chat-architecture.md#parallel-tool-calls-single-shot — Parallel tracking by ID\n * @see docs/chat-architecture.md#adapter-contract — Ordering requirements\n */\n handleToolCallStartEvent(chunk) {\n const targetMessageId = chunk.parentMessageId ?? this.getActiveAssistantMessageId();\n const { messageId, state } = this.ensureAssistantMessage(\n targetMessageId ?? void 0\n );\n state.hasToolCallsSinceTextStart = true;\n const toolCallId = chunk.toolCallId;\n const existingToolCall = state.toolCalls.get(toolCallId);\n if (!existingToolCall) {\n const initialState = \"awaiting-input\";\n const toolName = chunk.toolCallName ?? chunk.toolName;\n const chunkMetadata = chunk.metadata;\n const newToolCall = {\n id: chunk.toolCallId,\n name: toolName,\n arguments: \"\",\n state: initialState,\n parsedArguments: void 0,\n index: chunk.index ?? state.toolCalls.size,\n ...chunkMetadata !== void 0 && { metadata: chunkMetadata }\n };\n state.toolCalls.set(toolCallId, newToolCall);\n state.toolCallOrder.push(toolCallId);\n this.toolCallToMessage.set(toolCallId, messageId);\n this.messages = updateToolCallPart(this.messages, messageId, {\n id: chunk.toolCallId,\n name: toolName,\n arguments: \"\",\n state: initialState,\n ...chunkMetadata !== void 0 && { metadata: chunkMetadata }\n });\n this.emitMessagesChange();\n this.events.onToolCallStateChange?.(\n messageId,\n chunk.toolCallId,\n initialState,\n \"\"\n );\n }\n }\n /**\n * Handle TOOL_CALL_ARGS event.\n *\n * Appends the delta to the tool call's accumulated arguments string.\n * Transitions state from awaiting-input → input-streaming on first non-empty delta.\n * Attempts partial JSON parse on each update for UI preview.\n *\n * If toolCallId is not found in the Map (no preceding TOOL_CALL_START),\n * this event is silently dropped.\n *\n * @see docs/chat-architecture.md#single-shot-tool-call-response — Step-by-step tool call processing\n */\n handleToolCallArgsEvent(chunk) {\n const toolCallId = chunk.toolCallId;\n const messageId = this.toolCallToMessage.get(toolCallId);\n if (!messageId) return;\n const state = this.getMessageState(messageId);\n if (!state) return;\n const existingToolCall = state.toolCalls.get(toolCallId);\n if (!existingToolCall) return;\n const wasAwaitingInput = existingToolCall.state === \"awaiting-input\";\n existingToolCall.arguments += chunk.delta || \"\";\n if (wasAwaitingInput && chunk.delta) {\n existingToolCall.state = \"input-streaming\";\n }\n existingToolCall.parsedArguments = this.jsonParser.parse(\n existingToolCall.arguments\n );\n this.messages = updateToolCallPart(this.messages, messageId, {\n id: existingToolCall.id,\n name: existingToolCall.name,\n arguments: existingToolCall.arguments,\n state: existingToolCall.state\n });\n this.emitMessagesChange();\n this.events.onToolCallStateChange?.(\n messageId,\n existingToolCall.id,\n existingToolCall.state,\n existingToolCall.arguments\n );\n }\n /**\n * Handle TOOL_CALL_END event — authoritative signal that a tool call's input is finalized.\n *\n * This event has a DUAL ROLE:\n * - Without `result`: Signals arguments are done (from adapter). Transitions to input-complete.\n * - With `result`: Signals tool was executed and result is available (from TextEngine).\n * Creates both output on the tool-call part AND a tool-result part.\n *\n * If `input` is provided, it overrides the accumulated string parse as the\n * canonical parsed arguments.\n *\n * @see docs/chat-architecture.md#tool-results-and-the-tool_call_end-dual-role — Full explanation\n * @see docs/chat-architecture.md#single-shot-tool-call-response — End-to-end flow\n */\n handleToolCallEndEvent(chunk) {\n const messageId = this.toolCallToMessage.get(chunk.toolCallId);\n if (!messageId) return;\n const msgState = this.getMessageState(messageId);\n if (!msgState) return;\n const existingToolCall = msgState.toolCalls.get(chunk.toolCallId);\n if (existingToolCall && existingToolCall.state !== \"input-complete\") {\n if (chunk.input !== void 0 && !existingToolCall.arguments) {\n existingToolCall.arguments = JSON.stringify(chunk.input);\n }\n const index = msgState.toolCallOrder.indexOf(chunk.toolCallId);\n this.completeToolCall(messageId, index, existingToolCall);\n if (chunk.input !== void 0) {\n existingToolCall.parsedArguments = chunk.input;\n }\n }\n if (chunk.result) {\n let output;\n if (Array.isArray(chunk.result)) {\n output = chunk.result;\n } else {\n try {\n output = JSON.parse(chunk.result);\n } catch {\n output = chunk.result;\n }\n }\n this.messages = updateToolCallWithOutput(\n this.messages,\n chunk.toolCallId,\n output,\n chunk.state === \"output-error\" ? \"error\" : void 0\n );\n const resultState = chunk.state === \"output-error\" ? \"error\" : \"complete\";\n this.messages = updateToolResultPart(\n this.messages,\n messageId,\n chunk.toolCallId,\n chunk.result,\n resultState,\n resultState === \"error\" ? this.extractToolResultError(output) : void 0\n );\n this.emitMessagesChange();\n }\n }\n extractToolResultError(output) {\n if (output && typeof output === \"object\" && \"error\" in output && typeof output.error === \"string\") {\n return output.error;\n }\n return typeof output === \"string\" ? output : \"Tool execution failed\";\n }\n /**\n * Handle TOOL_CALL_RESULT event (AG-UI spec).\n *\n * Creates a tool-result part and updates the tool-call output field,\n * mirroring the logic from TOOL_CALL_END when it carries a result.\n * This is the spec-compliant path for delivering tool results to the client.\n */\n handleToolCallResultEvent(chunk) {\n const messageId = this.toolCallToMessage.get(chunk.toolCallId);\n if (!messageId) return;\n let output;\n try {\n output = JSON.parse(chunk.content);\n } catch {\n output = chunk.content;\n }\n this.messages = updateToolCallWithOutput(\n this.messages,\n chunk.toolCallId,\n output,\n chunk.state === \"output-error\" ? \"error\" : void 0\n );\n const resultState = chunk.state === \"output-error\" ? \"error\" : \"complete\";\n this.messages = updateToolResultPart(\n this.messages,\n messageId,\n chunk.toolCallId,\n chunk.content,\n resultState,\n resultState === \"error\" ? this.extractToolResultError(output) : void 0\n );\n this.emitMessagesChange();\n }\n /**\n * Handle RUN_STARTED event.\n *\n * Registers the run so that RUN_FINISHED can determine whether other\n * runs are still active before finalizing.\n */\n handleRunStartedEvent(chunk) {\n this.activeRuns.add(chunk.runId);\n }\n /**\n * Handle RUN_FINISHED event.\n *\n * Records the finishReason and removes the run from activeRuns.\n * Only finalizes when no more runs are active, so that concurrent\n * runs don't interfere with each other.\n *\n * @see docs/chat-architecture.md#single-shot-tool-call-response — finishReason semantics\n * @see docs/chat-architecture.md#adapter-contract — Why RUN_FINISHED is mandatory\n */\n handleRunFinishedEvent(chunk) {\n this.finishReason = chunk.finishReason ?? null;\n this.activeRuns.delete(chunk.runId);\n if (this.activeRuns.size === 0) {\n this.isDone = true;\n this.completeAllToolCalls();\n this.finalizeStream();\n }\n }\n /**\n * Handle RUN_ERROR event\n */\n handleRunErrorEvent(chunk) {\n this.hasError = true;\n const runId = \"runId\" in chunk && typeof chunk.runId === \"string\" ? chunk.runId : void 0;\n if (runId) {\n this.activeRuns.delete(runId);\n } else {\n this.activeRuns.clear();\n }\n const { messageId } = this.ensureAssistantMessage();\n const errorMessage = chunk.message || chunk.error?.message || \"An error occurred\";\n if (!chunk.message && !chunk.error?.message) {\n console.error(\n \"[StreamProcessor] RUN_ERROR with no message; original chunk:\",\n chunk\n );\n }\n if (this.structuredMessageIds.has(messageId)) {\n this.flushStructuredOutputUpdate(messageId);\n this.messages = errorStructuredOutputPart(\n this.messages,\n messageId,\n errorMessage\n );\n this.structuredMessageIds.delete(messageId);\n this.emitStructuredOutputChange(messageId, \"error\");\n this.emitMessagesChange();\n }\n const error = new Error(errorMessage);\n const code = chunk.code ?? chunk.error?.code;\n if (code !== void 0) {\n Object.assign(error, { code });\n }\n if (chunk.rawEvent !== void 0) {\n Object.assign(error, { rawEvent: chunk.rawEvent });\n }\n this.events.onError?.(error);\n }\n /**\n * Handle STEP_STARTED event (for thinking/reasoning content).\n *\n * Records the stepId so that subsequent STEP_FINISHED deltas accumulate\n * into their own ThinkingPart. Does not create a message — the message\n * is lazily created when the first STEP_FINISHED content arrives.\n */\n handleStepStartedEvent(chunk) {\n const stepId = chunk.stepId ?? generateMessageId();\n const activeId = this.getActiveAssistantMessageId();\n if (activeId) {\n const state = this.getMessageState(activeId);\n if (state) {\n state.currentThinkingStepId = stepId;\n if (!state.thinkingSteps.has(stepId)) {\n state.thinkingSteps.set(stepId, \"\");\n state.thinkingStepOrder.push(stepId);\n }\n this.pendingThinkingStepId = null;\n return;\n }\n }\n this.pendingThinkingStepId = stepId;\n }\n /**\n * Handle STEP_FINISHED event (for thinking/reasoning content).\n *\n * Accumulates delta into the current thinking step's content and updates\n * the corresponding ThinkingPart in the UIMessage.\n *\n * @see docs/chat-architecture.md#thinkingreasoning-content — Thinking flow\n */\n handleStepFinishedEvent(chunk) {\n const { messageId, state } = this.ensureAssistantMessage(\n this.getActiveAssistantMessageId() ?? void 0\n );\n if (state.hasSeenReasoningEvents) {\n if (chunk.signature) {\n const stepId2 = state.currentThinkingStepId ?? chunk.stepId;\n if (!stepId2) return;\n const thinking = state.thinkingSteps.get(stepId2);\n if (thinking !== void 0) {\n state.thinkingStepSignatures.set(stepId2, chunk.signature);\n this.messages = updateThinkingPart(\n this.messages,\n messageId,\n stepId2,\n thinking,\n chunk.signature\n );\n this.emitMessagesChange();\n }\n }\n return;\n }\n this.consumePendingThinkingStep(state);\n const stepId = state.currentThinkingStepId ?? chunk.stepId ?? generateMessageId();\n if (!state.thinkingSteps.has(stepId)) {\n state.thinkingSteps.set(stepId, \"\");\n state.thinkingStepOrder.push(stepId);\n state.currentThinkingStepId = stepId;\n }\n const previous = state.thinkingSteps.get(stepId) ?? \"\";\n let nextThinking = previous;\n if (chunk.delta && chunk.delta !== \"\") {\n nextThinking = previous + chunk.delta;\n } else if (chunk.content && chunk.content !== \"\") {\n if (chunk.content.startsWith(previous)) {\n nextThinking = chunk.content;\n } else if (previous.startsWith(chunk.content)) {\n nextThinking = previous;\n } else {\n nextThinking = previous + chunk.content;\n }\n }\n state.thinkingSteps.set(stepId, nextThinking);\n if (chunk.signature) {\n state.thinkingStepSignatures.set(stepId, chunk.signature);\n }\n this.messages = updateThinkingPart(\n this.messages,\n messageId,\n stepId,\n nextThinking,\n state.thinkingStepSignatures.get(stepId)\n );\n this.emitMessagesChange();\n this.events.onThinkingUpdate?.(messageId, stepId, nextThinking);\n }\n /**\n * Handle REASONING_MESSAGE_CONTENT event (AG-UI reasoning protocol).\n *\n * Accumulates reasoning delta into thinking content and updates the\n * corresponding ThinkingPart in the UIMessage.\n */\n handleReasoningMessageContentEvent(chunk) {\n const { messageId, state } = this.ensureAssistantMessage(\n this.getActiveAssistantMessageId() ?? void 0\n );\n state.hasSeenReasoningEvents = true;\n const delta = chunk.delta || \"\";\n this.consumePendingThinkingStep(state);\n const stepId = state.currentThinkingStepId ?? chunk.messageId;\n if (!state.thinkingSteps.has(stepId)) {\n state.thinkingSteps.set(stepId, \"\");\n state.thinkingStepOrder.push(stepId);\n state.currentThinkingStepId = stepId;\n }\n const nextThinking = (state.thinkingSteps.get(stepId) ?? \"\") + delta;\n state.thinkingSteps.set(stepId, nextThinking);\n this.messages = updateThinkingPart(\n this.messages,\n messageId,\n stepId,\n nextThinking,\n state.thinkingStepSignatures.get(stepId)\n );\n this.emitMessagesChange();\n this.events.onThinkingUpdate?.(messageId, stepId, nextThinking);\n }\n /**\n * Handle CUSTOM event.\n *\n * Handles special custom events emitted by the TextEngine (not adapters):\n * - 'tool-input-available': Client tool needs execution. Fires onToolCall.\n * - 'approval-requested': Tool needs user approval. Updates tool-call part\n * state and fires onApprovalRequest.\n *\n * @see docs/chat-architecture.md#client-tools-and-approval-flows — Full flow details\n */\n handleCustomEvent(chunk) {\n const messageId = this.getActiveAssistantMessageId();\n if (chunk.name === \"structured-output.start\" && chunk.value) {\n const v = chunk.value;\n const targetId = v.messageId ?? messageId;\n if (targetId) {\n this.ensureAssistantMessage(targetId);\n this.structuredMessageIds.add(targetId);\n this.structuredOutputUpdateBatches.delete(targetId);\n this.events.onStructuredOutputChange?.({\n phase: \"start\",\n messageId: targetId,\n status: \"streaming\",\n raw: \"\"\n });\n }\n return;\n }\n if (chunk.name === \"structured-output.complete\" && chunk.value) {\n const v = chunk.value;\n const targetId = v.messageId ?? messageId;\n if (targetId) {\n this.flushStructuredOutputUpdate(targetId);\n this.messages = completeStructuredOutputPart(\n this.messages,\n targetId,\n v.object,\n v.raw ?? \"\",\n v.reasoning\n );\n this.structuredMessageIds.delete(targetId);\n this.emitStructuredOutputChange(targetId, \"complete\");\n this.emitMessagesChange();\n }\n }\n if (chunk.name === \"tool-input-available\" && chunk.value) {\n const { toolCallId, toolName, input } = chunk.value;\n this.events.onToolCall?.({\n toolCallId,\n toolName,\n input\n });\n return;\n }\n if (chunk.name === \"approval-requested\" && chunk.value) {\n const { toolCallId, toolName, input, approval } = chunk.value;\n const resolvedMessageId = messageId ?? this.toolCallToMessage.get(toolCallId);\n if (resolvedMessageId) {\n this.messages = updateToolCallApproval(\n this.messages,\n resolvedMessageId,\n toolCallId,\n approval.id\n );\n this.emitMessagesChange();\n }\n this.events.onApprovalRequest?.({\n toolCallId,\n toolName,\n input,\n approvalId: approval.id\n });\n return;\n }\n if (chunk.name === \"ui-resource\" && chunk.value) {\n const v = chunk.value;\n const resolvedMessageId = this.toolCallToMessage.get(v.toolCallId) ?? messageId;\n if (resolvedMessageId) {\n const part = {\n type: \"ui-resource\",\n resource: v.resource,\n toolCallId: v.toolCallId,\n toolName: v.toolName,\n ...v.serverId !== void 0 && { serverId: v.serverId },\n ...v.meta !== void 0 && { meta: v.meta }\n };\n this.messages = this.messages.map(\n (msg) => msg.id === resolvedMessageId ? { ...msg, parts: [...msg.parts, part] } : msg\n );\n this.emitMessagesChange();\n } else {\n console.warn(\n `[mcp-apps] dropped ui-resource: no target message for toolCallId \"${v.toolCallId}\" (toolName \"${v.toolName}\")`\n );\n }\n return;\n }\n if (this.events.onCustomEvent) {\n const toolCallId = chunk.value && typeof chunk.value === \"object\" ? chunk.value.toolCallId : void 0;\n this.events.onCustomEvent(chunk.name, chunk.value, { toolCallId });\n }\n }\n // ============================================\n // Internal Helpers\n // ============================================\n /**\n * Detect if an incoming content chunk represents a NEW text segment\n */\n isNewTextSegment(chunk, previous) {\n if (chunk.content !== void 0) {\n if (chunk.content.length < previous.length) {\n return true;\n }\n if (!chunk.content.startsWith(previous) && !previous.startsWith(chunk.content)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Complete all tool calls across all active messages — safety net for stream termination.\n *\n * Called by RUN_FINISHED and finalizeStream(). Force-transitions any tool call\n * not yet in input-complete state. Handles cases where TOOL_CALL_END was\n * missed (adapter bug, network error, aborted stream).\n *\n * @see docs/chat-architecture.md#single-shot-tool-call-response — Safety net behavior\n */\n completeAllToolCalls() {\n for (const messageId of this.activeMessageIds) {\n this.completeAllToolCallsForMessage(messageId);\n }\n }\n /**\n * Complete all tool calls for a specific message\n */\n completeAllToolCallsForMessage(messageId) {\n const state = this.getMessageState(messageId);\n if (!state) return;\n state.toolCalls.forEach((toolCall, id) => {\n if (toolCall.state !== \"input-complete\") {\n const index = state.toolCallOrder.indexOf(id);\n this.completeToolCall(messageId, index, toolCall);\n }\n });\n }\n /**\n * Mark a tool call as complete and emit event\n */\n completeToolCall(messageId, _index, toolCall) {\n toolCall.state = \"input-complete\";\n toolCall.parsedArguments = this.jsonParser.parse(toolCall.arguments);\n if (this.isToolCallPartErrored(toolCall.id)) {\n return;\n }\n this.messages = updateToolCallPart(this.messages, messageId, {\n id: toolCall.id,\n name: toolCall.name,\n arguments: toolCall.arguments,\n state: \"input-complete\",\n ...toolCall.metadata !== void 0 && { metadata: toolCall.metadata }\n });\n this.emitMessagesChange();\n this.events.onToolCallStateChange?.(\n messageId,\n toolCall.id,\n \"input-complete\",\n toolCall.arguments\n );\n }\n /**\n * Whether the rendered tool-call part for the given id has reached the\n * terminal 'error' state. Used to prevent the completion safety net from\n * downgrading a failed call back to 'input-complete'.\n */\n isToolCallPartErrored(toolCallId) {\n return this.messages.some(\n (msg) => msg.parts.some(\n (part) => part.type === \"tool-call\" && part.id === toolCallId && part.state === \"error\"\n )\n );\n }\n /**\n * Emit pending text update for a specific message.\n *\n * Calls updateTextPart() which has critical append-vs-replace logic:\n * - If last UIMessage part is TextPart → replaces its content (same segment).\n * - If last part is anything else → pushes new TextPart (new segment after tools).\n *\n * @see docs/chat-architecture.md#uimessage-part-ordering-invariants — Replace vs. push logic\n */\n emitTextUpdateForMessage(messageId) {\n const state = this.getMessageState(messageId);\n if (!state) return;\n state.lastEmittedText = state.currentSegmentText;\n this.messages = updateTextPart(\n this.messages,\n messageId,\n state.currentSegmentText\n );\n this.emitMessagesChange();\n this.events.onTextUpdate?.(messageId, state.currentSegmentText);\n }\n queueStructuredOutputUpdate(messageId, delta) {\n const existing = this.structuredOutputUpdateBatches.get(messageId);\n const next = {\n delta: `${existing?.delta ?? \"\"}${delta}`,\n chunkCount: (existing?.chunkCount ?? 0) + 1\n };\n this.structuredOutputUpdateBatches.set(messageId, next);\n if (next.chunkCount >= STRUCTURED_OUTPUT_UPDATE_BATCH_SIZE) {\n this.flushStructuredOutputUpdate(messageId);\n }\n }\n flushStructuredOutputUpdate(messageId) {\n const batch = this.structuredOutputUpdateBatches.get(messageId);\n if (!batch || batch.chunkCount === 0) return;\n this.structuredOutputUpdateBatches.delete(messageId);\n this.emitStructuredOutputChange(messageId, \"update\", batch.delta);\n }\n emitStructuredOutputChange(messageId, phase, delta) {\n const part = this.messages.find((message) => message.id === messageId)?.parts.find(\n (messagePart) => messagePart.type === \"structured-output\"\n );\n if (!part) return;\n this.events.onStructuredOutputChange?.({\n phase,\n messageId,\n status: part.status,\n raw: part.raw,\n ...part.partial !== void 0 ? { partial: part.partial } : {},\n ...part.data !== void 0 ? { data: part.data } : {},\n ...part.reasoning !== void 0 ? { reasoning: part.reasoning } : {},\n ...part.errorMessage !== void 0 ? { errorMessage: part.errorMessage } : {},\n ...delta !== void 0 ? { delta } : {}\n });\n }\n /**\n * Emit messages change event\n */\n emitMessagesChange() {\n this.events.onMessagesChange?.([...this.messages]);\n }\n /**\n * Finalize the stream — complete all pending operations.\n *\n * Called when the async iterable ends (stream closed). Acts as the final\n * safety net: completes any remaining tool calls, flushes un-emitted text,\n * and fires onStreamEnd.\n *\n * @see docs/chat-architecture.md#single-shot-text-response — Finalization step\n */\n finalizeStream() {\n let lastAssistantMessage;\n for (const messageId of this.activeMessageIds) {\n const state = this.getMessageState(messageId);\n if (!state) continue;\n this.completeAllToolCallsForMessage(messageId);\n if (state.currentSegmentText !== state.lastEmittedText) {\n this.emitTextUpdateForMessage(messageId);\n }\n state.isComplete = true;\n const msg = this.messages.find((m) => m.id === messageId);\n if (msg && msg.role === \"assistant\") {\n lastAssistantMessage = msg;\n }\n }\n for (const messageId of this.structuredMessageIds) {\n this.flushStructuredOutputUpdate(messageId);\n this.messages = errorStructuredOutputPart(\n this.messages,\n messageId,\n \"Stream ended without structured-output.complete\"\n );\n this.emitStructuredOutputChange(messageId, \"error\");\n }\n this.structuredMessageIds.clear();\n this.structuredOutputUpdateBatches.clear();\n this.activeMessageIds.clear();\n if (lastAssistantMessage && !this.hasError) {\n if (this.isWhitespaceOnlyMessage(lastAssistantMessage)) {\n this.messages = this.messages.filter(\n (m) => m.id !== lastAssistantMessage.id\n );\n this.emitMessagesChange();\n return;\n }\n }\n if (lastAssistantMessage) {\n this.events.onStreamEnd?.(lastAssistantMessage);\n }\n }\n /**\n * Get completed tool calls in API format (aggregated across all messages)\n */\n getCompletedToolCalls() {\n const result = [];\n for (const state of this.messageStates.values()) {\n for (const tc of state.toolCalls.values()) {\n if (tc.state === \"input-complete\") {\n result.push({\n id: tc.id,\n type: \"function\",\n function: {\n name: tc.name,\n arguments: tc.arguments\n },\n // Preserve provider metadata (e.g. Gemini thoughtSignature) on\n // ProcessorResult.toolCalls so callers using process()/getResult()\n // get the same round-trip support as the streaming UI path.\n ...tc.metadata !== void 0 && { metadata: tc.metadata }\n });\n }\n }\n }\n return result;\n }\n /**\n * Get current result (aggregated across all messages)\n */\n getResult() {\n const toolCalls = this.getCompletedToolCalls();\n let content = \"\";\n let thinking = \"\";\n for (const state of this.messageStates.values()) {\n content += state.totalTextContent;\n for (const stepId of state.thinkingStepOrder) {\n thinking += state.thinkingSteps.get(stepId) ?? \"\";\n }\n }\n return {\n content,\n thinking: thinking || void 0,\n toolCalls: toolCalls.length > 0 ? toolCalls : void 0,\n finishReason: this.finishReason\n };\n }\n /**\n * Get current processor state (aggregated across all messages)\n */\n getState() {\n let content = \"\";\n let thinking = \"\";\n const toolCalls = /* @__PURE__ */ new Map();\n const toolCallOrder = [];\n for (const state of this.messageStates.values()) {\n content += state.totalTextContent;\n for (const stepId of state.thinkingStepOrder) {\n thinking += state.thinkingSteps.get(stepId) ?? \"\";\n }\n for (const [id, tc] of state.toolCalls) {\n toolCalls.set(id, tc);\n }\n toolCallOrder.push(...state.toolCallOrder);\n }\n return {\n content,\n thinking,\n toolCalls,\n toolCallOrder,\n finishReason: this.finishReason,\n done: this.isDone\n };\n }\n /**\n * Start recording chunks\n */\n startRecording() {\n this.recordingEnabled = true;\n this.recordingStartTime = Date.now();\n this.recording = {\n version: \"1.0\",\n timestamp: this.recordingStartTime,\n chunks: []\n };\n }\n /**\n * Get the current recording\n */\n getRecording() {\n return this.recording;\n }\n /**\n * Reset stream state (but keep messages)\n */\n resetStreamState() {\n this.messageStates.clear();\n this.activeMessageIds.clear();\n this.activeRuns.clear();\n this.toolCallToMessage.clear();\n this.structuredMessageIds.clear();\n this.structuredOutputUpdateBatches.clear();\n this.pendingManualMessageId = null;\n this.pendingThinkingStepId = null;\n this.finishReason = null;\n this.hasError = false;\n this.isDone = false;\n this.chunkStrategy.reset?.();\n }\n /**\n * Full reset (including messages)\n */\n reset() {\n this.resetStreamState();\n this.messages = [];\n }\n /**\n * Check if a message contains only whitespace text and no other meaningful parts\n * (no tool calls, tool results, thinking, etc.)\n */\n isWhitespaceOnlyMessage(message) {\n if (message.parts.length === 0) return false;\n return message.parts.every(\n (part) => part.type === \"text\" && part.content.trim() === \"\"\n );\n }\n /**\n * Replay a recording through the processor\n */\n static async replay(recording, options) {\n const processor = new StreamProcessor(options);\n return processor.process(createReplayStream(recording));\n }\n}\nfunction createReplayStream(recording) {\n return {\n // eslint-disable-next-line @typescript-eslint/require-await -- async generator required by AsyncIterable contract; body has no await\n async *[Symbol.asyncIterator]() {\n for (const { chunk } of recording.chunks) {\n yield chunk;\n }\n }\n };\n}\nexport {\n StreamProcessor,\n createReplayStream\n};\n//# sourceMappingURL=processor.js.map\n","import { toolDefinition } from \"./activities/chat/tools/tool-definition.js\";\nimport { convertSchemaToJsonSchema, isStandardSchema, parseWithStandardSchema } from \"./activities/chat/tools/schema-converter.js\";\nimport { convertMessagesToModelMessages, generateMessageId, modelMessageToUIMessage, modelMessagesToUIMessages, normalizeToUIMessage, uiMessageToModelMessages } from \"./activities/chat/messages.js\";\nimport { uiMessagesToWire } from \"./utilities/ag-ui-wire.js\";\nimport { BatchStrategy, CompositeStrategy, ImmediateStrategy, PunctuationStrategy, WordBoundaryStrategy } from \"./activities/chat/stream/strategies.js\";\nimport { PartialJSONParser, defaultJSONParser, parsePartialJSON } from \"./activities/chat/stream/json-parser.js\";\nimport { StreamProcessor } from \"./activities/chat/stream/processor.js\";\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[\"TEXT_MESSAGE_START\"] = \"TEXT_MESSAGE_START\";\n EventType2[\"TEXT_MESSAGE_CONTENT\"] = \"TEXT_MESSAGE_CONTENT\";\n EventType2[\"TEXT_MESSAGE_END\"] = \"TEXT_MESSAGE_END\";\n EventType2[\"TEXT_MESSAGE_CHUNK\"] = \"TEXT_MESSAGE_CHUNK\";\n EventType2[\"TOOL_CALL_START\"] = \"TOOL_CALL_START\";\n EventType2[\"TOOL_CALL_ARGS\"] = \"TOOL_CALL_ARGS\";\n EventType2[\"TOOL_CALL_END\"] = \"TOOL_CALL_END\";\n EventType2[\"TOOL_CALL_CHUNK\"] = \"TOOL_CALL_CHUNK\";\n EventType2[\"TOOL_CALL_RESULT\"] = \"TOOL_CALL_RESULT\";\n EventType2[\"THINKING_START\"] = \"THINKING_START\";\n EventType2[\"THINKING_END\"] = \"THINKING_END\";\n EventType2[\"THINKING_TEXT_MESSAGE_START\"] = \"THINKING_TEXT_MESSAGE_START\";\n EventType2[\"THINKING_TEXT_MESSAGE_CONTENT\"] = \"THINKING_TEXT_MESSAGE_CONTENT\";\n EventType2[\"THINKING_TEXT_MESSAGE_END\"] = \"THINKING_TEXT_MESSAGE_END\";\n EventType2[\"STATE_SNAPSHOT\"] = \"STATE_SNAPSHOT\";\n EventType2[\"STATE_DELTA\"] = \"STATE_DELTA\";\n EventType2[\"MESSAGES_SNAPSHOT\"] = \"MESSAGES_SNAPSHOT\";\n EventType2[\"ACTIVITY_SNAPSHOT\"] = \"ACTIVITY_SNAPSHOT\";\n EventType2[\"ACTIVITY_DELTA\"] = \"ACTIVITY_DELTA\";\n EventType2[\"RAW\"] = \"RAW\";\n EventType2[\"CUSTOM\"] = \"CUSTOM\";\n EventType2[\"RUN_STARTED\"] = \"RUN_STARTED\";\n EventType2[\"RUN_FINISHED\"] = \"RUN_FINISHED\";\n EventType2[\"RUN_ERROR\"] = \"RUN_ERROR\";\n EventType2[\"STEP_STARTED\"] = \"STEP_STARTED\";\n EventType2[\"STEP_FINISHED\"] = \"STEP_FINISHED\";\n EventType2[\"REASONING_START\"] = \"REASONING_START\";\n EventType2[\"REASONING_MESSAGE_START\"] = \"REASONING_MESSAGE_START\";\n EventType2[\"REASONING_MESSAGE_CONTENT\"] = \"REASONING_MESSAGE_CONTENT\";\n EventType2[\"REASONING_MESSAGE_END\"] = \"REASONING_MESSAGE_END\";\n EventType2[\"REASONING_MESSAGE_CHUNK\"] = \"REASONING_MESSAGE_CHUNK\";\n EventType2[\"REASONING_END\"] = \"REASONING_END\";\n EventType2[\"REASONING_ENCRYPTED_VALUE\"] = \"REASONING_ENCRYPTED_VALUE\";\n return EventType2;\n})(EventType || {});\nexport {\n BatchStrategy,\n CompositeStrategy,\n EventType,\n ImmediateStrategy,\n PartialJSONParser,\n PunctuationStrategy,\n StreamProcessor,\n WordBoundaryStrategy,\n convertMessagesToModelMessages,\n convertSchemaToJsonSchema,\n defaultJSONParser,\n generateMessageId,\n isStandardSchema,\n modelMessageToUIMessage,\n modelMessagesToUIMessages,\n normalizeToUIMessage,\n parsePartialJSON,\n parseWithStandardSchema,\n toolDefinition,\n uiMessageToModelMessages,\n uiMessagesToWire\n};\n//# sourceMappingURL=client.js.map\n","class EventClient {\n #enabled = true;\n #pluginId;\n #eventTarget;\n #debug;\n #queuedEvents;\n #connected;\n #connectIntervalId;\n #connectEveryMs;\n #retryCount = 0;\n #maxRetries = 5;\n #connecting = false;\n #failedToConnect = false;\n #internalEventTarget = null;\n #onConnected = () => {\n this.debugLog(\"Connected to event bus\");\n this.#connected = true;\n this.#connecting = false;\n this.debugLog(\"Emitting queued events\", this.#queuedEvents);\n this.#queuedEvents.forEach((event) => this.emitEventToBus(event));\n this.#queuedEvents = [];\n this.stopConnectLoop();\n this.#eventTarget().removeEventListener(\n \"tanstack-connect-success\",\n this.#onConnected\n );\n };\n // fired off right away and then at intervals\n #retryConnection = () => {\n if (this.#retryCount < this.#maxRetries) {\n this.#retryCount++;\n this.dispatchCustomEvent(\"tanstack-connect\", {});\n return;\n }\n this.#eventTarget().removeEventListener(\n \"tanstack-connect\",\n this.#retryConnection\n );\n this.#failedToConnect = true;\n this.debugLog(\"Max retries reached, giving up on connection\");\n this.stopConnectLoop();\n };\n // This is run to register connection handlers on first emit attempt\n #connectFunction = () => {\n if (this.#connecting) return;\n this.#connecting = true;\n this.#eventTarget().addEventListener(\n \"tanstack-connect-success\",\n this.#onConnected\n );\n this.#retryConnection();\n };\n constructor({\n pluginId,\n debug = false,\n enabled = true,\n reconnectEveryMs = 300\n }) {\n this.#pluginId = pluginId;\n this.#enabled = enabled;\n this.#eventTarget = this.getGlobalTarget;\n this.#debug = debug;\n this.debugLog(\" Initializing event subscription for plugin\", this.#pluginId);\n this.#queuedEvents = [];\n this.#connected = false;\n this.#failedToConnect = false;\n this.#connectIntervalId = null;\n this.#connectEveryMs = reconnectEveryMs;\n }\n startConnectLoop() {\n if (this.#connectIntervalId !== null || this.#connected) return;\n this.debugLog(`Starting connect loop (every ${this.#connectEveryMs}ms)`);\n this.#connectIntervalId = setInterval(\n this.#retryConnection,\n this.#connectEveryMs\n );\n }\n stopConnectLoop() {\n this.#connecting = false;\n if (this.#connectIntervalId === null) {\n return;\n }\n clearInterval(this.#connectIntervalId);\n this.#connectIntervalId = null;\n this.#queuedEvents = [];\n this.debugLog(\"Stopped connect loop\");\n }\n debugLog(...args) {\n if (this.#debug) {\n console.log(`🌴 [tanstack-devtools:${this.#pluginId}-plugin]`, ...args);\n }\n }\n getGlobalTarget() {\n if (typeof globalThis !== \"undefined\" && globalThis.__TANSTACK_EVENT_TARGET__) {\n this.debugLog(\"Using global event target\");\n return globalThis.__TANSTACK_EVENT_TARGET__;\n }\n if (typeof window !== \"undefined\" && typeof window.addEventListener !== \"undefined\") {\n this.debugLog(\"Using window as event target\");\n return window;\n }\n const eventTarget = typeof EventTarget !== \"undefined\" ? new EventTarget() : void 0;\n if (typeof eventTarget === \"undefined\" || typeof eventTarget.addEventListener === \"undefined\") {\n this.debugLog(\n \"No event mechanism available, running in non-web environment\"\n );\n return {\n addEventListener: () => {\n },\n removeEventListener: () => {\n },\n dispatchEvent: () => false\n };\n }\n this.debugLog(\"Using new EventTarget as fallback\");\n return eventTarget;\n }\n getPluginId() {\n return this.#pluginId;\n }\n dispatchCustomEventShim(eventName, detail) {\n try {\n const event = new Event(eventName, {\n detail\n });\n this.#eventTarget().dispatchEvent(event);\n } catch (e) {\n this.debugLog(\"Failed to dispatch shim event\");\n }\n }\n dispatchCustomEvent(eventName, detail) {\n try {\n this.#eventTarget().dispatchEvent(new CustomEvent(eventName, { detail }));\n } catch (e) {\n this.dispatchCustomEventShim(eventName, detail);\n }\n }\n emitEventToBus(event) {\n this.debugLog(\"Emitting event to client bus\", event);\n this.dispatchCustomEvent(\"tanstack-dispatch-event\", event);\n }\n createEventPayload(eventSuffix, payload) {\n return {\n type: `${this.#pluginId}:${eventSuffix}`,\n payload,\n pluginId: this.#pluginId\n };\n }\n emit(eventSuffix, payload) {\n if (!this.#enabled) {\n this.debugLog(\n \"Event bus client is disabled, not emitting event\",\n eventSuffix,\n payload\n );\n return;\n }\n if (this.#internalEventTarget) {\n this.debugLog(\n \"Emitting event to internal event target\",\n eventSuffix,\n payload\n );\n this.#internalEventTarget.dispatchEvent(\n new CustomEvent(`${this.#pluginId}:${eventSuffix}`, {\n detail: this.createEventPayload(eventSuffix, payload)\n })\n );\n }\n if (this.#failedToConnect) {\n this.debugLog(\"Previously failed to connect, not emitting to bus\");\n return;\n }\n if (!this.#connected) {\n this.debugLog(\"Bus not available, will be pushed as soon as connected\");\n this.#queuedEvents.push(this.createEventPayload(eventSuffix, payload));\n if (typeof CustomEvent !== \"undefined\" && !this.#connecting) {\n this.#connectFunction();\n this.startConnectLoop();\n }\n return;\n }\n return this.emitEventToBus(this.createEventPayload(eventSuffix, payload));\n }\n on(eventSuffix, cb, options) {\n const withEventTarget = options?.withEventTarget ?? false;\n const eventName = `${this.#pluginId}:${eventSuffix}`;\n if (withEventTarget) {\n if (!this.#internalEventTarget) {\n this.#internalEventTarget = new EventTarget();\n }\n this.#internalEventTarget.addEventListener(eventName, (e) => {\n cb(e.detail);\n });\n }\n if (!this.#enabled) {\n this.debugLog(\n \"Event bus client is disabled, not registering event\",\n eventName\n );\n return () => {\n };\n }\n const handler = (e) => {\n this.debugLog(\"Received event from bus\", e.detail);\n cb(e.detail);\n };\n this.#eventTarget().addEventListener(eventName, handler);\n this.debugLog(\"Registered event to bus\", eventName);\n return () => {\n if (withEventTarget) {\n this.#internalEventTarget?.removeEventListener(eventName, handler);\n }\n this.#eventTarget().removeEventListener(eventName, handler);\n };\n }\n onAll(cb) {\n if (!this.#enabled) {\n this.debugLog(\"Event bus client is disabled, not registering event\");\n return () => {\n };\n }\n const handler = (e) => {\n const event = e.detail;\n cb(event);\n };\n this.#eventTarget().addEventListener(\"tanstack-devtools-global\", handler);\n return () => this.#eventTarget().removeEventListener(\n \"tanstack-devtools-global\",\n handler\n );\n }\n onAllPluginEvents(cb) {\n if (!this.#enabled) {\n this.debugLog(\"Event bus client is disabled, not registering event\");\n return () => {\n };\n }\n const handler = (e) => {\n const event = e.detail;\n if (this.#pluginId && event.pluginId !== this.#pluginId) {\n return;\n }\n cb(event);\n };\n this.#eventTarget().addEventListener(\"tanstack-devtools-global\", handler);\n return () => this.#eventTarget().removeEventListener(\n \"tanstack-devtools-global\",\n handler\n );\n }\n}\nexport {\n EventClient\n};\n//# sourceMappingURL=plugin.js.map\n","function createRuntimeId() {\n const cryptoLike = globalThis.crypto;\n if (cryptoLike?.randomUUID) {\n return cryptoLike.randomUUID();\n }\n return Math.random().toString(36).slice(2);\n}\nlet memoizedRuntimeId;\nfunction getRuntimeId() {\n if (memoizedRuntimeId !== void 0) {\n return memoizedRuntimeId;\n }\n if (!globalThis.__TANSTACK_AI_DEVTOOLS_RUNTIME_ID__) {\n globalThis.__TANSTACK_AI_DEVTOOLS_RUNTIME_ID__ = createRuntimeId();\n }\n memoizedRuntimeId = globalThis.__TANSTACK_AI_DEVTOOLS_RUNTIME_ID__;\n return memoizedRuntimeId;\n}\nlet eventCounter = 0;\nfunction idPart(value) {\n if (value === void 0 || value === null || value === \"\") return \"missing\";\n return `value-${encodeURIComponent(String(value))}`;\n}\nfunction timestampBucket(timestamp) {\n return Math.floor(timestamp / 1e3) * 1e3;\n}\nfunction createAIDevtoolsEventEnvelope(input) {\n const resolvedRuntimeId = input.runtimeId ?? getRuntimeId();\n const eventId = input.eventId && input.eventId.length > 0 ? input.eventId : [\n input.source,\n input.eventType,\n idPart(resolvedRuntimeId),\n idPart(input.clientId),\n idPart(input.requestId),\n idPart(input.streamId),\n idPart(input.hookId),\n idPart(input.threadId),\n idPart(input.runId),\n idPart(input.messageId),\n idPart(input.toolCallId),\n idPart(input.sequence),\n input.timestamp,\n getRuntimeId(),\n eventCounter++\n ].join(\":\");\n return {\n ...input,\n runtimeId: resolvedRuntimeId,\n eventId\n };\n}\nfunction getAIDevtoolsRuntimeId() {\n return getRuntimeId();\n}\nfunction getAIDevtoolsDedupeKey(event) {\n if (event.eventId && event.eventId.length > 0) {\n return `event:${event.eventId}`;\n }\n return [\n \"fallback\",\n event.source,\n event.eventType,\n event.visibility,\n idPart(event.clientId),\n idPart(event.requestId),\n idPart(event.streamId),\n idPart(event.hookId),\n idPart(event.threadId),\n idPart(event.runId),\n idPart(event.messageId),\n idPart(event.toolCallId),\n idPart(event.sequence),\n timestampBucket(event.timestamp)\n ].join(\":\");\n}\nexport {\n createAIDevtoolsEventEnvelope,\n getAIDevtoolsDedupeKey,\n getAIDevtoolsRuntimeId\n};\n//# sourceMappingURL=envelope.js.map\n","import { EventClient } from \"@tanstack/devtools-event-client\";\nimport { createAIDevtoolsEventEnvelope, getAIDevtoolsDedupeKey, getAIDevtoolsRuntimeId } from \"./envelope.js\";\nimport { devtoolsMiddleware } from \"./devtools-middleware.js\";\nclass AiEventClient extends EventClient {\n constructor() {\n super({\n pluginId: \"tanstack-ai-devtools\"\n });\n }\n}\nconst aiEventClientKey = /* @__PURE__ */ Symbol.for(\"tanstack.ai.devtools.eventClient\");\nfunction getAiEventClient() {\n const global = globalThis;\n const existing = global[aiEventClientKey];\n if (existing) return existing;\n const eventClient = new AiEventClient();\n global[aiEventClientKey] = eventClient;\n return eventClient;\n}\nconst aiEventClient = getAiEventClient();\nfunction emitAIDevtoolsEvent(eventName, payload) {\n aiEventClient.emit(eventName, payload);\n}\nfunction dispatchAIDevtoolsEvent(eventName, payload) {\n if (typeof window === \"undefined\" || typeof window.dispatchEvent !== \"function\" || typeof CustomEvent === \"undefined\") {\n return;\n }\n window.dispatchEvent(\n new CustomEvent(\"tanstack-dispatch-event\", {\n detail: aiEventClient.createEventPayload(eventName, payload)\n })\n );\n}\nexport {\n aiEventClient,\n createAIDevtoolsEventEnvelope,\n devtoolsMiddleware,\n dispatchAIDevtoolsEvent,\n emitAIDevtoolsEvent,\n getAIDevtoolsDedupeKey,\n getAIDevtoolsRuntimeId\n};\n//# sourceMappingURL=index.js.map\n","import { createAIDevtoolsEventEnvelope, aiEventClient } from \"@tanstack/ai-event-client\";\nclass ChatClientEventEmitter {\n clientId;\n constructor(clientId) {\n this.clientId = clientId;\n }\n /**\n * Emit client created event\n */\n clientCreated(initialMessageCount) {\n this.emitEvent(\"client:created\", {\n initialMessageCount\n });\n }\n /**\n * Emit loading state changed event\n */\n loadingChanged(isLoading) {\n this.emitEvent(\"client:loading:changed\", { isLoading });\n }\n /**\n * Emit error state changed event\n */\n errorChanged(error) {\n this.emitEvent(\"client:error:changed\", {\n error\n });\n }\n /**\n * Emit text update events (combines processor and client events)\n */\n textUpdated(streamId, messageId, content, context) {\n this.emitEvent(\"text:chunk:content\", {\n streamId,\n messageId,\n content,\n ...context\n });\n }\n /**\n * Emit tool call state change events (combines processor and client events)\n */\n toolCallStateChanged(streamId, messageId, toolCallId, toolName, state, args, context) {\n this.emitEvent(\"tools:call:updated\", {\n streamId,\n messageId,\n toolCallId,\n toolName,\n state,\n arguments: args,\n ...context\n });\n }\n /**\n * Emit tool result state change event\n */\n /**\n * Emit thinking update event\n */\n thinkingUpdated(streamId, messageId, content, delta, context) {\n this.emitEvent(\"text:chunk:thinking\", {\n streamId,\n messageId,\n content,\n delta,\n ...context\n });\n }\n structuredOutputChanged(eventName, streamId, messageId, output, context) {\n this.emitEvent(eventName, {\n streamId,\n messageId,\n ...output,\n ...context\n });\n }\n /**\n * Emit approval requested event\n */\n approvalRequested(streamId, messageId, toolCallId, toolName, input, approvalId, context) {\n this.emitEvent(\"tools:approval:requested\", {\n streamId,\n messageId,\n toolCallId,\n toolName,\n input,\n approvalId,\n ...context\n });\n }\n /**\n * Emit message appended event\n */\n messageAppended(uiMessage, streamId, context) {\n const content = uiMessage.parts.filter((part) => part.type === \"text\").map((part) => part.content).join(\" \");\n this.emitEvent(\"text:message:created\", {\n streamId,\n messageId: uiMessage.id,\n role: uiMessage.role,\n content,\n parts: uiMessage.parts,\n ...context\n });\n }\n /**\n * Emit message sent event.\n * Supports both simple string content and multimodal content arrays.\n *\n * @param messageId - The ID of the sent message\n * @param content - The message content (string or array of ContentPart for multimodal)\n */\n messageSent(messageId, content) {\n const textContent = typeof content === \"string\" ? content : content.filter((part) => part.type === \"text\").map((part) => part.content).join(\"\");\n this.emitEvent(\"text:message:created\", {\n messageId,\n role: \"user\",\n content: textContent,\n // Include full content for multimodal messages\n ...Array.isArray(content) && { parts: content }\n });\n this.emitEvent(\"text:message:user\", {\n messageId,\n role: \"user\",\n content: textContent,\n // Include full content for multimodal messages\n ...Array.isArray(content) && { parts: content }\n });\n }\n /**\n * Emit reloaded event\n */\n reloaded(fromMessageIndex) {\n this.emitEvent(\"client:reloaded\", {\n fromMessageIndex\n });\n }\n /**\n * Emit stopped event\n */\n stopped() {\n this.emitEvent(\"client:stopped\");\n }\n /**\n * Emit messages cleared event\n */\n messagesCleared() {\n this.emitEvent(\"client:messages:cleared\");\n }\n /**\n * Emit tool result added event\n */\n toolResultAdded(toolCallId, toolName, output, state, context) {\n this.emitEvent(\"tools:result:added\", {\n toolCallId,\n toolName,\n output,\n state,\n ...context\n });\n }\n /**\n * Emit tool approval responded event\n */\n toolApprovalResponded(approvalId, toolCallId, approved, context) {\n this.emitEvent(\"tools:approval:responded\", {\n approvalId,\n toolCallId,\n approved,\n ...context\n });\n }\n /**\n * Emit tool fixture applied event.\n */\n toolFixtureApplied(fixture) {\n this.emitEvent(\"devtools:tool-fixture:applied\", { ...fixture });\n }\n}\nclass DefaultChatClientEventEmitter extends ChatClientEventEmitter {\n /**\n * Emit an event with automatic clientId and timestamp for client/tool events\n */\n emitEvent(eventName, data) {\n const timestamp = Date.now();\n const isUserVisibleEvent = eventName.startsWith(\"text:\") || eventName.startsWith(\"tools:\") || eventName.startsWith(\"structured-output:\") || eventName === \"devtools:tool-fixture:applied\";\n const includesClientContext = eventName.startsWith(\"client:\") || eventName.startsWith(\"tools:\") || eventName.startsWith(\"text:\") || eventName.startsWith(\"structured-output:\") || eventName === \"devtools:tool-fixture:applied\";\n const visibility = isUserVisibleEvent ? \"user-visible\" : \"client-state\";\n const envelopeContext = {\n hookId: this.clientId,\n ...typeof data?.threadId === \"string\" ? { threadId: data.threadId } : {},\n ...typeof data?.runId === \"string\" ? { runId: data.runId } : {},\n ...typeof data?.streamId === \"string\" ? { streamId: data.streamId } : {},\n ...typeof data?.messageId === \"string\" ? { messageId: data.messageId } : {},\n ...typeof data?.toolCallId === \"string\" ? { toolCallId: data.toolCallId } : {}\n };\n if (includesClientContext) {\n const envelope = createAIDevtoolsEventEnvelope({\n eventType: eventName,\n clientId: this.clientId,\n ...envelopeContext,\n source: \"client\",\n visibility,\n timestamp\n });\n aiEventClient.emit(eventName, {\n ...data,\n ...envelope\n });\n } else {\n const envelope = createAIDevtoolsEventEnvelope({\n eventType: eventName,\n source: \"client\",\n visibility: \"client-state\",\n timestamp\n });\n aiEventClient.emit(eventName, {\n ...data,\n ...envelope\n });\n }\n }\n}\nexport {\n ChatClientEventEmitter,\n DefaultChatClientEventEmitter\n};\n//# sourceMappingURL=events.js.map\n","import { ChatClientEventEmitter } from \"./events.js\";\nclass NoOpChatClientEventEmitter extends ChatClientEventEmitter {\n emitEvent() {\n }\n}\nclass NoOpChatDevtoolsBridge {\n events;\n constructor(options) {\n this.events = new NoOpChatClientEventEmitter(options.clientId);\n }\n // base bridge surface\n emitRegistered() {\n }\n emitUpdated() {\n }\n emitSnapshot() {\n }\n emitToolsRegistered() {\n }\n emitRunLifecycle(_eventType, _runId, _status, _options) {\n }\n deactivate() {\n }\n supersede() {\n }\n dispose() {\n }\n // chat-specific surface\n mountWithTools(_initialMessageCount) {\n }\n notifyToolsChanged() {\n }\n setCurrentStreamId(_streamId) {\n }\n recordStreamId(_streamId) {\n }\n getCurrentStreamId() {\n return null;\n }\n getLastStreamId() {\n return null;\n }\n resolveStreamId() {\n return \"\";\n }\n observeChunk(_chunk) {\n }\n beginRun(_runId, _threadId) {\n }\n getCurrentRunEventContext() {\n return void 0;\n }\n getCurrentOrLastRunEventContext() {\n return void 0;\n }\n findToolCallContext(toolCallId) {\n return { toolCallId };\n }\n async applyFixture(_fixture) {\n }\n}\nclass NoOpGenerationDevtoolsBridge {\n constructor(_options) {\n }\n // base bridge surface\n emitRegistered() {\n }\n emitUpdated() {\n }\n emitSnapshot() {\n }\n emitToolsRegistered() {\n }\n emitRunLifecycle() {\n }\n deactivate() {\n }\n supersede() {\n }\n dispose() {\n }\n // generation-specific surface\n beginRun(_input) {\n return `noop-run-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n }\n ensureRunStarted(_runId) {\n }\n finishRun(_runId, _eventType, _status, _error) {\n }\n getActiveRunId() {\n return null;\n }\n resetRuns() {\n }\n recordResultChange() {\n }\n recordLoadingChange() {\n }\n recordErrorChange(_error) {\n }\n recordStatusChange() {\n }\n recordProgressChange() {\n }\n emitState() {\n }\n}\nclass NoOpVideoDevtoolsBridge extends NoOpGenerationDevtoolsBridge {\n constructor(options) {\n super(options);\n }\n recordJobIdChange() {\n }\n recordVideoStatusChange() {\n }\n}\nconst createNoOpChatDevtoolsBridge = (options) => (\n // eslint-disable-next-line no-restricted-syntax -- see comment above\n new NoOpChatDevtoolsBridge(options)\n);\nconst createNoOpGenerationDevtoolsBridge = (options) => (\n // eslint-disable-next-line no-restricted-syntax -- see comment above\n new NoOpGenerationDevtoolsBridge(\n options\n )\n);\nconst createNoOpVideoDevtoolsBridge = (options) => (\n // eslint-disable-next-line no-restricted-syntax -- see comment above\n new NoOpVideoDevtoolsBridge(\n options\n )\n);\nexport {\n NoOpChatDevtoolsBridge,\n NoOpGenerationDevtoolsBridge,\n NoOpVideoDevtoolsBridge,\n createNoOpChatDevtoolsBridge,\n createNoOpGenerationDevtoolsBridge,\n createNoOpVideoDevtoolsBridge\n};\n//# sourceMappingURL=devtools-noop.js.map\n","class UnsupportedResponseStreamError extends Error {\n missingFeature;\n constructor(missingFeature) {\n super(createUnsupportedResponseStreamMessage(missingFeature));\n this.name = \"UnsupportedResponseStreamError\";\n this.missingFeature = missingFeature;\n }\n}\nfunction createUnsupportedResponseStreamMessage(missingFeature) {\n return `Streaming fetch responses are not supported in this runtime because ${missingFeature} is unavailable. React Native users need a compatible fetch/stream/TextDecoder polyfill, or should use a fetch, XHR, or custom transport that can deliver streaming chunks.`;\n}\nfunction getResponseStreamReader(response) {\n if (!response.body) {\n throw new UnsupportedResponseStreamError(\"Response.body\");\n }\n if (typeof response.body.getReader !== \"function\") {\n throw new UnsupportedResponseStreamError(\"Response.body.getReader\");\n }\n return response.body.getReader();\n}\nfunction createResponseStreamTextDecoder() {\n if (typeof globalThis.TextDecoder !== \"function\") {\n throw new UnsupportedResponseStreamError(\"TextDecoder\");\n }\n return new globalThis.TextDecoder();\n}\nexport {\n UnsupportedResponseStreamError,\n createResponseStreamTextDecoder,\n getResponseStreamReader\n};\n//# sourceMappingURL=response-stream.js.map\n","function parseSseDataLine(line) {\n if (!line.startsWith(\"data:\")) {\n return line;\n }\n const data = line.slice(5);\n return data.startsWith(\" \") ? data.slice(1) : data;\n}\nexport {\n parseSseDataLine\n};\n//# sourceMappingURL=sse-utils.js.map\n","import { EventType, uiMessagesToWire } from \"@tanstack/ai/client\";\nimport { getResponseStreamReader, createResponseStreamTextDecoder } from \"./response-stream.js\";\nimport { parseSseDataLine } from \"./sse-utils.js\";\nconst chunkRunIds = /* @__PURE__ */ new WeakMap();\nfunction getChunkRunId(chunk) {\n return \"runId\" in chunk && typeof chunk.runId === \"string\" ? chunk.runId : chunkRunIds.get(chunk);\n}\nclass StreamTruncatedError extends Error {\n constructor() {\n super(\n \"Stream ended with unterminated trailing data — connection was likely cut short.\"\n );\n this.name = \"StreamTruncatedError\";\n }\n}\nfunction generateRunId(prefix) {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n}\nfunction requireSyntheticId(value, field) {\n if (!value) {\n throw new Error(\n `Cannot synthesize terminal event: ${field} not supplied via runContext and not observed in the upstream stream.`\n );\n }\n return value;\n}\nfunction mergeHeaders(customHeaders) {\n if (!customHeaders) {\n return {};\n }\n if (customHeaders instanceof Headers) {\n const result = {};\n customHeaders.forEach((value, key) => {\n result[key] = value;\n });\n return result;\n }\n return customHeaders;\n}\nasync function* readStreamLines(reader, abortSignal) {\n try {\n const decoder = createResponseStreamTextDecoder();\n let buffer = \"\";\n while (!abortSignal?.aborted) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n for (const line of lines) {\n if (line.trim()) {\n yield line;\n }\n }\n }\n if (buffer.trim() && !abortSignal?.aborted) {\n throw new StreamTruncatedError();\n }\n } finally {\n reader.releaseLock();\n }\n}\nasync function* responseToSSEChunks(response, abortSignal) {\n if (!response.ok) {\n throw new Error(\n `HTTP error! status: ${response.status} ${response.statusText}`\n );\n }\n const reader = getResponseStreamReader(response);\n let lastThreadId;\n let lastRunId;\n let lastModel;\n for await (const line of readStreamLines(reader, abortSignal)) {\n if (line.startsWith(\":\") || line.startsWith(\"event:\") || line.startsWith(\"id:\") || line.startsWith(\"retry:\")) {\n continue;\n }\n const data = parseSseDataLine(line);\n if (data === \"[DONE]\") {\n const synthetic = {\n type: EventType.RUN_FINISHED,\n threadId: lastThreadId ?? \"\",\n runId: lastRunId ?? \"\",\n model: lastModel ?? \"\",\n timestamp: Date.now(),\n finishReason: \"stop\"\n };\n yield synthetic;\n return;\n }\n const chunk = JSON.parse(data);\n if (\"threadId\" in chunk && typeof chunk.threadId === \"string\") {\n lastThreadId = chunk.threadId;\n }\n if (\"runId\" in chunk && typeof chunk.runId === \"string\") {\n lastRunId = chunk.runId;\n }\n if (\"model\" in chunk && typeof chunk.model === \"string\") {\n lastModel = chunk.model;\n }\n yield chunk;\n }\n}\nfunction normalizeConnectionAdapter(connection) {\n if (!connection) {\n throw new Error(\"Connection adapter is required\");\n }\n const hasConnect = \"connect\" in connection;\n const hasSubscribe = \"subscribe\" in connection;\n const hasSend = \"send\" in connection;\n if (hasConnect && (hasSubscribe || hasSend)) {\n throw new Error(\n \"Connection adapter must provide either connect or both subscribe and send, not both modes\"\n );\n }\n if (hasSubscribe && hasSend) {\n return {\n subscribe: connection.subscribe.bind(connection),\n send: connection.send.bind(connection)\n };\n }\n if (!hasConnect) {\n throw new Error(\n \"Connection adapter must provide either connect or both subscribe and send\"\n );\n }\n let activeBuffer = [];\n let activeWaiters = [];\n function push(chunk, runId) {\n if (runId) {\n chunkRunIds.set(chunk, runId);\n }\n const waiter = activeWaiters.shift();\n if (waiter) {\n waiter(chunk);\n } else {\n activeBuffer.push(chunk);\n }\n }\n return {\n subscribe(abortSignal) {\n const myBuffer = activeBuffer.splice(0);\n const myWaiters = [];\n activeBuffer = myBuffer;\n activeWaiters = myWaiters;\n return (async function* () {\n while (!abortSignal?.aborted) {\n let chunk;\n const buffered = myBuffer.shift();\n if (buffered !== void 0) {\n chunk = buffered;\n } else {\n chunk = await new Promise((resolve) => {\n const onAbort = () => resolve(null);\n myWaiters.push((c) => {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n resolve(c);\n });\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n }\n if (chunk !== null) yield chunk;\n }\n })();\n },\n async send(messages, data, abortSignal, runContext) {\n let hasTerminalEvent = false;\n let upstreamThreadId;\n let upstreamRunId;\n try {\n const stream2 = connection.connect(\n messages,\n data,\n abortSignal,\n runContext\n );\n for await (const chunk of stream2) {\n if (\"threadId\" in chunk && typeof chunk.threadId === \"string\") {\n upstreamThreadId = chunk.threadId;\n }\n if (\"runId\" in chunk && typeof chunk.runId === \"string\") {\n upstreamRunId = chunk.runId;\n }\n if (chunk.type === \"RUN_FINISHED\" || chunk.type === \"RUN_ERROR\") {\n hasTerminalEvent = true;\n }\n push(chunk, runContext?.runId);\n }\n if (!abortSignal?.aborted && !hasTerminalEvent) {\n const synthetic = {\n type: EventType.RUN_FINISHED,\n threadId: requireSyntheticId(\n upstreamThreadId ?? runContext?.threadId,\n \"threadId\"\n ),\n runId: requireSyntheticId(\n upstreamRunId ?? runContext?.runId,\n \"runId\"\n ),\n model: \"connect-wrapper\",\n timestamp: Date.now(),\n finishReason: \"stop\"\n };\n push(synthetic);\n }\n } catch (err) {\n if (!abortSignal?.aborted && !hasTerminalEvent) {\n const message = err instanceof Error ? err.message : \"Unknown error in connect()\";\n const synthetic = {\n type: EventType.RUN_ERROR,\n threadId: requireSyntheticId(\n upstreamThreadId ?? runContext?.threadId,\n \"threadId\"\n ),\n runId: requireSyntheticId(\n upstreamRunId ?? runContext?.runId,\n \"runId\"\n ),\n timestamp: Date.now(),\n message\n };\n push(synthetic);\n }\n throw err;\n }\n }\n };\n}\nfunction buildRunAgentInputBody(messages, data, runContext, options) {\n const wireMessages = uiMessagesToWire(messages);\n const forwardedProps = {\n ...options.body,\n ...runContext?.forwardedProps ?? {},\n ...data\n };\n return {\n threadId: runContext?.threadId ?? generateRunId(\"thread\"),\n runId: runContext?.runId ?? generateRunId(\"run\"),\n ...runContext?.parentRunId !== void 0 && {\n parentRunId: runContext.parentRunId\n },\n state: {},\n messages: wireMessages,\n tools: runContext?.clientTools ?? [],\n context: [],\n forwardedProps,\n // Backward-compat mirror of `forwardedProps` under the legacy field name.\n data: { ...forwardedProps }\n };\n}\nfunction fetchServerSentEvents(url, options = {}) {\n return {\n async *connect(messages, data, abortSignal, runContext) {\n const resolvedUrl = typeof url === \"function\" ? url() : url;\n const resolvedOptions = typeof options === \"function\" ? await options() : options;\n const requestHeaders = {\n \"Content-Type\": \"application/json\",\n ...mergeHeaders(resolvedOptions.headers)\n };\n const requestBody = buildRunAgentInputBody(\n messages,\n data,\n runContext,\n resolvedOptions\n );\n const fetchClient = resolvedOptions.fetchClient ?? fetch;\n const signal = abortSignal || resolvedOptions.signal;\n const response = await fetchClient(resolvedUrl, {\n method: \"POST\",\n headers: requestHeaders,\n body: JSON.stringify(requestBody),\n credentials: resolvedOptions.credentials || \"same-origin\",\n ...signal ? { signal } : {}\n });\n yield* responseToSSEChunks(response, abortSignal);\n }\n };\n}\nfunction fetchHttpStream(url, options = {}) {\n return {\n async *connect(messages, data, abortSignal, runContext) {\n const resolvedUrl = typeof url === \"function\" ? url() : url;\n const resolvedOptions = typeof options === \"function\" ? await options() : options;\n const requestHeaders = {\n \"Content-Type\": \"application/json\",\n ...mergeHeaders(resolvedOptions.headers)\n };\n const requestBody = buildRunAgentInputBody(\n messages,\n data,\n runContext,\n resolvedOptions\n );\n const fetchClient = resolvedOptions.fetchClient ?? fetch;\n const signal = abortSignal || resolvedOptions.signal;\n const response = await fetchClient(resolvedUrl, {\n method: \"POST\",\n headers: requestHeaders,\n body: JSON.stringify(requestBody),\n credentials: resolvedOptions.credentials || \"same-origin\",\n ...signal ? { signal } : {}\n });\n if (!response.ok) {\n throw new Error(\n `HTTP error! status: ${response.status} ${response.statusText}`\n );\n }\n const reader = getResponseStreamReader(response);\n for await (const line of readStreamLines(reader, abortSignal)) {\n yield JSON.parse(line);\n }\n }\n };\n}\nfunction createDefaultXMLHttpRequest() {\n if (typeof globalThis.XMLHttpRequest !== \"function\") {\n throw new Error(\"XMLHttpRequest is not available in this runtime\");\n }\n return new globalThis.XMLHttpRequest();\n}\nfunction cleanupXhr(xhr, abortSignal, onAbort) {\n xhr.onprogress = null;\n xhr.onload = null;\n xhr.onerror = null;\n xhr.onabort = null;\n xhr.onloadend = null;\n if (abortSignal && onAbort) {\n abortSignal.removeEventListener(\"abort\", onAbort);\n }\n}\nfunction readXhrLines(xhr, abortSignal) {\n let offset = 0;\n let buffer = \"\";\n const lines = [];\n const waiters = [];\n let done = false;\n let aborted = false;\n let error;\n let onAbort;\n const wake = () => {\n const waiter = waiters.shift();\n waiter?.();\n };\n const enqueueDelta = () => {\n if (xhr.status !== 0 && (xhr.status < 200 || xhr.status >= 300)) {\n error = new Error(`XHR error! status: ${xhr.status} ${xhr.statusText}`);\n done = true;\n return;\n }\n const responseText = xhr.responseText;\n if (responseText.length <= offset) {\n return;\n }\n buffer += responseText.slice(offset);\n offset = responseText.length;\n const splitLines = buffer.split(\"\\n\");\n buffer = splitLines.pop() ?? \"\";\n for (const line of splitLines) {\n const normalized = line.endsWith(\"\\r\") ? line.slice(0, -1) : line;\n if (normalized.trim()) {\n lines.push(normalized);\n }\n }\n };\n const finish = () => {\n enqueueDelta();\n if (xhr.status < 200 || xhr.status >= 300) {\n error = new Error(`XHR error! status: ${xhr.status} ${xhr.statusText}`);\n } else if (buffer.trim() && !aborted) {\n error = new StreamTruncatedError();\n }\n done = true;\n wake();\n };\n xhr.onprogress = () => {\n enqueueDelta();\n wake();\n };\n xhr.onload = finish;\n xhr.onerror = () => {\n error = new Error(\"XHR request failed\");\n done = true;\n wake();\n };\n xhr.onabort = () => {\n aborted = true;\n done = true;\n wake();\n };\n xhr.onloadend = () => {\n if (!done) {\n finish();\n }\n };\n if (abortSignal) {\n onAbort = () => {\n aborted = true;\n xhr.abort();\n };\n if (abortSignal.aborted) {\n onAbort();\n } else {\n abortSignal.addEventListener(\"abort\", onAbort, { once: true });\n }\n }\n return (async function* () {\n try {\n while (true) {\n const line = lines.shift();\n if (line !== void 0) {\n yield line;\n continue;\n }\n if (error) {\n throw error;\n }\n if (done || abortSignal?.aborted) {\n return;\n }\n await new Promise((resolve) => {\n waiters.push(resolve);\n });\n }\n } finally {\n cleanupXhr(xhr, abortSignal, onAbort);\n }\n })();\n}\nfunction createConfiguredXhrRequest(url, options, messages, data, runContext) {\n const xhr = options.xhrFactory?.() ?? createDefaultXMLHttpRequest();\n xhr.open(\"POST\", url);\n if (options.withCredentials !== void 0) {\n xhr.withCredentials = options.withCredentials;\n }\n const requestHeaders = {\n \"Content-Type\": \"application/json\",\n ...mergeHeaders(options.headers)\n };\n for (const [name, value] of Object.entries(requestHeaders)) {\n xhr.setRequestHeader(name, value);\n }\n const requestBody = buildRunAgentInputBody(\n messages,\n data,\n runContext,\n options\n );\n return { xhr, body: JSON.stringify(requestBody) };\n}\nasync function resolveXhrConnectionOptions(options) {\n return typeof options === \"function\" ? await options() : options;\n}\nfunction xhrServerSentEvents(url, options = {}) {\n return {\n async *connect(messages, data, abortSignal, runContext) {\n const resolvedUrl = typeof url === \"function\" ? url() : url;\n const resolvedOptions = await resolveXhrConnectionOptions(options);\n const signal = abortSignal || resolvedOptions.signal;\n const request = createConfiguredXhrRequest(\n resolvedUrl,\n resolvedOptions,\n messages,\n data,\n runContext\n );\n const lines = readXhrLines(request.xhr, signal);\n if (signal?.aborted) {\n await lines.next();\n return;\n }\n request.xhr.send(request.body);\n let lastThreadId;\n let lastRunId;\n let lastModel;\n for await (const line of lines) {\n if (line.startsWith(\":\") || line.startsWith(\"event:\") || line.startsWith(\"id:\") || line.startsWith(\"retry:\")) {\n continue;\n }\n const chunkData = parseSseDataLine(line);\n if (chunkData === \"[DONE]\") {\n const synthetic = {\n type: EventType.RUN_FINISHED,\n threadId: lastThreadId ?? runContext?.threadId ?? \"\",\n runId: lastRunId ?? runContext?.runId ?? \"\",\n model: lastModel ?? \"\",\n timestamp: Date.now(),\n finishReason: \"stop\"\n };\n request.xhr.abort();\n yield synthetic;\n return;\n }\n const chunk = JSON.parse(chunkData);\n if (\"threadId\" in chunk && typeof chunk.threadId === \"string\") {\n lastThreadId = chunk.threadId;\n }\n if (\"runId\" in chunk && typeof chunk.runId === \"string\") {\n lastRunId = chunk.runId;\n }\n if (\"model\" in chunk && typeof chunk.model === \"string\") {\n lastModel = chunk.model;\n }\n yield chunk;\n }\n }\n };\n}\nfunction xhrHttpStream(url, options = {}) {\n return {\n async *connect(messages, data, abortSignal, runContext) {\n const resolvedUrl = typeof url === \"function\" ? url() : url;\n const resolvedOptions = await resolveXhrConnectionOptions(options);\n const signal = abortSignal || resolvedOptions.signal;\n const request = createConfiguredXhrRequest(\n resolvedUrl,\n resolvedOptions,\n messages,\n data,\n runContext\n );\n const lines = readXhrLines(request.xhr, signal);\n if (signal?.aborted) {\n await lines.next();\n return;\n }\n request.xhr.send(request.body);\n for await (const line of lines) {\n yield JSON.parse(line);\n }\n }\n };\n}\nfunction stream(streamFactory) {\n return {\n async *connect(messages, data, abortSignal) {\n yield* streamFactory(messages, data, abortSignal);\n }\n };\n}\nfunction fetcherToConnectionAdapter(fetcher) {\n return {\n async *connect(messages, data, abortSignal, runContext) {\n if (!abortSignal) {\n throw new Error(\n \"fetcherToConnectionAdapter requires an AbortSignal — the chat client always supplies one.\"\n );\n }\n if (!runContext) {\n throw new Error(\n \"fetcherToConnectionAdapter requires a RunAgentInputContext — the chat client always supplies one.\"\n );\n }\n const uiMessages = messages;\n const result = await fetcher(\n {\n messages: uiMessages,\n data,\n threadId: runContext.threadId,\n runId: runContext.runId\n },\n { signal: abortSignal }\n );\n if (result instanceof Response) {\n yield* responseToSSEChunks(result, abortSignal);\n } else {\n yield* abortableIterable(result, abortSignal);\n }\n }\n };\n}\nasync function* abortableIterable(iterable, signal) {\n if (signal.aborted) return;\n const iterator = iterable[Symbol.asyncIterator]();\n const abortPromise = new Promise(\n (resolve) => {\n signal.addEventListener(\n \"abort\",\n () => resolve({ done: true, value: void 0 }),\n { once: true }\n );\n }\n );\n try {\n while (true) {\n const result = await Promise.race([iterator.next(), abortPromise]);\n if (result.done) return;\n yield result.value;\n }\n } finally {\n await iterator.return?.();\n }\n}\nfunction rpcStream(rpcCall) {\n return {\n async *connect(messages, data, abortSignal) {\n yield* rpcCall(messages, data, abortSignal);\n }\n };\n}\nexport {\n StreamTruncatedError,\n fetchHttpStream,\n fetchServerSentEvents,\n fetcherToConnectionAdapter,\n getChunkRunId,\n normalizeConnectionAdapter,\n rpcStream,\n stream,\n xhrHttpStream,\n xhrServerSentEvents\n};\n//# sourceMappingURL=connection-adapters.js.map\n","import { getChunkRunId } from \"./connection-adapters.js\";\nfunction getChunkToolCallId(chunk) {\n return \"toolCallId\" in chunk && typeof chunk.toolCallId === \"string\" ? chunk.toolCallId : void 0;\n}\nfunction getChunkMessageId(chunk) {\n return \"messageId\" in chunk && typeof chunk.messageId === \"string\" ? chunk.messageId : void 0;\n}\nfunction getChunkParentMessageId(chunk) {\n return \"parentMessageId\" in chunk && typeof chunk.parentMessageId === \"string\" ? chunk.parentMessageId : void 0;\n}\nclass ChatPersistor {\n constructor(adapter, id, applyMessages) {\n this.adapter = adapter;\n this.id = id;\n this.applyMessages = applyMessages;\n }\n adapter;\n id;\n applyMessages;\n // --- storage queue state ---\n skipNextPersist = false;\n generation = 0;\n queue = Promise.resolve();\n queuePending = false;\n // Bumped on every message change; lets an in-flight async hydration detect\n // that the message list moved on and avoid clobbering it.\n messagesGeneration = 0;\n // --- clear-during-stream suppression state ---\n clearedMessageIds = /* @__PURE__ */ new Set();\n clearedRunIds = /* @__PURE__ */ new Set();\n ignoredActiveRunIds = /* @__PURE__ */ new Set();\n clearedToolCallIds = /* @__PURE__ */ new Set();\n currentRunlessRunId = null;\n // ---------------------------------------------------------------------------\n // Storage orchestration\n // ---------------------------------------------------------------------------\n /**\n * Synchronously read the persisted messages for constructor-time hydration.\n * Returns the raw `getItem` result (which may be a promise for async stores).\n */\n readInitial() {\n try {\n return this.adapter.getItem(this.id);\n } catch {\n return void 0;\n }\n }\n /**\n * Apply messages from an async `getItem` once it resolves, unless the message\n * list has already changed since hydration began.\n */\n hydrateAsync(persistedMessages) {\n if (!(persistedMessages instanceof Promise)) {\n return;\n }\n const hydrationGeneration = this.messagesGeneration;\n persistedMessages.then((messages) => {\n if (Array.isArray(messages) && this.messagesGeneration === hydrationGeneration) {\n this.applyMessages(messages);\n }\n }).catch(() => {\n });\n }\n /**\n * Record a message-list change and queue a `setItem` write for it. Skips a\n * single write after {@link beginClear} so the clear's empty snapshot isn't\n * persisted between `clearMessages()` and {@link remove}.\n */\n notifyMessagesChanged(messages) {\n this.messagesGeneration++;\n if (this.skipNextPersist) {\n this.skipNextPersist = false;\n return;\n }\n const generation = this.generation;\n const messagesSnapshot = [...messages];\n this.runOperation(() => {\n if (generation !== this.generation) {\n return;\n }\n return this.adapter.setItem(this.id, messagesSnapshot);\n });\n }\n /** Remove the persisted conversation. Invalidates any queued writes. */\n remove() {\n const generation = ++this.generation;\n this.runOperation(() => {\n if (generation !== this.generation) {\n return;\n }\n return this.adapter.removeItem(this.id);\n });\n }\n runOperation(operation) {\n if (this.queuePending) {\n const queued = this.queue.then(operation).catch(() => {\n });\n this.queue = queued;\n void queued.finally(() => {\n if (this.queue === queued) {\n this.queuePending = false;\n }\n });\n return;\n }\n try {\n const result = operation();\n if (result instanceof Promise) {\n this.queuePending = true;\n const queued = result.catch(() => {\n });\n this.queue = queued;\n void queued.finally(() => {\n if (this.queue === queued) {\n this.queuePending = false;\n }\n });\n }\n } catch {\n }\n }\n // ---------------------------------------------------------------------------\n // Clear-during-stream suppression\n // ---------------------------------------------------------------------------\n /**\n * Capture the message/run ids that exist at the moment of a clear so chunks\n * still arriving for them can be ignored.\n */\n snapshotClear(context) {\n for (const message of context.messages) {\n this.clearedMessageIds.add(message.id);\n }\n for (const runId of context.activeRunIds) {\n this.clearedRunIds.add(runId);\n this.ignoredActiveRunIds.add(runId);\n }\n if (context.currentRunId) {\n this.clearedRunIds.add(context.currentRunId);\n this.ignoredActiveRunIds.add(context.currentRunId);\n }\n }\n /** Mark that the next persisted message change (the clear itself) is skipped. */\n beginClear() {\n this.skipNextPersist = true;\n }\n /** Whether a chunk belongs to cleared state and should not be processed. */\n shouldIgnoreChunk(chunk) {\n const runId = getChunkRunId(chunk);\n if (runId && this.clearedRunIds.has(runId)) {\n if (chunk.type === \"RUN_STARTED\") {\n this.ignoredActiveRunIds.add(runId);\n this.currentRunlessRunId = runId;\n }\n this.markIgnoredChunkIds(chunk);\n return true;\n }\n if (runId && this.ignoredActiveRunIds.has(runId)) {\n this.markIgnoredChunkIds(chunk);\n return true;\n }\n if (this.isRunlessChunkFromIgnoredRun(chunk)) {\n this.markIgnoredChunkIds(chunk);\n return true;\n }\n const toolCallId = getChunkToolCallId(chunk);\n if (toolCallId && this.clearedToolCallIds.has(toolCallId)) {\n return true;\n }\n const parentMessageId = getChunkParentMessageId(chunk);\n if (parentMessageId && this.clearedMessageIds.has(parentMessageId)) {\n if (toolCallId) {\n this.clearedToolCallIds.add(toolCallId);\n }\n return true;\n }\n const messageId = getChunkMessageId(chunk);\n if (!messageId) {\n return false;\n }\n if (this.clearedMessageIds.has(messageId)) {\n return true;\n }\n return false;\n }\n /**\n * The owning client calls this when a run starts so runless content chunks\n * (adapters that omit `runId` on content events) can be attributed to it.\n */\n onRunStarted(runId) {\n this.currentRunlessRunId = runId;\n }\n /** Forget a settled run, advancing the runless pointer to another ignored run. */\n onRunSettled(runId) {\n this.ignoredActiveRunIds.delete(runId);\n this.clearedRunIds.delete(runId);\n if (this.currentRunlessRunId === runId) {\n this.currentRunlessRunId = this.ignoredActiveRunIds.values().next().value ?? null;\n }\n }\n /** A session-level (runId-less) RUN_ERROR clears all ignored-run tracking. */\n onSessionRunError() {\n this.ignoredActiveRunIds.clear();\n this.currentRunlessRunId = null;\n }\n /** Clear the ignored-active-run markers (mirrors a session-generating reset). */\n resetIgnored() {\n this.ignoredActiveRunIds.clear();\n }\n /**\n * Consume the current runless run id (if any), forgetting it. Used when an\n * ignored, runId-less RUN_ERROR drains the run the client is still tracking.\n */\n takeRunlessRunId() {\n const runId = this.currentRunlessRunId;\n if (!runId) return null;\n this.ignoredActiveRunIds.delete(runId);\n this.clearedRunIds.delete(runId);\n this.currentRunlessRunId = this.ignoredActiveRunIds.values().next().value ?? null;\n return runId;\n }\n markIgnoredChunkIds(chunk) {\n const messageId = getChunkMessageId(chunk);\n if (messageId) {\n this.clearedMessageIds.add(messageId);\n }\n const toolCallId = getChunkToolCallId(chunk);\n if (toolCallId) {\n this.clearedToolCallIds.add(toolCallId);\n }\n }\n isRunlessChunkFromIgnoredRun(chunk) {\n const runId = getChunkRunId(chunk);\n if (runId || !this.currentRunlessRunId) return false;\n if (!this.ignoredActiveRunIds.has(this.currentRunlessRunId) && !this.clearedRunIds.has(this.currentRunlessRunId)) {\n return false;\n }\n return chunk.type === \"TEXT_MESSAGE_START\" || chunk.type === \"TEXT_MESSAGE_CONTENT\" || chunk.type === \"TOOL_CALL_START\" || chunk.type === \"TOOL_CALL_ARGS\" || chunk.type === \"TOOL_CALL_END\" || chunk.type === \"TOOL_CALL_RESULT\" || chunk.type === \"MESSAGES_SNAPSHOT\" || chunk.type === \"RUN_ERROR\";\n }\n}\nexport {\n ChatPersistor\n};\n//# sourceMappingURL=client-persistor.js.map\n","import { StreamProcessor, normalizeToUIMessage, generateMessageId, convertSchemaToJsonSchema, isStandardSchema, parseWithStandardSchema } from \"@tanstack/ai/client\";\nimport { createNoOpChatDevtoolsBridge } from \"./devtools-noop.js\";\nimport { normalizeConnectionAdapter, getChunkRunId, fetcherToConnectionAdapter } from \"./connection-adapters.js\";\nimport { ChatPersistor } from \"./client-persistor.js\";\nfunction resolveTransport(transport) {\n const { connection, fetcher } = transport;\n if (connection && fetcher) {\n throw new Error(\n \"ChatClient: pass either `connection` or `fetcher`, not both.\"\n );\n }\n if (connection) return connection;\n if (fetcher) return fetcherToConnectionAdapter(fetcher);\n throw new Error(\"ChatClient: either `connection` or `fetcher` is required.\");\n}\nclass ChatClient {\n processor;\n connection;\n uniqueId;\n threadId;\n // All persistence concerns (hydrate / save / clear, plus suppression of late\n // chunks after a mid-stream clear) live in ChatPersistor so this class stays\n // focused on streaming. Undefined when no `persistence` adapter is configured.\n persistor;\n currentRunId = null;\n // Track the legacy `body` option and the canonical `forwardedProps`\n // option as separate slots so that `updateOptions({ forwardedProps })`\n // doesn't wipe a previously-set `body` (and vice versa). They are\n // merged on every send, with `forwardedProps` winning on key collision.\n bodyOption = {};\n forwardedPropsOption = {};\n context = void 0;\n pendingMessageBody = void 0;\n isLoading = false;\n isSubscribed = false;\n error = void 0;\n status = \"ready\";\n connectionStatus = \"disconnected\";\n abortController = null;\n clientToolsRef;\n devtoolsBridge;\n /**\n * Alias for `this.events`. The bridge installs an\n * emitter that auto-attaches run/thread context and auto-emits a\n * snapshot after every event, so chat-client only ever calls\n * `this.events.X(...)` exactly like it did before devtools landed.\n */\n events;\n currentStreamId = null;\n currentMessageId = null;\n postStreamActions = [];\n // Track pending client tool executions to await them before stream finalization\n pendingToolExecutions = /* @__PURE__ */ new Map();\n activeClientTools = null;\n activeContext = void 0;\n // Flag to deduplicate continuation checks during action draining\n continuationPending = false;\n subscriptionAbortController = null;\n processingResolve = null;\n errorReportedGeneration = null;\n streamGeneration = 0;\n // Tracks whether a queued checkForContinuation was skipped because\n // continuationPending was true (chained approval scenario)\n continuationSkipped = false;\n draining = false;\n sessionGenerating = false;\n activeRunIds = /* @__PURE__ */ new Set();\n devtoolsMounted = false;\n callbacksRef;\n constructor(options) {\n this.uniqueId = options.id || this.generateUniqueId(\"chat\");\n this.threadId = options.threadId || this.generateUniqueId(\"thread\");\n if (options.persistence) {\n this.persistor = new ChatPersistor(\n options.persistence,\n this.uniqueId,\n (messages) => this.processor.setMessages(messages)\n );\n }\n this.bodyOption = options.body || {};\n this.forwardedPropsOption = options.forwardedProps || {};\n this.context = options.context;\n this.connection = normalizeConnectionAdapter(resolveTransport(options));\n this.clientToolsRef = { current: /* @__PURE__ */ new Map() };\n if (options.tools) {\n for (const tool of options.tools) {\n this.clientToolsRef.current.set(tool.name, tool);\n }\n }\n this.devtoolsBridge = (options.devtoolsBridgeFactory ?? createNoOpChatDevtoolsBridge)(this.buildDevtoolsBridgeOptions(options.devtools));\n this.events = this.devtoolsBridge.events;\n this.callbacksRef = {\n current: {\n onResponse: options.onResponse || (() => {\n }),\n onChunk: options.onChunk || (() => {\n }),\n onFinish: options.onFinish || (() => {\n }),\n onError: options.onError || (() => {\n }),\n onMessagesChange: options.onMessagesChange || (() => {\n }),\n onLoadingChange: options.onLoadingChange || (() => {\n }),\n onErrorChange: options.onErrorChange || (() => {\n }),\n onStatusChange: options.onStatusChange || (() => {\n }),\n onSubscriptionChange: options.onSubscriptionChange || (() => {\n }),\n onConnectionStatusChange: options.onConnectionStatusChange || (() => {\n }),\n onSessionGeneratingChange: options.onSessionGeneratingChange || (() => {\n }),\n onCustomEvent: options.onCustomEvent || (() => {\n })\n }\n };\n const persistedMessages = this.persistor?.readInitial();\n const initialMessages = Array.isArray(persistedMessages) ? persistedMessages : options.initialMessages;\n this.processor = new StreamProcessor({\n ...options.streamProcessor?.chunkStrategy ? { chunkStrategy: options.streamProcessor.chunkStrategy } : {},\n ...initialMessages ? { initialMessages } : {},\n events: {\n onMessagesChange: (messages) => {\n this.persistor?.notifyMessagesChanged(messages);\n this.callbacksRef.current.onMessagesChange(messages);\n },\n onStreamStart: () => {\n this.setStatus(\"streaming\");\n const assistantMessageId = this.processor.getCurrentAssistantMessageId();\n if (!assistantMessageId) {\n return;\n }\n const messages = this.processor.getMessages();\n const assistantMessage = messages.find(\n (m) => m.id === assistantMessageId\n );\n if (assistantMessage) {\n this.currentMessageId = assistantMessage.id;\n this.events.messageAppended(\n assistantMessage,\n this.currentStreamId || void 0\n );\n }\n },\n onStreamEnd: (message) => {\n this.callbacksRef.current.onFinish(message);\n this.setStatus(\"ready\");\n this.resolveProcessing();\n },\n onError: (error) => {\n this.reportStreamError(error);\n },\n onTextUpdate: (messageId, content) => {\n if (this.currentStreamId) {\n this.events.textUpdated(this.currentStreamId, messageId, content);\n }\n },\n onThinkingUpdate: (messageId, content) => {\n if (this.currentStreamId) {\n this.events.thinkingUpdated(\n this.currentStreamId,\n messageId,\n content,\n void 0\n );\n }\n },\n onStructuredOutputChange: (args) => {\n const streamId = this.devtoolsBridge.resolveStreamId();\n const eventName = args.phase === \"start\" ? \"structured-output:started\" : args.phase === \"complete\" ? \"structured-output:completed\" : args.phase === \"error\" ? \"structured-output:errored\" : \"structured-output:updated\";\n this.currentMessageId = args.messageId;\n this.events.structuredOutputChanged(\n eventName,\n streamId,\n args.messageId,\n {\n status: args.status,\n raw: args.raw,\n ...args.partial !== void 0 ? { partial: args.partial } : {},\n ...args.data !== void 0 ? { data: args.data } : {},\n ...args.reasoning !== void 0 ? { reasoning: args.reasoning } : {},\n ...args.errorMessage !== void 0 ? { errorMessage: args.errorMessage } : {},\n ...args.delta !== void 0 ? { delta: args.delta } : {}\n }\n );\n },\n onToolCallStateChange: (messageId, toolCallId, state, args) => {\n const messages = this.processor.getMessages();\n const message = messages.find((m) => m.id === messageId);\n const toolCallPart = message?.parts.find(\n (p) => p.type === \"tool-call\" && p.id === toolCallId\n );\n const toolName = toolCallPart?.name || \"unknown\";\n if (this.currentStreamId) {\n this.events.toolCallStateChanged(\n this.currentStreamId,\n messageId,\n toolCallId,\n toolName,\n state,\n args\n );\n }\n },\n onToolCall: (args) => {\n const clientTools = this.activeClientTools ?? this.clientToolsRef.current;\n const clientTool = clientTools.get(args.toolName);\n const executeFunc = clientTool?.execute;\n if (executeFunc) {\n const runEventContext = this.devtoolsBridge.getCurrentRunEventContext();\n const executionPromise = (async () => {\n try {\n const context = this.activeClientTools === null ? this.context : this.activeContext;\n const output = await executeFunc(args.input, {\n toolCallId: args.toolCallId,\n context,\n emitCustomEvent: () => {\n }\n });\n await this.addToolResultForClientTool(\n {\n toolCallId: args.toolCallId,\n tool: args.toolName,\n output,\n state: \"output-available\"\n },\n clientTool,\n runEventContext\n );\n } catch (error) {\n await this.addToolResultForClientTool(\n {\n toolCallId: args.toolCallId,\n tool: args.toolName,\n output: null,\n state: \"output-error\",\n errorText: error.message\n },\n clientTool,\n runEventContext\n );\n } finally {\n this.pendingToolExecutions.delete(args.toolCallId);\n }\n })();\n this.pendingToolExecutions.set(args.toolCallId, executionPromise);\n }\n },\n onApprovalRequest: (args) => {\n const streamId = this.devtoolsBridge.resolveStreamId();\n const messageIdForApproval = this.findMessageIdForToolCall(args.toolCallId) ?? this.currentMessageId ?? \"\";\n this.events.approvalRequested(\n streamId,\n messageIdForApproval,\n args.toolCallId,\n args.toolName,\n args.input,\n args.approvalId\n );\n },\n onCustomEvent: (eventType, data, context) => {\n this.callbacksRef.current.onCustomEvent(eventType, data, context);\n }\n }\n });\n this.persistor?.hydrateAsync(persistedMessages);\n }\n mountDevtools() {\n if (this.devtoolsMounted) {\n return;\n }\n this.devtoolsMounted = true;\n this.devtoolsBridge.mountWithTools(this.processor.getMessages().length);\n }\n /**\n * Drain a runId-less RUN_ERROR that belongs to a cleared run the client is\n * still tracking. The persistor owns the cleared-run bookkeeping; the client\n * owns the active-run / session / processing state.\n */\n drainIgnoredRunlessChunk(chunk) {\n if (chunk.type !== \"RUN_ERROR\") return;\n const runId = this.persistor?.takeRunlessRunId();\n if (!runId) return;\n this.activeRunIds.delete(runId);\n this.setSessionGenerating(this.activeRunIds.size > 0);\n this.resolveProcessing();\n }\n updateRunLifecycle(chunk, options) {\n if (chunk.type === \"RUN_STARTED\") {\n const chunkRunId = getChunkRunId(chunk) ?? chunk.runId;\n this.activeRunIds.add(chunkRunId);\n this.persistor?.onRunStarted(chunkRunId);\n this.setSessionGenerating(true);\n return;\n }\n if (chunk.type !== \"RUN_FINISHED\" && chunk.type !== \"RUN_ERROR\") {\n return;\n }\n const runId = getChunkRunId(chunk);\n if (runId) {\n this.activeRunIds.delete(runId);\n this.persistor?.onRunSettled(runId);\n } else if (chunk.type === \"RUN_ERROR\") {\n this.activeRunIds.clear();\n this.persistor?.onSessionRunError();\n }\n this.setSessionGenerating(this.activeRunIds.size > 0);\n if (options?.resolveProcessing !== false) {\n this.resolveProcessing();\n }\n }\n generateUniqueId(prefix) {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substring(7)}`;\n }\n setIsLoading(isLoading) {\n this.isLoading = isLoading;\n this.callbacksRef.current.onLoadingChange(isLoading);\n this.events.loadingChanged(isLoading);\n }\n setStatus(status) {\n this.status = status;\n this.callbacksRef.current.onStatusChange(status);\n this.devtoolsBridge.emitSnapshot();\n }\n setIsSubscribed(isSubscribed) {\n this.isSubscribed = isSubscribed;\n this.callbacksRef.current.onSubscriptionChange(isSubscribed);\n this.devtoolsBridge.emitSnapshot();\n }\n setConnectionStatus(status) {\n this.connectionStatus = status;\n this.callbacksRef.current.onConnectionStatusChange(status);\n this.devtoolsBridge.emitSnapshot();\n }\n setSessionGenerating(isGenerating) {\n if (this.sessionGenerating === isGenerating) return;\n this.sessionGenerating = isGenerating;\n this.callbacksRef.current.onSessionGeneratingChange(isGenerating);\n this.devtoolsBridge.emitSnapshot();\n }\n resetSessionGenerating() {\n this.activeRunIds.clear();\n this.persistor?.resetIgnored();\n this.setSessionGenerating(false);\n }\n setError(error) {\n this.error = error;\n this.callbacksRef.current.onErrorChange(error);\n this.events.errorChanged(error?.message || null);\n }\n buildDevtoolsBridgeOptions(devtools) {\n return {\n hookId: this.uniqueId,\n clientId: this.uniqueId,\n threadId: this.threadId,\n metadata: {\n hookName: devtools?.hookName ?? \"useChat\",\n outputKind: devtools?.outputKind ?? \"chat\",\n ...devtools?.framework ? { framework: devtools.framework } : {},\n ...devtools?.name ? { name: devtools.name } : {}\n },\n getSnapshot: () => this.getDevtoolsSnapshot(),\n getTools: () => this.clientToolsRef.current.values(),\n getMessages: () => this.processor.getMessages(),\n setMessages: (messages) => {\n this.processor.setMessages(messages);\n },\n addToolResult: (toolCallId, output, errorText) => {\n this.processor.addToolResult(toolCallId, output, errorText);\n },\n generateId: (prefix) => this.generateUniqueId(prefix)\n };\n }\n getDevtoolsSnapshot() {\n return {\n messages: this.processor.getMessages(),\n status: this.status,\n isLoading: this.isLoading,\n isSubscribed: this.isSubscribed,\n connectionStatus: this.connectionStatus,\n sessionGenerating: this.sessionGenerating,\n activeRunIds: Array.from(this.activeRunIds),\n ...this.error ? { error: this.error.message } : {}\n };\n }\n findMessageIdForToolCall(toolCallId) {\n const messages = this.processor.getMessages();\n for (const message of messages) {\n const match = message.parts.find(\n (part) => part.type === \"tool-call\" && part.id === toolCallId\n );\n if (match) return message.id;\n }\n return void 0;\n }\n abortSubscriptionLoop() {\n this.subscriptionAbortController?.abort();\n this.subscriptionAbortController = null;\n }\n resolveProcessing() {\n this.processingResolve?.();\n this.processingResolve = null;\n }\n cancelInFlightStream(options) {\n this.abortController?.abort();\n this.abortController = null;\n if (options?.abortSubscription) {\n this.abortSubscriptionLoop();\n }\n this.resolveProcessing();\n this.setIsLoading(false);\n if (options?.setReadyStatus) {\n this.setStatus(\"ready\");\n }\n }\n reportStreamError(error) {\n const alreadyReported = this.errorReportedGeneration === this.streamGeneration;\n this.setError(error);\n if (this.isLoading || this.status === \"submitted\" || this.status === \"streaming\") {\n this.setStatus(\"error\");\n }\n if (!alreadyReported) {\n this.errorReportedGeneration = this.streamGeneration;\n this.callbacksRef.current.onError(error);\n }\n }\n /**\n * Start the background subscription loop.\n */\n startSubscription() {\n this.subscriptionAbortController = new AbortController();\n const signal = this.subscriptionAbortController.signal;\n this.consumeSubscription(signal).catch((err) => {\n if (err instanceof Error && err.name !== \"AbortError\") {\n this.setConnectionStatus(\"error\");\n this.resetSessionGenerating();\n this.setIsSubscribed(false);\n this.reportStreamError(err);\n }\n this.resolveProcessing();\n }).finally(() => {\n if (this.subscriptionAbortController?.signal !== signal) {\n return;\n }\n this.subscriptionAbortController = null;\n if (!signal.aborted && this.isSubscribed) {\n this.setIsSubscribed(false);\n if (this.connectionStatus !== \"error\") {\n this.setConnectionStatus(\"disconnected\");\n }\n }\n });\n }\n /**\n * Consume chunks from the connection subscription.\n */\n async consumeSubscription(signal) {\n const stream = this.connection.subscribe(signal);\n for await (const chunk of stream) {\n if (signal.aborted) break;\n if (this.connectionStatus === \"connecting\") {\n this.setConnectionStatus(\"connected\");\n }\n const shouldIgnore = this.persistor?.shouldIgnoreChunk(chunk) ?? false;\n if (shouldIgnore) {\n if (chunk.type === \"RUN_FINISHED\" || chunk.type === \"RUN_ERROR\") {\n if (getChunkRunId(chunk)) {\n this.updateRunLifecycle(chunk, { resolveProcessing: false });\n } else {\n this.drainIgnoredRunlessChunk(chunk);\n }\n }\n continue;\n }\n this.callbacksRef.current.onChunk(chunk);\n this.devtoolsBridge.observeChunk(chunk);\n this.processor.processChunk(chunk);\n this.updateRunLifecycle(chunk);\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n }\n /**\n * Ensure subscription loop is running, starting it if needed.\n */\n ensureSubscription() {\n if (!this.isSubscribed) {\n this.subscribe();\n return;\n }\n if (!this.subscriptionAbortController || this.subscriptionAbortController.signal.aborted) {\n this.subscribe({ restart: true });\n }\n }\n /**\n * Create a promise that resolves when onStreamEnd fires.\n * Used by streamResponse to await processing completion.\n */\n waitForProcessing() {\n this.resolveProcessing();\n return new Promise((resolve) => {\n this.processingResolve = resolve;\n });\n }\n /**\n * Send a message and stream the response.\n * Supports both simple string content and multimodal content (images, audio, video, documents).\n *\n * @param content - The message content. Can be:\n * - A simple string for text-only messages\n * - A MultimodalContent object with content array and optional custom ID\n * @param body - Optional body parameters to merge with the client's base body for this request.\n * Uses shallow merge with per-message body taking priority.\n *\n * @example\n * ```ts\n * // Simple text message\n * await client.sendMessage('Hello!')\n *\n * // Text message with custom body params\n * await client.sendMessage('Hello!', { temperature: 0.7 })\n *\n * // Multimodal message with image\n * await client.sendMessage({\n * content: [\n * { type: 'text', content: 'What is in this image?' },\n * { type: 'image', source: { type: 'url', value: 'https://example.com/photo.jpg' } }\n * ]\n * })\n *\n * // Multimodal message with custom ID and body params\n * await client.sendMessage(\n * {\n * content: [\n * { type: 'text', content: 'Describe this audio' },\n * { type: 'audio', source: { type: 'data', value: 'base64...' } }\n * ],\n * id: 'custom-message-id'\n * },\n * { model: 'gpt-4-audio' }\n * )\n * ```\n */\n async sendMessage(content, body) {\n this.mountDevtools();\n const emptyMessage = typeof content === \"string\" && !content.trim();\n if (emptyMessage || this.isLoading) {\n return;\n }\n const normalizedContent = this.normalizeMessageInput(content);\n this.pendingMessageBody = body;\n const userMessage = this.processor.addUserMessage(\n normalizedContent.content,\n normalizedContent.id\n );\n this.events.messageSent(userMessage.id, normalizedContent.content);\n await this.streamResponse();\n }\n /**\n * Normalize the message input to extract content and optional id.\n * Trims string content automatically.\n */\n normalizeMessageInput(input) {\n if (typeof input === \"string\") {\n return { content: input.trim() };\n }\n return { content: input.content, id: input.id };\n }\n /**\n * Append a message and stream the response\n */\n async append(message) {\n this.mountDevtools();\n const normalizedMessage = normalizeToUIMessage(message, generateMessageId);\n if (normalizedMessage.role === \"system\") {\n return;\n }\n const uiMessage = normalizedMessage;\n this.events.messageAppended(uiMessage);\n const messages = this.processor.getMessages();\n this.processor.setMessages([...messages, uiMessage]);\n this.devtoolsBridge.emitSnapshot();\n if (this.isLoading) {\n this.queuePostStreamAction(async () => {\n await this.streamResponse();\n });\n return;\n }\n await this.streamResponse();\n }\n /**\n * Stream a response from the LLM.\n * Returns true if the stream completed successfully, false on abort or error.\n */\n async streamResponse() {\n if (this.isLoading) {\n return false;\n }\n const generation = ++this.streamGeneration;\n const runId = `run-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n this.currentRunId = runId;\n this.setIsLoading(true);\n this.setStatus(\"submitted\");\n this.setError(void 0);\n this.errorReportedGeneration = null;\n this.abortController = new AbortController();\n const signal = this.abortController.signal;\n this.pendingToolExecutions.clear();\n let streamCompletedSuccessfully = false;\n let activeDevtoolsRunId = null;\n let runTerminalEventEmitted = false;\n try {\n const messages = this.processor.getMessages();\n const clientTools = new Map(this.clientToolsRef.current);\n const runtimeContext = this.context;\n await this.callbacksRef.current.onResponse();\n if (signal.aborted) {\n return false;\n }\n const mergedBody = {\n ...this.bodyOption,\n ...this.forwardedPropsOption,\n ...this.pendingMessageBody\n };\n this.pendingMessageBody = void 0;\n this.currentStreamId = this.generateUniqueId(\"stream\");\n this.devtoolsBridge.setCurrentStreamId(this.currentStreamId);\n this.currentMessageId = null;\n this.activeClientTools = clientTools;\n this.activeContext = runtimeContext;\n this.processor.prepareAssistantMessage();\n this.ensureSubscription();\n const processingComplete = this.waitForProcessing();\n const runContext = {\n threadId: this.threadId,\n runId,\n clientTools: Array.from(clientTools.values()).map((t) => ({\n name: t.name,\n description: t.description,\n parameters: t.inputSchema ? convertSchemaToJsonSchema(t.inputSchema) : { type: \"object\" }\n })),\n forwardedProps: { ...mergedBody }\n };\n this.devtoolsBridge.beginRun(runContext.runId, this.threadId);\n activeDevtoolsRunId = runContext.runId;\n this.devtoolsBridge.emitRunLifecycle(\n \"run:created\",\n runContext.runId,\n \"created\"\n );\n this.devtoolsBridge.emitRunLifecycle(\n \"run:started\",\n runContext.runId,\n \"started\"\n );\n this.devtoolsBridge.emitSnapshot();\n await this.connection.send(messages, mergedBody, signal, runContext);\n await processingComplete;\n if (generation !== this.streamGeneration) {\n return false;\n }\n if (this.status === \"error\") {\n if (activeDevtoolsRunId) {\n this.devtoolsBridge.emitRunLifecycle(\n \"run:errored\",\n activeDevtoolsRunId,\n \"errored\",\n this.error ? { error: this.error.message } : {}\n );\n runTerminalEventEmitted = true;\n }\n return false;\n }\n if (this.pendingToolExecutions.size > 0) {\n await Promise.all(this.pendingToolExecutions.values());\n }\n this.processor.finalizeStream();\n streamCompletedSuccessfully = true;\n } catch (err) {\n if (err instanceof Error) {\n if (err.name === \"AbortError\") {\n if (activeDevtoolsRunId) {\n this.devtoolsBridge.emitRunLifecycle(\n \"run:cancelled\",\n activeDevtoolsRunId,\n \"cancelled\"\n );\n runTerminalEventEmitted = true;\n }\n return false;\n }\n if (generation === this.streamGeneration) {\n this.reportStreamError(err);\n if (activeDevtoolsRunId) {\n this.devtoolsBridge.emitRunLifecycle(\n \"run:errored\",\n activeDevtoolsRunId,\n \"errored\",\n { error: err.message }\n );\n runTerminalEventEmitted = true;\n }\n }\n }\n } finally {\n if (generation === this.streamGeneration) {\n this.currentStreamId = null;\n this.devtoolsBridge.setCurrentStreamId(null);\n this.currentMessageId = null;\n this.currentRunId = null;\n this.activeClientTools = null;\n this.activeContext = void 0;\n this.abortController = null;\n this.setIsLoading(false);\n this.pendingMessageBody = void 0;\n if (activeDevtoolsRunId && !runTerminalEventEmitted) {\n if (streamCompletedSuccessfully) {\n this.devtoolsBridge.emitRunLifecycle(\n \"run:completed\",\n activeDevtoolsRunId,\n \"completed\"\n );\n } else if (signal.aborted) {\n this.devtoolsBridge.emitRunLifecycle(\n \"run:cancelled\",\n activeDevtoolsRunId,\n \"cancelled\"\n );\n }\n }\n await this.drainPostStreamActions();\n if (streamCompletedSuccessfully) {\n const messages = this.processor.getMessages();\n const lastPart = messages.at(-1)?.parts.at(-1);\n const { finishReason } = this.processor.getState();\n if (lastPart?.type === \"tool-result\" && finishReason !== \"stop\" && this.shouldAutoSend()) {\n try {\n await this.checkForContinuation();\n } catch (error) {\n console.error(\"Failed to continue flow after tool result:\", error);\n }\n } else if (this.status !== \"ready\") {\n this.setStatus(\"ready\");\n }\n }\n }\n }\n return streamCompletedSuccessfully;\n }\n /**\n * Start the client subscription loop.\n * This controls the connection lifecycle independently from request lifecycle.\n */\n subscribe(options) {\n const restart = options?.restart === true;\n if (this.isSubscribed && !restart) {\n return;\n }\n if (this.isSubscribed && restart) {\n this.abortSubscriptionLoop();\n }\n this.setIsSubscribed(true);\n this.setConnectionStatus(\"connecting\");\n this.startSubscription();\n }\n /**\n * Unsubscribe and fully tear down live behavior.\n * This aborts an in-flight request and the subscription loop.\n */\n unsubscribe() {\n this.cancelInFlightStream({\n setReadyStatus: true,\n abortSubscription: true\n });\n this.resetSessionGenerating();\n this.setIsSubscribed(false);\n this.setConnectionStatus(\"disconnected\");\n }\n /**\n * Reload the last assistant message\n */\n async reload() {\n const messages = this.processor.getMessages();\n if (messages.length === 0) return;\n const lastUserMessageIndex = messages.findLastIndex(\n (m) => m.role === \"user\"\n );\n if (lastUserMessageIndex === -1) return;\n if (this.isLoading) {\n this.cancelInFlightStream();\n }\n this.events.reloaded(lastUserMessageIndex);\n this.processor.removeMessagesAfter(lastUserMessageIndex);\n this.devtoolsBridge.emitSnapshot();\n await this.streamResponse();\n }\n /**\n * Stop the current stream\n */\n stop() {\n const hadLocalStream = this.abortController !== null;\n this.cancelInFlightStream({ setReadyStatus: true });\n if (hadLocalStream) {\n this.resetSessionGenerating();\n }\n this.events.stopped();\n }\n /**\n * Clear all messages\n */\n clear() {\n if (this.persistor) {\n this.persistor.snapshotClear({\n messages: this.processor.getMessages(),\n activeRunIds: this.activeRunIds,\n currentRunId: this.currentRunId\n });\n if (this.isLoading) {\n this.cancelInFlightStream({ setReadyStatus: true });\n this.resetSessionGenerating();\n } else if (this.activeRunIds.size > 0) {\n this.resetSessionGenerating();\n }\n this.persistor.beginClear();\n }\n this.processor.clearMessages();\n this.persistor?.remove();\n this.setError(void 0);\n this.events.messagesCleared();\n }\n /**\n * Add the result of a client-side tool execution\n */\n async addToolResult(result) {\n const clientTool = this.clientToolsRef.current.get(result.tool);\n await this.addToolResultForClientTool(result, clientTool);\n }\n async addToolResultForClientTool(result, clientTool, context) {\n if (clientTool && result.state !== \"output-error\") {\n try {\n result = {\n ...result,\n output: this.validateClientToolOutput(clientTool, result.output)\n };\n } catch (error) {\n result = {\n ...result,\n output: null,\n state: \"output-error\",\n errorText: error.message\n };\n }\n }\n this.events.toolResultAdded(\n result.toolCallId,\n result.tool,\n result.output,\n result.state || \"output-available\",\n context\n );\n this.processor.addToolResult(\n result.toolCallId,\n result.output,\n result.state === \"output-error\" ? result.errorText || \"Tool execution failed\" : void 0\n );\n if (this.isLoading) {\n this.queuePostStreamAction(() => this.checkForContinuation());\n return;\n }\n await this.checkForContinuation();\n }\n validateClientToolOutput(clientTool, output) {\n if (clientTool.outputSchema && isStandardSchema(clientTool.outputSchema)) {\n return parseWithStandardSchema(clientTool.outputSchema, output);\n }\n return output;\n }\n /**\n * Respond to a tool approval request\n */\n async addToolApprovalResponse(response) {\n const messages = this.processor.getMessages();\n let foundToolCallId;\n for (const msg of messages) {\n const toolCallPart = msg.parts.find(\n (p) => p.type === \"tool-call\" && p.approval?.id === response.id\n );\n if (toolCallPart) {\n foundToolCallId = toolCallPart.id;\n break;\n }\n }\n if (foundToolCallId) {\n this.events.toolApprovalResponded(\n response.id,\n foundToolCallId,\n response.approved\n );\n }\n this.processor.addToolApprovalResponse(response.id, response.approved);\n this.devtoolsBridge.emitSnapshot();\n if (this.isLoading) {\n this.queuePostStreamAction(() => this.checkForContinuation());\n return;\n }\n await this.checkForContinuation();\n }\n /**\n * Queue an action to be executed after the current stream ends\n */\n queuePostStreamAction(action) {\n this.postStreamActions.push(action);\n }\n /**\n * Drain and execute all queued post-stream actions\n */\n async drainPostStreamActions() {\n if (this.draining) return;\n this.draining = true;\n try {\n let action;\n while ((action = this.postStreamActions.shift()) !== void 0) {\n await action();\n }\n } finally {\n this.draining = false;\n }\n }\n /**\n * Check if we should continue the flow and do so if needed\n */\n async checkForContinuation() {\n if (this.continuationPending || this.isLoading) {\n this.continuationSkipped = true;\n return;\n }\n if (this.shouldAutoSend()) {\n this.continuationPending = true;\n this.continuationSkipped = false;\n let succeeded = false;\n try {\n succeeded = await this.streamResponse();\n } finally {\n this.continuationPending = false;\n }\n if (this.continuationSkipped && succeeded) {\n this.continuationSkipped = false;\n await this.checkForContinuation();\n }\n }\n }\n /**\n * Check if all tool calls are complete and we should auto-send.\n * Requires that there is at least one tool call in the last assistant message;\n * a text-only response has nothing to auto-send.\n */\n shouldAutoSend() {\n const messages = this.processor.getMessages();\n const lastAssistant = messages.findLast(\n (m) => m.role === \"assistant\"\n );\n if (!lastAssistant) return false;\n const hasToolCalls = lastAssistant.parts.some(\n (p) => p.type === \"tool-call\"\n );\n if (!hasToolCalls) return false;\n return this.processor.areAllToolsComplete();\n }\n /**\n * Get current messages\n */\n getMessages() {\n return this.processor.getMessages();\n }\n /**\n * Get loading state\n */\n getIsLoading() {\n return this.isLoading;\n }\n /**\n * Get current status\n */\n getStatus() {\n return this.status;\n }\n /**\n * Get whether the subscription loop is active\n */\n getIsSubscribed() {\n return this.isSubscribed;\n }\n /**\n * Get current connection lifecycle status\n */\n getConnectionStatus() {\n return this.connectionStatus;\n }\n /**\n * Whether the shared session is actively generating.\n * Derived from stream run events (RUN_STARTED / RUN_FINISHED / RUN_ERROR).\n * Unlike `isLoading` (request-local), this reflects shared generation\n * activity visible to all subscribers (e.g. across tabs/devices).\n */\n getSessionGenerating() {\n return this.sessionGenerating;\n }\n /**\n * Get current error\n */\n getError() {\n return this.error;\n }\n /**\n * Manually set messages\n */\n setMessagesManually(messages) {\n this.processor.setMessages(messages);\n this.devtoolsBridge.emitSnapshot();\n }\n updateOptions(options) {\n if (options.connection !== void 0 || options.fetcher !== void 0) {\n const wasSubscribed = this.isSubscribed;\n if (this.isLoading) {\n this.cancelInFlightStream({\n setReadyStatus: true,\n abortSubscription: true\n });\n } else if (wasSubscribed) {\n this.abortSubscriptionLoop();\n }\n this.resetSessionGenerating();\n this.setIsSubscribed(false);\n this.setConnectionStatus(\"disconnected\");\n this.connection = normalizeConnectionAdapter(\n resolveTransport({\n connection: options.connection,\n fetcher: options.fetcher\n })\n );\n if (wasSubscribed) {\n this.subscribe();\n }\n }\n if (options.body !== void 0) {\n this.bodyOption = options.body;\n }\n if (options.forwardedProps !== void 0) {\n this.forwardedPropsOption = options.forwardedProps;\n }\n if (\"context\" in options) {\n this.context = options.context;\n }\n if (options.tools !== void 0) {\n this.clientToolsRef.current = /* @__PURE__ */ new Map();\n for (const tool of options.tools) {\n this.clientToolsRef.current.set(tool.name, tool);\n }\n this.devtoolsBridge.notifyToolsChanged();\n }\n if (options.onResponse !== void 0) {\n this.callbacksRef.current.onResponse = options.onResponse;\n }\n if (options.onChunk !== void 0) {\n this.callbacksRef.current.onChunk = options.onChunk;\n }\n if (options.onFinish !== void 0) {\n this.callbacksRef.current.onFinish = options.onFinish;\n }\n if (options.onError !== void 0) {\n this.callbacksRef.current.onError = options.onError;\n }\n if (options.onSubscriptionChange !== void 0) {\n this.callbacksRef.current.onSubscriptionChange = options.onSubscriptionChange;\n }\n if (options.onConnectionStatusChange !== void 0) {\n this.callbacksRef.current.onConnectionStatusChange = options.onConnectionStatusChange;\n }\n if (options.onSessionGeneratingChange !== void 0) {\n this.callbacksRef.current.onSessionGeneratingChange = options.onSessionGeneratingChange;\n }\n if (options.onCustomEvent !== void 0) {\n this.callbacksRef.current.onCustomEvent = options.onCustomEvent;\n }\n }\n dispose() {\n this.unsubscribe();\n this.devtoolsBridge.dispose();\n this.devtoolsMounted = false;\n }\n}\nexport {\n ChatClient\n};\n//# sourceMappingURL=chat-client.js.map\n","import { emitAIDevtoolsEvent, aiEventClient, createAIDevtoolsEventEnvelope } from \"@tanstack/ai-event-client\";\nimport { convertSchemaToJsonSchema } from \"@tanstack/ai/client\";\nimport { DefaultChatClientEventEmitter } from \"./events.js\";\nfunction createAIDevtoolsGenerationPreview(input) {\n if (input.outputKind === \"image\") {\n return imagePreviewFromResult(input.result);\n }\n if (input.outputKind === \"audio\") {\n return audioPreviewFromResult(input.result);\n }\n if (input.outputKind === \"video\") {\n return videoPreviewFromResult(input.result, input.videoStatus);\n }\n if (input.outputKind === \"text\") {\n return textPreviewFromResult(input.result);\n }\n if (input.result === null || input.result === void 0) {\n return { kind: \"empty\" };\n }\n return {\n kind: \"structured\",\n value: input.result\n };\n}\nfunction imagePreviewFromResult(result) {\n const record = asRecord(result);\n const images = Array.isArray(record?.images) ? record.images : [];\n const items = images.map((image) => mediaItemFromSource(image, \"image/png\")).filter(isGenerationMediaItem);\n if (items.length === 0 && result !== null && result !== void 0) {\n const directItem = mediaItemFromSource(result, \"image/png\");\n if (directItem) {\n items.push(directItem);\n }\n }\n return { kind: \"image\", items };\n}\nfunction audioPreviewFromResult(result) {\n const record = asRecord(result);\n const audio = record?.audio;\n const resultContentType = stringField(record, \"contentType\");\n const format = stringField(record, \"format\");\n const mimeType = resultContentType ?? mimeTypeFromAudioFormat(format);\n const items = [];\n const directItem = typeof audio === \"string\" ? base64MediaItem(audio, mimeType, {\n format,\n duration: numberField(record, \"duration\")\n }) : mediaItemFromSource(audio, mimeType, {\n format\n });\n if (directItem) {\n items.push(directItem);\n }\n return { kind: \"audio\", items };\n}\nfunction videoPreviewFromResult(result, videoStatus) {\n const resultRecord = asRecord(result);\n const statusRecord = asRecord(videoStatus);\n const item = mediaItemFromSource(result, \"video/mp4\") ?? mediaItemFromSource(videoStatus, \"video/mp4\");\n const items = item ? [item] : [];\n const job = videoJobFromStatus(statusRecord ?? resultRecord);\n return {\n kind: \"video\",\n items,\n ...job ? { job } : {}\n };\n}\nfunction textPreviewFromResult(result) {\n const record = asRecord(result);\n const text = stringField(record, \"text\") ?? stringField(record, \"summary\") ?? stringField(record, \"content\") ?? (typeof result === \"string\" ? result : void 0);\n if (text !== void 0) {\n return { kind: \"text\", text };\n }\n if (result === null || result === void 0) {\n return { kind: \"empty\" };\n }\n return {\n kind: \"structured\",\n value: result\n };\n}\nfunction videoJobFromStatus(record) {\n const jobId = stringField(record, \"jobId\");\n if (!jobId) return void 0;\n return {\n jobId,\n ...stringField(record, \"status\") ? { status: stringField(record, \"status\") } : {},\n ...numberField(record, \"progress\") !== void 0 ? { progress: numberField(record, \"progress\") } : {},\n ...stringField(record, \"error\") ? { error: stringField(record, \"error\") } : {}\n };\n}\nfunction mediaItemFromSource(value, defaultMimeType, extras = {}) {\n const record = asRecord(value);\n if (!record) return void 0;\n const explicitContentType = stringField(record, \"contentType\") ?? stringField(record, \"mimeType\");\n const duration = numberField(record, \"duration\") ?? extras.duration;\n const format = stringField(record, \"format\") ?? extras.format;\n const url = stringField(record, \"url\");\n if (url) {\n return {\n src: url,\n sourceType: \"url\",\n ...explicitContentType ? { mimeType: explicitContentType } : {},\n ...format ? { format } : {},\n ...duration !== void 0 ? { duration } : {}\n };\n }\n const b64Json = stringField(record, \"b64Json\");\n if (!b64Json) return void 0;\n return base64MediaItem(b64Json, explicitContentType ?? defaultMimeType, {\n format,\n duration\n });\n}\nfunction base64MediaItem(value, mimeType, extras = {}) {\n const src = value.startsWith(\"data:\") ? value : `data:${mimeType ?? \"application/octet-stream\"};base64,${value}`;\n return {\n src,\n sourceType: \"base64\",\n ...mimeType ? { mimeType } : {},\n ...extras.format ? { format: extras.format } : {},\n ...extras.duration !== void 0 ? { duration: extras.duration } : {}\n };\n}\nfunction mimeTypeFromAudioFormat(format) {\n if (!format) return \"audio/mpeg\";\n if (format === \"mp3\") return \"audio/mpeg\";\n return `audio/${format}`;\n}\nfunction asRecord(value) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return void 0;\n }\n return value;\n}\nfunction stringField(record, field) {\n const value = record?.[field];\n return typeof value === \"string\" && value.length > 0 ? value : void 0;\n}\nfunction numberField(record, field) {\n const value = record?.[field];\n return typeof value === \"number\" ? value : void 0;\n}\nfunction isGenerationMediaItem(value) {\n return Boolean(value);\n}\nconst activeBridgeRegistryKey = /* @__PURE__ */ Symbol.for(\n \"tanstack.ai.devtools.activeBridgeByHookId\"\n);\nfunction getActiveBridgeRegistry() {\n const global = globalThis;\n const existing = global[activeBridgeRegistryKey];\n if (existing) return existing;\n const registry = /* @__PURE__ */ new Map();\n global[activeBridgeRegistryKey] = registry;\n return registry;\n}\nclass ClientDevtoolsBridge {\n options;\n bridgeId;\n unsubscribers = [];\n disposed = false;\n superseded = false;\n registered = false;\n constructor(options) {\n this.options = options;\n this.bridgeId = createBridgeId(options.hookId);\n }\n emitRegistered() {\n if (!this.prepareForMountEmit()) {\n return;\n }\n this.registered = true;\n emitAIDevtoolsEvent(\"hook:registered\", {\n ...this.createEnvelope(\"hook:registered\"),\n ...this.createMetadataPayload(),\n lifecycle: \"mounted\"\n });\n }\n emitUpdated() {\n if (!this.prepareForEmit()) {\n return;\n }\n emitAIDevtoolsEvent(\"hook:updated\", {\n ...this.createEnvelope(\"hook:updated\"),\n ...this.createMetadataPayload(),\n lifecycle: \"active\"\n });\n }\n emitSnapshot() {\n if (!this.prepareForEmit()) {\n return;\n }\n emitAIDevtoolsEvent(\"hook:state-snapshot\", {\n ...this.createEnvelope(\"hook:state-snapshot\"),\n ...this.createMetadataPayload(),\n // Wire envelope uses Record<string, unknown>; widen the typed snapshot\n // here so the typed-snapshot constraint above can stay narrow.\n // eslint-disable-next-line no-restricted-syntax -- TSnapshot extends object is structurally compatible but TS can't see the missing index signature\n state: this.options.getSnapshot()\n });\n }\n emitToolsRegistered() {\n if (!this.prepareForEmit()) {\n return;\n }\n const tools = this.options.getTools ? Array.from(this.options.getTools()).map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema ? convertSchemaToJsonSchema(tool.inputSchema) : { type: \"object\" },\n outputSchema: tool.outputSchema ? convertSchemaToJsonSchema(tool.outputSchema) : void 0,\n needsApproval: tool.needsApproval,\n metadata: tool.metadata\n })) : [];\n emitAIDevtoolsEvent(\"tools:registered\", {\n ...this.createEnvelope(\"tools:registered\"),\n ...this.createMetadataPayload(),\n tools\n });\n }\n emitRunLifecycle(eventType, runId, status, options = {}) {\n if (!this.prepareForEmit()) {\n return;\n }\n emitAIDevtoolsEvent(eventType, {\n ...this.createEnvelope(eventType, \"client-state\", { runId }),\n runId,\n status,\n ...options.error ? { error: options.error } : {}\n });\n }\n deactivate() {\n const activeBridgeByHookId = getActiveBridgeRegistry();\n if (activeBridgeByHookId.get(this.options.hookId) === this) {\n activeBridgeByHookId.delete(this.options.hookId);\n }\n for (const unsubscribe of this.unsubscribers.splice(0)) {\n unsubscribe();\n }\n }\n supersede() {\n if (this.disposed) {\n return;\n }\n this.superseded = true;\n this.disposed = true;\n this.deactivate();\n }\n dispose() {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n if (!this.registered) {\n this.deactivate();\n return;\n }\n const payload = {\n ...this.createEnvelope(\"hook:unregistered\"),\n ...this.createMetadataPayload(),\n reason: \"disposed\"\n };\n emitAIDevtoolsEvent(\"hook:unregistered\", payload);\n this.deactivate();\n }\n prepareForEmit() {\n if (this.disposed || this.superseded) {\n return false;\n }\n this.activate();\n return true;\n }\n prepareForMountEmit() {\n if (this.superseded) {\n return false;\n }\n if (this.disposed) {\n this.disposed = false;\n this.registered = false;\n }\n this.activate();\n return true;\n }\n activate() {\n if (this.disposed) {\n return;\n }\n const activeBridgeByHookId = getActiveBridgeRegistry();\n const activeBridge = activeBridgeByHookId.get(this.options.hookId);\n if (activeBridge && activeBridge !== this) {\n if (typeof activeBridge.supersede === \"function\") {\n activeBridge.supersede();\n } else {\n activeBridge.deactivate();\n }\n }\n activeBridgeByHookId.set(this.options.hookId, this);\n if (this.unsubscribers.length > 0) {\n return;\n }\n this.unsubscribers.push(\n aiEventClient.on(\"devtools:request-state\", (event) => {\n this.handleRequestState(event);\n })\n );\n if (this.options.applyToolFixture) {\n this.unsubscribers.push(\n aiEventClient.on(\"devtools:tool-fixture:apply\", (event) => {\n void this.handleToolFixtureApply(event);\n })\n );\n }\n }\n handleRequestState(event) {\n if (this.disposed || this.superseded) {\n return;\n }\n const targetHookId = event.payload.targetHookId;\n if (targetHookId && targetHookId !== this.options.hookId) {\n return;\n }\n this.emitRegistered();\n this.emitToolsRegistered();\n this.emitSnapshot();\n }\n async handleToolFixtureApply(event) {\n const fixture = event.payload;\n if (!this.matchesFixtureTarget(fixture)) {\n return;\n }\n await this.options.applyToolFixture?.(fixture);\n }\n matchesFixtureTarget(fixture) {\n if (!fixture.hookId && !fixture.threadId) {\n return false;\n }\n if (fixture.hookId) {\n return fixture.hookId === this.options.hookId;\n }\n if (fixture.threadId && (!this.options.threadId || fixture.threadId !== this.options.threadId)) {\n return false;\n }\n return true;\n }\n createEnvelope(eventType, visibility = \"client-state\", context = {}) {\n return createAIDevtoolsEventEnvelope({\n eventType,\n source: \"client\",\n visibility,\n clientId: this.options.clientId,\n hookId: this.options.hookId,\n correlationId: this.bridgeId,\n ...this.options.threadId ? { threadId: this.options.threadId } : {},\n ...context.runId ? { runId: context.runId } : {},\n timestamp: Date.now()\n });\n }\n createMetadataPayload() {\n return {\n hookId: this.options.hookId,\n hookName: this.options.metadata.hookName,\n ...this.options.metadata.name ? { displayName: this.options.metadata.name } : {},\n ...this.options.metadata.outputKind ? { outputKind: this.options.metadata.outputKind } : {},\n ...this.options.metadata.framework ? { framework: this.options.metadata.framework } : {}\n };\n }\n}\nlet bridgeIdSequence = 0;\nfunction createBridgeId(hookId) {\n const cryptoLike = globalThis.crypto;\n if (cryptoLike?.randomUUID) {\n return `bridge:${hookId}:${cryptoLike.randomUUID()}`;\n }\n bridgeIdSequence += 1;\n return `bridge:${hookId}:${bridgeIdSequence}`;\n}\nclass ChatDevtoolsBridge extends ClientDevtoolsBridge {\n events;\n chatOptions;\n currentRunId = null;\n currentRunThreadId = null;\n currentStreamId = null;\n lastStreamId = null;\n lastRunEventContext;\n constructor(options) {\n super({\n ...options,\n // Thunk defers `this.applyFixture` lookup until after `super` returns.\n applyToolFixture: (fixture) => this.applyFixture(fixture)\n });\n this.chatOptions = options;\n this.events = new ChatDevtoolsAwareEventEmitter(options.clientId, this);\n }\n // --- Stream / run context API -------------------------------------------\n setCurrentStreamId(streamId) {\n this.currentStreamId = streamId;\n if (streamId) {\n this.lastStreamId = streamId;\n }\n }\n /**\n * Called by the auto-attaching emitter every time it sees a non-empty\n * streamId pass through. Lets devtools track the latest stream id\n * without the chat client wiring it up explicitly.\n */\n recordStreamId(streamId) {\n if (streamId) this.lastStreamId = streamId;\n }\n mountWithTools(initialMessageCount) {\n this.events.clientCreated(initialMessageCount);\n this.emitRegistered();\n this.emitToolsRegistered();\n this.emitSnapshot();\n }\n notifyToolsChanged() {\n this.emitToolsRegistered();\n this.emitSnapshot();\n }\n getCurrentStreamId() {\n return this.currentStreamId;\n }\n getLastStreamId() {\n return this.lastStreamId;\n }\n resolveStreamId() {\n return this.currentStreamId ?? this.lastStreamId ?? this.chatOptions.generateId(\"stream\");\n }\n // Called when the chat client has just generated a runId for outbound emits;\n // the matching RUN_STARTED chunk from the adapter lands later and\n // observeChunk keeps the same context.\n beginRun(runId, threadId) {\n this.currentRunId = runId;\n this.currentRunThreadId = threadId;\n this.lastRunEventContext = { runId, threadId };\n }\n observeChunk(chunk) {\n if (chunk.type === \"RUN_STARTED\") {\n this.beginRun(chunk.runId, chunk.threadId);\n return;\n }\n if (chunk.type === \"RUN_FINISHED\" || chunk.type === \"RUN_ERROR\") {\n const runId = chunk.type === \"RUN_FINISHED\" ? chunk.runId : chunk.runId;\n if (!runId || runId === this.currentRunId) {\n const context = this.getCurrentRunEventContext();\n if (context) {\n this.lastRunEventContext = context;\n }\n this.currentRunId = null;\n this.currentRunThreadId = null;\n }\n }\n }\n getCurrentRunEventContext() {\n if (!this.currentRunId) return void 0;\n return {\n threadId: this.currentRunThreadId ?? this.chatOptions.threadId ?? \"\",\n runId: this.currentRunId\n };\n }\n getCurrentOrLastRunEventContext() {\n return this.getCurrentRunEventContext() ?? this.lastRunEventContext;\n }\n findToolCallContext(toolCallId) {\n const base = { toolCallId };\n const runContext = this.getCurrentRunEventContext();\n if (runContext) {\n return {\n threadId: runContext.threadId,\n runId: runContext.runId,\n toolCallId\n };\n }\n if (this.chatOptions.threadId) {\n return { threadId: this.chatOptions.threadId, toolCallId };\n }\n return base;\n }\n // --- Fixture replay ------------------------------------------------------\n /**\n * Entry point invoked when the devtools panel emits\n * `devtools:tool-fixture:apply`. The chat client never calls this\n * directly; it is wired through the base bridge's fixture subscription.\n */\n async applyFixture(fixture) {\n const messages = this.chatOptions.getMessages();\n const threadId = fixture.threadId ?? this.chatOptions.threadId ?? \"\";\n if (fixture.execute) {\n await this.executeFixture(fixture, messages, threadId);\n return;\n }\n const replay = this.createReplayMessageFromFixture(fixture, messages);\n const { message, toolCallId } = replay;\n const messageId = message.id;\n this.events.messageAppended(message, void 0, {\n threadId,\n toolCallId,\n ...fixture.runId ? { runId: fixture.runId } : {}\n });\n this.chatOptions.setMessages([...messages, message]);\n this.events.toolFixtureApplied({\n hookId: this.chatOptions.hookId,\n threadId,\n ...fixture.runId ? { runId: fixture.runId } : {},\n toolName: fixture.toolName,\n input: fixture.input,\n output: fixture.output,\n messageId,\n toolCallId,\n ...fixture.execute !== void 0 ? { execute: fixture.execute } : {},\n ...fixture.message ? { message: fixture.message } : {},\n ...fixture.errorText ? { errorText: fixture.errorText } : {}\n });\n this.emitSnapshot();\n }\n async executeFixture(fixture, messages, threadId) {\n const toolCallId = this.resolveFixtureToolCallId(\n fixture.toolCallId,\n messages\n );\n const messageId = this.resolveFixtureMessageId(fixture.messageId, messages);\n const message = {\n id: messageId,\n role: \"assistant\",\n parts: [\n {\n type: \"tool-call\",\n id: toolCallId,\n name: fixture.toolName,\n arguments: stringifyFixtureValue(fixture.input),\n input: fixture.input,\n state: \"input-complete\"\n }\n ],\n createdAt: /* @__PURE__ */ new Date()\n };\n this.events.messageAppended(message, void 0, {\n threadId,\n toolCallId,\n ...fixture.runId ? { runId: fixture.runId } : {}\n });\n this.chatOptions.setMessages([...messages, message]);\n this.emitSnapshot();\n const clientTool = this.findClientTool(fixture.toolName);\n const executeFunc = clientTool?.execute;\n if (!executeFunc) {\n console.warn(\n `[ai-devtools] tool fixture \"${fixture.toolName}\" requested execute=true but no client tool implementation is registered; replaying saved output instead.`\n );\n this.addToolResultForFixture({\n fixture,\n messageId,\n toolCallId,\n threadId,\n output: fixture.output,\n errorText: fixture.errorText\n });\n return;\n }\n let output;\n try {\n output = await executeFunc(fixture.input);\n } catch (error) {\n console.error(\n `[ai-devtools] tool fixture \"${fixture.toolName}\" execute threw`,\n error\n );\n this.addToolResultForFixture({\n fixture,\n messageId,\n toolCallId,\n threadId,\n output: null,\n errorText: error instanceof Error ? `${error.name}: ${error.message}` : `Tool execution failed: ${String(error)}`\n });\n return;\n }\n this.addToolResultForFixture({\n fixture,\n messageId,\n toolCallId,\n threadId,\n output\n });\n }\n addToolResultForFixture(input) {\n const state = input.errorText ? \"output-error\" : \"output-available\";\n this.events.toolResultAdded(\n input.toolCallId,\n input.fixture.toolName,\n input.output,\n state,\n {\n threadId: input.threadId,\n ...input.fixture.runId ? { runId: input.fixture.runId } : {},\n toolCallId: input.toolCallId\n }\n );\n this.chatOptions.addToolResult(\n input.toolCallId,\n input.output,\n input.errorText\n );\n this.events.toolFixtureApplied({\n hookId: this.chatOptions.hookId,\n threadId: input.threadId,\n ...input.fixture.runId ? { runId: input.fixture.runId } : {},\n toolName: input.fixture.toolName,\n input: input.fixture.input,\n output: input.output,\n execute: true,\n messageId: input.messageId,\n toolCallId: input.toolCallId,\n ...input.errorText ? { errorText: input.errorText } : {}\n });\n this.emitSnapshot();\n }\n createReplayMessageFromFixture(fixture, messages) {\n const cloned = this.cloneFixtureSourceMessage(fixture, messages);\n if (cloned) return cloned;\n const toolCallId = this.resolveFixtureToolCallId(\n fixture.toolCallId,\n messages\n );\n const messageId = this.resolveFixtureMessageId(fixture.messageId, messages);\n const state = fixture.errorText ? \"error\" : \"complete\";\n return {\n toolCallId,\n message: {\n id: messageId,\n role: \"assistant\",\n parts: [\n {\n type: \"tool-call\",\n id: toolCallId,\n name: fixture.toolName,\n arguments: stringifyFixtureValue(fixture.input),\n input: fixture.input,\n state: \"input-complete\",\n output: fixture.output\n },\n {\n type: \"tool-result\",\n toolCallId,\n content: stringifyFixtureValue(fixture.output),\n state,\n ...fixture.errorText ? { error: fixture.errorText } : {}\n }\n ],\n createdAt: /* @__PURE__ */ new Date()\n }\n };\n }\n cloneFixtureSourceMessage(fixture, messages) {\n const sourceMessage = fixture.message;\n if (!sourceMessage || !Array.isArray(sourceMessage.parts)) {\n return void 0;\n }\n const toolCallIds = this.createFixtureToolCallIdMap(\n sourceMessage.parts,\n messages\n );\n const parts = sourceMessage.parts.map((part) => cloneFixtureMessagePart(part, toolCallIds)).filter((part) => Boolean(part));\n const mappedFixtureToolCallId = fixture.toolCallId ? toolCallIds.get(fixture.toolCallId) : void 0;\n hydrateToolCallOutputs(parts, {\n ...mappedFixtureToolCallId ? { mappedToolCallId: mappedFixtureToolCallId } : {},\n output: fixture.output\n });\n if (parts.length === 0) return void 0;\n const toolCallId = (fixture.toolCallId ? toolCallIds.get(fixture.toolCallId) : void 0) ?? firstToolCallId(parts);\n if (!toolCallId) return void 0;\n return {\n toolCallId,\n message: {\n id: this.resolveFixtureMessageId(sourceMessage.id, messages),\n role: sourceMessage.role,\n parts,\n createdAt: /* @__PURE__ */ new Date()\n }\n };\n }\n createFixtureToolCallIdMap(parts, messages) {\n const ids = /* @__PURE__ */ new Map();\n for (const part of parts) {\n if (!isRecord(part) || part.type !== \"tool-call\") continue;\n if (typeof part.id !== \"string\") continue;\n ids.set(part.id, this.resolveFixtureToolCallId(part.id, messages));\n }\n return ids;\n }\n resolveFixtureMessageId(messageId, messages) {\n if (messageId && !messages.some((message) => message.id === messageId)) {\n return messageId;\n }\n return this.chatOptions.generateId(\"fixture-msg\");\n }\n resolveFixtureToolCallId(toolCallId, messages) {\n if (toolCallId && !hasToolCallId(messages, toolCallId)) {\n return toolCallId;\n }\n return this.chatOptions.generateId(\"fixture-tool-call\");\n }\n findClientTool(name) {\n const tools = this.chatOptions.getTools?.();\n if (!tools) return void 0;\n for (const tool of tools) {\n if (tool.name === name) return tool;\n }\n return void 0;\n }\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction stringifyFixtureValue(value) {\n if (typeof value === \"string\") return value;\n if (value === void 0 || typeof value === \"function\" || typeof value === \"symbol\") {\n return String(value);\n }\n try {\n return JSON.stringify(value);\n } catch (error) {\n console.error(\n \"[ai-devtools] failed to JSON.stringify fixture value; falling back to String(). Tool call arguments may be malformed.\",\n { error, value }\n );\n return String(value);\n }\n}\nfunction parseFixtureResultContent(content) {\n try {\n return JSON.parse(content);\n } catch (error) {\n console.error(\n \"[ai-devtools] failed to JSON.parse fixture result content; replaying as raw string. Fixture payload may be corrupted.\",\n { error, content }\n );\n return content;\n }\n}\nfunction cloneFixtureMessagePart(part, toolCallIds) {\n if (!isRecord(part) || typeof part.type !== \"string\") return void 0;\n const cloned = { ...part };\n if (part.type === \"tool-call\" && typeof part.id === \"string\") {\n cloned.id = toolCallIds.get(part.id) ?? part.id;\n }\n if (part.type === \"tool-result\" && typeof part.toolCallId === \"string\") {\n cloned.toolCallId = toolCallIds.get(part.toolCallId) ?? part.toolCallId;\n }\n return cloned;\n}\nfunction firstToolCallId(parts) {\n const toolCall = parts.find((part) => part.type === \"tool-call\");\n return toolCall?.type === \"tool-call\" ? toolCall.id : void 0;\n}\nfunction hydrateToolCallOutputs(parts, fixtureOutput) {\n for (const part of parts) {\n if (part.type !== \"tool-result\") continue;\n const toolCall = parts.find(\n (candidate) => candidate.type === \"tool-call\" && candidate.id === part.toolCallId && candidate.output === void 0\n );\n if (toolCall) {\n toolCall.output = Array.isArray(part.content) ? part.content : parseFixtureResultContent(part.content);\n }\n }\n if (fixtureOutput.mappedToolCallId && fixtureOutput.output !== void 0) {\n const toolCall = parts.find(\n (candidate) => candidate.type === \"tool-call\" && candidate.id === fixtureOutput.mappedToolCallId && candidate.output === void 0\n );\n if (toolCall) {\n toolCall.output = fixtureOutput.output;\n }\n }\n}\nfunction hasToolCallId(messages, toolCallId) {\n return messages.some(\n (message) => message.parts.some((part) => {\n if (part.type === \"tool-call\") return part.id === toolCallId;\n if (part.type === \"tool-result\") return part.toolCallId === toolCallId;\n return false;\n })\n );\n}\nclass GenerationDevtoolsBridge extends ClientDevtoolsBridge {\n activeRunId = null;\n activeRunStarted = false;\n devtoolsRuns = [];\n maxRuns;\n getCoreState;\n constructor(options) {\n super({\n ...options,\n getSnapshot: () => this.buildSnapshot()\n });\n this.maxRuns = options.maxRuns ?? 20;\n this.getCoreState = options.getCoreState;\n }\n // --- Run lifecycle (called by GenerationClient) -----------------------\n beginRun(input) {\n const runId = this.generateRunId();\n this.activeRunId = runId;\n this.activeRunStarted = false;\n this.upsertRun(runId, {\n input,\n result: null,\n preview: this.createPreview(null),\n progress: null,\n status: \"generating\",\n isLoading: true,\n clearError: true\n });\n return runId;\n }\n ensureRunStarted(runId) {\n if (this.activeRunStarted && this.activeRunId === runId) return;\n if (!this.activeRunStarted && this.activeRunId && this.activeRunId !== runId) {\n this.renameRun(this.activeRunId, runId);\n }\n this.activeRunId = runId;\n this.activeRunStarted = true;\n this.upsertRun(runId, {\n status: \"generating\",\n isLoading: true,\n clearError: true\n });\n this.emitRunLifecycle(\"run:started\", runId, \"started\");\n this.emitState();\n }\n finishRun(runId, eventType, status, error) {\n this.ensureRunStarted(runId);\n const completedAt = Date.now();\n const completedProgress = status === \"completed\" ? this.completeProgress() : this.getProgress();\n const runStatus = status === \"completed\" ? \"success\" : status === \"errored\" ? \"error\" : \"cancelled\";\n this.upsertRun(runId, {\n status: runStatus,\n isLoading: false,\n progress: completedProgress,\n completedAt,\n ...error ? { error } : { clearError: true }\n });\n if (this.activeRunId === runId) {\n this.activeRunId = null;\n }\n this.activeRunStarted = false;\n this.emitRunLifecycle(eventType, runId, status, {\n ...error ? { error } : {}\n });\n this.emitState();\n }\n getActiveRunId() {\n return this.activeRunId;\n }\n /** Clear all per-run history. Called when the client `reset()`s. */\n resetRuns() {\n this.activeRunId = null;\n this.activeRunStarted = false;\n this.devtoolsRuns = [];\n }\n /** Record state changes from the client and emit the matching snapshot. */\n recordResultChange() {\n this.updateActiveRun({\n result: this.getCoreState().result,\n preview: this.createPreview(this.getCoreState().result),\n clearError: true\n });\n this.emitState();\n }\n recordLoadingChange() {\n this.updateActiveRun({ isLoading: this.getCoreState().isLoading });\n this.emitState();\n }\n recordErrorChange(error) {\n this.updateActiveRun(\n error ? { error: error.message } : { clearError: true }\n );\n this.emitState();\n }\n recordStatusChange(status) {\n this.updateActiveRun({ status });\n this.emitState();\n }\n recordProgressChange() {\n this.updateActiveRun({ progress: this.getCoreState().progress });\n this.emitState();\n }\n /** Emit the latest snapshot without touching run state. */\n emitState() {\n this.emitUpdated();\n this.emitSnapshot();\n }\n // --- Internal ---------------------------------------------------------\n buildSnapshot() {\n const core = this.getCoreState();\n return {\n input: core.input,\n result: core.result,\n preview: this.createPreview(core.result),\n progress: core.progress,\n status: core.status,\n isLoading: core.isLoading,\n activeRunId: this.activeRunId,\n runs: this.devtoolsRuns,\n ...core.error ? { error: core.error } : {}\n };\n }\n updateActiveRun(patch) {\n if (!this.activeRunId) return;\n this.upsertRun(this.activeRunId, patch);\n }\n upsertRun(runId, patch) {\n const now = Date.now();\n const index = this.devtoolsRuns.findIndex((run) => run.id === runId);\n const existing = index >= 0 ? this.devtoolsRuns[index] : void 0;\n const next = existing ? { ...existing } : {\n id: runId,\n input: this.getCoreState().input,\n result: null,\n preview: this.createPreview(null),\n progress: null,\n status: \"idle\",\n isLoading: false,\n startedAt: now,\n updatedAt: now\n };\n if (\"input\" in patch) next.input = patch.input ?? null;\n if (\"result\" in patch) next.result = patch.result ?? null;\n if (patch.preview) next.preview = patch.preview;\n if (\"progress\" in patch) next.progress = patch.progress ?? null;\n if (patch.status) next.status = patch.status;\n if (\"isLoading\" in patch) next.isLoading = patch.isLoading === true;\n if (patch.completedAt !== void 0) next.completedAt = patch.completedAt;\n if (patch.clearError) delete next.error;\n if (patch.error !== void 0) next.error = patch.error;\n next.updatedAt = now;\n if (index >= 0) {\n this.devtoolsRuns = this.devtoolsRuns.map(\n (run) => run.id === runId ? next : run\n );\n } else {\n this.devtoolsRuns = [...this.devtoolsRuns, next];\n }\n if (this.devtoolsRuns.length > this.maxRuns) {\n this.devtoolsRuns = this.devtoolsRuns.slice(-this.maxRuns);\n }\n }\n renameRun(previousRunId, nextRunId) {\n if (previousRunId === nextRunId) return;\n const existing = this.devtoolsRuns.find((run) => run.id === previousRunId);\n if (!existing) return;\n const renamed = { ...existing, id: nextRunId, updatedAt: Date.now() };\n this.devtoolsRuns = this.devtoolsRuns.filter((run) => run.id !== nextRunId).map((run) => run.id === previousRunId ? renamed : run);\n }\n getProgress() {\n return this.getCoreState().progress;\n }\n completeProgress() {\n const progress = this.getCoreState().progress;\n if (!progress) return null;\n return {\n value: 100,\n ...progress.message ? { message: progress.message } : {}\n };\n }\n createPreview(result) {\n return createAIDevtoolsGenerationPreview({\n outputKind: this.options.metadata.outputKind,\n result\n });\n }\n generateRunId() {\n return `run-${Date.now()}-${Math.random().toString(36).substring(7)}`;\n }\n}\nclass VideoDevtoolsBridge extends GenerationDevtoolsBridge {\n constructor(options) {\n super(options);\n }\n recordJobIdChange() {\n this.updateActiveRun({\n jobId: this.getCoreState().jobId\n });\n this.emitState();\n }\n recordVideoStatusChange() {\n const core = this.getCoreState();\n this.updateActiveRun({\n videoStatus: core.videoStatus,\n preview: this.createVideoPreview(core.result, core.videoStatus)\n });\n this.emitState();\n }\n buildSnapshot() {\n const core = this.getCoreState();\n return {\n input: core.input,\n result: core.result,\n preview: this.createVideoPreview(core.result, core.videoStatus),\n progress: core.progress,\n status: core.status,\n isLoading: core.isLoading,\n activeRunId: this.activeRunId,\n runs: this.devtoolsRuns,\n jobId: core.jobId,\n videoStatus: core.videoStatus,\n ...core.error ? { error: core.error } : {}\n };\n }\n upsertRun(runId, patch) {\n super.upsertRun(runId, patch);\n if (!(\"jobId\" in patch || \"videoStatus\" in patch)) return;\n const index = this.devtoolsRuns.findIndex((run) => run.id === runId);\n if (index < 0) return;\n const target = this.devtoolsRuns[index];\n if (!target) return;\n const merged = { ...target };\n if (\"jobId\" in patch) merged.jobId = patch.jobId ?? null;\n if (\"videoStatus\" in patch) merged.videoStatus = patch.videoStatus ?? null;\n this.devtoolsRuns = this.devtoolsRuns.map(\n (run) => run.id === runId ? merged : run\n );\n }\n // Override so record* methods inherited from GenerationDevtoolsBridge\n // (e.g. recordResultChange) thread the latest videoStatus into the preview.\n createPreview(result) {\n const core = this.getCoreState();\n return this.createVideoPreview(result, core.videoStatus);\n }\n createVideoPreview(result, videoStatus) {\n return createAIDevtoolsGenerationPreview({\n outputKind: this.options.metadata.outputKind,\n result,\n videoStatus\n });\n }\n}\nclass ChatDevtoolsAwareEventEmitter extends DefaultChatClientEventEmitter {\n constructor(clientId, helper) {\n super(clientId);\n this.helper = helper;\n }\n helper;\n afterEmit(streamId) {\n if (streamId) this.helper.recordStreamId(streamId);\n this.helper.emitSnapshot();\n }\n // -- methods with run context --------------------------------------------\n textUpdated(streamId, messageId, content, context) {\n super.textUpdated(\n streamId,\n messageId,\n content,\n context ?? this.helper.getCurrentRunEventContext()\n );\n this.afterEmit(streamId);\n }\n thinkingUpdated(streamId, messageId, content, delta, context) {\n super.thinkingUpdated(\n streamId,\n messageId,\n content,\n delta,\n context ?? this.helper.getCurrentRunEventContext()\n );\n this.afterEmit(streamId);\n }\n messageAppended(uiMessage, streamId, context) {\n super.messageAppended(\n uiMessage,\n streamId,\n context ?? this.helper.getCurrentRunEventContext()\n );\n this.afterEmit(streamId);\n }\n toolCallStateChanged(streamId, messageId, toolCallId, toolName, state, args, context) {\n super.toolCallStateChanged(\n streamId,\n messageId,\n toolCallId,\n toolName,\n state,\n args,\n context ?? this.helper.getCurrentRunEventContext()\n );\n this.afterEmit(streamId);\n }\n structuredOutputChanged(eventName, streamId, messageId, output, context) {\n super.structuredOutputChanged(\n eventName,\n streamId,\n messageId,\n output,\n context ?? this.helper.getCurrentOrLastRunEventContext()\n );\n this.afterEmit(streamId);\n }\n approvalRequested(streamId, messageId, toolCallId, toolName, input, approvalId, context) {\n super.approvalRequested(\n streamId,\n messageId,\n toolCallId,\n toolName,\n input,\n approvalId,\n context ?? this.helper.getCurrentOrLastRunEventContext()\n );\n this.afterEmit(streamId);\n }\n toolResultAdded(toolCallId, toolName, output, state, context) {\n super.toolResultAdded(\n toolCallId,\n toolName,\n output,\n state,\n context ?? this.helper.getCurrentRunEventContext()\n );\n this.afterEmit();\n }\n toolApprovalResponded(approvalId, toolCallId, approved, context) {\n super.toolApprovalResponded(\n approvalId,\n toolCallId,\n approved,\n context ?? this.helper.getCurrentRunEventContext()\n );\n this.afterEmit();\n }\n // -- methods without context (just auto-emit snapshot) -------------------\n clientCreated(initialMessageCount) {\n super.clientCreated(initialMessageCount);\n this.afterEmit();\n }\n loadingChanged(isLoading) {\n super.loadingChanged(isLoading);\n this.afterEmit();\n }\n errorChanged(error) {\n super.errorChanged(error);\n this.afterEmit();\n }\n reloaded(fromMessageIndex) {\n super.reloaded(fromMessageIndex);\n this.afterEmit();\n }\n stopped() {\n super.stopped();\n this.afterEmit();\n }\n messagesCleared() {\n super.messagesCleared();\n this.afterEmit();\n }\n messageSent(messageId, content) {\n super.messageSent(messageId, content);\n this.afterEmit();\n }\n toolFixtureApplied(fixture) {\n super.toolFixtureApplied(fixture);\n this.afterEmit();\n }\n}\nfunction createChatDevtoolsBridge(options) {\n return new ChatDevtoolsBridge(options);\n}\nfunction createGenerationDevtoolsBridge(options) {\n return new GenerationDevtoolsBridge(options);\n}\nfunction createVideoDevtoolsBridge(options) {\n return new VideoDevtoolsBridge(options);\n}\nexport {\n ChatDevtoolsBridge,\n ClientDevtoolsBridge,\n GenerationDevtoolsBridge,\n VideoDevtoolsBridge,\n createAIDevtoolsGenerationPreview,\n createChatDevtoolsBridge,\n createGenerationDevtoolsBridge,\n createVideoDevtoolsBridge\n};\n//# sourceMappingURL=devtools.js.map\n","import { ChatClient } from \"@tanstack/ai-client\";\nimport { createChatDevtoolsBridge } from \"@tanstack/ai-client/devtools\";\nimport { useId, useState, useRef, useMemo, useEffect, useCallback } from \"react\";\nfunction useChat(options) {\n const hookId = useId();\n const clientId = options.id || hookId;\n const [messages, setMessages] = useState(\n options.initialMessages || []\n );\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState(void 0);\n const [status, setStatus] = useState(\"ready\");\n const [isSubscribed, setIsSubscribed] = useState(false);\n const [connectionStatus, setConnectionStatus] = useState(\"disconnected\");\n const [sessionGenerating, setSessionGenerating] = useState(false);\n const messagesRef = useRef(\n options.initialMessages || []\n );\n const isFirstMountRef = useRef(true);\n const activeClientRef = useRef(null);\n const cleanupInvalidationRef = useRef(\n null\n );\n messagesRef.current = messages;\n const optionsRef = useRef(options);\n optionsRef.current = options;\n const client = useMemo(() => {\n const messagesToUse = options.initialMessages || [];\n isFirstMountRef.current = false;\n const initialOptions = optionsRef.current;\n const transport = initialOptions.connection ? { connection: initialOptions.connection } : { fetcher: initialOptions.fetcher };\n const instance = new ChatClient({\n devtoolsBridgeFactory: createChatDevtoolsBridge,\n ...transport,\n id: clientId,\n initialMessages: messagesToUse,\n ...initialOptions.body !== void 0 && { body: initialOptions.body },\n ...initialOptions.threadId !== void 0 && {\n threadId: initialOptions.threadId\n },\n ...initialOptions.forwardedProps !== void 0 && {\n forwardedProps: initialOptions.forwardedProps\n },\n ...initialOptions.persistence !== void 0 && {\n persistence: initialOptions.persistence\n },\n ...initialOptions.context !== void 0 && {\n context: initialOptions.context\n },\n devtools: {\n ...initialOptions.devtools,\n framework: \"react\",\n hookName: \"useChat\",\n outputKind: initialOptions.outputSchema ? \"structured\" : \"chat\"\n },\n onResponse: (response) => {\n if (activeClientRef.current !== instance) return;\n void optionsRef.current.onResponse?.(response);\n },\n onChunk: (chunk) => {\n if (activeClientRef.current !== instance) return;\n optionsRef.current.onChunk?.(chunk);\n },\n onFinish: (message) => {\n if (activeClientRef.current !== instance) return;\n optionsRef.current.onFinish?.(message);\n },\n onError: (error2) => {\n if (activeClientRef.current !== instance) return;\n optionsRef.current.onError?.(error2);\n },\n ...initialOptions.tools !== void 0 && {\n tools: initialOptions.tools\n },\n onCustomEvent: (eventType, data, context) => {\n if (activeClientRef.current !== instance) return;\n optionsRef.current.onCustomEvent?.(eventType, data, context);\n },\n ...options.streamProcessor !== void 0 && {\n streamProcessor: options.streamProcessor\n },\n onMessagesChange: (newMessages) => {\n if (activeClientRef.current !== instance) return;\n setMessages(newMessages);\n },\n onLoadingChange: (newIsLoading) => {\n if (activeClientRef.current !== instance) return;\n setIsLoading(newIsLoading);\n },\n onErrorChange: (newError) => {\n if (activeClientRef.current !== instance) return;\n setError(newError);\n },\n onStatusChange: (status2) => {\n if (activeClientRef.current !== instance) return;\n setStatus(status2);\n },\n onSubscriptionChange: (nextIsSubscribed) => {\n if (activeClientRef.current !== instance) return;\n setIsSubscribed(nextIsSubscribed);\n },\n onConnectionStatusChange: (nextStatus) => {\n if (activeClientRef.current !== instance) return;\n setConnectionStatus(nextStatus);\n },\n onSessionGeneratingChange: (isGenerating) => {\n if (activeClientRef.current !== instance) return;\n setSessionGenerating(isGenerating);\n }\n });\n activeClientRef.current = instance;\n return instance;\n }, [clientId]);\n useEffect(() => {\n const clientMessages = client.getMessages();\n if (clientMessages !== messagesRef.current) {\n setMessages(clientMessages);\n }\n }, [client]);\n useEffect(() => {\n client.updateOptions({ body: options.body });\n }, [client, options.body]);\n useEffect(() => {\n if (options.forwardedProps !== void 0) {\n client.updateOptions({ forwardedProps: options.forwardedProps });\n }\n }, [client, options.forwardedProps]);\n useEffect(() => {\n if (options.tools !== void 0) {\n client.updateOptions({ tools: options.tools });\n }\n }, [client, options.tools]);\n useEffect(() => {\n client.updateOptions({ context: options.context });\n }, [client, options.context]);\n useEffect(() => {\n if (options.live) {\n client.subscribe();\n } else {\n client.unsubscribe();\n }\n }, [client, options.live]);\n useEffect(() => {\n if (cleanupInvalidationRef.current) {\n clearTimeout(cleanupInvalidationRef.current);\n cleanupInvalidationRef.current = null;\n }\n activeClientRef.current = client;\n client.mountDevtools();\n return () => {\n cleanupInvalidationRef.current = setTimeout(() => {\n if (activeClientRef.current === client) {\n activeClientRef.current = null;\n }\n cleanupInvalidationRef.current = null;\n }, 0);\n if (optionsRef.current.live) {\n client.unsubscribe();\n } else {\n client.stop();\n }\n client.dispose();\n };\n }, [client]);\n const sendMessage = useCallback(\n async (content) => {\n await client.sendMessage(content);\n },\n [client]\n );\n const append = useCallback(\n async (message) => {\n await client.append(message);\n },\n [client]\n );\n const reload = useCallback(async () => {\n await client.reload();\n }, [client]);\n const stop = useCallback(() => {\n client.stop();\n }, [client]);\n const clear = useCallback(() => {\n client.clear();\n }, [client]);\n const setMessagesManually = useCallback(\n (newMessages) => {\n client.setMessagesManually(newMessages);\n },\n [client]\n );\n const addToolResult = useCallback(\n async (result) => {\n await client.addToolResult(result);\n },\n [client]\n );\n const addToolApprovalResponse = useCallback(\n async (response) => {\n await client.addToolApprovalResponse(response);\n },\n [client]\n );\n const renderedMessages = client.getMessages();\n const activeStructuredPart = useMemo(() => {\n let lastUserIndex = -1;\n for (let i = renderedMessages.length - 1; i >= 0; i--) {\n if (renderedMessages[i]?.role === \"user\") {\n lastUserIndex = i;\n break;\n }\n }\n if (lastUserIndex === -1) return null;\n for (let i = renderedMessages.length - 1; i > lastUserIndex; i--) {\n const m = renderedMessages[i];\n if (m?.role !== \"assistant\") continue;\n const part = m.parts.find(\n (p) => p.type === \"structured-output\"\n );\n if (part) return part;\n }\n return null;\n }, [renderedMessages]);\n const partial = useMemo(() => {\n if (!activeStructuredPart) return {};\n const v = activeStructuredPart.partial ?? activeStructuredPart.data;\n return v ?? {};\n }, [activeStructuredPart]);\n const final = useMemo(() => {\n if (!activeStructuredPart || activeStructuredPart.status !== \"complete\") {\n return null;\n }\n return activeStructuredPart.data;\n }, [activeStructuredPart]);\n return {\n messages: renderedMessages,\n sendMessage,\n append,\n reload,\n stop,\n isLoading,\n error,\n status,\n isSubscribed,\n connectionStatus,\n sessionGenerating,\n setMessages: setMessagesManually,\n clear,\n addToolResult,\n addToolApprovalResponse,\n partial,\n final\n };\n}\nexport {\n useChat\n};\n//# sourceMappingURL=use-chat.js.map\n","import { useState, useRef, useEffect, useCallback } from \"react\";\nimport { RealtimeClient } from \"@tanstack/ai-client\";\nconst emptyFrequencyData = new Uint8Array(128);\nconst emptyTimeDomainData = new Uint8Array(128).fill(128);\nfunction useRealtimeChat(options) {\n const [status, setStatus] = useState(\"idle\");\n const [mode, setMode] = useState(\"idle\");\n const [messages, setMessages] = useState([]);\n const [pendingUserTranscript, setPendingUserTranscript] = useState(null);\n const [pendingAssistantTranscript, setPendingAssistantTranscript] = useState(null);\n const [error, setError] = useState(null);\n const [inputLevel, setInputLevel] = useState(0);\n const [outputLevel, setOutputLevel] = useState(0);\n const [vadMode, setVADModeState] = useState(\n options.vadMode ?? \"server\"\n );\n const clientRef = useRef(null);\n const optionsRef = useRef(options);\n optionsRef.current = options;\n const animationFrameRef = useRef(null);\n if (!clientRef.current) {\n const initial = optionsRef.current;\n clientRef.current = new RealtimeClient({\n getToken: initial.getToken,\n adapter: initial.adapter,\n ...initial.tools !== void 0 && { tools: initial.tools },\n ...initial.instructions !== void 0 && {\n instructions: initial.instructions\n },\n ...initial.voice !== void 0 && { voice: initial.voice },\n ...initial.autoPlayback !== void 0 && {\n autoPlayback: initial.autoPlayback\n },\n ...initial.autoCapture !== void 0 && {\n autoCapture: initial.autoCapture\n },\n ...initial.vadMode !== void 0 && { vadMode: initial.vadMode },\n ...initial.outputModalities !== void 0 && {\n outputModalities: initial.outputModalities\n },\n ...initial.temperature !== void 0 && {\n temperature: initial.temperature\n },\n ...initial.maxOutputTokens !== void 0 && {\n maxOutputTokens: initial.maxOutputTokens\n },\n ...initial.semanticEagerness !== void 0 && {\n semanticEagerness: initial.semanticEagerness\n },\n onStatusChange: (newStatus) => {\n setStatus(newStatus);\n },\n onModeChange: (newMode) => {\n setMode(newMode);\n optionsRef.current.onModeChange?.(newMode);\n },\n onMessage: (message) => {\n setMessages((prev) => [...prev, message]);\n optionsRef.current.onMessage?.(message);\n },\n onError: (err) => {\n setError(err);\n optionsRef.current.onError?.(err);\n },\n onConnect: () => {\n setError(null);\n optionsRef.current.onConnect?.();\n },\n onDisconnect: () => {\n optionsRef.current.onDisconnect?.();\n },\n onInterrupted: () => {\n setPendingAssistantTranscript(null);\n optionsRef.current.onInterrupted?.();\n }\n });\n clientRef.current.onStateChange((state) => {\n setPendingUserTranscript(state.pendingUserTranscript);\n setPendingAssistantTranscript(state.pendingAssistantTranscript);\n });\n }\n const client = clientRef.current;\n useEffect(() => {\n function updateLevels() {\n if (clientRef.current?.audio) {\n setInputLevel(clientRef.current.audio.inputLevel);\n setOutputLevel(clientRef.current.audio.outputLevel);\n }\n animationFrameRef.current = requestAnimationFrame(updateLevels);\n }\n if (status === \"connected\") {\n updateLevels();\n }\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n animationFrameRef.current = null;\n }\n };\n }, [status]);\n useEffect(() => {\n return () => {\n clientRef.current?.destroy();\n };\n }, []);\n const connect = useCallback(async () => {\n setError(null);\n setMessages([]);\n setPendingUserTranscript(null);\n setPendingAssistantTranscript(null);\n await client.connect();\n }, [client]);\n const disconnect = useCallback(async () => {\n await client.disconnect();\n }, [client]);\n const startListening = useCallback(() => {\n client.startListening();\n }, [client]);\n const stopListening = useCallback(() => {\n client.stopListening();\n }, [client]);\n const interrupt = useCallback(() => {\n client.interrupt();\n }, [client]);\n const sendText = useCallback(\n (text) => {\n client.sendText(text);\n },\n [client]\n );\n const sendImage = useCallback(\n (imageData, mimeType) => {\n client.sendImage(imageData, mimeType);\n },\n [client]\n );\n const getInputFrequencyData = useCallback(() => {\n return clientRef.current?.audio?.getInputFrequencyData() ?? emptyFrequencyData;\n }, []);\n const getOutputFrequencyData = useCallback(() => {\n return clientRef.current?.audio?.getOutputFrequencyData() ?? emptyFrequencyData;\n }, []);\n const getInputTimeDomainData = useCallback(() => {\n return clientRef.current?.audio?.getInputTimeDomainData() ?? emptyTimeDomainData;\n }, []);\n const getOutputTimeDomainData = useCallback(() => {\n return clientRef.current?.audio?.getOutputTimeDomainData() ?? emptyTimeDomainData;\n }, []);\n const setVADMode = useCallback(\n (newMode) => {\n setVADModeState(newMode);\n },\n []\n );\n return {\n // Connection state\n status,\n error,\n connect,\n disconnect,\n // Conversation state\n mode,\n messages,\n pendingUserTranscript,\n pendingAssistantTranscript,\n // Voice control\n startListening,\n stopListening,\n interrupt,\n // Text input\n sendText,\n // Image input\n sendImage,\n // Audio visualization\n inputLevel,\n outputLevel,\n getInputFrequencyData,\n getOutputFrequencyData,\n getInputTimeDomainData,\n getOutputTimeDomainData,\n // VAD control\n vadMode,\n setVADMode\n };\n}\nexport {\n useRealtimeChat\n};\n//# sourceMappingURL=use-realtime-chat.js.map\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,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,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],"mappings":"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"}
|