@atproto/oauth-provider-ui 0.5.2 → 0.6.0
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/dist/account-page-BWF2SB1c.js +20 -0
- package/dist/account-page-BWF2SB1c.js.map +1 -0
- package/dist/{admonition-CynrBtB4.js → admonition-yRjCycmU.js} +14 -14
- package/dist/admonition-yRjCycmU.js.map +1 -0
- package/dist/authorization-page-CVdjW3kW.js +6 -0
- package/dist/authorization-page-CVdjW3kW.js.map +1 -0
- package/dist/bundle-manifest.json +101 -101
- package/dist/{cookie-error-page-BaAfiN7q.js → cookie-error-page-Bkn1GFNn.js} +2 -2
- package/dist/cookie-error-page-Bkn1GFNn.js.map +1 -0
- package/dist/did-document-YkmTdTdF.js +60 -0
- package/dist/did-document-YkmTdTdF.js.map +1 -0
- package/dist/{error-page-BJWyhSsa.js → error-page-BNXmA0-7.js} +2 -2
- package/dist/{error-page-BJWyhSsa.js.map → error-page-BNXmA0-7.js.map} +1 -1
- package/dist/error-view-C10M9k8v.js +2 -0
- package/dist/{error-view-Bn_MnV68.js.map → error-view-C10M9k8v.js.map} +1 -1
- package/dist/{form-card-BodfR5wP.js → form-card-CGJ-DqBg.js} +2 -2
- package/dist/{form-card-BodfR5wP.js.map → form-card-CGJ-DqBg.js.map} +1 -1
- package/package.json +9 -9
- package/dist/account-page-Do28ZzQf.js +0 -20
- package/dist/account-page-Do28ZzQf.js.map +0 -1
- package/dist/admonition-CynrBtB4.js.map +0 -1
- package/dist/authorization-page-XxpDhuMt.js +0 -6
- package/dist/authorization-page-XxpDhuMt.js.map +0 -1
- package/dist/cookie-error-page-BaAfiN7q.js.map +0 -1
- package/dist/error-view-Bn_MnV68.js +0 -2
- package/dist/index-BtIdBUOA.js +0 -60
- package/dist/index-BtIdBUOA.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account-page-Do28ZzQf.js","sources":["../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/utils.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/thenable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/retryer.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/removable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/query.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/mutation.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.71.10/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/isRestoring.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/utils.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/suspense.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/useQuery.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.71.10_react@19.0.0/node_modules/@tanstack/react-query/build/modern/useMutation.js","../../../../node_modules/.pnpm/tiny-invariant@1.3.3/node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../../../../node_modules/.pnpm/@tanstack+store@0.7.2/node_modules/@tanstack/store/dist/esm/scheduler.js","../../../../node_modules/.pnpm/@tanstack+store@0.7.2/node_modules/@tanstack/store/dist/esm/types.js","../../../../node_modules/.pnpm/@tanstack+store@0.7.2/node_modules/@tanstack/store/dist/esm/store.js","../../../../node_modules/.pnpm/@tanstack+store@0.7.2/node_modules/@tanstack/store/dist/esm/derived.js","../../../../node_modules/.pnpm/@tanstack+history@1.115.0/node_modules/@tanstack/history/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/path.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/not-found.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/qss.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/searchParams.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/root.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/redirect.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/router.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/link.js","../../../../node_modules/.pnpm/@tanstack+router-core@1.115.0/node_modules/@tanstack/router-core/dist/esm/route.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/CatchBoundary.js","../../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/shim/index.js","../../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/shim/with-selector.js","../../../../node_modules/.pnpm/@tanstack+react-store@0.7.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-store/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/routerContext.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/useRouter.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/useRouterState.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/matchContext.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/useMatch.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/useLoaderData.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/useLoaderDeps.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/useParams.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/useSearch.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/useNavigate.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/route.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/not-found.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/SafeFragment.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/renderRouteNotFound.js","../../../../node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/jsesc.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/ScriptOnce.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/scroll-restoration.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/Match.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/Transitioner.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/Matches.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/link.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/router.js","../../../../node_modules/.pnpm/@tanstack+react-router@1.115.0_react-dom@19.0.0_react@19.0.0/node_modules/@tanstack/react-router/dist/esm/RouterProvider.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/ArrowLeft.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/Devices.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/Globe.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/HouseSimple.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/PaintBucket.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/PaperPlaneTilt.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/ArrowLeft.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/Devices.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/Globe.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/HouseSimple.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/PaintBucket.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/PaperPlaneTilt.es.js","../src/components/utils/palette.tsx","../../../../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../../node_modules/.pnpm/@floating-ui+core@1.6.9/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../../node_modules/.pnpm/@floating-ui+dom@1.6.13/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../../node_modules/.pnpm/@floating-ui+react-dom@2.1.2_react-dom@19.0.0_react@19.0.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../../../node_modules/.pnpm/@radix-ui+react-arrow@1.1.7_@types+react-dom@19.0.4_@types+react@19.0.10_react-dom@19.0.0_react@19.0.0/node_modules/@radix-ui/react-arrow/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-size@1.1.1_@types+react@19.0.10_react@19.0.0/node_modules/@radix-ui/react-use-size/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-popper@1.2.8_@types+react-dom@19.0.4_@types+react@19.0.10_react-dom@19.0.0_react@19.0.0/node_modules/@radix-ui/react-popper/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-popover@1.1.15_@types+react-dom@19.0.4_@types+react@19.0.10_react-dom@19.0.0_react@19.0.0/node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/utils/account-overview.tsx","../src/components/utils/account-selector.tsx","../src/components/layouts/layout-page.tsx","../src/pages/route.tsx","../src/components/customization-name.tsx","../src/pages/account/(authenticated)/about/page.tsx","../src/components/utils/circular-progress.tsx","../src/hooks/use-date-ago.ts","../src/components/utils/date-ago.tsx","../src/data/oauth-sessions.ts","../../oauth-types/dist/constants.js","../../oauth-types/dist/util.js","../../oauth-types/dist/uri.js","../../oauth-types/dist/atproto-loopback-client-redirect-uris.js","../../oauth-types/dist/oauth-scope.js","../../oauth-types/dist/atproto-oauth-scope.js","../../oauth-types/dist/oauth-client-id.js","../../oauth-types/dist/oauth-redirect-uri.js","../../oauth-types/dist/oauth-client-id-loopback.js","../../oauth-types/dist/atproto-loopback-client-id.js","../../oauth-types/dist/atproto-loopback-client-metadata.js","../../jwk/dist/errors.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base.js","../../../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base64.js","../../jwk/dist/util.js","../../jwk/dist/jwk.js","../../jwk/dist/alg.js","../../jwk/dist/jwks.js","../../jwk/dist/jwt.js","../../jwk/dist/jwt-decode.js","../../jwk/dist/jwt-verify.js","../../jwk/dist/key.js","../../jwk/dist/keyset.js","../../jwk/dist/index.js","../../oauth-types/dist/oauth-authorization-details.js","../../oauth-types/dist/oauth-token-type.js","../../oauth-types/dist/oauth-token-response.js","../../oauth-types/dist/atproto-oauth-token-response.js","../../oauth-types/dist/oauth-access-token.js","../../oauth-types/dist/oauth-authorization-code-grant-token-request.js","../../oauth-types/dist/oauth-authorization-request-jar.js","../../oauth-types/dist/oauth-code-challenge-method.js","../../oauth-types/dist/oauth-prompt-mode.js","../../oauth-types/dist/oauth-response-mode.js","../../oauth-types/dist/oauth-response-type.js","../../oauth-types/dist/oidc-claims-parameter.js","../../oauth-types/dist/oidc-claims-properties.js","../../oauth-types/dist/oidc-entity-type.js","../../oauth-types/dist/oauth-authorization-request-parameters.js","../../oauth-types/dist/oauth-authorization-request-par.js","../../oauth-types/dist/oauth-request-uri.js","../../oauth-types/dist/oauth-authorization-request-uri.js","../../oauth-types/dist/oauth-authorization-request-query.js","../../oauth-types/dist/oauth-authorization-response-error.js","../../oauth-types/dist/oauth-issuer-identifier.js","../../oauth-types/dist/oauth-authorization-server-metadata.js","../../oauth-types/dist/oauth-client-credentials-grant-token-request.js","../../oauth-types/dist/oauth-client-credentials.js","../../oauth-types/dist/oauth-client-id-discoverable.js","../../oauth-types/dist/oauth-endpoint-auth-method.js","../../oauth-types/dist/oauth-grant-type.js","../../oauth-types/dist/oauth-client-metadata.js","../../oauth-types/dist/oauth-endpoint-name.js","../../oauth-types/dist/oauth-introspection-response.js","../../oauth-types/dist/oauth-par-response.js","../../oauth-types/dist/oauth-password-grant-token-request.js","../../oauth-types/dist/oauth-protected-resource-metadata.js","../../oauth-types/dist/oauth-refresh-token.js","../../oauth-types/dist/oauth-refresh-token-grant-token-request.js","../../oauth-types/dist/oauth-token-identification.js","../../oauth-types/dist/oauth-token-request.js","../../oauth-types/dist/oidc-authorization-error-response.js","../../oauth-types/dist/oidc-userinfo.js","../../oauth-types/dist/index.js","../src/hooks/use-oauth-client-identifier.ts","../src/hooks/use-oauth-client-name.ts","../src/pages/account/(authenticated)/apps/page.tsx","../src/data/account-sessions.ts","../../../../node_modules/.pnpm/ua-parser-js@2.0.3/node_modules/ua-parser-js/src/main/ua-parser.mjs","../src/hooks/use-browser-name.ts","../src/pages/account/(authenticated)/devices/page.tsx","../src/pages/account/(authenticated)/page.tsx","../src/hooks/use-rate-limited-action.ts","../src/components/forms/button-cooldown.tsx","../src/data/password.ts","../src/pages/account/(authenticated)/password/page.tsx","../src/pages/account/(authenticated)/route.tsx","../src/pages/account/(unauthenticated)/reset-password/route.tsx","../src/pages/router.tsx","../src/account-page.tsx"],"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/utils.ts\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 resolveEnabled(enabled, query) {\n return typeof enabled === \"function\" ? enabled(query) : enabled;\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}\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n const array = isPlainArray(a) && isPlainArray(b);\n if (array || isPlainObject(a) && isPlainObject(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 ? [] : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n if ((!array && aItems.includes(key) || array) && a[key] === void 0 && b[key] === void 0) {\n copy[key] = void 0;\n equalItems++;\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key]);\n if (copy[key] === a[key] && a[key] !== void 0) {\n equalItems++;\n }\n }\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n return b;\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 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 = 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}\nexport {\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 resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (!isServer && 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/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (!isServer && 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/thenable.ts\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}\nexport {\n pendingThenable\n};\n//# sourceMappingURL=thenable.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { isServer, 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 isResolved = false;\n let continueFn;\n const thenable = pendingThenable();\n const cancel = (cancelOptions) => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort?.();\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 isResolved = true;\n config.onSuccess?.(value);\n continueFn?.();\n thenable.resolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onError?.(value);\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 ?? (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 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/notifyManager.ts\nvar defaultScheduler = (cb) => setTimeout(cb, 0);\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/removable.ts\nimport { isServer, 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 = setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport {\n ensureQueryFn,\n noop,\n replaceData,\n resolveEnabled,\n skipToken,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { canFetch, createRetryer, isCancelledError } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\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 promise() {\n return this.#retryer?.promise;\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n this.updateGcTime(this.options.gcTime);\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, setStateOptions) {\n this.#dispatch({ type: \"setState\", state, setStateOptions });\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 reset() {\n this.destroy();\n this.setState(this.#initialState);\n }\n isActive() {\n return this.observers.some(\n (observer) => resolveEnabled(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.state.dataUpdateCount + this.state.errorUpdateCount === 0;\n }\n isStale() {\n if (this.state.isInvalidated) {\n return true;\n }\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale\n );\n }\n return this.state.data === void 0;\n }\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || this.state.data === void 0 || !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) {\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 invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\") {\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 queryFnContext = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta\n };\n addSignalProperty(queryFnContext);\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 context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n this.options.behavior?.onFetch(\n context,\n this\n );\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 const onError = (error) => {\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: \"error\",\n error\n });\n }\n if (!isCancelledError(error)) {\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 }\n this.scheduleGc();\n };\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise,\n fn: context.fetchFn,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\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 onError(new Error(`${this.queryHash} data is undefined`));\n return;\n }\n try {\n this.setData(data);\n } catch (error) {\n onError(error);\n return;\n }\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n this.scheduleGc();\n },\n onError,\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 return this.#retryer.start();\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 return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\",\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n case \"error\":\n const error = action.error;\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: \"idle\" };\n }\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 };\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 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/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/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\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 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);\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: 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 this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\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 );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\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 );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\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 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/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } 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 Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n client: context.client,\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\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/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\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.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()).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.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\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","// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.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 if (!this.options.experimental_prefetchInRender) {\n this.#currentThenable.reject(\n new Error(\"experimental_prefetchInRender feature flag is not enabled\")\n );\n }\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 resolveEnabled(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 || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(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 || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(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 const trackedResult = {};\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key);\n onPropTracked?.(key);\n return result[key];\n }\n });\n });\n return trackedResult;\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 (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 = 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 (isServer || resolveEnabled(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = 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) {\n clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId) {\n 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 if (options.select && newState.data !== void 0) {\n if (prevResult && newState.data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(newState.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 } else {\n data = newState.data;\n }\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 } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n if (options.select && placeholderData !== void 0) {\n try {\n placeholderData = options.select(placeholderData);\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\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 (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: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\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 };\n const nextResult = result;\n if (this.options.experimental_prefetchInRender) {\n const finalizeThenableIfPossible = (thenable) => {\n if (nextResult.status === \"error\") {\n thenable.reject(nextResult.error);\n } else if (nextResult.data !== void 0) {\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 (nextResult.status === \"error\" || nextResult.data !== prevThenable.value) {\n recreateThenable();\n }\n break;\n case \"rejected\":\n if (nextResult.status !== \"error\" || 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 resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === 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 (resolveEnabled(options.enabled, query) !== false) {\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 || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveEnabled(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/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 context = this.#currentResult.context;\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(action.data, variables, context);\n this.#mutateOptions.onSettled?.(action.data, null, variables, context);\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(action.error, variables, context);\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n context\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","\"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/isRestoring.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=isRestoring.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","// src/utils.ts\nfunction shouldThrowError(throwError, params) {\n if (typeof throwError === \"function\") {\n return throwError(...params);\n }\n return !!throwError;\n}\nfunction noop() {\n}\nexport {\n noop,\n shouldThrowError\n};\n//# sourceMappingURL=utils.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"./utils.js\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n if (options.suspense || options.throwOnError || options.experimental_prefetchInRender) {\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 const originalStaleTime = defaultedOptions.staleTime;\n if (defaultedOptions.suspense) {\n defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => Math.max(originalStaleTime(...args), 1e3) : Math.max(originalStaleTime ?? 1e3, 1e3);\n if (typeof defaultedOptions.gcTime === \"number\") {\n defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, 1e3);\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 { isServer, 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 \"./isRestoring.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nimport { noop } from \"./utils.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 client = useQueryClient(queryClient);\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\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);\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: client.getQueryCache().get(defaultedOptions.queryHash),\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 && !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 client.getQueryCache().get(defaultedOptions.queryHash)?.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 { MutationObserver, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { noop, shouldThrowError } from \"./utils.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","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import { Derived } from \"./derived.js\";\nconst __storeToDerived = /* @__PURE__ */ new WeakMap();\nconst __derivedToStore = /* @__PURE__ */ new WeakMap();\nconst __depsThatHaveWrittenThisTick = {\n current: []\n};\nlet __isFlushing = false;\nlet __batchDepth = 0;\nconst __pendingUpdates = /* @__PURE__ */ new Set();\nconst __initialBatchValues = /* @__PURE__ */ new Map();\nfunction __flush_internals(relatedVals) {\n const sorted = Array.from(relatedVals).sort((a, b) => {\n if (a instanceof Derived && a.options.deps.includes(b)) return 1;\n if (b instanceof Derived && b.options.deps.includes(a)) return -1;\n return 0;\n });\n for (const derived of sorted) {\n if (__depsThatHaveWrittenThisTick.current.includes(derived)) {\n continue;\n }\n __depsThatHaveWrittenThisTick.current.push(derived);\n derived.recompute();\n const stores = __derivedToStore.get(derived);\n if (stores) {\n for (const store of stores) {\n const relatedLinkedDerivedVals = __storeToDerived.get(store);\n if (!relatedLinkedDerivedVals) continue;\n __flush_internals(relatedLinkedDerivedVals);\n }\n }\n }\n}\nfunction __notifyListeners(store) {\n store.listeners.forEach(\n (listener) => listener({\n prevVal: store.prevState,\n currentVal: store.state\n })\n );\n}\nfunction __notifyDerivedListeners(derived) {\n derived.listeners.forEach(\n (listener) => listener({\n prevVal: derived.prevState,\n currentVal: derived.state\n })\n );\n}\nfunction __flush(store) {\n if (__batchDepth > 0 && !__initialBatchValues.has(store)) {\n __initialBatchValues.set(store, store.prevState);\n }\n __pendingUpdates.add(store);\n if (__batchDepth > 0) return;\n if (__isFlushing) return;\n try {\n __isFlushing = true;\n while (__pendingUpdates.size > 0) {\n const stores = Array.from(__pendingUpdates);\n __pendingUpdates.clear();\n for (const store2 of stores) {\n const prevState = __initialBatchValues.get(store2) ?? store2.prevState;\n store2.prevState = prevState;\n __notifyListeners(store2);\n }\n for (const store2 of stores) {\n const derivedVals = __storeToDerived.get(store2);\n if (!derivedVals) continue;\n __depsThatHaveWrittenThisTick.current.push(store2);\n __flush_internals(derivedVals);\n }\n for (const store2 of stores) {\n const derivedVals = __storeToDerived.get(store2);\n if (!derivedVals) continue;\n for (const derived of derivedVals) {\n __notifyDerivedListeners(derived);\n }\n }\n }\n } finally {\n __isFlushing = false;\n __depsThatHaveWrittenThisTick.current = [];\n __initialBatchValues.clear();\n }\n}\nfunction batch(fn) {\n __batchDepth++;\n try {\n fn();\n } finally {\n __batchDepth--;\n if (__batchDepth === 0) {\n const pendingUpdateToFlush = Array.from(__pendingUpdates)[0];\n if (pendingUpdateToFlush) {\n __flush(pendingUpdateToFlush);\n }\n }\n }\n}\nexport {\n __depsThatHaveWrittenThisTick,\n __derivedToStore,\n __flush,\n __storeToDerived,\n batch\n};\n//# sourceMappingURL=scheduler.js.map\n","function isUpdaterFunction(updater) {\n return typeof updater === \"function\";\n}\nexport {\n isUpdaterFunction\n};\n//# sourceMappingURL=types.js.map\n","import { __flush } from \"./scheduler.js\";\nimport { isUpdaterFunction } from \"./types.js\";\nclass Store {\n constructor(initialState, options) {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = (listener) => {\n var _a, _b;\n this.listeners.add(listener);\n const unsub = (_b = (_a = this.options) == null ? void 0 : _a.onSubscribe) == null ? void 0 : _b.call(_a, listener, this);\n return () => {\n this.listeners.delete(listener);\n unsub == null ? void 0 : unsub();\n };\n };\n this.prevState = initialState;\n this.state = initialState;\n this.options = options;\n }\n setState(updater) {\n var _a, _b, _c;\n this.prevState = this.state;\n if ((_a = this.options) == null ? void 0 : _a.updateFn) {\n this.state = this.options.updateFn(this.prevState)(updater);\n } else {\n if (isUpdaterFunction(updater)) {\n this.state = updater(this.prevState);\n } else {\n this.state = updater;\n }\n }\n (_c = (_b = this.options) == null ? void 0 : _b.onUpdate) == null ? void 0 : _c.call(_b);\n __flush(this);\n }\n}\nexport {\n Store\n};\n//# sourceMappingURL=store.js.map\n","import { Store } from \"./store.js\";\nimport { __storeToDerived, __derivedToStore } from \"./scheduler.js\";\nclass Derived {\n constructor(options) {\n this.listeners = /* @__PURE__ */ new Set();\n this._subscriptions = [];\n this.lastSeenDepValues = [];\n this.getDepVals = () => {\n const prevDepVals = [];\n const currDepVals = [];\n for (const dep of this.options.deps) {\n prevDepVals.push(dep.prevState);\n currDepVals.push(dep.state);\n }\n this.lastSeenDepValues = currDepVals;\n return {\n prevDepVals,\n currDepVals,\n prevVal: this.prevState ?? void 0\n };\n };\n this.recompute = () => {\n var _a, _b;\n this.prevState = this.state;\n const { prevDepVals, currDepVals, prevVal } = this.getDepVals();\n this.state = this.options.fn({\n prevDepVals,\n currDepVals,\n prevVal\n });\n (_b = (_a = this.options).onUpdate) == null ? void 0 : _b.call(_a);\n };\n this.checkIfRecalculationNeededDeeply = () => {\n for (const dep of this.options.deps) {\n if (dep instanceof Derived) {\n dep.checkIfRecalculationNeededDeeply();\n }\n }\n let shouldRecompute = false;\n const lastSeenDepValues = this.lastSeenDepValues;\n const { currDepVals } = this.getDepVals();\n for (let i = 0; i < currDepVals.length; i++) {\n if (currDepVals[i] !== lastSeenDepValues[i]) {\n shouldRecompute = true;\n break;\n }\n }\n if (shouldRecompute) {\n this.recompute();\n }\n };\n this.mount = () => {\n this.registerOnGraph();\n this.checkIfRecalculationNeededDeeply();\n return () => {\n this.unregisterFromGraph();\n for (const cleanup of this._subscriptions) {\n cleanup();\n }\n };\n };\n this.subscribe = (listener) => {\n var _a, _b;\n this.listeners.add(listener);\n const unsub = (_b = (_a = this.options).onSubscribe) == null ? void 0 : _b.call(_a, listener, this);\n return () => {\n this.listeners.delete(listener);\n unsub == null ? void 0 : unsub();\n };\n };\n this.options = options;\n this.state = options.fn({\n prevDepVals: void 0,\n prevVal: void 0,\n currDepVals: this.getDepVals().currDepVals\n });\n }\n registerOnGraph(deps = this.options.deps) {\n for (const dep of deps) {\n if (dep instanceof Derived) {\n dep.registerOnGraph();\n this.registerOnGraph(dep.options.deps);\n } else if (dep instanceof Store) {\n let relatedLinkedDerivedVals = __storeToDerived.get(dep);\n if (!relatedLinkedDerivedVals) {\n relatedLinkedDerivedVals = /* @__PURE__ */ new Set();\n __storeToDerived.set(dep, relatedLinkedDerivedVals);\n }\n relatedLinkedDerivedVals.add(this);\n let relatedStores = __derivedToStore.get(this);\n if (!relatedStores) {\n relatedStores = /* @__PURE__ */ new Set();\n __derivedToStore.set(this, relatedStores);\n }\n relatedStores.add(dep);\n }\n }\n }\n unregisterFromGraph(deps = this.options.deps) {\n for (const dep of deps) {\n if (dep instanceof Derived) {\n this.unregisterFromGraph(dep.options.deps);\n } else if (dep instanceof Store) {\n const relatedLinkedDerivedVals = __storeToDerived.get(dep);\n if (relatedLinkedDerivedVals) {\n relatedLinkedDerivedVals.delete(this);\n }\n const relatedStores = __derivedToStore.get(this);\n if (relatedStores) {\n relatedStores.delete(dep);\n }\n }\n }\n }\n}\nexport {\n Derived\n};\n//# sourceMappingURL=derived.js.map\n","const stateIndexKey = \"__TSR_index\";\nconst popStateEvent = \"popstate\";\nconst beforeUnloadEvent = \"beforeunload\";\nfunction createHistory(opts) {\n let location = opts.getLocation();\n const subscribers = /* @__PURE__ */ new Set();\n const notify = (action) => {\n location = opts.getLocation();\n subscribers.forEach((subscriber) => subscriber({ location, action }));\n };\n const handleIndexChange = (action) => {\n if (opts.notifyOnIndexChange ?? true) notify(action);\n else location = opts.getLocation();\n };\n const tryNavigation = async ({\n task,\n navigateOpts,\n ...actionInfo\n }) => {\n var _a, _b;\n const ignoreBlocker = (navigateOpts == null ? void 0 : navigateOpts.ignoreBlocker) ?? false;\n if (ignoreBlocker) {\n task();\n return;\n }\n const blockers = ((_a = opts.getBlockers) == null ? void 0 : _a.call(opts)) ?? [];\n const isPushOrReplace = actionInfo.type === \"PUSH\" || actionInfo.type === \"REPLACE\";\n if (typeof document !== \"undefined\" && blockers.length && isPushOrReplace) {\n for (const blocker of blockers) {\n const nextLocation = parseHref(actionInfo.path, actionInfo.state);\n const isBlocked = await blocker.blockerFn({\n currentLocation: location,\n nextLocation,\n action: actionInfo.type\n });\n if (isBlocked) {\n (_b = opts.onBlocked) == null ? void 0 : _b.call(opts);\n return;\n }\n }\n }\n task();\n };\n return {\n get location() {\n return location;\n },\n get length() {\n return opts.getLength();\n },\n subscribers,\n subscribe: (cb) => {\n subscribers.add(cb);\n return () => {\n subscribers.delete(cb);\n };\n },\n push: (path, state, navigateOpts) => {\n const currentIndex = location.state[stateIndexKey];\n state = assignKeyAndIndex(currentIndex + 1, state);\n tryNavigation({\n task: () => {\n opts.pushState(path, state);\n notify({ type: \"PUSH\" });\n },\n navigateOpts,\n type: \"PUSH\",\n path,\n state\n });\n },\n replace: (path, state, navigateOpts) => {\n const currentIndex = location.state[stateIndexKey];\n state = assignKeyAndIndex(currentIndex, state);\n tryNavigation({\n task: () => {\n opts.replaceState(path, state);\n notify({ type: \"REPLACE\" });\n },\n navigateOpts,\n type: \"REPLACE\",\n path,\n state\n });\n },\n go: (index, navigateOpts) => {\n tryNavigation({\n task: () => {\n opts.go(index);\n handleIndexChange({ type: \"GO\", index });\n },\n navigateOpts,\n type: \"GO\"\n });\n },\n back: (navigateOpts) => {\n tryNavigation({\n task: () => {\n opts.back((navigateOpts == null ? void 0 : navigateOpts.ignoreBlocker) ?? false);\n handleIndexChange({ type: \"BACK\" });\n },\n navigateOpts,\n type: \"BACK\"\n });\n },\n forward: (navigateOpts) => {\n tryNavigation({\n task: () => {\n opts.forward((navigateOpts == null ? void 0 : navigateOpts.ignoreBlocker) ?? false);\n handleIndexChange({ type: \"FORWARD\" });\n },\n navigateOpts,\n type: \"FORWARD\"\n });\n },\n canGoBack: () => location.state[stateIndexKey] !== 0,\n createHref: (str) => opts.createHref(str),\n block: (blocker) => {\n var _a;\n if (!opts.setBlockers) return () => {\n };\n const blockers = ((_a = opts.getBlockers) == null ? void 0 : _a.call(opts)) ?? [];\n opts.setBlockers([...blockers, blocker]);\n return () => {\n var _a2, _b;\n const blockers2 = ((_a2 = opts.getBlockers) == null ? void 0 : _a2.call(opts)) ?? [];\n (_b = opts.setBlockers) == null ? void 0 : _b.call(opts, blockers2.filter((b) => b !== blocker));\n };\n },\n flush: () => {\n var _a;\n return (_a = opts.flush) == null ? void 0 : _a.call(opts);\n },\n destroy: () => {\n var _a;\n return (_a = opts.destroy) == null ? void 0 : _a.call(opts);\n },\n notify\n };\n}\nfunction assignKeyAndIndex(index, state) {\n if (!state) {\n state = {};\n }\n return {\n ...state,\n key: createRandomKey(),\n [stateIndexKey]: index\n };\n}\nfunction createBrowserHistory(opts) {\n var _a;\n const win = (opts == null ? void 0 : opts.window) ?? (typeof document !== \"undefined\" ? window : void 0);\n const originalPushState = win.history.pushState;\n const originalReplaceState = win.history.replaceState;\n let blockers = [];\n const _getBlockers = () => blockers;\n const _setBlockers = (newBlockers) => blockers = newBlockers;\n const createHref = (opts == null ? void 0 : opts.createHref) ?? ((path) => path);\n const parseLocation = (opts == null ? void 0 : opts.parseLocation) ?? (() => parseHref(\n `${win.location.pathname}${win.location.search}${win.location.hash}`,\n win.history.state\n ));\n if (!((_a = win.history.state) == null ? void 0 : _a.key)) {\n win.history.replaceState(\n {\n [stateIndexKey]: 0,\n key: createRandomKey()\n },\n \"\"\n );\n }\n let currentLocation = parseLocation();\n let rollbackLocation;\n let nextPopIsGo = false;\n let ignoreNextPop = false;\n let skipBlockerNextPop = false;\n let ignoreNextBeforeUnload = false;\n const getLocation = () => currentLocation;\n let next;\n let scheduled;\n const flush = () => {\n if (!next) {\n return;\n }\n history._ignoreSubscribers = true;\n (next.isPush ? win.history.pushState : win.history.replaceState)(\n next.state,\n \"\",\n next.href\n );\n history._ignoreSubscribers = false;\n next = void 0;\n scheduled = void 0;\n rollbackLocation = void 0;\n };\n const queueHistoryAction = (type, destHref, state) => {\n const href = createHref(destHref);\n if (!scheduled) {\n rollbackLocation = currentLocation;\n }\n currentLocation = parseHref(destHref, state);\n next = {\n href,\n state,\n isPush: (next == null ? void 0 : next.isPush) || type === \"push\"\n };\n if (!scheduled) {\n scheduled = Promise.resolve().then(() => flush());\n }\n };\n const onPushPop = (type) => {\n currentLocation = parseLocation();\n history.notify({ type });\n };\n const onPushPopEvent = async () => {\n if (ignoreNextPop) {\n ignoreNextPop = false;\n return;\n }\n const nextLocation = parseLocation();\n const delta = nextLocation.state[stateIndexKey] - currentLocation.state[stateIndexKey];\n const isForward = delta === 1;\n const isBack = delta === -1;\n const isGo = !isForward && !isBack || nextPopIsGo;\n nextPopIsGo = false;\n const action = isGo ? \"GO\" : isBack ? \"BACK\" : \"FORWARD\";\n const notify = isGo ? {\n type: \"GO\",\n index: delta\n } : {\n type: isBack ? \"BACK\" : \"FORWARD\"\n };\n if (skipBlockerNextPop) {\n skipBlockerNextPop = false;\n } else {\n const blockers2 = _getBlockers();\n if (typeof document !== \"undefined\" && blockers2.length) {\n for (const blocker of blockers2) {\n const isBlocked = await blocker.blockerFn({\n currentLocation,\n nextLocation,\n action\n });\n if (isBlocked) {\n ignoreNextPop = true;\n win.history.go(1);\n history.notify(notify);\n return;\n }\n }\n }\n }\n currentLocation = parseLocation();\n history.notify(notify);\n };\n const onBeforeUnload = (e) => {\n if (ignoreNextBeforeUnload) {\n ignoreNextBeforeUnload = false;\n return;\n }\n let shouldBlock = false;\n const blockers2 = _getBlockers();\n if (typeof document !== \"undefined\" && blockers2.length) {\n for (const blocker of blockers2) {\n const shouldHaveBeforeUnload = blocker.enableBeforeUnload ?? true;\n if (shouldHaveBeforeUnload === true) {\n shouldBlock = true;\n break;\n }\n if (typeof shouldHaveBeforeUnload === \"function\" && shouldHaveBeforeUnload() === true) {\n shouldBlock = true;\n break;\n }\n }\n }\n if (shouldBlock) {\n e.preventDefault();\n return e.returnValue = \"\";\n }\n return;\n };\n const history = createHistory({\n getLocation,\n getLength: () => win.history.length,\n pushState: (href, state) => queueHistoryAction(\"push\", href, state),\n replaceState: (href, state) => queueHistoryAction(\"replace\", href, state),\n back: (ignoreBlocker) => {\n if (ignoreBlocker) skipBlockerNextPop = true;\n ignoreNextBeforeUnload = true;\n return win.history.back();\n },\n forward: (ignoreBlocker) => {\n if (ignoreBlocker) skipBlockerNextPop = true;\n ignoreNextBeforeUnload = true;\n win.history.forward();\n },\n go: (n) => {\n nextPopIsGo = true;\n win.history.go(n);\n },\n createHref: (href) => createHref(href),\n flush,\n destroy: () => {\n win.history.pushState = originalPushState;\n win.history.replaceState = originalReplaceState;\n win.removeEventListener(beforeUnloadEvent, onBeforeUnload, {\n capture: true\n });\n win.removeEventListener(popStateEvent, onPushPopEvent);\n },\n onBlocked: () => {\n if (rollbackLocation && currentLocation !== rollbackLocation) {\n currentLocation = rollbackLocation;\n }\n },\n getBlockers: _getBlockers,\n setBlockers: _setBlockers,\n notifyOnIndexChange: false\n });\n win.addEventListener(beforeUnloadEvent, onBeforeUnload, { capture: true });\n win.addEventListener(popStateEvent, onPushPopEvent);\n win.history.pushState = function(...args) {\n const res = originalPushState.apply(win.history, args);\n if (!history._ignoreSubscribers) onPushPop(\"PUSH\");\n return res;\n };\n win.history.replaceState = function(...args) {\n const res = originalReplaceState.apply(win.history, args);\n if (!history._ignoreSubscribers) onPushPop(\"REPLACE\");\n return res;\n };\n return history;\n}\nfunction createHashHistory(opts) {\n const win = (opts == null ? void 0 : opts.window) ?? (typeof document !== \"undefined\" ? window : void 0);\n return createBrowserHistory({\n window: win,\n parseLocation: () => {\n const hashSplit = win.location.hash.split(\"#\").slice(1);\n const pathPart = hashSplit[0] ?? \"/\";\n const searchPart = win.location.search;\n const hashEntries = hashSplit.slice(1);\n const hashPart = hashEntries.length === 0 ? \"\" : `#${hashEntries.join(\"#\")}`;\n const hashHref = `${pathPart}${searchPart}${hashPart}`;\n return parseHref(hashHref, win.history.state);\n },\n createHref: (href) => `${win.location.pathname}${win.location.search}#${href}`\n });\n}\nfunction createMemoryHistory(opts = {\n initialEntries: [\"/\"]\n}) {\n const entries = opts.initialEntries;\n let index = opts.initialIndex ? Math.min(Math.max(opts.initialIndex, 0), entries.length - 1) : entries.length - 1;\n const states = entries.map(\n (_entry, index2) => assignKeyAndIndex(index2, void 0)\n );\n const getLocation = () => parseHref(entries[index], states[index]);\n return createHistory({\n getLocation,\n getLength: () => entries.length,\n pushState: (path, state) => {\n if (index < entries.length - 1) {\n entries.splice(index + 1);\n states.splice(index + 1);\n }\n states.push(state);\n entries.push(path);\n index = Math.max(entries.length - 1, 0);\n },\n replaceState: (path, state) => {\n states[index] = state;\n entries[index] = path;\n },\n back: () => {\n index = Math.max(index - 1, 0);\n },\n forward: () => {\n index = Math.min(index + 1, entries.length - 1);\n },\n go: (n) => {\n index = Math.min(Math.max(index + n, 0), entries.length - 1);\n },\n createHref: (path) => path\n });\n}\nfunction parseHref(href, state) {\n const hashIndex = href.indexOf(\"#\");\n const searchIndex = href.indexOf(\"?\");\n return {\n href,\n pathname: href.substring(\n 0,\n hashIndex > 0 ? searchIndex > 0 ? Math.min(hashIndex, searchIndex) : hashIndex : searchIndex > 0 ? searchIndex : href.length\n ),\n hash: hashIndex > -1 ? href.substring(hashIndex) : \"\",\n search: searchIndex > -1 ? href.slice(searchIndex, hashIndex === -1 ? void 0 : hashIndex) : \"\",\n state: state || { [stateIndexKey]: 0, key: createRandomKey() }\n };\n}\nfunction createRandomKey() {\n return (Math.random() + 1).toString(36).substring(7);\n}\nexport {\n createBrowserHistory,\n createHashHistory,\n createHistory,\n createMemoryHistory,\n parseHref\n};\n//# sourceMappingURL=index.js.map\n","function last(arr) {\n return arr[arr.length - 1];\n}\nfunction isFunction(d) {\n return typeof d === \"function\";\n}\nfunction functionalUpdate(updater, previous) {\n if (isFunction(updater)) {\n return updater(previous);\n }\n return updater;\n}\nfunction pick(parent, keys) {\n return keys.reduce((obj, key) => {\n obj[key] = parent[key];\n return obj;\n }, {});\n}\nfunction replaceEqualDeep(prev, _next) {\n if (prev === _next) {\n return prev;\n }\n const next = _next;\n const array = isPlainArray(prev) && isPlainArray(next);\n if (array || isPlainObject(prev) && isPlainObject(next)) {\n const prevItems = array ? prev : Object.keys(prev);\n const prevSize = prevItems.length;\n const nextItems = array ? next : Object.keys(next);\n const nextSize = nextItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n for (let i = 0; i < nextSize; i++) {\n const key = array ? i : nextItems[i];\n if ((!array && prevItems.includes(key) || array) && prev[key] === void 0 && next[key] === void 0) {\n copy[key] = void 0;\n equalItems++;\n } else {\n copy[key] = replaceEqualDeep(prev[key], next[key]);\n if (copy[key] === prev[key] && prev[key] !== void 0) {\n equalItems++;\n }\n }\n }\n return prevSize === nextSize && equalItems === prevSize ? prev : copy;\n }\n return next;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (typeof ctor === \"undefined\") {\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 return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction getObjectKeys(obj, ignoreUndefined) {\n let keys = Object.keys(obj);\n if (ignoreUndefined) {\n keys = keys.filter((key) => obj[key] !== void 0);\n }\n return keys;\n}\nfunction deepEqual(a, b, opts) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (isPlainObject(a) && isPlainObject(b)) {\n const ignoreUndefined = (opts == null ? void 0 : opts.ignoreUndefined) ?? true;\n const aKeys = getObjectKeys(a, ignoreUndefined);\n const bKeys = getObjectKeys(b, ignoreUndefined);\n if (!(opts == null ? void 0 : opts.partial) && aKeys.length !== bKeys.length) {\n return false;\n }\n return bKeys.every((key) => deepEqual(a[key], b[key], opts));\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n return !a.some((item, index) => !deepEqual(item, b[index], opts));\n }\n return false;\n}\nfunction createControlledPromise(onResolve) {\n let resolveLoadPromise;\n let rejectLoadPromise;\n const controlledPromise = new Promise((resolve, reject) => {\n resolveLoadPromise = resolve;\n rejectLoadPromise = reject;\n });\n controlledPromise.status = \"pending\";\n controlledPromise.resolve = (value) => {\n controlledPromise.status = \"resolved\";\n controlledPromise.value = value;\n resolveLoadPromise(value);\n onResolve == null ? void 0 : onResolve(value);\n };\n controlledPromise.reject = (e) => {\n controlledPromise.status = \"rejected\";\n rejectLoadPromise(e);\n };\n return controlledPromise;\n}\nfunction escapeJSON(jsonString) {\n return jsonString.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\").replace(/\"/g, '\\\\\"');\n}\nfunction shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (const item of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objB, item) || !Object.is(objA[item], objB[item])) {\n return false;\n }\n }\n return true;\n}\nfunction hasUriEncodedChars(inputString) {\n const pattern = /%[0-9A-Fa-f]{2}/;\n return pattern.test(inputString);\n}\nexport {\n createControlledPromise,\n deepEqual,\n escapeJSON,\n functionalUpdate,\n hasUriEncodedChars,\n isPlainArray,\n isPlainObject,\n last,\n pick,\n replaceEqualDeep,\n shallow\n};\n//# sourceMappingURL=utils.js.map\n","import { last } from \"./utils.js\";\nfunction joinPaths(paths) {\n return cleanPath(\n paths.filter((val) => {\n return val !== void 0;\n }).join(\"/\")\n );\n}\nfunction cleanPath(path) {\n return path.replace(/\\/{2,}/g, \"/\");\n}\nfunction trimPathLeft(path) {\n return path === \"/\" ? path : path.replace(/^\\/{1,}/, \"\");\n}\nfunction trimPathRight(path) {\n return path === \"/\" ? path : path.replace(/\\/{1,}$/, \"\");\n}\nfunction trimPath(path) {\n return trimPathRight(trimPathLeft(path));\n}\nfunction removeTrailingSlash(value, basepath) {\n if ((value == null ? void 0 : value.endsWith(\"/\")) && value !== \"/\" && value !== `${basepath}/`) {\n return value.slice(0, -1);\n }\n return value;\n}\nfunction exactPathTest(pathName1, pathName2, basepath) {\n return removeTrailingSlash(pathName1, basepath) === removeTrailingSlash(pathName2, basepath);\n}\nfunction resolvePath({\n basepath,\n base,\n to,\n trailingSlash = \"never\",\n caseSensitive\n}) {\n var _a, _b;\n base = removeBasepath(basepath, base, caseSensitive);\n to = removeBasepath(basepath, to, caseSensitive);\n let baseSegments = parsePathname(base);\n const toSegments = parsePathname(to);\n if (baseSegments.length > 1 && ((_a = last(baseSegments)) == null ? void 0 : _a.value) === \"/\") {\n baseSegments.pop();\n }\n toSegments.forEach((toSegment, index) => {\n if (toSegment.value === \"/\") {\n if (!index) {\n baseSegments = [toSegment];\n } else if (index === toSegments.length - 1) {\n baseSegments.push(toSegment);\n } else ;\n } else if (toSegment.value === \"..\") {\n baseSegments.pop();\n } else if (toSegment.value === \".\") ;\n else {\n baseSegments.push(toSegment);\n }\n });\n if (baseSegments.length > 1) {\n if (((_b = last(baseSegments)) == null ? void 0 : _b.value) === \"/\") {\n if (trailingSlash === \"never\") {\n baseSegments.pop();\n }\n } else if (trailingSlash === \"always\") {\n baseSegments.push({ type: \"pathname\", value: \"/\" });\n }\n }\n const joined = joinPaths([basepath, ...baseSegments.map((d) => d.value)]);\n return cleanPath(joined);\n}\nfunction parsePathname(pathname) {\n if (!pathname) {\n return [];\n }\n pathname = cleanPath(pathname);\n const segments = [];\n if (pathname.slice(0, 1) === \"/\") {\n pathname = pathname.substring(1);\n segments.push({\n type: \"pathname\",\n value: \"/\"\n });\n }\n if (!pathname) {\n return segments;\n }\n const split = pathname.split(\"/\").filter(Boolean);\n segments.push(\n ...split.map((part) => {\n if (part === \"$\" || part === \"*\") {\n return {\n type: \"wildcard\",\n value: part\n };\n }\n if (part.charAt(0) === \"$\") {\n return {\n type: \"param\",\n value: part\n };\n }\n return {\n type: \"pathname\",\n value: part.includes(\"%25\") ? part.split(\"%25\").map((segment) => decodeURI(segment)).join(\"%25\") : decodeURI(part)\n };\n })\n );\n if (pathname.slice(-1) === \"/\") {\n pathname = pathname.substring(1);\n segments.push({\n type: \"pathname\",\n value: \"/\"\n });\n }\n return segments;\n}\nfunction interpolatePath({\n path,\n params,\n leaveWildcards,\n leaveParams,\n decodeCharMap\n}) {\n const interpolatedPathSegments = parsePathname(path);\n function encodeParam(key) {\n const value = params[key];\n const isValueString = typeof value === \"string\";\n if ([\"*\", \"_splat\"].includes(key)) {\n return isValueString ? encodeURI(value) : value;\n } else {\n return isValueString ? encodePathParam(value, decodeCharMap) : value;\n }\n }\n const usedParams = {};\n const interpolatedPath = joinPaths(\n interpolatedPathSegments.map((segment) => {\n if (segment.type === \"wildcard\") {\n usedParams._splat = params._splat;\n const value = encodeParam(\"_splat\");\n if (leaveWildcards) return `${segment.value}${value ?? \"\"}`;\n return value;\n }\n if (segment.type === \"param\") {\n const key = segment.value.substring(1);\n usedParams[key] = params[key];\n if (leaveParams) {\n const value = encodeParam(segment.value);\n return `${segment.value}${value ?? \"\"}`;\n }\n return encodeParam(key) ?? \"undefined\";\n }\n return segment.value;\n })\n );\n return { usedParams, interpolatedPath };\n}\nfunction encodePathParam(value, decodeCharMap) {\n let encoded = encodeURIComponent(value);\n if (decodeCharMap) {\n for (const [encodedChar, char] of decodeCharMap) {\n encoded = encoded.replaceAll(encodedChar, char);\n }\n }\n return encoded;\n}\nfunction matchPathname(basepath, currentPathname, matchLocation) {\n const pathParams = matchByPath(basepath, currentPathname, matchLocation);\n if (matchLocation.to && !pathParams) {\n return;\n }\n return pathParams ?? {};\n}\nfunction removeBasepath(basepath, pathname, caseSensitive = false) {\n const normalizedBasepath = caseSensitive ? basepath : basepath.toLowerCase();\n const normalizedPathname = caseSensitive ? pathname : pathname.toLowerCase();\n switch (true) {\n // default behaviour is to serve app from the root - pathname\n // left untouched\n case normalizedBasepath === \"/\":\n return pathname;\n // shortcut for removing the basepath if it matches the pathname\n case normalizedPathname === normalizedBasepath:\n return \"\";\n // in case pathname is shorter than basepath - there is\n // nothing to remove\n case pathname.length < basepath.length:\n return pathname;\n // avoid matching partial segments - strict equality handled\n // earlier, otherwise, basepath separated from pathname with\n // separator, therefore lack of separator means partial\n // segment match (`/app` should not match `/application`)\n case normalizedPathname[normalizedBasepath.length] !== \"/\":\n return pathname;\n // remove the basepath from the pathname if it starts with it\n case normalizedPathname.startsWith(normalizedBasepath):\n return pathname.slice(basepath.length);\n // otherwise, return the pathname as is\n default:\n return pathname;\n }\n}\nfunction matchByPath(basepath, from, matchLocation) {\n if (basepath !== \"/\" && !from.startsWith(basepath)) {\n return void 0;\n }\n from = removeBasepath(basepath, from, matchLocation.caseSensitive);\n const to = removeBasepath(\n basepath,\n `${matchLocation.to ?? \"$\"}`,\n matchLocation.caseSensitive\n );\n const baseSegments = parsePathname(from);\n const routeSegments = parsePathname(to);\n if (!from.startsWith(\"/\")) {\n baseSegments.unshift({\n type: \"pathname\",\n value: \"/\"\n });\n }\n if (!to.startsWith(\"/\")) {\n routeSegments.unshift({\n type: \"pathname\",\n value: \"/\"\n });\n }\n const params = {};\n const isMatch = (() => {\n for (let i = 0; i < Math.max(baseSegments.length, routeSegments.length); i++) {\n const baseSegment = baseSegments[i];\n const routeSegment = routeSegments[i];\n const isLastBaseSegment = i >= baseSegments.length - 1;\n const isLastRouteSegment = i >= routeSegments.length - 1;\n if (routeSegment) {\n if (routeSegment.type === \"wildcard\") {\n const _splat = decodeURI(\n joinPaths(baseSegments.slice(i).map((d) => d.value))\n );\n params[\"*\"] = _splat;\n params[\"_splat\"] = _splat;\n return true;\n }\n if (routeSegment.type === \"pathname\") {\n if (routeSegment.value === \"/\" && !(baseSegment == null ? void 0 : baseSegment.value)) {\n return true;\n }\n if (baseSegment) {\n if (matchLocation.caseSensitive) {\n if (routeSegment.value !== baseSegment.value) {\n return false;\n }\n } else if (routeSegment.value.toLowerCase() !== baseSegment.value.toLowerCase()) {\n return false;\n }\n }\n }\n if (!baseSegment) {\n return false;\n }\n if (routeSegment.type === \"param\") {\n if (baseSegment.value === \"/\") {\n return false;\n }\n if (baseSegment.value.charAt(0) !== \"$\") {\n params[routeSegment.value.substring(1)] = decodeURIComponent(\n baseSegment.value\n );\n }\n }\n }\n if (!isLastBaseSegment && isLastRouteSegment) {\n params[\"**\"] = joinPaths(baseSegments.slice(i + 1).map((d) => d.value));\n return !!matchLocation.fuzzy && (routeSegment == null ? void 0 : routeSegment.value) !== \"/\";\n }\n }\n return true;\n })();\n return isMatch ? params : void 0;\n}\nexport {\n cleanPath,\n exactPathTest,\n interpolatePath,\n joinPaths,\n matchByPath,\n matchPathname,\n parsePathname,\n removeBasepath,\n removeTrailingSlash,\n resolvePath,\n trimPath,\n trimPathLeft,\n trimPathRight\n};\n//# sourceMappingURL=path.js.map\n","function notFound(options = {}) {\n options.isNotFound = true;\n if (options.throw) throw options;\n return options;\n}\nfunction isNotFound(obj) {\n return !!(obj == null ? void 0 : obj.isNotFound);\n}\nexport {\n isNotFound,\n notFound\n};\n//# sourceMappingURL=not-found.js.map\n","import { functionalUpdate } from \"./utils.js\";\nconst storageKey = \"tsr-scroll-restoration-v1_3\";\nlet sessionsStorage = false;\ntry {\n sessionsStorage = typeof window !== \"undefined\" && typeof window.sessionStorage === \"object\";\n} catch {\n}\nconst throttle = (fn, wait) => {\n let timeout;\n return (...args) => {\n if (!timeout) {\n timeout = setTimeout(() => {\n fn(...args);\n timeout = null;\n }, wait);\n }\n };\n};\nconst scrollRestorationCache = sessionsStorage ? (() => {\n const state = JSON.parse(window.sessionStorage.getItem(storageKey) || \"null\") || {};\n return {\n state,\n // This setter is simply to make sure that we set the sessionStorage right\n // after the state is updated. It doesn't necessarily need to be a functional\n // update.\n set: (updater) => (scrollRestorationCache.state = functionalUpdate(updater, scrollRestorationCache.state) || scrollRestorationCache.state, window.sessionStorage.setItem(\n storageKey,\n JSON.stringify(scrollRestorationCache.state)\n ))\n };\n})() : void 0;\nconst defaultGetScrollRestorationKey = (location) => {\n return location.state.key || location.href;\n};\nfunction getCssSelector(el) {\n const path = [];\n let parent;\n while (parent = el.parentNode) {\n path.unshift(\n `${el.tagName}:nth-child(${[].indexOf.call(parent.children, el) + 1})`\n );\n el = parent;\n }\n return `${path.join(\" > \")}`.toLowerCase();\n}\nlet ignoreScroll = false;\nfunction restoreScroll(storageKey2, key, behavior, shouldScrollRestoration, scrollToTopSelectors) {\n var _a;\n let byKey;\n try {\n byKey = JSON.parse(sessionStorage.getItem(storageKey2) || \"{}\");\n } catch (error) {\n console.error(error);\n return;\n }\n const resolvedKey = key || ((_a = window.history.state) == null ? void 0 : _a.key);\n const elementEntries = byKey[resolvedKey];\n ignoreScroll = true;\n (() => {\n if (shouldScrollRestoration && elementEntries) {\n for (const elementSelector in elementEntries) {\n const entry = elementEntries[elementSelector];\n if (elementSelector === \"window\") {\n window.scrollTo({\n top: entry.scrollY,\n left: entry.scrollX,\n behavior\n });\n } else if (elementSelector) {\n const element = document.querySelector(elementSelector);\n if (element) {\n element.scrollLeft = entry.scrollX;\n element.scrollTop = entry.scrollY;\n }\n }\n }\n return;\n }\n const hash = window.location.hash.split(\"#\")[1];\n if (hash) {\n const hashScrollIntoViewOptions = (window.history.state || {}).__hashScrollIntoViewOptions ?? true;\n if (hashScrollIntoViewOptions) {\n const el = document.getElementById(hash);\n if (el) {\n el.scrollIntoView(hashScrollIntoViewOptions);\n }\n }\n return;\n }\n [\n \"window\",\n ...(scrollToTopSelectors == null ? void 0 : scrollToTopSelectors.filter((d) => d !== \"window\")) ?? []\n ].forEach((selector) => {\n const element = selector === \"window\" ? window : document.querySelector(selector);\n if (element) {\n element.scrollTo({\n top: 0,\n left: 0,\n behavior\n });\n }\n });\n })();\n ignoreScroll = false;\n}\nfunction setupScrollRestoration(router, force) {\n const shouldScrollRestoration = force ?? router.options.scrollRestoration ?? false;\n if (shouldScrollRestoration) {\n router.isScrollRestoring = true;\n }\n if (typeof document === \"undefined\" || router.isScrollRestorationSetup) {\n return;\n }\n router.isScrollRestorationSetup = true;\n ignoreScroll = false;\n const getKey = router.options.getScrollRestorationKey || defaultGetScrollRestorationKey;\n window.history.scrollRestoration = \"manual\";\n const onScroll = (event) => {\n if (ignoreScroll || !router.isScrollRestoring) {\n return;\n }\n let elementSelector = \"\";\n if (event.target === document || event.target === window) {\n elementSelector = \"window\";\n } else {\n const attrId = event.target.getAttribute(\n \"data-scroll-restoration-id\"\n );\n if (attrId) {\n elementSelector = `[data-scroll-restoration-id=\"${attrId}\"]`;\n } else {\n elementSelector = getCssSelector(event.target);\n }\n }\n const restoreKey = getKey(router.state.location);\n scrollRestorationCache.set((state) => {\n const keyEntry = state[restoreKey] = state[restoreKey] || {};\n const elementEntry = keyEntry[elementSelector] = keyEntry[elementSelector] || {};\n if (elementSelector === \"window\") {\n elementEntry.scrollX = window.scrollX || 0;\n elementEntry.scrollY = window.scrollY || 0;\n } else if (elementSelector) {\n const element = document.querySelector(elementSelector);\n if (element) {\n elementEntry.scrollX = element.scrollLeft || 0;\n elementEntry.scrollY = element.scrollTop || 0;\n }\n }\n return state;\n });\n };\n if (typeof document !== \"undefined\") {\n document.addEventListener(\"scroll\", throttle(onScroll, 100), true);\n }\n router.subscribe(\"onRendered\", (event) => {\n const cacheKey = getKey(event.toLocation);\n if (!router.resetNextScroll) {\n router.resetNextScroll = true;\n return;\n }\n restoreScroll(\n storageKey,\n cacheKey,\n router.options.scrollRestorationBehavior || void 0,\n router.isScrollRestoring || void 0,\n router.options.scrollToTopSelectors || void 0\n );\n if (router.isScrollRestoring) {\n scrollRestorationCache.set((state) => {\n state[cacheKey] = state[cacheKey] || {};\n return state;\n });\n }\n });\n}\nfunction handleHashScroll(router) {\n if (typeof document !== \"undefined\" && document.querySelector) {\n const hashScrollIntoViewOptions = router.state.location.state.__hashScrollIntoViewOptions ?? true;\n if (hashScrollIntoViewOptions && router.state.location.hash !== \"\") {\n const el = document.getElementById(router.state.location.hash);\n if (el) {\n el.scrollIntoView(hashScrollIntoViewOptions);\n }\n }\n }\n}\nexport {\n defaultGetScrollRestorationKey,\n getCssSelector,\n handleHashScroll,\n restoreScroll,\n scrollRestorationCache,\n setupScrollRestoration,\n storageKey\n};\n//# sourceMappingURL=scroll-restoration.js.map\n","import { hasUriEncodedChars } from \"./utils.js\";\nfunction encode(obj, pfx) {\n const normalizedObject = Object.entries(obj).flatMap(([key, value]) => {\n if (Array.isArray(value)) {\n return value.map((v) => [key, String(v)]);\n } else {\n return [[key, String(value)]];\n }\n });\n const searchParams = new URLSearchParams(normalizedObject);\n return (pfx || \"\") + searchParams.toString();\n}\nfunction toValue(mix) {\n if (!mix) return \"\";\n const str = hasUriEncodedChars(mix) ? decodeURIComponent(mix) : decodeURIComponent(encodeURIComponent(mix));\n if (str === \"false\") return false;\n if (str === \"true\") return true;\n return +str * 0 === 0 && +str + \"\" === str ? +str : str;\n}\nfunction decode(str, pfx) {\n const searchParamsPart = pfx ? str.slice(pfx.length) : str;\n const searchParams = new URLSearchParams(searchParamsPart);\n const entries = [...searchParams.entries()];\n return entries.reduce((acc, [key, value]) => {\n const previousValue = acc[key];\n if (previousValue == null) {\n acc[key] = toValue(value);\n } else {\n acc[key] = Array.isArray(previousValue) ? [...previousValue, toValue(value)] : [previousValue, toValue(value)];\n }\n return acc;\n }, {});\n}\nexport {\n decode,\n encode\n};\n//# sourceMappingURL=qss.js.map\n","import { decode, encode } from \"./qss.js\";\nconst defaultParseSearch = parseSearchWith(JSON.parse);\nconst defaultStringifySearch = stringifySearchWith(\n JSON.stringify,\n JSON.parse\n);\nfunction parseSearchWith(parser) {\n return (searchStr) => {\n if (searchStr.substring(0, 1) === \"?\") {\n searchStr = searchStr.substring(1);\n }\n const query = decode(searchStr);\n for (const key in query) {\n const value = query[key];\n if (typeof value === \"string\") {\n try {\n query[key] = parser(value);\n } catch (err) {\n }\n }\n }\n return query;\n };\n}\nfunction stringifySearchWith(stringify, parser) {\n function stringifyValue(val) {\n if (typeof val === \"object\" && val !== null) {\n try {\n return stringify(val);\n } catch (err) {\n }\n } else if (typeof val === \"string\" && typeof parser === \"function\") {\n try {\n parser(val);\n return stringify(val);\n } catch (err) {\n }\n }\n return val;\n }\n return (search) => {\n search = { ...search };\n Object.keys(search).forEach((key) => {\n const val = search[key];\n if (typeof val === \"undefined\" || val === void 0) {\n delete search[key];\n } else {\n search[key] = stringifyValue(val);\n }\n });\n const searchStr = encode(search).toString();\n return searchStr ? `?${searchStr}` : \"\";\n };\n}\nexport {\n defaultParseSearch,\n defaultStringifySearch,\n parseSearchWith,\n stringifySearchWith\n};\n//# sourceMappingURL=searchParams.js.map\n","const rootRouteId = \"__root__\";\nexport {\n rootRouteId\n};\n//# sourceMappingURL=root.js.map\n","function redirect(opts) {\n opts.isRedirect = true;\n opts.statusCode = opts.statusCode || opts.code || 307;\n opts.headers = opts.headers || {};\n if (!opts.reloadDocument) {\n opts.reloadDocument = false;\n try {\n new URL(`${opts.href}`);\n opts.reloadDocument = true;\n } catch {\n }\n }\n if (opts.throw) {\n throw opts;\n }\n return opts;\n}\nfunction isRedirect(obj) {\n return !!(obj == null ? void 0 : obj.isRedirect);\n}\nfunction isResolvedRedirect(obj) {\n return !!(obj == null ? void 0 : obj.isRedirect) && obj.href;\n}\nexport {\n isRedirect,\n isResolvedRedirect,\n redirect\n};\n//# sourceMappingURL=redirect.js.map\n","import { Store, batch } from \"@tanstack/store\";\nimport { createMemoryHistory, createBrowserHistory, parseHref } from \"@tanstack/history\";\nimport invariant from \"tiny-invariant\";\nimport { pick, createControlledPromise, deepEqual, replaceEqualDeep, last, functionalUpdate } from \"./utils.js\";\nimport { trimPath, trimPathLeft, parsePathname, resolvePath, cleanPath, trimPathRight, matchPathname, interpolatePath, joinPaths } 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 { isResolvedRedirect, isRedirect } from \"./redirect.js\";\nfunction defaultSerializeError(err) {\n if (err instanceof Error) {\n const obj = {\n name: err.name,\n message: err.message\n };\n if (process.env.NODE_ENV === \"development\") {\n obj.stack = err.stack;\n }\n return obj;\n }\n return {\n data: err\n };\n}\nfunction getLocationChangeInfo(routerState) {\n const fromLocation = routerState.resolvedLocation;\n const toLocation = routerState.location;\n const pathChanged = (fromLocation == null ? void 0 : fromLocation.pathname) !== toLocation.pathname;\n const hrefChanged = (fromLocation == null ? void 0 : fromLocation.href) !== toLocation.href;\n const hashChanged = (fromLocation == null ? void 0 : fromLocation.hash) !== toLocation.hash;\n return { fromLocation, toLocation, pathChanged, hrefChanged, hashChanged };\n}\nclass RouterCore {\n /**\n * @deprecated Use the `createRouter` function instead\n */\n constructor(options) {\n this.tempLocationKey = `${Math.round(\n Math.random() * 1e7\n )}`;\n this.resetNextScroll = true;\n this.shouldViewTransition = void 0;\n this.isViewTransitionTypesSupported = void 0;\n this.subscribers = /* @__PURE__ */ new Set();\n this.isScrollRestoring = false;\n this.isScrollRestorationSetup = false;\n this.startTransition = (fn) => fn();\n this.update = (newOptions) => {\n var _a;\n if (newOptions.notFoundRoute) {\n console.warn(\n \"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 );\n }\n const previousOptions = this.options;\n this.options = {\n ...this.options,\n ...newOptions\n };\n this.isServer = this.options.isServer ?? typeof document === \"undefined\";\n this.pathParamsDecodeCharMap = this.options.pathParamsAllowedCharacters ? new Map(\n this.options.pathParamsAllowedCharacters.map((char) => [\n encodeURIComponent(char),\n char\n ])\n ) : void 0;\n if (!this.basepath || newOptions.basepath && newOptions.basepath !== previousOptions.basepath) {\n if (newOptions.basepath === void 0 || newOptions.basepath === \"\" || newOptions.basepath === \"/\") {\n this.basepath = \"/\";\n } else {\n this.basepath = `/${trimPath(newOptions.basepath)}`;\n }\n }\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n !this.history || this.options.history && this.options.history !== this.history\n ) {\n this.history = this.options.history ?? (this.isServer ? createMemoryHistory({\n initialEntries: [this.basepath || \"/\"]\n }) : createBrowserHistory());\n this.latestLocation = this.parseLocation();\n }\n if (this.options.routeTree !== this.routeTree) {\n this.routeTree = this.options.routeTree;\n this.buildRouteTree();\n }\n if (!this.__store) {\n this.__store = new Store(getInitialRouterState(this.latestLocation), {\n onUpdate: () => {\n this.__store.state = {\n ...this.state,\n cachedMatches: this.state.cachedMatches.filter(\n (d) => ![\"redirected\"].includes(d.status)\n )\n };\n }\n });\n setupScrollRestoration(this);\n }\n if (typeof window !== \"undefined\" && \"CSS\" in window && // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n typeof ((_a = window.CSS) == null ? void 0 : _a.supports) === \"function\") {\n this.isViewTransitionTypesSupported = window.CSS.supports(\n \"selector(:active-view-transition-type(a)\"\n );\n }\n };\n this.buildRouteTree = () => {\n this.routesById = {};\n this.routesByPath = {};\n const notFoundRoute = this.options.notFoundRoute;\n if (notFoundRoute) {\n notFoundRoute.init({\n originalIndex: 99999999999,\n defaultSsr: this.options.defaultSsr\n });\n this.routesById[notFoundRoute.id] = notFoundRoute;\n }\n const recurseRoutes = (childRoutes) => {\n childRoutes.forEach((childRoute, i) => {\n childRoute.init({\n originalIndex: i,\n defaultSsr: this.options.defaultSsr\n });\n const existingRoute = this.routesById[childRoute.id];\n invariant(\n !existingRoute,\n `Duplicate routes found with id: ${String(childRoute.id)}`\n );\n this.routesById[childRoute.id] = childRoute;\n if (!childRoute.isRoot && childRoute.path) {\n const trimmedFullPath = trimPathRight(childRoute.fullPath);\n if (!this.routesByPath[trimmedFullPath] || childRoute.fullPath.endsWith(\"/\")) {\n this.routesByPath[trimmedFullPath] = childRoute;\n }\n }\n const children = childRoute.children;\n if (children == null ? void 0 : children.length) {\n recurseRoutes(children);\n }\n });\n };\n recurseRoutes([this.routeTree]);\n const scoredRoutes = [];\n const routes = Object.values(this.routesById);\n routes.forEach((d, i) => {\n var _a;\n if (d.isRoot || !d.path) {\n return;\n }\n const trimmed = trimPathLeft(d.fullPath);\n const parsed = parsePathname(trimmed);\n while (parsed.length > 1 && ((_a = parsed[0]) == null ? void 0 : _a.value) === \"/\") {\n parsed.shift();\n }\n const scores = parsed.map((segment) => {\n if (segment.value === \"/\") {\n return 0.75;\n }\n if (segment.type === \"param\") {\n return 0.5;\n }\n if (segment.type === \"wildcard\") {\n return 0.25;\n }\n return 1;\n });\n scoredRoutes.push({ child: d, trimmed, parsed, index: i, scores });\n });\n this.flatRoutes = scoredRoutes.sort((a, b) => {\n const minLength = Math.min(a.scores.length, b.scores.length);\n for (let i = 0; i < minLength; i++) {\n if (a.scores[i] !== b.scores[i]) {\n return b.scores[i] - a.scores[i];\n }\n }\n if (a.scores.length !== b.scores.length) {\n return b.scores.length - a.scores.length;\n }\n for (let i = 0; i < minLength; i++) {\n if (a.parsed[i].value !== b.parsed[i].value) {\n return a.parsed[i].value > b.parsed[i].value ? 1 : -1;\n }\n }\n return a.index - b.index;\n }).map((d, i) => {\n d.child.rank = i;\n return d.child;\n });\n };\n this.subscribe = (eventType, fn) => {\n const listener = {\n eventType,\n fn\n };\n this.subscribers.add(listener);\n return () => {\n this.subscribers.delete(listener);\n };\n };\n this.emit = (routerEvent) => {\n this.subscribers.forEach((listener) => {\n if (listener.eventType === routerEvent.type) {\n listener.fn(routerEvent);\n }\n });\n };\n this.parseLocation = (previousLocation, locationToParse) => {\n const parse = ({\n pathname,\n search,\n hash,\n state\n }) => {\n const parsedSearch = this.options.parseSearch(search);\n const searchStr = this.options.stringifySearch(parsedSearch);\n return {\n pathname,\n searchStr,\n search: replaceEqualDeep(previousLocation == null ? void 0 : previousLocation.search, parsedSearch),\n hash: hash.split(\"#\").reverse()[0] ?? \"\",\n href: `${pathname}${searchStr}${hash}`,\n state: replaceEqualDeep(previousLocation == null ? void 0 : previousLocation.state, state)\n };\n };\n const location = parse(locationToParse ?? this.history.location);\n const { __tempLocation, __tempKey } = location.state;\n if (__tempLocation && (!__tempKey || __tempKey === this.tempLocationKey)) {\n const parsedTempLocation = parse(__tempLocation);\n parsedTempLocation.state.key = location.state.key;\n delete parsedTempLocation.state.__tempLocation;\n return {\n ...parsedTempLocation,\n maskedLocation: location\n };\n }\n return location;\n };\n this.resolvePathWithBase = (from, path) => {\n const resolvedPath = resolvePath({\n basepath: this.basepath,\n base: from,\n to: cleanPath(path),\n trailingSlash: this.options.trailingSlash,\n caseSensitive: this.options.caseSensitive\n });\n return resolvedPath;\n };\n this.matchRoutes = (pathnameOrNext, locationSearchOrOpts, opts) => {\n if (typeof pathnameOrNext === \"string\") {\n return this.matchRoutesInternal(\n {\n pathname: pathnameOrNext,\n search: locationSearchOrOpts\n },\n opts\n );\n } else {\n return this.matchRoutesInternal(pathnameOrNext, locationSearchOrOpts);\n }\n };\n this.getMatchedRoutes = (next, dest) => {\n let routeParams = {};\n const trimmedPath = trimPathRight(next.pathname);\n const getMatchedParams = (route) => {\n const result = matchPathname(this.basepath, trimmedPath, {\n to: route.fullPath,\n caseSensitive: route.options.caseSensitive ?? this.options.caseSensitive,\n fuzzy: true\n });\n return result;\n };\n let foundRoute = (dest == null ? void 0 : dest.to) !== void 0 ? this.routesByPath[dest.to] : void 0;\n if (foundRoute) {\n routeParams = getMatchedParams(foundRoute);\n } else {\n foundRoute = this.flatRoutes.find((route) => {\n const matchedParams = getMatchedParams(route);\n if (matchedParams) {\n routeParams = matchedParams;\n return true;\n }\n return false;\n });\n }\n let routeCursor = foundRoute || this.routesById[rootRouteId];\n const matchedRoutes = [routeCursor];\n while (routeCursor.parentRoute) {\n routeCursor = routeCursor.parentRoute;\n matchedRoutes.unshift(routeCursor);\n }\n return { matchedRoutes, routeParams, foundRoute };\n };\n this.cancelMatch = (id) => {\n const match = this.getMatch(id);\n if (!match) return;\n match.abortController.abort();\n clearTimeout(match.pendingTimeout);\n };\n this.cancelMatches = () => {\n var _a;\n (_a = this.state.pendingMatches) == null ? void 0 : _a.forEach((match) => {\n this.cancelMatch(match.id);\n });\n };\n this.buildLocation = (opts) => {\n const build = (dest = {}, matchedRoutesResult) => {\n var _a, _b, _c, _d, _e, _f, _g;\n const fromMatches = dest._fromLocation ? this.matchRoutes(dest._fromLocation, { _buildLocation: true }) : this.state.matches;\n const fromMatch = dest.from != null ? fromMatches.find(\n (d) => matchPathname(this.basepath, trimPathRight(d.pathname), {\n to: dest.from,\n caseSensitive: false,\n fuzzy: false\n })\n ) : void 0;\n const fromPath = (fromMatch == null ? void 0 : fromMatch.pathname) || this.latestLocation.pathname;\n invariant(\n dest.from == null || fromMatch != null,\n \"Could not find match for from: \" + dest.from\n );\n const fromSearch = ((_a = this.state.pendingMatches) == null ? void 0 : _a.length) ? (_b = last(this.state.pendingMatches)) == null ? void 0 : _b.search : ((_c = last(fromMatches)) == null ? void 0 : _c.search) || this.latestLocation.search;\n const stayingMatches = matchedRoutesResult == null ? void 0 : matchedRoutesResult.matchedRoutes.filter(\n (d) => fromMatches.find((e) => e.routeId === d.id)\n );\n let pathname;\n if (dest.to) {\n const resolvePathTo = (fromMatch == null ? void 0 : fromMatch.fullPath) || ((_d = last(fromMatches)) == null ? void 0 : _d.fullPath) || this.latestLocation.pathname;\n pathname = this.resolvePathWithBase(resolvePathTo, `${dest.to}`);\n } else {\n const fromRouteByFromPathRouteId = this.routesById[(_e = stayingMatches == null ? void 0 : stayingMatches.find((route) => {\n const interpolatedPath = interpolatePath({\n path: route.fullPath,\n params: (matchedRoutesResult == null ? void 0 : matchedRoutesResult.routeParams) ?? {},\n decodeCharMap: this.pathParamsDecodeCharMap\n }).interpolatedPath;\n const pathname2 = joinPaths([this.basepath, interpolatedPath]);\n return pathname2 === fromPath;\n })) == null ? void 0 : _e.id];\n pathname = this.resolvePathWithBase(\n fromPath,\n (fromRouteByFromPathRouteId == null ? void 0 : fromRouteByFromPathRouteId.to) ?? fromPath\n );\n }\n const prevParams = { ...(_f = last(fromMatches)) == null ? void 0 : _f.params };\n let nextParams = (dest.params ?? true) === true ? prevParams : {\n ...prevParams,\n ...functionalUpdate(dest.params, prevParams)\n };\n if (Object.keys(nextParams).length > 0) {\n matchedRoutesResult == null ? void 0 : matchedRoutesResult.matchedRoutes.map((route) => {\n var _a2;\n return ((_a2 = route.options.params) == null ? void 0 : _a2.stringify) ?? route.options.stringifyParams;\n }).filter(Boolean).forEach((fn) => {\n nextParams = { ...nextParams, ...fn(nextParams) };\n });\n }\n pathname = interpolatePath({\n path: pathname,\n params: nextParams ?? {},\n leaveWildcards: false,\n leaveParams: opts.leaveParams,\n decodeCharMap: this.pathParamsDecodeCharMap\n }).interpolatedPath;\n let search = fromSearch;\n if (opts._includeValidateSearch && ((_g = this.options.search) == null ? void 0 : _g.strict)) {\n let validatedSearch = {};\n matchedRoutesResult == null ? void 0 : matchedRoutesResult.matchedRoutes.forEach((route) => {\n try {\n if (route.options.validateSearch) {\n validatedSearch = {\n ...validatedSearch,\n ...validateSearch(route.options.validateSearch, {\n ...validatedSearch,\n ...search\n }) ?? {}\n };\n }\n } catch {\n }\n });\n search = validatedSearch;\n }\n const applyMiddlewares = (search2) => {\n const allMiddlewares = (matchedRoutesResult == null ? void 0 : matchedRoutesResult.matchedRoutes.reduce(\n (acc, route) => {\n var _a2;\n const middlewares = [];\n if (\"search\" in route.options) {\n if ((_a2 = route.options.search) == null ? void 0 : _a2.middlewares) {\n middlewares.push(...route.options.search.middlewares);\n }\n } else if (route.options.preSearchFilters || route.options.postSearchFilters) {\n const legacyMiddleware = ({\n search: search3,\n next\n }) => {\n let nextSearch = search3;\n if (\"preSearchFilters\" in route.options && route.options.preSearchFilters) {\n nextSearch = route.options.preSearchFilters.reduce(\n (prev, next2) => next2(prev),\n search3\n );\n }\n const result = next(nextSearch);\n if (\"postSearchFilters\" in route.options && route.options.postSearchFilters) {\n return route.options.postSearchFilters.reduce(\n (prev, next2) => next2(prev),\n result\n );\n }\n return result;\n };\n middlewares.push(legacyMiddleware);\n }\n if (opts._includeValidateSearch && route.options.validateSearch) {\n const validate = ({ search: search3, next }) => {\n const result = next(search3);\n try {\n const validatedSearch = {\n ...result,\n ...validateSearch(\n route.options.validateSearch,\n result\n ) ?? {}\n };\n return validatedSearch;\n } catch {\n return result;\n }\n };\n middlewares.push(validate);\n }\n return acc.concat(middlewares);\n },\n []\n )) ?? [];\n const final = ({ search: search3 }) => {\n if (!dest.search) {\n return {};\n }\n if (dest.search === true) {\n return search3;\n }\n return functionalUpdate(dest.search, search3);\n };\n allMiddlewares.push(final);\n const applyNext = (index, currentSearch) => {\n if (index >= allMiddlewares.length) {\n return currentSearch;\n }\n const middleware = allMiddlewares[index];\n const next = (newSearch) => {\n return applyNext(index + 1, newSearch);\n };\n return middleware({ search: currentSearch, next });\n };\n return applyNext(0, search2);\n };\n search = applyMiddlewares(search);\n search = replaceEqualDeep(fromSearch, search);\n const searchStr = this.options.stringifySearch(search);\n const hash = dest.hash === true ? this.latestLocation.hash : dest.hash ? functionalUpdate(dest.hash, this.latestLocation.hash) : void 0;\n const hashStr = hash ? `#${hash}` : \"\";\n let nextState = dest.state === true ? this.latestLocation.state : dest.state ? functionalUpdate(dest.state, this.latestLocation.state) : {};\n nextState = replaceEqualDeep(this.latestLocation.state, nextState);\n return {\n pathname,\n search,\n searchStr,\n state: nextState,\n hash: hash ?? \"\",\n href: `${pathname}${searchStr}${hashStr}`,\n unmaskOnReload: dest.unmaskOnReload\n };\n };\n const buildWithMatches = (dest = {}, maskedDest) => {\n var _a;\n const next = build(dest);\n let maskedNext = maskedDest ? build(maskedDest) : void 0;\n if (!maskedNext) {\n let params = {};\n const foundMask = (_a = this.options.routeMasks) == null ? void 0 : _a.find((d) => {\n const match = matchPathname(this.basepath, next.pathname, {\n to: d.from,\n caseSensitive: false,\n fuzzy: false\n });\n if (match) {\n params = match;\n return true;\n }\n return false;\n });\n if (foundMask) {\n const { from: _from, ...maskProps } = foundMask;\n maskedDest = {\n ...pick(opts, [\"from\"]),\n ...maskProps,\n params\n };\n maskedNext = build(maskedDest);\n }\n }\n const nextMatches = this.getMatchedRoutes(next, dest);\n const final = build(dest, nextMatches);\n if (maskedNext) {\n const maskedMatches = this.getMatchedRoutes(maskedNext, maskedDest);\n const maskedFinal = build(maskedDest, maskedMatches);\n final.maskedLocation = maskedFinal;\n }\n return final;\n };\n if (opts.mask) {\n return buildWithMatches(opts, {\n ...pick(opts, [\"from\"]),\n ...opts.mask\n });\n }\n return buildWithMatches(opts);\n };\n this.commitLocation = ({\n viewTransition,\n ignoreBlocker,\n ...next\n }) => {\n const isSameState = () => {\n const ignoredProps = [\n \"key\",\n \"__TSR_index\",\n \"__hashScrollIntoViewOptions\"\n ];\n ignoredProps.forEach((prop) => {\n next.state[prop] = this.latestLocation.state[prop];\n });\n const isEqual = deepEqual(next.state, this.latestLocation.state);\n ignoredProps.forEach((prop) => {\n delete next.state[prop];\n });\n return isEqual;\n };\n const isSameUrl = this.latestLocation.href === next.href;\n const previousCommitPromise = this.commitLocationPromise;\n this.commitLocationPromise = createControlledPromise(() => {\n previousCommitPromise == null ? void 0 : previousCommitPromise.resolve();\n });\n if (isSameUrl && isSameState()) {\n this.load();\n } else {\n let { maskedLocation, hashScrollIntoView, ...nextHistory } = next;\n if (maskedLocation) {\n nextHistory = {\n ...maskedLocation,\n state: {\n ...maskedLocation.state,\n __tempKey: void 0,\n __tempLocation: {\n ...nextHistory,\n search: nextHistory.searchStr,\n state: {\n ...nextHistory.state,\n __tempKey: void 0,\n __tempLocation: void 0,\n key: void 0\n }\n }\n }\n };\n if (nextHistory.unmaskOnReload ?? this.options.unmaskOnReload ?? false) {\n nextHistory.state.__tempKey = this.tempLocationKey;\n }\n }\n nextHistory.state.__hashScrollIntoViewOptions = hashScrollIntoView ?? this.options.defaultHashScrollIntoView ?? true;\n this.shouldViewTransition = viewTransition;\n this.history[next.replace ? \"replace\" : \"push\"](\n nextHistory.href,\n nextHistory.state,\n { ignoreBlocker }\n );\n }\n this.resetNextScroll = next.resetScroll ?? true;\n if (!this.history.subscribers.size) {\n this.load();\n }\n return this.commitLocationPromise;\n };\n this.buildAndCommitLocation = ({\n replace,\n resetScroll,\n hashScrollIntoView,\n viewTransition,\n ignoreBlocker,\n href,\n ...rest\n } = {}) => {\n if (href) {\n const currentIndex = this.history.location.state.__TSR_index;\n const parsed = parseHref(href, {\n __TSR_index: replace ? currentIndex : currentIndex + 1\n });\n rest.to = parsed.pathname;\n rest.search = this.options.parseSearch(parsed.search);\n rest.hash = parsed.hash.slice(1);\n }\n const location = this.buildLocation({\n ...rest,\n _includeValidateSearch: true\n });\n return this.commitLocation({\n ...location,\n viewTransition,\n replace,\n resetScroll,\n hashScrollIntoView,\n ignoreBlocker\n });\n };\n this.navigate = ({ to, reloadDocument, href, ...rest }) => {\n if (reloadDocument) {\n if (!href) {\n const location = this.buildLocation({ to, ...rest });\n href = this.history.createHref(location.href);\n }\n if (rest.replace) {\n window.location.replace(href);\n } else {\n window.location.href = href;\n }\n return;\n }\n return this.buildAndCommitLocation({\n ...rest,\n href,\n to\n });\n };\n this.load = async (opts) => {\n this.latestLocation = this.parseLocation(this.latestLocation);\n let redirect;\n let notFound;\n let loadPromise;\n loadPromise = new Promise((resolve) => {\n this.startTransition(async () => {\n var _a;\n try {\n const next = this.latestLocation;\n const prevLocation = this.state.resolvedLocation;\n this.cancelMatches();\n let pendingMatches;\n batch(() => {\n pendingMatches = this.matchRoutes(next);\n this.__store.setState((s) => ({\n ...s,\n status: \"pending\",\n isLoading: true,\n location: next,\n pendingMatches,\n // If a cached moved to pendingMatches, remove it from cachedMatches\n cachedMatches: s.cachedMatches.filter((d) => {\n return !pendingMatches.find((e) => e.id === d.id);\n })\n }));\n });\n if (!this.state.redirect) {\n this.emit({\n type: \"onBeforeNavigate\",\n ...getLocationChangeInfo({\n resolvedLocation: prevLocation,\n location: next\n })\n });\n }\n this.emit({\n type: \"onBeforeLoad\",\n ...getLocationChangeInfo({\n resolvedLocation: prevLocation,\n location: next\n })\n });\n await this.loadMatches({\n sync: opts == null ? void 0 : opts.sync,\n matches: pendingMatches,\n location: next,\n // eslint-disable-next-line @typescript-eslint/require-await\n onReady: async () => {\n this.startViewTransition(async () => {\n let exitingMatches;\n let enteringMatches;\n let stayingMatches;\n batch(() => {\n this.__store.setState((s) => {\n const previousMatches = s.matches;\n const newMatches = s.pendingMatches || s.matches;\n exitingMatches = previousMatches.filter(\n (match) => !newMatches.find((d) => d.id === match.id)\n );\n enteringMatches = newMatches.filter(\n (match) => !previousMatches.find((d) => d.id === match.id)\n );\n stayingMatches = previousMatches.filter(\n (match) => newMatches.find((d) => d.id === match.id)\n );\n return {\n ...s,\n isLoading: false,\n loadedAt: Date.now(),\n matches: newMatches,\n pendingMatches: void 0,\n cachedMatches: [\n ...s.cachedMatches,\n ...exitingMatches.filter((d) => d.status !== \"error\")\n ]\n };\n });\n this.clearExpiredCache();\n });\n [\n [exitingMatches, \"onLeave\"],\n [enteringMatches, \"onEnter\"],\n [stayingMatches, \"onStay\"]\n ].forEach(([matches, hook]) => {\n matches.forEach((match) => {\n var _a2, _b;\n (_b = (_a2 = this.looseRoutesById[match.routeId].options)[hook]) == null ? void 0 : _b.call(_a2, match);\n });\n });\n });\n }\n });\n } catch (err) {\n if (isResolvedRedirect(err)) {\n redirect = err;\n if (!this.isServer) {\n this.navigate({\n ...redirect,\n replace: true,\n ignoreBlocker: true\n });\n }\n } else if (isNotFound(err)) {\n notFound = err;\n }\n this.__store.setState((s) => ({\n ...s,\n statusCode: redirect ? redirect.statusCode : notFound ? 404 : s.matches.some((d) => d.status === \"error\") ? 500 : 200,\n redirect\n }));\n }\n if (this.latestLoadPromise === loadPromise) {\n (_a = this.commitLocationPromise) == null ? void 0 : _a.resolve();\n this.latestLoadPromise = void 0;\n this.commitLocationPromise = void 0;\n }\n resolve();\n });\n });\n this.latestLoadPromise = loadPromise;\n await loadPromise;\n while (this.latestLoadPromise && loadPromise !== this.latestLoadPromise) {\n await this.latestLoadPromise;\n }\n if (this.hasNotFoundMatch()) {\n this.__store.setState((s) => ({\n ...s,\n statusCode: 404\n }));\n }\n };\n this.startViewTransition = (fn) => {\n const shouldViewTransition = this.shouldViewTransition ?? this.options.defaultViewTransition;\n delete this.shouldViewTransition;\n if (shouldViewTransition && typeof document !== \"undefined\" && \"startViewTransition\" in document && typeof document.startViewTransition === \"function\") {\n let startViewTransitionParams;\n if (typeof shouldViewTransition === \"object\" && this.isViewTransitionTypesSupported) {\n startViewTransitionParams = {\n update: fn,\n types: shouldViewTransition.types\n };\n } else {\n startViewTransitionParams = fn;\n }\n document.startViewTransition(startViewTransitionParams);\n } else {\n fn();\n }\n };\n this.updateMatch = (id, updater) => {\n var _a;\n let updated;\n const isPending = (_a = this.state.pendingMatches) == null ? void 0 : _a.find((d) => d.id === id);\n const isMatched = this.state.matches.find((d) => d.id === id);\n const isCached = this.state.cachedMatches.find((d) => d.id === id);\n const matchesKey = isPending ? \"pendingMatches\" : isMatched ? \"matches\" : isCached ? \"cachedMatches\" : \"\";\n if (matchesKey) {\n this.__store.setState((s) => {\n var _a2;\n return {\n ...s,\n [matchesKey]: (_a2 = s[matchesKey]) == null ? void 0 : _a2.map(\n (d) => d.id === id ? updated = updater(d) : d\n )\n };\n });\n }\n return updated;\n };\n this.getMatch = (matchId) => {\n return [\n ...this.state.cachedMatches,\n ...this.state.pendingMatches ?? [],\n ...this.state.matches\n ].find((d) => d.id === matchId);\n };\n this.loadMatches = async ({\n location,\n matches,\n preload: allPreload,\n onReady,\n updateMatch = this.updateMatch,\n sync\n }) => {\n let firstBadMatchIndex;\n let rendered = false;\n const triggerOnReady = async () => {\n if (!rendered) {\n rendered = true;\n await (onReady == null ? void 0 : onReady());\n }\n };\n const resolvePreload = (matchId) => {\n return !!(allPreload && !this.state.matches.find((d) => d.id === matchId));\n };\n if (!this.isServer && !this.state.matches.length) {\n triggerOnReady();\n }\n const handleRedirectAndNotFound = (match, err) => {\n var _a, _b, _c, _d;\n if (isResolvedRedirect(err)) {\n if (!err.reloadDocument) {\n throw err;\n }\n }\n if (isRedirect(err) || isNotFound(err)) {\n updateMatch(match.id, (prev) => ({\n ...prev,\n status: isRedirect(err) ? \"redirected\" : isNotFound(err) ? \"notFound\" : \"error\",\n isFetching: false,\n error: err,\n beforeLoadPromise: void 0,\n loaderPromise: void 0\n }));\n if (!err.routeId) {\n err.routeId = match.routeId;\n }\n (_a = match.beforeLoadPromise) == null ? void 0 : _a.resolve();\n (_b = match.loaderPromise) == null ? void 0 : _b.resolve();\n (_c = match.loadPromise) == null ? void 0 : _c.resolve();\n if (isRedirect(err)) {\n rendered = true;\n err = this.resolveRedirect({ ...err, _fromLocation: location });\n throw err;\n } else if (isNotFound(err)) {\n this._handleNotFound(matches, err, {\n updateMatch\n });\n (_d = this.serverSsr) == null ? void 0 : _d.onMatchSettled({\n router: this,\n match: this.getMatch(match.id)\n });\n throw err;\n }\n }\n };\n try {\n await new Promise((resolveAll, rejectAll) => {\n ;\n (async () => {\n var _a, _b, _c, _d;\n try {\n const handleSerialError = (index, err, routerCode) => {\n var _a2, _b2;\n const { id: matchId, routeId } = matches[index];\n const route = this.looseRoutesById[routeId];\n if (err instanceof Promise) {\n throw err;\n }\n err.routerCode = routerCode;\n firstBadMatchIndex = firstBadMatchIndex ?? index;\n handleRedirectAndNotFound(this.getMatch(matchId), err);\n try {\n (_b2 = (_a2 = route.options).onError) == null ? void 0 : _b2.call(_a2, err);\n } catch (errorHandlerErr) {\n err = errorHandlerErr;\n handleRedirectAndNotFound(this.getMatch(matchId), err);\n }\n updateMatch(matchId, (prev) => {\n var _a3, _b3;\n (_a3 = prev.beforeLoadPromise) == null ? void 0 : _a3.resolve();\n (_b3 = prev.loadPromise) == null ? void 0 : _b3.resolve();\n return {\n ...prev,\n error: err,\n status: \"error\",\n isFetching: false,\n updatedAt: Date.now(),\n abortController: new AbortController(),\n beforeLoadPromise: void 0\n };\n });\n };\n for (const [index, { id: matchId, routeId }] of matches.entries()) {\n const existingMatch = this.getMatch(matchId);\n const parentMatchId = (_a = matches[index - 1]) == null ? void 0 : _a.id;\n const route = this.looseRoutesById[routeId];\n const pendingMs = route.options.pendingMs ?? this.options.defaultPendingMs;\n const shouldPending = !!(onReady && !this.isServer && !resolvePreload(matchId) && (route.options.loader || route.options.beforeLoad) && typeof pendingMs === \"number\" && pendingMs !== Infinity && (route.options.pendingComponent ?? ((_b = this.options) == null ? void 0 : _b.defaultPendingComponent)));\n let executeBeforeLoad = true;\n if (\n // If we are in the middle of a load, either of these will be present\n // (not to be confused with `loadPromise`, which is always defined)\n existingMatch.beforeLoadPromise || existingMatch.loaderPromise\n ) {\n if (shouldPending) {\n setTimeout(() => {\n try {\n triggerOnReady();\n } catch {\n }\n }, pendingMs);\n }\n await existingMatch.beforeLoadPromise;\n executeBeforeLoad = this.getMatch(matchId).status !== \"success\";\n }\n if (executeBeforeLoad) {\n try {\n updateMatch(matchId, (prev) => {\n const prevLoadPromise = prev.loadPromise;\n return {\n ...prev,\n loadPromise: createControlledPromise(() => {\n prevLoadPromise == null ? void 0 : prevLoadPromise.resolve();\n }),\n beforeLoadPromise: createControlledPromise()\n };\n });\n const abortController = new AbortController();\n let pendingTimeout;\n if (shouldPending) {\n pendingTimeout = setTimeout(() => {\n try {\n triggerOnReady();\n } catch {\n }\n }, pendingMs);\n }\n const { paramsError, searchError } = this.getMatch(matchId);\n if (paramsError) {\n handleSerialError(index, paramsError, \"PARSE_PARAMS\");\n }\n if (searchError) {\n handleSerialError(index, searchError, \"VALIDATE_SEARCH\");\n }\n const getParentMatchContext = () => parentMatchId ? this.getMatch(parentMatchId).context : this.options.context ?? {};\n updateMatch(matchId, (prev) => ({\n ...prev,\n isFetching: \"beforeLoad\",\n fetchCount: prev.fetchCount + 1,\n abortController,\n pendingTimeout,\n context: {\n ...getParentMatchContext(),\n ...prev.__routeContext\n }\n }));\n const { search, params, context, cause } = this.getMatch(matchId);\n const preload = resolvePreload(matchId);\n const beforeLoadFnContext = {\n search,\n abortController,\n params,\n preload,\n context,\n location,\n navigate: (opts) => this.navigate({ ...opts, _fromLocation: location }),\n buildLocation: this.buildLocation,\n cause: preload ? \"preload\" : cause,\n matches\n };\n const beforeLoadContext = await ((_d = (_c = route.options).beforeLoad) == null ? void 0 : _d.call(_c, beforeLoadFnContext)) ?? {};\n if (isRedirect(beforeLoadContext) || isNotFound(beforeLoadContext)) {\n handleSerialError(index, beforeLoadContext, \"BEFORE_LOAD\");\n }\n updateMatch(matchId, (prev) => {\n return {\n ...prev,\n __beforeLoadContext: beforeLoadContext,\n context: {\n ...getParentMatchContext(),\n ...prev.__routeContext,\n ...beforeLoadContext\n },\n abortController\n };\n });\n } catch (err) {\n handleSerialError(index, err, \"BEFORE_LOAD\");\n }\n updateMatch(matchId, (prev) => {\n var _a2;\n (_a2 = prev.beforeLoadPromise) == null ? void 0 : _a2.resolve();\n return {\n ...prev,\n beforeLoadPromise: void 0,\n isFetching: false\n };\n });\n }\n }\n const validResolvedMatches = matches.slice(0, firstBadMatchIndex);\n const matchPromises = [];\n validResolvedMatches.forEach(({ id: matchId, routeId }, index) => {\n matchPromises.push(\n (async () => {\n const { loaderPromise: prevLoaderPromise } = this.getMatch(matchId);\n let loaderShouldRunAsync = false;\n let loaderIsRunningAsync = false;\n if (prevLoaderPromise) {\n await prevLoaderPromise;\n const match = this.getMatch(matchId);\n if (match.error) {\n handleRedirectAndNotFound(match, match.error);\n }\n } else {\n const parentMatchPromise = matchPromises[index - 1];\n const route = this.looseRoutesById[routeId];\n const getLoaderContext = () => {\n const {\n params,\n loaderDeps,\n abortController,\n context,\n cause\n } = this.getMatch(matchId);\n const preload2 = resolvePreload(matchId);\n return {\n params,\n deps: loaderDeps,\n preload: !!preload2,\n parentMatchPromise,\n abortController,\n context,\n location,\n navigate: (opts) => this.navigate({ ...opts, _fromLocation: location }),\n cause: preload2 ? \"preload\" : cause,\n route\n };\n };\n const age = Date.now() - this.getMatch(matchId).updatedAt;\n const preload = resolvePreload(matchId);\n const staleAge = preload ? route.options.preloadStaleTime ?? this.options.defaultPreloadStaleTime ?? 3e4 : route.options.staleTime ?? this.options.defaultStaleTime ?? 0;\n const shouldReloadOption = route.options.shouldReload;\n const shouldReload = typeof shouldReloadOption === \"function\" ? shouldReloadOption(getLoaderContext()) : shouldReloadOption;\n updateMatch(matchId, (prev) => ({\n ...prev,\n loaderPromise: createControlledPromise(),\n preload: !!preload && !this.state.matches.find((d) => d.id === matchId)\n }));\n const runLoader = async () => {\n var _a2, _b2, _c2, _d2, _e, _f, _g, _h, _i, _j, _k;\n try {\n const potentialPendingMinPromise = async () => {\n const latestMatch = this.getMatch(matchId);\n if (latestMatch.minPendingPromise) {\n await latestMatch.minPendingPromise;\n }\n };\n try {\n this.loadRouteChunk(route);\n updateMatch(matchId, (prev) => ({\n ...prev,\n isFetching: \"loader\"\n }));\n const loaderData = await ((_b2 = (_a2 = route.options).loader) == null ? void 0 : _b2.call(_a2, getLoaderContext()));\n handleRedirectAndNotFound(\n this.getMatch(matchId),\n loaderData\n );\n await route._lazyPromise;\n await potentialPendingMinPromise();\n const assetContext = {\n matches,\n match: this.getMatch(matchId),\n params: this.getMatch(matchId).params,\n loaderData\n };\n const headFnContent = (_d2 = (_c2 = route.options).head) == null ? void 0 : _d2.call(_c2, assetContext);\n const meta = headFnContent == null ? void 0 : headFnContent.meta;\n const links = headFnContent == null ? void 0 : headFnContent.links;\n const headScripts = headFnContent == null ? void 0 : headFnContent.scripts;\n const scripts = (_f = (_e = route.options).scripts) == null ? void 0 : _f.call(_e, assetContext);\n const headers = (_h = (_g = route.options).headers) == null ? void 0 : _h.call(_g, {\n loaderData\n });\n updateMatch(matchId, (prev) => ({\n ...prev,\n error: void 0,\n status: \"success\",\n isFetching: false,\n updatedAt: Date.now(),\n loaderData,\n meta,\n links,\n headScripts,\n headers,\n scripts\n }));\n } catch (e) {\n let error = e;\n await potentialPendingMinPromise();\n handleRedirectAndNotFound(this.getMatch(matchId), e);\n try {\n (_j = (_i = route.options).onError) == null ? void 0 : _j.call(_i, e);\n } catch (onErrorError) {\n error = onErrorError;\n handleRedirectAndNotFound(\n this.getMatch(matchId),\n onErrorError\n );\n }\n updateMatch(matchId, (prev) => ({\n ...prev,\n error,\n status: \"error\",\n isFetching: false\n }));\n }\n (_k = this.serverSsr) == null ? void 0 : _k.onMatchSettled({\n router: this,\n match: this.getMatch(matchId)\n });\n await route._componentsPromise;\n } catch (err) {\n updateMatch(matchId, (prev) => ({\n ...prev,\n loaderPromise: void 0\n }));\n handleRedirectAndNotFound(this.getMatch(matchId), err);\n }\n };\n const { status, invalid } = this.getMatch(matchId);\n loaderShouldRunAsync = status === \"success\" && (invalid || (shouldReload ?? age > staleAge));\n if (preload && route.options.preload === false) {\n } else if (loaderShouldRunAsync && !sync) {\n loaderIsRunningAsync = true;\n (async () => {\n try {\n await runLoader();\n const { loaderPromise, loadPromise } = this.getMatch(matchId);\n loaderPromise == null ? void 0 : loaderPromise.resolve();\n loadPromise == null ? void 0 : loadPromise.resolve();\n updateMatch(matchId, (prev) => ({\n ...prev,\n loaderPromise: void 0\n }));\n } catch (err) {\n if (isResolvedRedirect(err)) {\n await this.navigate(err);\n }\n }\n })();\n } else if (status !== \"success\" || loaderShouldRunAsync && sync) {\n await runLoader();\n }\n }\n if (!loaderIsRunningAsync) {\n const { loaderPromise, loadPromise } = this.getMatch(matchId);\n loaderPromise == null ? void 0 : loaderPromise.resolve();\n loadPromise == null ? void 0 : loadPromise.resolve();\n }\n updateMatch(matchId, (prev) => ({\n ...prev,\n isFetching: loaderIsRunningAsync ? prev.isFetching : false,\n loaderPromise: loaderIsRunningAsync ? prev.loaderPromise : void 0,\n invalid: false\n }));\n return this.getMatch(matchId);\n })()\n );\n });\n await Promise.all(matchPromises);\n resolveAll();\n } catch (err) {\n rejectAll(err);\n }\n })();\n });\n await triggerOnReady();\n } catch (err) {\n if (isRedirect(err) || isNotFound(err)) {\n if (isNotFound(err) && !allPreload) {\n await triggerOnReady();\n }\n throw err;\n }\n }\n return matches;\n };\n this.invalidate = (opts) => {\n const invalidate = (d) => {\n var _a;\n if (((_a = opts == null ? void 0 : opts.filter) == null ? void 0 : _a.call(opts, d)) ?? true) {\n return {\n ...d,\n invalid: true,\n ...d.status === \"error\" ? { status: \"pending\", error: void 0 } : {}\n };\n }\n return d;\n };\n this.__store.setState((s) => {\n var _a;\n return {\n ...s,\n matches: s.matches.map(invalidate),\n cachedMatches: s.cachedMatches.map(invalidate),\n pendingMatches: (_a = s.pendingMatches) == null ? void 0 : _a.map(invalidate)\n };\n });\n return this.load({ sync: opts == null ? void 0 : opts.sync });\n };\n this.resolveRedirect = (err) => {\n const redirect = err;\n if (!redirect.href) {\n redirect.href = this.buildLocation(redirect).href;\n }\n return redirect;\n };\n this.clearCache = (opts) => {\n const filter = opts == null ? void 0 : opts.filter;\n if (filter !== void 0) {\n this.__store.setState((s) => {\n return {\n ...s,\n cachedMatches: s.cachedMatches.filter(\n (m) => !filter(m)\n )\n };\n });\n } else {\n this.__store.setState((s) => {\n return {\n ...s,\n cachedMatches: []\n };\n });\n }\n };\n this.clearExpiredCache = () => {\n const filter = (d) => {\n const route = this.looseRoutesById[d.routeId];\n if (!route.options.loader) {\n return true;\n }\n const gcTime = (d.preload ? route.options.preloadGcTime ?? this.options.defaultPreloadGcTime : route.options.gcTime ?? this.options.defaultGcTime) ?? 5 * 60 * 1e3;\n return !(d.status !== \"error\" && Date.now() - d.updatedAt < gcTime);\n };\n this.clearCache({ filter });\n };\n this.loadRouteChunk = (route) => {\n if (route._lazyPromise === void 0) {\n if (route.lazyFn) {\n route._lazyPromise = route.lazyFn().then((lazyRoute) => {\n const { id: _id, ...options2 } = lazyRoute.options;\n Object.assign(route.options, options2);\n });\n } else {\n route._lazyPromise = Promise.resolve();\n }\n }\n if (route._componentsPromise === void 0) {\n route._componentsPromise = route._lazyPromise.then(\n () => Promise.all(\n componentTypes.map(async (type) => {\n const component = route.options[type];\n if (component == null ? void 0 : component.preload) {\n await component.preload();\n }\n })\n )\n );\n }\n return route._componentsPromise;\n };\n this.preloadRoute = async (opts) => {\n const next = this.buildLocation(opts);\n let matches = this.matchRoutes(next, {\n throwOnError: true,\n preload: true,\n dest: opts\n });\n const activeMatchIds = new Set(\n [...this.state.matches, ...this.state.pendingMatches ?? []].map(\n (d) => d.id\n )\n );\n const loadedMatchIds = /* @__PURE__ */ new Set([\n ...activeMatchIds,\n ...this.state.cachedMatches.map((d) => d.id)\n ]);\n batch(() => {\n matches.forEach((match) => {\n if (!loadedMatchIds.has(match.id)) {\n this.__store.setState((s) => ({\n ...s,\n cachedMatches: [...s.cachedMatches, match]\n }));\n }\n });\n });\n try {\n matches = await this.loadMatches({\n matches,\n location: next,\n preload: true,\n updateMatch: (id, updater) => {\n if (activeMatchIds.has(id)) {\n matches = matches.map((d) => d.id === id ? updater(d) : d);\n } else {\n this.updateMatch(id, updater);\n }\n }\n });\n return matches;\n } catch (err) {\n if (isRedirect(err)) {\n if (err.reloadDocument) {\n return void 0;\n }\n return await this.preloadRoute({\n ...err,\n _fromLocation: next\n });\n }\n if (!isNotFound(err)) {\n console.error(err);\n }\n return void 0;\n }\n };\n this.matchRoute = (location, opts) => {\n const matchLocation = {\n ...location,\n to: location.to ? this.resolvePathWithBase(\n location.from || \"\",\n location.to\n ) : void 0,\n params: location.params || {},\n leaveParams: true\n };\n const next = this.buildLocation(matchLocation);\n if ((opts == null ? void 0 : opts.pending) && this.state.status !== \"pending\") {\n return false;\n }\n const pending = (opts == null ? void 0 : opts.pending) === void 0 ? !this.state.isLoading : opts.pending;\n const baseLocation = pending ? this.latestLocation : this.state.resolvedLocation || this.state.location;\n const match = matchPathname(this.basepath, baseLocation.pathname, {\n ...opts,\n to: next.pathname\n });\n if (!match) {\n return false;\n }\n if (location.params) {\n if (!deepEqual(match, location.params, { partial: true })) {\n return false;\n }\n }\n if (match && ((opts == null ? void 0 : opts.includeSearch) ?? true)) {\n return deepEqual(baseLocation.search, next.search, { partial: true }) ? match : false;\n }\n return match;\n };\n this._handleNotFound = (matches, err, {\n updateMatch = this.updateMatch\n } = {}) => {\n var _a;\n const routeCursor = this.routesById[err.routeId ?? \"\"] ?? this.routeTree;\n const matchesByRouteId = {};\n for (const match of matches) {\n matchesByRouteId[match.routeId] = match;\n }\n if (!routeCursor.options.notFoundComponent && ((_a = this.options) == null ? void 0 : _a.defaultNotFoundComponent)) {\n routeCursor.options.notFoundComponent = this.options.defaultNotFoundComponent;\n }\n invariant(\n routeCursor.options.notFoundComponent,\n \"No notFoundComponent found. Please set a notFoundComponent on your route or provide a defaultNotFoundComponent to the router.\"\n );\n const matchForRoute = matchesByRouteId[routeCursor.id];\n invariant(\n matchForRoute,\n \"Could not find match for route: \" + routeCursor.id\n );\n updateMatch(matchForRoute.id, (prev) => ({\n ...prev,\n status: \"notFound\",\n error: err,\n isFetching: false\n }));\n if (err.routerCode === \"BEFORE_LOAD\" && routeCursor.parentRoute) {\n err.routeId = routeCursor.parentRoute.id;\n this._handleNotFound(matches, err, {\n updateMatch\n });\n }\n };\n this.hasNotFoundMatch = () => {\n return this.__store.state.matches.some(\n (d) => d.status === \"notFound\" || d.globalNotFound\n );\n };\n this.update({\n defaultPreloadDelay: 50,\n defaultPendingMs: 1e3,\n defaultPendingMinMs: 500,\n context: void 0,\n ...options,\n caseSensitive: options.caseSensitive ?? false,\n notFoundMode: options.notFoundMode ?? \"fuzzy\",\n stringifySearch: options.stringifySearch ?? defaultStringifySearch,\n parseSearch: options.parseSearch ?? defaultParseSearch\n });\n if (typeof document !== \"undefined\") {\n window.__TSR_ROUTER__ = this;\n }\n }\n get state() {\n return this.__store.state;\n }\n get looseRoutesById() {\n return this.routesById;\n }\n matchRoutesInternal(next, opts) {\n const { foundRoute, matchedRoutes, routeParams } = this.getMatchedRoutes(\n next,\n opts == null ? void 0 : opts.dest\n );\n let isGlobalNotFound = false;\n if (\n // If we found a route, and it's not an index route and we have left over path\n foundRoute ? foundRoute.path !== \"/\" && routeParams[\"**\"] : (\n // Or if we didn't find a route and we have left over path\n trimPathRight(next.pathname)\n )\n ) {\n if (this.options.notFoundRoute) {\n matchedRoutes.push(this.options.notFoundRoute);\n } else {\n isGlobalNotFound = true;\n }\n }\n const globalNotFoundRouteId = (() => {\n if (!isGlobalNotFound) {\n return void 0;\n }\n if (this.options.notFoundMode !== \"root\") {\n for (let i = matchedRoutes.length - 1; i >= 0; i--) {\n const route = matchedRoutes[i];\n if (route.children) {\n return route.id;\n }\n }\n }\n return rootRouteId;\n })();\n const parseErrors = matchedRoutes.map((route) => {\n var _a;\n let parsedParamsError;\n const parseParams = ((_a = route.options.params) == null ? void 0 : _a.parse) ?? route.options.parseParams;\n if (parseParams) {\n try {\n const parsedParams = parseParams(routeParams);\n Object.assign(routeParams, parsedParams);\n } catch (err) {\n parsedParamsError = new PathParamError(err.message, {\n cause: err\n });\n if (opts == null ? void 0 : opts.throwOnError) {\n throw parsedParamsError;\n }\n return parsedParamsError;\n }\n }\n return;\n });\n const matches = [];\n const getParentContext = (parentMatch) => {\n const parentMatchId = parentMatch == null ? void 0 : parentMatch.id;\n const parentContext = !parentMatchId ? this.options.context ?? {} : parentMatch.context ?? this.options.context ?? {};\n return parentContext;\n };\n matchedRoutes.forEach((route, index) => {\n var _a, _b;\n const parentMatch = matches[index - 1];\n const [preMatchSearch, strictMatchSearch, searchError] = (() => {\n const parentSearch = (parentMatch == null ? void 0 : parentMatch.search) ?? next.search;\n const parentStrictSearch = (parentMatch == null ? void 0 : parentMatch._strictSearch) ?? {};\n try {\n const strictSearch = validateSearch(route.options.validateSearch, { ...parentSearch }) ?? {};\n return [\n {\n ...parentSearch,\n ...strictSearch\n },\n { ...parentStrictSearch, ...strictSearch },\n void 0\n ];\n } catch (err) {\n let searchParamError = err;\n if (!(err instanceof SearchParamError)) {\n searchParamError = new SearchParamError(err.message, {\n cause: err\n });\n }\n if (opts == null ? void 0 : opts.throwOnError) {\n throw searchParamError;\n }\n return [parentSearch, {}, searchParamError];\n }\n })();\n const loaderDeps = ((_b = (_a = route.options).loaderDeps) == null ? void 0 : _b.call(_a, {\n search: preMatchSearch\n })) ?? \"\";\n const loaderDepsHash = loaderDeps ? JSON.stringify(loaderDeps) : \"\";\n const { usedParams, interpolatedPath } = interpolatePath({\n path: route.fullPath,\n params: routeParams,\n decodeCharMap: this.pathParamsDecodeCharMap\n });\n const matchId = interpolatePath({\n path: route.id,\n params: routeParams,\n leaveWildcards: true,\n decodeCharMap: this.pathParamsDecodeCharMap\n }).interpolatedPath + loaderDepsHash;\n const existingMatch = this.getMatch(matchId);\n const previousMatch = this.state.matches.find(\n (d) => d.routeId === route.id\n );\n const cause = previousMatch ? \"stay\" : \"enter\";\n let match;\n if (existingMatch) {\n match = {\n ...existingMatch,\n cause,\n params: previousMatch ? replaceEqualDeep(previousMatch.params, routeParams) : routeParams,\n _strictParams: usedParams,\n search: previousMatch ? replaceEqualDeep(previousMatch.search, preMatchSearch) : replaceEqualDeep(existingMatch.search, preMatchSearch),\n _strictSearch: strictMatchSearch\n };\n } else {\n const status = route.options.loader || route.options.beforeLoad || route.lazyFn || routeNeedsPreload(route) ? \"pending\" : \"success\";\n match = {\n id: matchId,\n index,\n routeId: route.id,\n params: previousMatch ? replaceEqualDeep(previousMatch.params, routeParams) : routeParams,\n _strictParams: usedParams,\n pathname: joinPaths([this.basepath, interpolatedPath]),\n updatedAt: Date.now(),\n search: previousMatch ? replaceEqualDeep(previousMatch.search, preMatchSearch) : preMatchSearch,\n _strictSearch: strictMatchSearch,\n searchError: void 0,\n status,\n isFetching: false,\n error: void 0,\n paramsError: parseErrors[index],\n __routeContext: {},\n __beforeLoadContext: {},\n context: {},\n abortController: new AbortController(),\n fetchCount: 0,\n cause,\n loaderDeps: previousMatch ? replaceEqualDeep(previousMatch.loaderDeps, loaderDeps) : loaderDeps,\n invalid: false,\n preload: false,\n links: void 0,\n scripts: void 0,\n headScripts: void 0,\n meta: void 0,\n staticData: route.options.staticData || {},\n loadPromise: createControlledPromise(),\n fullPath: route.fullPath\n };\n }\n if (!(opts == null ? void 0 : opts.preload)) {\n match.globalNotFound = globalNotFoundRouteId === route.id;\n }\n match.searchError = searchError;\n const parentContext = getParentContext(parentMatch);\n match.context = {\n ...parentContext,\n ...match.__routeContext,\n ...match.__beforeLoadContext\n };\n matches.push(match);\n });\n matches.forEach((match, index) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const route = this.looseRoutesById[match.routeId];\n const existingMatch = this.getMatch(match.id);\n if (!existingMatch && (opts == null ? void 0 : opts._buildLocation) !== true) {\n const parentMatch = matches[index - 1];\n const parentContext = getParentContext(parentMatch);\n const contextFnContext = {\n deps: match.loaderDeps,\n params: match.params,\n context: parentContext,\n location: next,\n navigate: (opts2) => this.navigate({ ...opts2, _fromLocation: next }),\n buildLocation: this.buildLocation,\n cause: match.cause,\n abortController: match.abortController,\n preload: !!match.preload,\n matches\n };\n match.__routeContext = ((_b = (_a = route.options).context) == null ? void 0 : _b.call(_a, contextFnContext)) ?? {};\n match.context = {\n ...parentContext,\n ...match.__routeContext,\n ...match.__beforeLoadContext\n };\n }\n if (match.status === \"success\") {\n match.headers = (_d = (_c = route.options).headers) == null ? void 0 : _d.call(_c, {\n loaderData: match.loaderData\n });\n const assetContext = {\n matches,\n match,\n params: match.params,\n loaderData: match.loaderData\n };\n const headFnContent = (_f = (_e = route.options).head) == null ? void 0 : _f.call(_e, assetContext);\n match.links = headFnContent == null ? void 0 : headFnContent.links;\n match.headScripts = headFnContent == null ? void 0 : headFnContent.scripts;\n match.meta = headFnContent == null ? void 0 : headFnContent.meta;\n match.scripts = (_h = (_g = route.options).scripts) == null ? void 0 : _h.call(_g, assetContext);\n }\n });\n return matches;\n }\n}\nclass SearchParamError extends Error {\n}\nclass PathParamError extends Error {\n}\nfunction lazyFn(fn, key) {\n return async (...args) => {\n const imported = await fn();\n return imported[key || \"default\"](...args);\n };\n}\nfunction getInitialRouterState(location) {\n return {\n loadedAt: 0,\n isLoading: false,\n isTransitioning: false,\n status: \"idle\",\n resolvedLocation: void 0,\n location,\n matches: [],\n pendingMatches: [],\n cachedMatches: [],\n statusCode: 200\n };\n}\nfunction validateSearch(validateSearch2, input) {\n if (validateSearch2 == null) return {};\n if (\"~standard\" in validateSearch2) {\n const result = validateSearch2[\"~standard\"].validate(input);\n if (result instanceof Promise)\n throw new SearchParamError(\"Async validation not supported\");\n if (result.issues)\n throw new SearchParamError(JSON.stringify(result.issues, void 0, 2), {\n cause: result\n });\n return result.value;\n }\n if (\"parse\" in validateSearch2) {\n return validateSearch2.parse(input);\n }\n if (typeof validateSearch2 === \"function\") {\n return validateSearch2(input);\n }\n return {};\n}\nconst componentTypes = [\n \"component\",\n \"errorComponent\",\n \"pendingComponent\",\n \"notFoundComponent\"\n];\nfunction routeNeedsPreload(route) {\n var _a;\n for (const componentType of componentTypes) {\n if ((_a = route.options[componentType]) == null ? void 0 : _a.preload) {\n return true;\n }\n }\n return false;\n}\nexport {\n PathParamError,\n RouterCore,\n SearchParamError,\n componentTypes,\n defaultSerializeError,\n getInitialRouterState,\n getLocationChangeInfo,\n lazyFn\n};\n//# sourceMappingURL=router.js.map\n","const preloadWarning = \"Error preloading route! ☝️\";\nexport {\n preloadWarning\n};\n//# sourceMappingURL=link.js.map\n","import { trimPathLeft, joinPaths } from \"./path.js\";\nimport { notFound } from \"./not-found.js\";\nimport { rootRouteId } from \"./root.js\";\nclass BaseRoute {\n constructor(options) {\n this.init = (opts) => {\n var _a, _b;\n this.originalIndex = opts.originalIndex;\n const options2 = this.options;\n const isRoot = !(options2 == null ? void 0 : options2.path) && !(options2 == null ? void 0 : options2.id);\n this.parentRoute = (_b = (_a = this.options).getParentRoute) == null ? void 0 : _b.call(_a);\n if (isRoot) {\n this._path = rootRouteId;\n } else if (!this.parentRoute) {\n throw new Error(\n `Child Route instances must pass a 'getParentRoute: () => ParentRoute' option that returns a Route instance.`\n );\n }\n let path = isRoot ? rootRouteId : options2 == null ? void 0 : options2.path;\n if (path && path !== \"/\") {\n path = trimPathLeft(path);\n }\n const customId = (options2 == null ? void 0 : options2.id) || path;\n let id = isRoot ? rootRouteId : joinPaths([\n this.parentRoute.id === rootRouteId ? \"\" : this.parentRoute.id,\n customId\n ]);\n if (path === rootRouteId) {\n path = \"/\";\n }\n if (id !== rootRouteId) {\n id = joinPaths([\"/\", id]);\n }\n const fullPath = id === rootRouteId ? \"/\" : joinPaths([this.parentRoute.fullPath, path]);\n this._path = path;\n this._id = id;\n this._fullPath = fullPath;\n this._to = fullPath;\n this._ssr = (options2 == null ? void 0 : options2.ssr) ?? opts.defaultSsr ?? true;\n };\n this.addChildren = (children) => {\n return this._addFileChildren(children);\n };\n this._addFileChildren = (children) => {\n if (Array.isArray(children)) {\n this.children = children;\n }\n if (typeof children === \"object\" && children !== null) {\n this.children = Object.values(children);\n }\n return this;\n };\n this._addFileTypes = () => {\n return this;\n };\n this.updateLoader = (options2) => {\n Object.assign(this.options, options2);\n return this;\n };\n this.update = (options2) => {\n Object.assign(this.options, options2);\n return this;\n };\n this.lazy = (lazyFn) => {\n this.lazyFn = lazyFn;\n return this;\n };\n this.options = options || {};\n this.isRoot = !(options == null ? void 0 : options.getParentRoute);\n if ((options == null ? void 0 : options.id) && (options == null ? void 0 : options.path)) {\n throw new Error(`Route cannot have both an 'id' and a 'path' option.`);\n }\n }\n get to() {\n return this._to;\n }\n get id() {\n return this._id;\n }\n get path() {\n return this._path;\n }\n get fullPath() {\n return this._fullPath;\n }\n get ssr() {\n return this._ssr;\n }\n}\nclass BaseRouteApi {\n constructor({ id }) {\n this.notFound = (opts) => {\n return notFound({ routeId: this.id, ...opts });\n };\n this.id = id;\n }\n}\nclass BaseRootRoute extends BaseRoute {\n constructor(options) {\n super(options);\n }\n}\nexport {\n BaseRootRoute,\n BaseRoute,\n BaseRouteApi\n};\n//# sourceMappingURL=route.js.map\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nfunction CatchBoundary(props) {\n const errorComponent = props.errorComponent ?? ErrorComponent;\n return /* @__PURE__ */ jsx(\n CatchBoundaryImpl,\n {\n getResetKey: props.getResetKey,\n onCatch: props.onCatch,\n children: ({ error, reset }) => {\n if (error) {\n return React.createElement(errorComponent, {\n error,\n reset\n });\n }\n return props.children;\n }\n }\n );\n}\nclass CatchBoundaryImpl extends React.Component {\n constructor() {\n super(...arguments);\n this.state = { error: null };\n }\n static getDerivedStateFromProps(props) {\n return { resetKey: props.getResetKey() };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n reset() {\n this.setState({ error: null });\n }\n componentDidUpdate(prevProps, prevState) {\n if (prevState.error && prevState.resetKey !== this.state.resetKey) {\n this.reset();\n }\n }\n componentDidCatch(error, errorInfo) {\n if (this.props.onCatch) {\n this.props.onCatch(error, errorInfo);\n }\n }\n render() {\n return this.props.children({\n error: this.state.resetKey !== this.props.getResetKey() ? null : this.state.error,\n reset: () => {\n this.reset();\n }\n });\n }\n}\nfunction ErrorComponent({ error }) {\n const [show, setShow] = React.useState(process.env.NODE_ENV !== \"production\");\n return /* @__PURE__ */ jsxs(\"div\", { style: { padding: \".5rem\", maxWidth: \"100%\" }, children: [\n /* @__PURE__ */ jsxs(\"div\", { style: { display: \"flex\", alignItems: \"center\", gap: \".5rem\" }, children: [\n /* @__PURE__ */ jsx(\"strong\", { style: { fontSize: \"1rem\" }, children: \"Something went wrong!\" }),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n style: {\n appearance: \"none\",\n fontSize: \".6em\",\n border: \"1px solid currentColor\",\n padding: \".1rem .2rem\",\n fontWeight: \"bold\",\n borderRadius: \".25rem\"\n },\n onClick: () => setShow((d) => !d),\n children: show ? \"Hide Error\" : \"Show Error\"\n }\n )\n ] }),\n /* @__PURE__ */ jsx(\"div\", { style: { height: \".25rem\" } }),\n show ? /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsx(\n \"pre\",\n {\n style: {\n fontSize: \".7em\",\n border: \"1px solid red\",\n borderRadius: \".25rem\",\n padding: \".3rem\",\n color: \"red\",\n overflow: \"auto\"\n },\n children: error.message ? /* @__PURE__ */ jsx(\"code\", { children: error.message }) : null\n }\n ) }) : null\n ] });\n}\nexport {\n CatchBoundary,\n ErrorComponent\n};\n//# sourceMappingURL=CatchBoundary.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 { useSyncExternalStoreWithSelector } from \"use-sync-external-store/shim/with-selector.js\";\nexport * from \"@tanstack/store\";\nfunction useStore(store, selector = (d) => d) {\n const slice = useSyncExternalStoreWithSelector(\n store.subscribe,\n () => store.state,\n () => store.state,\n selector,\n shallow\n );\n return slice;\n}\nfunction shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false;\n for (const [k, v] of objA) {\n if (!objB.has(k) || !Object.is(v, objB.get(k))) return false;\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false;\n for (const v of objA) {\n if (!objB.has(v)) return false;\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\nexport {\n shallow,\n useStore\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nconst routerContext = React.createContext(null);\nfunction getRouterContext() {\n if (typeof document === \"undefined\") {\n return routerContext;\n }\n if (window.__TSR_ROUTER_CONTEXT__) {\n return window.__TSR_ROUTER_CONTEXT__;\n }\n window.__TSR_ROUTER_CONTEXT__ = routerContext;\n return routerContext;\n}\nexport {\n getRouterContext\n};\n//# sourceMappingURL=routerContext.js.map\n","import * as React from \"react\";\nimport warning from \"tiny-warning\";\nimport { getRouterContext } from \"./routerContext.js\";\nfunction useRouter(opts) {\n const value = React.useContext(getRouterContext());\n warning(\n !(((opts == null ? void 0 : opts.warn) ?? true) && !value),\n \"useRouter must be used inside a <RouterProvider> component!\"\n );\n return value;\n}\nexport {\n useRouter\n};\n//# sourceMappingURL=useRouter.js.map\n","import { useStore } from \"@tanstack/react-store\";\nimport { useRef } from \"react\";\nimport { replaceEqualDeep } from \"@tanstack/router-core\";\nimport { useRouter } from \"./useRouter.js\";\nfunction useRouterState(opts) {\n const contextRouter = useRouter({\n warn: (opts == null ? void 0 : opts.router) === void 0\n });\n const router = (opts == null ? void 0 : opts.router) || contextRouter;\n const previousResult = useRef(void 0);\n return useStore(router.__store, (state) => {\n if (opts == null ? void 0 : opts.select) {\n if (opts.structuralSharing ?? router.options.defaultStructuralSharing) {\n const newSlice = replaceEqualDeep(\n previousResult.current,\n opts.select(state)\n );\n previousResult.current = newSlice;\n return newSlice;\n }\n return opts.select(state);\n }\n return state;\n });\n}\nexport {\n useRouterState\n};\n//# sourceMappingURL=useRouterState.js.map\n","import * as React from \"react\";\nconst matchContext = React.createContext(void 0);\nconst dummyMatchContext = React.createContext(\n void 0\n);\nexport {\n dummyMatchContext,\n matchContext\n};\n//# sourceMappingURL=matchContext.js.map\n","import * as React from \"react\";\nimport invariant from \"tiny-invariant\";\nimport { useRouterState } from \"./useRouterState.js\";\nimport { dummyMatchContext, matchContext } from \"./matchContext.js\";\nfunction useMatch(opts) {\n const nearestMatchId = React.useContext(\n opts.from ? dummyMatchContext : matchContext\n );\n const matchSelection = useRouterState({\n select: (state) => {\n const match = state.matches.find(\n (d) => opts.from ? opts.from === d.routeId : d.id === nearestMatchId\n );\n invariant(\n !((opts.shouldThrow ?? true) && !match),\n `Could not find ${opts.from ? `an active match from \"${opts.from}\"` : \"a nearest match!\"}`\n );\n if (match === void 0) {\n return void 0;\n }\n return opts.select ? opts.select(match) : match;\n },\n structuralSharing: opts.structuralSharing\n });\n return matchSelection;\n}\nexport {\n useMatch\n};\n//# sourceMappingURL=useMatch.js.map\n","import { useMatch } from \"./useMatch.js\";\nfunction useLoaderData(opts) {\n return useMatch({\n from: opts.from,\n strict: opts.strict,\n structuralSharing: opts.structuralSharing,\n select: (s) => {\n return opts.select ? opts.select(s.loaderData) : s.loaderData;\n }\n });\n}\nexport {\n useLoaderData\n};\n//# sourceMappingURL=useLoaderData.js.map\n","import { useMatch } from \"./useMatch.js\";\nfunction useLoaderDeps(opts) {\n const { select, ...rest } = opts;\n return useMatch({\n ...rest,\n select: (s) => {\n return select ? select(s.loaderDeps) : s.loaderDeps;\n }\n });\n}\nexport {\n useLoaderDeps\n};\n//# sourceMappingURL=useLoaderDeps.js.map\n","import { useMatch } from \"./useMatch.js\";\nfunction useParams(opts) {\n return useMatch({\n from: opts.from,\n strict: opts.strict,\n shouldThrow: opts.shouldThrow,\n structuralSharing: opts.structuralSharing,\n select: (match) => {\n return opts.select ? opts.select(match.params) : match.params;\n }\n });\n}\nexport {\n useParams\n};\n//# sourceMappingURL=useParams.js.map\n","import { useMatch } from \"./useMatch.js\";\nfunction useSearch(opts) {\n return useMatch({\n from: opts.from,\n strict: opts.strict,\n shouldThrow: opts.shouldThrow,\n structuralSharing: opts.structuralSharing,\n select: (match) => {\n return opts.select ? opts.select(match.search) : match.search;\n }\n });\n}\nexport {\n useSearch\n};\n//# sourceMappingURL=useSearch.js.map\n","import * as React from \"react\";\nimport { useRouter } from \"./useRouter.js\";\nfunction useNavigate(_defaultOpts) {\n const { navigate } = useRouter();\n return React.useCallback(\n (options) => {\n return navigate({\n from: _defaultOpts == null ? void 0 : _defaultOpts.from,\n ...options\n });\n },\n [_defaultOpts == null ? void 0 : _defaultOpts.from, navigate]\n );\n}\nfunction Navigate(props) {\n const router = useRouter();\n const previousPropsRef = React.useRef(null);\n React.useEffect(() => {\n if (previousPropsRef.current !== props) {\n router.navigate({\n ...props\n });\n previousPropsRef.current = props;\n }\n }, [router, props]);\n return null;\n}\nexport {\n Navigate,\n useNavigate\n};\n//# sourceMappingURL=useNavigate.js.map\n","import { BaseRouteApi, notFound, BaseRoute, BaseRootRoute } from \"@tanstack/router-core\";\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 { useMatch } from \"./useMatch.js\";\nimport { useRouter } from \"./useRouter.js\";\nfunction getRouteApi(id) {\n return new RouteApi({ id });\n}\nclass RouteApi extends BaseRouteApi {\n /**\n * @deprecated Use the `getRouteApi` function instead.\n */\n constructor({ id }) {\n super({ id });\n this.useMatch = (opts) => {\n return useMatch({\n select: opts == null ? void 0 : opts.select,\n from: this.id,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing\n });\n };\n this.useRouteContext = (opts) => {\n return useMatch({\n from: this.id,\n select: (d) => (opts == null ? void 0 : opts.select) ? opts.select(d.context) : d.context\n });\n };\n this.useSearch = (opts) => {\n return useSearch({\n select: opts == null ? void 0 : opts.select,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing,\n from: this.id\n });\n };\n this.useParams = (opts) => {\n return useParams({\n select: opts == null ? void 0 : opts.select,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing,\n from: this.id\n });\n };\n this.useLoaderDeps = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id, strict: false });\n };\n this.useLoaderData = (opts) => {\n return useLoaderData({ ...opts, from: this.id, strict: false });\n };\n this.useNavigate = () => {\n const router = useRouter();\n return useNavigate({ from: router.routesById[this.id].fullPath });\n };\n this.notFound = (opts) => {\n return notFound({ routeId: this.id, ...opts });\n };\n }\n}\nclass Route extends BaseRoute {\n /**\n * @deprecated Use the `createRoute` function instead.\n */\n constructor(options) {\n super(options);\n this.useMatch = (opts) => {\n return useMatch({\n select: opts == null ? void 0 : opts.select,\n from: this.id,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing\n });\n };\n this.useRouteContext = (opts) => {\n return useMatch({\n ...opts,\n from: this.id,\n select: (d) => (opts == null ? void 0 : opts.select) ? opts.select(d.context) : d.context\n });\n };\n this.useSearch = (opts) => {\n return useSearch({\n select: opts == null ? void 0 : opts.select,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing,\n from: this.id\n });\n };\n this.useParams = (opts) => {\n return useParams({\n select: opts == null ? void 0 : opts.select,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing,\n from: this.id\n });\n };\n this.useLoaderDeps = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id });\n };\n this.useLoaderData = (opts) => {\n return useLoaderData({ ...opts, from: this.id });\n };\n this.useNavigate = () => {\n return useNavigate({ from: this.fullPath });\n };\n this.$$typeof = Symbol.for(\"react.memo\");\n }\n}\nfunction createRoute(options) {\n return new Route(options);\n}\nfunction createRootRouteWithContext() {\n return (options) => {\n return createRootRoute(options);\n };\n}\nconst rootRouteWithContext = createRootRouteWithContext;\nclass RootRoute extends BaseRootRoute {\n /**\n * @deprecated `RootRoute` is now an internal implementation detail. Use `createRootRoute()` instead.\n */\n constructor(options) {\n super(options);\n this.useMatch = (opts) => {\n return useMatch({\n select: opts == null ? void 0 : opts.select,\n from: this.id,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing\n });\n };\n this.useRouteContext = (opts) => {\n return useMatch({\n ...opts,\n from: this.id,\n select: (d) => (opts == null ? void 0 : opts.select) ? opts.select(d.context) : d.context\n });\n };\n this.useSearch = (opts) => {\n return useSearch({\n select: opts == null ? void 0 : opts.select,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing,\n from: this.id\n });\n };\n this.useParams = (opts) => {\n return useParams({\n select: opts == null ? void 0 : opts.select,\n structuralSharing: opts == null ? void 0 : opts.structuralSharing,\n from: this.id\n });\n };\n this.useLoaderDeps = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id });\n };\n this.useLoaderData = (opts) => {\n return useLoaderData({ ...opts, from: this.id });\n };\n this.useNavigate = () => {\n return useNavigate({ from: this.fullPath });\n };\n this.$$typeof = Symbol.for(\"react.memo\");\n }\n}\nfunction createRootRoute(options) {\n return new RootRoute(options);\n}\nfunction createRouteMask(opts) {\n return opts;\n}\nclass NotFoundRoute extends Route {\n constructor(options) {\n super({\n ...options,\n id: \"404\"\n });\n }\n}\nexport {\n NotFoundRoute,\n RootRoute,\n Route,\n RouteApi,\n createRootRoute,\n createRootRouteWithContext,\n createRoute,\n createRouteMask,\n getRouteApi,\n rootRouteWithContext\n};\n//# sourceMappingURL=route.js.map\n","import { jsx } from \"react/jsx-runtime\";\nimport { isNotFound } from \"@tanstack/router-core\";\nimport { CatchBoundary } from \"./CatchBoundary.js\";\nimport { useRouterState } from \"./useRouterState.js\";\nfunction CatchNotFound(props) {\n const resetKey = useRouterState({\n select: (s) => `not-found-${s.location.pathname}-${s.status}`\n });\n return /* @__PURE__ */ jsx(\n CatchBoundary,\n {\n getResetKey: () => resetKey,\n onCatch: (error, errorInfo) => {\n var _a;\n if (isNotFound(error)) {\n (_a = props.onCatch) == null ? void 0 : _a.call(props, error, errorInfo);\n } else {\n throw error;\n }\n },\n errorComponent: ({ error }) => {\n var _a;\n if (isNotFound(error)) {\n return (_a = props.fallback) == null ? void 0 : _a.call(props, error);\n } else {\n throw error;\n }\n },\n children: props.children\n }\n );\n}\nfunction DefaultGlobalNotFound() {\n return /* @__PURE__ */ jsx(\"p\", { children: \"Not Found\" });\n}\nexport {\n CatchNotFound,\n DefaultGlobalNotFound\n};\n//# sourceMappingURL=not-found.js.map\n","import { jsx, Fragment } from \"react/jsx-runtime\";\nfunction SafeFragment(props) {\n return /* @__PURE__ */ jsx(Fragment, { children: props.children });\n}\nexport {\n SafeFragment\n};\n//# sourceMappingURL=SafeFragment.js.map\n","import { jsx } from \"react/jsx-runtime\";\nimport warning from \"tiny-warning\";\nimport { DefaultGlobalNotFound } from \"./not-found.js\";\nfunction renderRouteNotFound(router, route, data) {\n if (!route.options.notFoundComponent) {\n if (router.options.defaultNotFoundComponent) {\n return /* @__PURE__ */ jsx(router.options.defaultNotFoundComponent, { data });\n }\n if (process.env.NODE_ENV === \"development\") {\n warning(\n route.options.notFoundComponent,\n `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 (<div>Not Found<div>)`\n );\n }\n return /* @__PURE__ */ jsx(DefaultGlobalNotFound, {});\n }\n return /* @__PURE__ */ jsx(route.options.notFoundComponent, { data });\n}\nexport {\n renderRouteNotFound\n};\n//# sourceMappingURL=renderRouteNotFound.js.map\n","'use strict';\n\nconst object = {};\nconst hasOwnProperty = object.hasOwnProperty;\nconst forOwn = (object, callback) => {\n\tfor (const key in object) {\n\t\tif (hasOwnProperty.call(object, key)) {\n\t\t\tcallback(key, object[key]);\n\t\t}\n\t}\n};\n\nconst extend = (destination, source) => {\n\tif (!source) {\n\t\treturn destination;\n\t}\n\tforOwn(source, (key, value) => {\n\t\tdestination[key] = value;\n\t});\n\treturn destination;\n};\n\nconst forEach = (array, callback) => {\n\tconst length = array.length;\n\tlet index = -1;\n\twhile (++index < length) {\n\t\tcallback(array[index]);\n\t}\n};\n\nconst fourHexEscape = (hex) => {\n\treturn '\\\\u' + ('0000' + hex).slice(-4);\n}\n\nconst hexadecimal = (code, lowercase) => {\n\tlet hexadecimal = code.toString(16);\n\tif (lowercase) return hexadecimal;\n\treturn hexadecimal.toUpperCase();\n};\n\nconst toString = object.toString;\nconst isArray = Array.isArray;\nconst isBuffer = (value) => {\n\treturn typeof Buffer === 'function' && Buffer.isBuffer(value);\n};\nconst isObject = (value) => {\n\t// This is a very simple check, but it’s good enough for what we need.\n\treturn toString.call(value) == '[object Object]';\n};\nconst isString = (value) => {\n\treturn typeof value == 'string' ||\n\t\ttoString.call(value) == '[object String]';\n};\nconst isNumber = (value) => {\n\treturn typeof value == 'number' ||\n\t\ttoString.call(value) == '[object Number]';\n};\nconst isBigInt = (value) => {\n return typeof value == 'bigint';\n};\nconst isFunction = (value) => {\n\treturn typeof value == 'function';\n};\nconst isMap = (value) => {\n\treturn toString.call(value) == '[object Map]';\n};\nconst isSet = (value) => {\n\treturn toString.call(value) == '[object Set]';\n};\n\n/*--------------------------------------------------------------------------*/\n\n// https://mathiasbynens.be/notes/javascript-escapes#single\nconst singleEscapes = {\n\t'\\\\': '\\\\\\\\',\n\t'\\b': '\\\\b',\n\t'\\f': '\\\\f',\n\t'\\n': '\\\\n',\n\t'\\r': '\\\\r',\n\t'\\t': '\\\\t'\n\t// `\\v` is omitted intentionally, because in IE < 9, '\\v' == 'v'.\n\t// '\\v': '\\\\x0B'\n};\nconst regexSingleEscape = /[\\\\\\b\\f\\n\\r\\t]/;\n\nconst regexDigit = /[0-9]/;\nconst regexWhitespace = /[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n\nconst escapeEverythingRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^]/g;\nconst escapeNonAsciiRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^ !#-&\\(-\\[\\]-_a-~]/g;\n\nconst jsesc = (argument, options) => {\n\tconst increaseIndentation = () => {\n\t\toldIndent = indent;\n\t\t++options.indentLevel;\n\t\tindent = options.indent.repeat(options.indentLevel)\n\t};\n\t// Handle options\n\tconst defaults = {\n\t\t'escapeEverything': false,\n\t\t'minimal': false,\n\t\t'isScriptContext': false,\n\t\t'quotes': 'single',\n\t\t'wrap': false,\n\t\t'es6': false,\n\t\t'json': false,\n\t\t'compact': true,\n\t\t'lowercaseHex': false,\n\t\t'numbers': 'decimal',\n\t\t'indent': '\\t',\n\t\t'indentLevel': 0,\n\t\t'__inline1__': false,\n\t\t'__inline2__': false\n\t};\n\tconst json = options && options.json;\n\tif (json) {\n\t\tdefaults.quotes = 'double';\n\t\tdefaults.wrap = true;\n\t}\n\toptions = extend(defaults, options);\n\tif (\n\t\toptions.quotes != 'single' &&\n\t\toptions.quotes != 'double' &&\n\t\toptions.quotes != 'backtick'\n\t) {\n\t\toptions.quotes = 'single';\n\t}\n\tconst quote = options.quotes == 'double' ?\n\t\t'\"' :\n\t\t(options.quotes == 'backtick' ?\n\t\t\t'`' :\n\t\t\t'\\''\n\t\t);\n\tconst compact = options.compact;\n\tconst lowercaseHex = options.lowercaseHex;\n\tlet indent = options.indent.repeat(options.indentLevel);\n\tlet oldIndent = '';\n\tconst inline1 = options.__inline1__;\n\tconst inline2 = options.__inline2__;\n\tconst newLine = compact ? '' : '\\n';\n\tlet result;\n\tlet isEmpty = true;\n\tconst useBinNumbers = options.numbers == 'binary';\n\tconst useOctNumbers = options.numbers == 'octal';\n\tconst useDecNumbers = options.numbers == 'decimal';\n\tconst useHexNumbers = options.numbers == 'hexadecimal';\n\n\tif (json && argument && isFunction(argument.toJSON)) {\n\t\targument = argument.toJSON();\n\t}\n\n\tif (!isString(argument)) {\n\t\tif (isMap(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Map()';\n\t\t\t}\n\t\t\tif (!compact) {\n\t\t\t\toptions.__inline1__ = true;\n\t\t\t\toptions.__inline2__ = false;\n\t\t\t}\n\t\t\treturn 'new Map(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isSet(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Set()';\n\t\t\t}\n\t\t\treturn 'new Set(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isBuffer(argument)) {\n\t\t\tif (argument.length == 0) {\n\t\t\t\treturn 'Buffer.from([])';\n\t\t\t}\n\t\t\treturn 'Buffer.from(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isArray(argument)) {\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tif (inline1) {\n\t\t\t\toptions.__inline1__ = false;\n\t\t\t\toptions.__inline2__ = true;\n\t\t\t}\n\t\t\tif (!inline2) {\n\t\t\t\tincreaseIndentation();\n\t\t\t}\n\t\t\tforEach(argument, (value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tif (inline2) {\n\t\t\t\t\toptions.__inline2__ = false;\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact || inline2 ? '' : indent) +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '[]';\n\t\t\t}\n\t\t\tif (inline2) {\n\t\t\t\treturn '[' + result.join(', ') + ']';\n\t\t\t}\n\t\t\treturn '[' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + ']';\n\t\t} else if (isNumber(argument) || isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// Some number values (e.g. `Infinity`) cannot be represented in JSON.\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n // `Number.MAX_VALUE` cannot be represented in JSON so they will become\n // `-Infinity` or `Infinity`, respectively, and then become `null` when\n // stringified.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n\n let result;\n\t\t\tif (useDecNumbers) {\n\t\t\t\tresult = String(argument);\n\t\t\t} else if (useHexNumbers) {\n\t\t\t\tlet hexadecimal = argument.toString(16);\n\t\t\t\tif (!lowercaseHex) {\n\t\t\t\t\thexadecimal = hexadecimal.toUpperCase();\n\t\t\t\t}\n\t\t\t\tresult = '0x' + hexadecimal;\n\t\t\t} else if (useBinNumbers) {\n\t\t\t\tresult = '0b' + argument.toString(2);\n\t\t\t} else if (useOctNumbers) {\n\t\t\t\tresult = '0o' + argument.toString(8);\n\t\t\t}\n\n if (isBigInt(argument)) {\n return result + 'n';\n }\n return result;\n\t\t} else if (isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n // `Number.MAX_VALUE` will become `-Infinity` or `Infinity`,\n // respectively, and cannot be represented in JSON.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n return argument + 'n';\n } else if (!isObject(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// For some values (e.g. `undefined`, `function` objects),\n\t\t\t\t// `JSON.stringify(value)` returns `undefined` (which isn’t valid\n\t\t\t\t// JSON) instead of `'null'`.\n\t\t\t\treturn JSON.stringify(argument) || 'null';\n\t\t\t}\n\t\t\treturn String(argument);\n\t\t} else { // it’s an object\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tincreaseIndentation();\n\t\t\tforOwn(argument, (key, value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact ? '' : indent) +\n\t\t\t\t\tjsesc(key, options) + ':' +\n\t\t\t\t\t(compact ? '' : ' ') +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '{}';\n\t\t\t}\n\t\t\treturn '{' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + '}';\n\t\t}\n\t}\n\n\tconst regex = options.escapeEverything ? escapeEverythingRegex : escapeNonAsciiRegex;\n\tresult = argument.replace(regex, (char, pair, lone, quoteChar, index, string) => {\n\t\tif (pair) {\n\t\t\tif (options.minimal) return pair;\n\t\t\tconst first = pair.charCodeAt(0);\n\t\t\tconst second = pair.charCodeAt(1);\n\t\t\tif (options.es6) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tconst codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\tconst hex = hexadecimal(codePoint, lowercaseHex);\n\t\t\t\treturn '\\\\u{' + hex + '}';\n\t\t\t}\n\t\t\treturn fourHexEscape(hexadecimal(first, lowercaseHex)) + fourHexEscape(hexadecimal(second, lowercaseHex));\n\t\t}\n\n\t\tif (lone) {\n\t\t\treturn fourHexEscape(hexadecimal(lone.charCodeAt(0), lowercaseHex));\n\t\t}\n\n\t\tif (\n\t\t\tchar == '\\0' &&\n\t\t\t!json &&\n\t\t\t!regexDigit.test(string.charAt(index + 1))\n\t\t) {\n\t\t\treturn '\\\\0';\n\t\t}\n\n\t\tif (quoteChar) {\n\t\t\tif (quoteChar == quote || options.escapeEverything) {\n\t\t\t\treturn '\\\\' + quoteChar;\n\t\t\t}\n\t\t\treturn quoteChar;\n\t\t}\n\n\t\tif (regexSingleEscape.test(char)) {\n\t\t\t// no need for a `hasOwnProperty` check here\n\t\t\treturn singleEscapes[char];\n\t\t}\n\n\t\tif (options.minimal && !regexWhitespace.test(char)) {\n\t\t\treturn char;\n\t\t}\n\n\t\tconst hex = hexadecimal(char.charCodeAt(0), lowercaseHex);\n\t\tif (json || hex.length > 2) {\n\t\t\treturn fourHexEscape(hex);\n\t\t}\n\n\t\treturn '\\\\x' + ('00' + hex).slice(-2);\n\t});\n\n\tif (quote == '`') {\n\t\tresult = result.replace(/\\$\\{/g, '\\\\${');\n\t}\n\tif (options.isScriptContext) {\n\t\t// https://mathiasbynens.be/notes/etago\n\t\tresult = result\n\t\t\t.replace(/<\\/(script|style)/gi, '<\\\\/$1')\n\t\t\t.replace(/<!--/g, json ? '\\\\u003C!--' : '\\\\x3C!--');\n\t}\n\tif (options.wrap) {\n\t\tresult = quote + result + quote;\n\t}\n\treturn result;\n};\n\njsesc.version = '3.0.2';\n\nmodule.exports = jsesc;\n","import { jsx } from \"react/jsx-runtime\";\nimport jsesc from \"jsesc\";\nfunction ScriptOnce({\n children,\n log\n}) {\n if (typeof document !== \"undefined\") {\n return null;\n }\n return /* @__PURE__ */ jsx(\n \"script\",\n {\n className: \"tsr-once\",\n dangerouslySetInnerHTML: {\n __html: [\n children,\n (log ?? true) && process.env.NODE_ENV === \"development\" ? `console.info(\\`Injected From Server:\n${jsesc(children.toString(), { quotes: \"backtick\" })}\\`)` : \"\",\n 'if (typeof __TSR_SSR__ !== \"undefined\") __TSR_SSR__.cleanScripts()'\n ].filter(Boolean).join(\"\\n\")\n }\n }\n );\n}\nexport {\n ScriptOnce\n};\n//# sourceMappingURL=ScriptOnce.js.map\n","import { jsx } from \"react/jsx-runtime\";\nimport { defaultGetScrollRestorationKey, restoreScroll, storageKey } from \"@tanstack/router-core\";\nimport { useRouter } from \"./useRouter.js\";\nimport { ScriptOnce } from \"./ScriptOnce.js\";\nfunction ScrollRestoration() {\n const router = useRouter();\n const getKey = router.options.getScrollRestorationKey || defaultGetScrollRestorationKey;\n const userKey = getKey(router.latestLocation);\n const resolvedKey = userKey !== defaultGetScrollRestorationKey(router.latestLocation) ? userKey : null;\n if (!router.isScrollRestoring || !router.isServer) {\n return null;\n }\n return /* @__PURE__ */ jsx(\n ScriptOnce,\n {\n children: `(${restoreScroll.toString()})(${JSON.stringify(storageKey)},${JSON.stringify(resolvedKey)}, undefined, true)`,\n log: false\n }\n );\n}\nexport {\n ScrollRestoration\n};\n//# sourceMappingURL=scroll-restoration.js.map\n","import { jsxs, Fragment, jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\nimport { isNotFound, rootRouteId, pick, isRedirect, createControlledPromise, getLocationChangeInfo } from \"@tanstack/router-core\";\nimport { CatchBoundary, ErrorComponent } from \"./CatchBoundary.js\";\nimport { useRouterState } from \"./useRouterState.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { CatchNotFound } from \"./not-found.js\";\nimport { matchContext } from \"./matchContext.js\";\nimport { SafeFragment } from \"./SafeFragment.js\";\nimport { renderRouteNotFound } from \"./renderRouteNotFound.js\";\nimport { ScrollRestoration } from \"./scroll-restoration.js\";\nconst Match = React.memo(function MatchImpl({\n matchId\n}) {\n var _a, _b;\n const router = useRouter();\n const routeId = useRouterState({\n select: (s) => {\n var _a2;\n return (_a2 = s.matches.find((d) => d.id === matchId)) == null ? void 0 : _a2.routeId;\n }\n });\n invariant(\n routeId,\n `Could not find routeId for matchId \"${matchId}\". Please file an issue!`\n );\n const route = router.routesById[routeId];\n const PendingComponent = route.options.pendingComponent ?? router.options.defaultPendingComponent;\n const pendingElement = PendingComponent ? /* @__PURE__ */ jsx(PendingComponent, {}) : null;\n const routeErrorComponent = route.options.errorComponent ?? router.options.defaultErrorComponent;\n const routeOnCatch = route.options.onCatch ?? router.options.defaultOnCatch;\n const routeNotFoundComponent = route.isRoot ? (\n // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n route.options.notFoundComponent ?? ((_a = router.options.notFoundRoute) == null ? void 0 : _a.options.component)\n ) : route.options.notFoundComponent;\n const ResolvedSuspenseBoundary = (\n // If we're on the root route, allow forcefully wrapping in suspense\n (!route.isRoot || route.options.wrapInSuspense) && (route.options.wrapInSuspense ?? PendingComponent ?? ((_b = route.options.errorComponent) == null ? void 0 : _b.preload)) ? React.Suspense : SafeFragment\n );\n const ResolvedCatchBoundary = routeErrorComponent ? CatchBoundary : SafeFragment;\n const ResolvedNotFoundBoundary = routeNotFoundComponent ? CatchNotFound : SafeFragment;\n const resetKey = useRouterState({\n select: (s) => s.loadedAt\n });\n const parentRouteId = useRouterState({\n select: (s) => {\n var _a2;\n const index = s.matches.findIndex((d) => d.id === matchId);\n return (_a2 = s.matches[index - 1]) == null ? void 0 : _a2.routeId;\n }\n });\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(matchContext.Provider, { value: matchId, children: /* @__PURE__ */ jsx(ResolvedSuspenseBoundary, { fallback: pendingElement, children: /* @__PURE__ */ jsx(\n ResolvedCatchBoundary,\n {\n getResetKey: () => resetKey,\n errorComponent: routeErrorComponent || ErrorComponent,\n onCatch: (error, errorInfo) => {\n if (isNotFound(error)) throw error;\n warning(false, `Error in route match: ${matchId}`);\n routeOnCatch == null ? void 0 : routeOnCatch(error, errorInfo);\n },\n children: /* @__PURE__ */ jsx(\n ResolvedNotFoundBoundary,\n {\n fallback: (error) => {\n if (!routeNotFoundComponent || error.routeId && error.routeId !== routeId || !error.routeId && !route.isRoot)\n throw error;\n return React.createElement(routeNotFoundComponent, error);\n },\n children: /* @__PURE__ */ jsx(MatchInner, { matchId })\n }\n )\n }\n ) }) }),\n parentRouteId === rootRouteId && router.options.scrollRestoration ? /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(OnRendered, {}),\n /* @__PURE__ */ jsx(ScrollRestoration, {})\n ] }) : null\n ] });\n});\nfunction OnRendered() {\n var _a;\n const router = useRouter();\n const prevLocationRef = React.useRef(\n void 0\n );\n return /* @__PURE__ */ jsx(\n \"script\",\n {\n suppressHydrationWarning: true,\n ref: (el) => {\n var _a2;\n if (el && (prevLocationRef.current === void 0 || prevLocationRef.current.href !== ((_a2 = router.state.resolvedLocation) == null ? void 0 : _a2.href))) {\n router.emit({\n type: \"onRendered\",\n ...getLocationChangeInfo(router.state)\n });\n prevLocationRef.current = router.state.resolvedLocation;\n }\n }\n },\n (_a = router.state.resolvedLocation) == null ? void 0 : _a.state.key\n );\n}\nconst MatchInner = React.memo(function MatchInnerImpl({\n matchId\n}) {\n var _a, _b, _c;\n const router = useRouter();\n const { match, key, routeId } = useRouterState({\n select: (s) => {\n const matchIndex = s.matches.findIndex((d) => d.id === matchId);\n const match2 = s.matches[matchIndex];\n const routeId2 = match2.routeId;\n const remountFn = router.routesById[routeId2].options.remountDeps ?? router.options.defaultRemountDeps;\n const remountDeps = remountFn == null ? void 0 : remountFn({\n routeId: routeId2,\n loaderDeps: match2.loaderDeps,\n params: match2._strictParams,\n search: match2._strictSearch\n });\n const key2 = remountDeps ? JSON.stringify(remountDeps) : void 0;\n return {\n key: key2,\n routeId: routeId2,\n match: pick(match2, [\"id\", \"status\", \"error\"])\n };\n },\n structuralSharing: true\n });\n const route = router.routesById[routeId];\n const out = React.useMemo(() => {\n const Comp = route.options.component ?? router.options.defaultComponent;\n if (Comp) {\n return /* @__PURE__ */ jsx(Comp, {}, key);\n }\n return /* @__PURE__ */ jsx(Outlet, {});\n }, [key, route.options.component, router.options.defaultComponent]);\n const RouteErrorComponent = (route.options.errorComponent ?? router.options.defaultErrorComponent) || ErrorComponent;\n if (match.status === \"notFound\") {\n invariant(isNotFound(match.error), \"Expected a notFound error\");\n return renderRouteNotFound(router, route, match.error);\n }\n if (match.status === \"redirected\") {\n invariant(isRedirect(match.error), \"Expected a redirect error\");\n throw (_a = router.getMatch(match.id)) == null ? void 0 : _a.loadPromise;\n }\n if (match.status === \"error\") {\n if (router.isServer) {\n return /* @__PURE__ */ jsx(\n RouteErrorComponent,\n {\n error: match.error,\n reset: void 0,\n info: {\n componentStack: \"\"\n }\n }\n );\n }\n throw match.error;\n }\n if (match.status === \"pending\") {\n const pendingMinMs = route.options.pendingMinMs ?? router.options.defaultPendingMinMs;\n if (pendingMinMs && !((_b = router.getMatch(match.id)) == null ? void 0 : _b.minPendingPromise)) {\n if (!router.isServer) {\n const minPendingPromise = createControlledPromise();\n Promise.resolve().then(() => {\n router.updateMatch(match.id, (prev) => ({\n ...prev,\n minPendingPromise\n }));\n });\n setTimeout(() => {\n minPendingPromise.resolve();\n router.updateMatch(match.id, (prev) => ({\n ...prev,\n minPendingPromise: void 0\n }));\n }, pendingMinMs);\n }\n }\n throw (_c = router.getMatch(match.id)) == null ? void 0 : _c.loadPromise;\n }\n return out;\n});\nconst Outlet = React.memo(function OutletImpl() {\n const router = useRouter();\n const matchId = React.useContext(matchContext);\n const routeId = useRouterState({\n select: (s) => {\n var _a;\n return (_a = s.matches.find((d) => d.id === matchId)) == null ? void 0 : _a.routeId;\n }\n });\n const route = router.routesById[routeId];\n const parentGlobalNotFound = useRouterState({\n select: (s) => {\n const matches = s.matches;\n const parentMatch = matches.find((d) => d.id === matchId);\n invariant(\n parentMatch,\n `Could not find parent match for matchId \"${matchId}\"`\n );\n return parentMatch.globalNotFound;\n }\n });\n const childMatchId = useRouterState({\n select: (s) => {\n var _a;\n const matches = s.matches;\n const index = matches.findIndex((d) => d.id === matchId);\n return (_a = matches[index + 1]) == null ? void 0 : _a.id;\n }\n });\n if (parentGlobalNotFound) {\n return renderRouteNotFound(router, route, void 0);\n }\n if (!childMatchId) {\n return null;\n }\n const nextMatch = /* @__PURE__ */ jsx(Match, { matchId: childMatchId });\n const pendingElement = router.options.defaultPendingComponent ? /* @__PURE__ */ jsx(router.options.defaultPendingComponent, {}) : null;\n if (matchId === rootRouteId) {\n return /* @__PURE__ */ jsx(React.Suspense, { fallback: pendingElement, children: nextMatch });\n }\n return nextMatch;\n});\nexport {\n Match,\n MatchInner,\n Outlet\n};\n//# sourceMappingURL=Match.js.map\n","import * as React from \"react\";\nfunction useStableCallback(fn) {\n const fnRef = React.useRef(fn);\n fnRef.current = fn;\n const ref = React.useRef((...args) => fnRef.current(...args));\n return ref.current;\n}\nconst useLayoutEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction usePrevious(value) {\n const ref = React.useRef({\n value,\n prev: null\n });\n const current = ref.current.value;\n if (value !== current) {\n ref.current = {\n value,\n prev: current\n };\n }\n return ref.current.prev;\n}\nfunction useIntersectionObserver(ref, callback, intersectionObserverOptions = {}, options = {}) {\n const isIntersectionObserverAvailable = React.useRef(\n typeof IntersectionObserver === \"function\"\n );\n const observerRef = React.useRef(null);\n React.useEffect(() => {\n if (!ref.current || !isIntersectionObserverAvailable.current || options.disabled) {\n return;\n }\n observerRef.current = new IntersectionObserver(([entry]) => {\n callback(entry);\n }, intersectionObserverOptions);\n observerRef.current.observe(ref.current);\n return () => {\n var _a;\n (_a = observerRef.current) == null ? void 0 : _a.disconnect();\n };\n }, [callback, intersectionObserverOptions, options.disabled, ref]);\n return observerRef.current;\n}\nfunction useForwardedRef(ref) {\n const innerRef = React.useRef(null);\n React.useImperativeHandle(ref, () => innerRef.current, []);\n return innerRef;\n}\nexport {\n useForwardedRef,\n useIntersectionObserver,\n useLayoutEffect,\n usePrevious,\n useStableCallback\n};\n//# sourceMappingURL=utils.js.map\n","import * as React from \"react\";\nimport { trimPathRight, getLocationChangeInfo, handleHashScroll } from \"@tanstack/router-core\";\nimport { usePrevious, useLayoutEffect } from \"./utils.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { useRouterState } from \"./useRouterState.js\";\nfunction Transitioner() {\n const router = useRouter();\n const mountLoadForRouter = React.useRef({ router, mounted: false });\n const isLoading = useRouterState({\n select: ({ isLoading: isLoading2 }) => isLoading2\n });\n const [isTransitioning, setIsTransitioning] = React.useState(false);\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === \"pending\"),\n structuralSharing: true\n });\n const previousIsLoading = usePrevious(isLoading);\n const isAnyPending = isLoading || isTransitioning || hasPendingMatches;\n const previousIsAnyPending = usePrevious(isAnyPending);\n const isPagePending = isLoading || hasPendingMatches;\n const previousIsPagePending = usePrevious(isPagePending);\n if (!router.isServer) {\n router.startTransition = (fn) => {\n setIsTransitioning(true);\n React.startTransition(() => {\n fn();\n setIsTransitioning(false);\n });\n };\n }\n React.useEffect(() => {\n const unsub = router.history.subscribe(router.load);\n const nextLocation = router.buildLocation({\n to: router.latestLocation.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true\n });\n if (trimPathRight(router.latestLocation.href) !== trimPathRight(nextLocation.href)) {\n router.commitLocation({ ...nextLocation, replace: true });\n }\n return () => {\n unsub();\n };\n }, [router, router.history]);\n useLayoutEffect(() => {\n if (typeof window !== \"undefined\" && router.clientSsr || mountLoadForRouter.current.router === router && mountLoadForRouter.current.mounted) {\n return;\n }\n mountLoadForRouter.current = { router, mounted: true };\n const tryLoad = async () => {\n try {\n await router.load();\n } catch (err) {\n console.error(err);\n }\n };\n tryLoad();\n }, [router]);\n useLayoutEffect(() => {\n if (previousIsLoading && !isLoading) {\n router.emit({\n type: \"onLoad\",\n // When the new URL has committed, when the new matches have been loaded into state.matches\n ...getLocationChangeInfo(router.state)\n });\n }\n }, [previousIsLoading, router, isLoading]);\n useLayoutEffect(() => {\n if (previousIsPagePending && !isPagePending) {\n router.emit({\n type: \"onBeforeRouteMount\",\n ...getLocationChangeInfo(router.state)\n });\n }\n }, [isPagePending, previousIsPagePending, router]);\n useLayoutEffect(() => {\n if (previousIsAnyPending && !isAnyPending) {\n router.emit({\n type: \"onResolved\",\n ...getLocationChangeInfo(router.state)\n });\n router.__store.setState((s) => ({\n ...s,\n status: \"idle\",\n resolvedLocation: s.location\n }));\n handleHashScroll(router);\n }\n }, [isAnyPending, previousIsAnyPending, router]);\n return null;\n}\nexport {\n Transitioner\n};\n//# sourceMappingURL=Transitioner.js.map\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport warning from \"tiny-warning\";\nimport { CatchBoundary, ErrorComponent } from \"./CatchBoundary.js\";\nimport { useRouterState } from \"./useRouterState.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { Transitioner } from \"./Transitioner.js\";\nimport { matchContext } from \"./matchContext.js\";\nimport { Match } from \"./Match.js\";\nimport { SafeFragment } from \"./SafeFragment.js\";\nfunction Matches() {\n const router = useRouter();\n const pendingElement = router.options.defaultPendingComponent ? /* @__PURE__ */ jsx(router.options.defaultPendingComponent, {}) : null;\n const ResolvedSuspense = router.isServer || typeof document !== \"undefined\" && router.clientSsr ? SafeFragment : React.Suspense;\n const inner = /* @__PURE__ */ jsxs(ResolvedSuspense, { fallback: pendingElement, children: [\n /* @__PURE__ */ jsx(Transitioner, {}),\n /* @__PURE__ */ jsx(MatchesInner, {})\n ] });\n return router.options.InnerWrap ? /* @__PURE__ */ jsx(router.options.InnerWrap, { children: inner }) : inner;\n}\nfunction MatchesInner() {\n const matchId = useRouterState({\n select: (s) => {\n var _a;\n return (_a = s.matches[0]) == null ? void 0 : _a.id;\n }\n });\n const resetKey = useRouterState({\n select: (s) => s.loadedAt\n });\n return /* @__PURE__ */ jsx(matchContext.Provider, { value: matchId, children: /* @__PURE__ */ jsx(\n CatchBoundary,\n {\n getResetKey: () => resetKey,\n errorComponent: ErrorComponent,\n onCatch: (error) => {\n warning(\n false,\n `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`\n );\n warning(false, error.message || error.toString());\n },\n children: matchId ? /* @__PURE__ */ jsx(Match, { matchId }) : null\n }\n ) });\n}\nfunction useMatchRoute() {\n const router = useRouter();\n useRouterState({\n select: (s) => {\n var _a;\n return [s.location.href, (_a = s.resolvedLocation) == null ? void 0 : _a.href, s.status];\n },\n structuralSharing: true\n });\n return React.useCallback(\n (opts) => {\n const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;\n return router.matchRoute(rest, {\n pending,\n caseSensitive,\n fuzzy,\n includeSearch\n });\n },\n [router]\n );\n}\nfunction MatchRoute(props) {\n const matchRoute = useMatchRoute();\n const params = matchRoute(props);\n if (typeof props.children === \"function\") {\n return props.children(params);\n }\n return params ? props.children : null;\n}\nfunction useMatches(opts) {\n return useRouterState({\n select: (state) => {\n const matches = state.matches;\n return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;\n },\n structuralSharing: opts == null ? void 0 : opts.structuralSharing\n });\n}\nfunction useParentMatches(opts) {\n const contextMatchId = React.useContext(matchContext);\n return useMatches({\n select: (matches) => {\n matches = matches.slice(\n 0,\n matches.findIndex((d) => d.id === contextMatchId)\n );\n return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;\n },\n structuralSharing: opts == null ? void 0 : opts.structuralSharing\n });\n}\nfunction useChildMatches(opts) {\n const contextMatchId = React.useContext(matchContext);\n return useMatches({\n select: (matches) => {\n matches = matches.slice(\n matches.findIndex((d) => d.id === contextMatchId) + 1\n );\n return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;\n },\n structuralSharing: opts == null ? void 0 : opts.structuralSharing\n });\n}\nexport {\n MatchRoute,\n Matches,\n useChildMatches,\n useMatchRoute,\n useMatches,\n useParentMatches\n};\n//# sourceMappingURL=Matches.js.map\n","import { jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { preloadWarning, functionalUpdate, exactPathTest, removeTrailingSlash, deepEqual } from \"@tanstack/router-core\";\nimport { useRouterState } from \"./useRouterState.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { useForwardedRef, useIntersectionObserver, useLayoutEffect } from \"./utils.js\";\nimport { useMatches } from \"./Matches.js\";\nfunction useLinkProps(options, forwardedRef) {\n const router = useRouter();\n const [isTransitioning, setIsTransitioning] = React.useState(false);\n const hasRenderFetched = React.useRef(false);\n const innerRef = useForwardedRef(forwardedRef);\n const {\n // custom props\n activeProps = () => ({ className: \"active\" }),\n inactiveProps = () => ({}),\n activeOptions,\n to,\n preload: userPreload,\n preloadDelay: userPreloadDelay,\n hashScrollIntoView,\n replace,\n startTransition,\n resetScroll,\n viewTransition,\n // element props\n children,\n target,\n disabled,\n style,\n className,\n onClick,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n ignoreBlocker,\n ...rest\n } = options;\n const {\n // prevent these from being returned\n params: _params,\n search: _search,\n hash: _hash,\n state: _state,\n mask: _mask,\n reloadDocument: _reloadDocument,\n ...propsSafeToSpread\n } = rest;\n const type = React.useMemo(() => {\n try {\n new URL(`${to}`);\n return \"external\";\n } catch {\n }\n return \"internal\";\n }, [to]);\n const currentSearch = useRouterState({\n select: (s) => s.location.search,\n structuralSharing: true\n });\n const from = useMatches({\n select: (matches) => {\n var _a;\n return options.from ?? ((_a = matches[matches.length - 1]) == null ? void 0 : _a.fullPath);\n }\n });\n const _options = React.useMemo(() => ({ ...options, from }), [options, from]);\n const next = React.useMemo(\n () => router.buildLocation(_options),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [router, _options, currentSearch]\n );\n const preload = React.useMemo(() => {\n if (_options.reloadDocument) {\n return false;\n }\n return userPreload ?? router.options.defaultPreload;\n }, [router.options.defaultPreload, userPreload, _options.reloadDocument]);\n const preloadDelay = userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0;\n const isActive = useRouterState({\n select: (s) => {\n if (activeOptions == null ? void 0 : activeOptions.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next.pathname,\n router.basepath\n );\n if (!testExact) {\n return false;\n }\n } else {\n const currentPathSplit = removeTrailingSlash(\n s.location.pathname,\n router.basepath\n ).split(\"/\");\n const nextPathSplit = removeTrailingSlash(\n next.pathname,\n router.basepath\n ).split(\"/\");\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i]\n );\n if (!pathIsFuzzyEqual) {\n return false;\n }\n }\n if ((activeOptions == null ? void 0 : activeOptions.includeSearch) ?? true) {\n const searchTest = deepEqual(s.location.search, next.search, {\n partial: !(activeOptions == null ? void 0 : activeOptions.exact),\n ignoreUndefined: !(activeOptions == null ? void 0 : activeOptions.explicitUndefined)\n });\n if (!searchTest) {\n return false;\n }\n }\n if (activeOptions == null ? void 0 : activeOptions.includeHash) {\n return s.location.hash === next.hash;\n }\n return true;\n }\n });\n const doPreload = React.useCallback(() => {\n router.preloadRoute(_options).catch((err) => {\n console.warn(err);\n console.warn(preloadWarning);\n });\n }, [_options, router]);\n const preloadViewportIoCallback = React.useCallback(\n (entry) => {\n if (entry == null ? void 0 : entry.isIntersecting) {\n doPreload();\n }\n },\n [doPreload]\n );\n useIntersectionObserver(\n innerRef,\n preloadViewportIoCallback,\n { rootMargin: \"100px\" },\n { disabled: !!disabled || !(preload === \"viewport\") }\n );\n useLayoutEffect(() => {\n if (hasRenderFetched.current) {\n return;\n }\n if (!disabled && preload === \"render\") {\n doPreload();\n hasRenderFetched.current = true;\n }\n }, [disabled, doPreload, preload]);\n if (type === \"external\") {\n return {\n ...propsSafeToSpread,\n ref: innerRef,\n type,\n href: to,\n ...children && { children },\n ...target && { target },\n ...disabled && { disabled },\n ...style && { style },\n ...className && { className },\n ...onClick && { onClick },\n ...onFocus && { onFocus },\n ...onMouseEnter && { onMouseEnter },\n ...onMouseLeave && { onMouseLeave },\n ...onTouchStart && { onTouchStart }\n };\n }\n const handleClick = (e) => {\n if (!disabled && !isCtrlEvent(e) && !e.defaultPrevented && (!target || target === \"_self\") && e.button === 0) {\n e.preventDefault();\n flushSync(() => {\n setIsTransitioning(true);\n });\n const unsub = router.subscribe(\"onResolved\", () => {\n unsub();\n setIsTransitioning(false);\n });\n return router.navigate({\n ..._options,\n replace,\n resetScroll,\n hashScrollIntoView,\n startTransition,\n viewTransition,\n ignoreBlocker\n });\n }\n };\n const handleFocus = (_) => {\n if (disabled) return;\n if (preload) {\n doPreload();\n }\n };\n const handleTouchStart = handleFocus;\n const handleEnter = (e) => {\n if (disabled) return;\n const eventTarget = e.target || {};\n if (preload) {\n if (eventTarget.preloadTimeout) {\n return;\n }\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null;\n doPreload();\n }, preloadDelay);\n }\n };\n const handleLeave = (e) => {\n if (disabled) return;\n const eventTarget = e.target || {};\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout);\n eventTarget.preloadTimeout = null;\n }\n };\n const composeHandlers = (handlers) => (e) => {\n var _a;\n (_a = e.persist) == null ? void 0 : _a.call(e);\n handlers.filter(Boolean).forEach((handler) => {\n if (e.defaultPrevented) return;\n handler(e);\n });\n };\n const resolvedActiveProps = isActive ? functionalUpdate(activeProps, {}) ?? {} : {};\n const resolvedInactiveProps = isActive ? {} : functionalUpdate(inactiveProps, {});\n const resolvedClassName = [\n className,\n resolvedActiveProps.className,\n resolvedInactiveProps.className\n ].filter(Boolean).join(\" \");\n const resolvedStyle = {\n ...style,\n ...resolvedActiveProps.style,\n ...resolvedInactiveProps.style\n };\n return {\n ...propsSafeToSpread,\n ...resolvedActiveProps,\n ...resolvedInactiveProps,\n href: disabled ? void 0 : next.maskedLocation ? router.history.createHref(next.maskedLocation.href) : router.history.createHref(next.href),\n ref: innerRef,\n onClick: composeHandlers([onClick, handleClick]),\n onFocus: composeHandlers([onFocus, handleFocus]),\n onMouseEnter: composeHandlers([onMouseEnter, handleEnter]),\n onMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n onTouchStart: composeHandlers([onTouchStart, handleTouchStart]),\n disabled: !!disabled,\n target,\n ...Object.keys(resolvedStyle).length && { style: resolvedStyle },\n ...resolvedClassName && { className: resolvedClassName },\n ...disabled && {\n role: \"link\",\n \"aria-disabled\": true\n },\n ...isActive && { \"data-status\": \"active\", \"aria-current\": \"page\" },\n ...isTransitioning && { \"data-transitioning\": \"transitioning\" }\n };\n}\nfunction createLink(Comp) {\n return React.forwardRef(function CreatedLink(props, ref) {\n return /* @__PURE__ */ jsx(Link, { ...props, _asChild: Comp, ref });\n });\n}\nconst Link = React.forwardRef(\n (props, ref) => {\n const { _asChild, ...rest } = props;\n const {\n type: _type,\n ref: innerRef,\n ...linkProps\n } = useLinkProps(rest, ref);\n const children = typeof rest.children === \"function\" ? rest.children({\n isActive: linkProps[\"data-status\"] === \"active\"\n }) : rest.children;\n if (typeof _asChild === \"undefined\") {\n delete linkProps.disabled;\n }\n return React.createElement(\n _asChild ? _asChild : \"a\",\n {\n ...linkProps,\n ref: innerRef\n },\n children\n );\n }\n);\nfunction isCtrlEvent(e) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey);\n}\nconst linkOptions = (options) => {\n return options;\n};\nexport {\n Link,\n createLink,\n linkOptions,\n useLinkProps\n};\n//# sourceMappingURL=link.js.map\n","import { RouterCore } from \"@tanstack/router-core\";\nconst createRouter = (options) => {\n return new Router(options);\n};\nclass Router extends RouterCore {\n constructor(options) {\n super(options);\n }\n}\nexport {\n Router,\n createRouter\n};\n//# sourceMappingURL=router.js.map\n","import { jsx } from \"react/jsx-runtime\";\nimport { Matches } from \"./Matches.js\";\nimport { getRouterContext } from \"./routerContext.js\";\nfunction RouterContextProvider({\n router,\n children,\n ...rest\n}) {\n router.update({\n ...router.options,\n ...rest,\n context: {\n ...router.options.context,\n ...rest.context\n }\n });\n const routerContext = getRouterContext();\n const provider = /* @__PURE__ */ jsx(routerContext.Provider, { value: router, children });\n if (router.options.Wrap) {\n return /* @__PURE__ */ jsx(router.options.Wrap, { children: provider });\n }\n return provider;\n}\nfunction RouterProvider({ router, ...rest }) {\n return /* @__PURE__ */ jsx(RouterContextProvider, { router, ...rest, children: /* @__PURE__ */ jsx(Matches, {}) });\n}\nexport {\n RouterContextProvider,\n RouterProvider\n};\n//# sourceMappingURL=RouterProvider.js.map\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M112,56V200L40,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,72H212V64a28,28,0,0,0-28-28H40A28,28,0,0,0,12,64v88a28,28,0,0,0,28,28h96v12a28,28,0,0,0,28,28h60a28,28,0,0,0,28-28V100A28,28,0,0,0,224,72ZM40,156a4,4,0,0,1-4-4V64a4,4,0,0,1,4-4H184a4,4,0,0,1,4,4v8H164a28,28,0,0,0-28,28v56Zm188,36a4,4,0,0,1-4,4H164a4,4,0,0,1-4-4V100a4,4,0,0,1,4-4h60a4,4,0,0,1,4,4ZM124,208a12,12,0,0,1-12,12H88a12,12,0,0,1,0-24h24A12,12,0,0,1,124,208Zm88-84a12,12,0,0,1-12,12H188a12,12,0,0,1,0-24h12A12,12,0,0,1,212,124Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M200,64V80H176a16,16,0,0,0-16,16v80H40a16,16,0,0,1-16-16V64A16,16,0,0,1,40,48H184A16,16,0,0,1,200,64Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,72H208V64a24,24,0,0,0-24-24H40A24,24,0,0,0,16,64v96a24,24,0,0,0,24,24H152v8a24,24,0,0,0,24,24h48a24,24,0,0,0,24-24V96A24,24,0,0,0,224,72ZM40,168a8,8,0,0,1-8-8V64a8,8,0,0,1,8-8H184a8,8,0,0,1,8,8v8H176a24,24,0,0,0-24,24v72Zm192,24a8,8,0,0,1-8,8H176a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Zm-96,16a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h40A8,8,0,0,1,136,208Zm80-96a8,8,0,0,1-8,8H192a8,8,0,0,1,0-16h16A8,8,0,0,1,216,112Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,72H208V64a24,24,0,0,0-24-24H40A24,24,0,0,0,16,64v96a24,24,0,0,0,24,24H152v8a24,24,0,0,0,24,24h48a24,24,0,0,0,24-24V96A24,24,0,0,0,224,72Zm8,120a8,8,0,0,1-8,8H176a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Zm-96,16a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h40A8,8,0,0,1,136,208Zm80-96a8,8,0,0,1-8,8H192a8,8,0,0,1,0-16h16A8,8,0,0,1,216,112Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,74H206V64a22,22,0,0,0-22-22H40A22,22,0,0,0,18,64v96a22,22,0,0,0,22,22H154v10a22,22,0,0,0,22,22h48a22,22,0,0,0,22-22V96A22,22,0,0,0,224,74ZM40,170a10,10,0,0,1-10-10V64A10,10,0,0,1,40,54H184a10,10,0,0,1,10,10V74H176a22,22,0,0,0-22,22v74Zm194,22a10,10,0,0,1-10,10H176a10,10,0,0,1-10-10V96a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10ZM134,208a6,6,0,0,1-6,6H88a6,6,0,0,1,0-12h40A6,6,0,0,1,134,208Zm80-96a6,6,0,0,1-6,6H192a6,6,0,0,1,0-12h16A6,6,0,0,1,214,112Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,72H208V64a24,24,0,0,0-24-24H40A24,24,0,0,0,16,64v96a24,24,0,0,0,24,24H152v8a24,24,0,0,0,24,24h48a24,24,0,0,0,24-24V96A24,24,0,0,0,224,72ZM40,168a8,8,0,0,1-8-8V64a8,8,0,0,1,8-8H184a8,8,0,0,1,8,8v8H176a24,24,0,0,0-24,24v72Zm192,24a8,8,0,0,1-8,8H176a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Zm-96,16a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h40A8,8,0,0,1,136,208Zm80-96a8,8,0,0,1-8,8H192a8,8,0,0,1,0-16h16A8,8,0,0,1,216,112Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,76H204V64a20,20,0,0,0-20-20H40A20,20,0,0,0,20,64v96a20,20,0,0,0,20,20H156v12a20,20,0,0,0,20,20h48a20,20,0,0,0,20-20V96A20,20,0,0,0,224,76ZM40,172a12,12,0,0,1-12-12V64A12,12,0,0,1,40,52H184a12,12,0,0,1,12,12V76H176a20,20,0,0,0-20,20v76Zm196,20a12,12,0,0,1-12,12H176a12,12,0,0,1-12-12V96a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12ZM132,208a4,4,0,0,1-4,4H88a4,4,0,0,1,0-8h40A4,4,0,0,1,132,208Zm80-96a4,4,0,0,1-4,4H192a4,4,0,0,1,0-8h16A4,4,0,0,1,212,112Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,187a113.4,113.4,0,0,1-20.39-35h40.82a116.94,116.94,0,0,1-10,20.77A108.61,108.61,0,0,1,128,207Zm-26.49-59a135.42,135.42,0,0,1,0-40h53a135.42,135.42,0,0,1,0,40ZM44,128a83.49,83.49,0,0,1,2.43-20H77.25a160.63,160.63,0,0,0,0,40H46.43A83.49,83.49,0,0,1,44,128Zm84-79a113.4,113.4,0,0,1,20.39,35H107.59a116.94,116.94,0,0,1,10-20.77A108.61,108.61,0,0,1,128,49Zm50.73,59h30.82a83.52,83.52,0,0,1,0,40H178.75a160.63,160.63,0,0,0,0-40Zm20.77-24H173.71a140.82,140.82,0,0,0-15.5-34.36A84.51,84.51,0,0,1,199.52,84ZM97.79,49.64A140.82,140.82,0,0,0,82.29,84H56.48A84.51,84.51,0,0,1,97.79,49.64ZM56.48,172H82.29a140.82,140.82,0,0,0,15.5,34.36A84.51,84.51,0,0,1,56.48,172Zm101.73,34.36A140.82,140.82,0,0,0,173.71,172h25.81A84.51,84.51,0,0,1,158.21,206.36Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm88,104a87.61,87.61,0,0,1-3.33,24H174.16a157.44,157.44,0,0,0,0-48h38.51A87.61,87.61,0,0,1,216,128ZM102,168H154a115.11,115.11,0,0,1-26,45A115.27,115.27,0,0,1,102,168Zm-3.9-16a140.84,140.84,0,0,1,0-48h59.88a140.84,140.84,0,0,1,0,48ZM40,128a87.61,87.61,0,0,1,3.33-24H81.84a157.44,157.44,0,0,0,0,48H43.33A87.61,87.61,0,0,1,40,128ZM154,88H102a115.11,115.11,0,0,1,26-45A115.27,115.27,0,0,1,154,88Zm52.33,0H170.71a135.28,135.28,0,0,0-22.3-45.6A88.29,88.29,0,0,1,206.37,88ZM107.59,42.4A135.28,135.28,0,0,0,85.29,88H49.63A88.29,88.29,0,0,1,107.59,42.4ZM49.63,168H85.29a135.28,135.28,0,0,0,22.3,45.6A88.29,88.29,0,0,1,49.63,168Zm98.78,45.6a135.28,135.28,0,0,0,22.3-45.6h35.66A88.29,88.29,0,0,1,148.41,213.6Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm78.36,64H170.71a135.28,135.28,0,0,0-22.3-45.6A88.29,88.29,0,0,1,206.37,88ZM216,128a87.61,87.61,0,0,1-3.33,24H174.16a157.44,157.44,0,0,0,0-48h38.51A87.61,87.61,0,0,1,216,128ZM128,43a115.27,115.27,0,0,1,26,45H102A115.11,115.11,0,0,1,128,43ZM102,168H154a115.11,115.11,0,0,1-26,45A115.27,115.27,0,0,1,102,168Zm-3.9-16a140.84,140.84,0,0,1,0-48h59.88a140.84,140.84,0,0,1,0,48Zm50.35,61.6a135.28,135.28,0,0,0,22.3-45.6h35.66A88.29,88.29,0,0,1,148.41,213.6Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm81.57,64H169.19a132.58,132.58,0,0,0-25.73-50.67A90.29,90.29,0,0,1,209.57,90ZM218,128a89.7,89.7,0,0,1-3.83,26H171.81a155.43,155.43,0,0,0,0-52h42.36A89.7,89.7,0,0,1,218,128Zm-90,87.83a110,110,0,0,1-15.19-19.45A124.24,124.24,0,0,1,99.35,166h57.3a124.24,124.24,0,0,1-13.46,30.38A110,110,0,0,1,128,215.83ZM96.45,154a139.18,139.18,0,0,1,0-52h63.1a139.18,139.18,0,0,1,0,52ZM38,128a89.7,89.7,0,0,1,3.83-26H84.19a155.43,155.43,0,0,0,0,52H41.83A89.7,89.7,0,0,1,38,128Zm90-87.83a110,110,0,0,1,15.19,19.45A124.24,124.24,0,0,1,156.65,90H99.35a124.24,124.24,0,0,1,13.46-30.38A110,110,0,0,1,128,40.17Zm-15.46-.84A132.58,132.58,0,0,0,86.81,90H46.43A90.29,90.29,0,0,1,112.54,39.33ZM46.43,166H86.81a132.58,132.58,0,0,0,25.73,50.67A90.29,90.29,0,0,1,46.43,166Zm97,50.67A132.58,132.58,0,0,0,169.19,166h40.38A90.29,90.29,0,0,1,143.46,216.67Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm88,104a87.61,87.61,0,0,1-3.33,24H174.16a157.44,157.44,0,0,0,0-48h38.51A87.61,87.61,0,0,1,216,128ZM102,168H154a115.11,115.11,0,0,1-26,45A115.27,115.27,0,0,1,102,168Zm-3.9-16a140.84,140.84,0,0,1,0-48h59.88a140.84,140.84,0,0,1,0,48ZM40,128a87.61,87.61,0,0,1,3.33-24H81.84a157.44,157.44,0,0,0,0,48H43.33A87.61,87.61,0,0,1,40,128ZM154,88H102a115.11,115.11,0,0,1,26-45A115.27,115.27,0,0,1,154,88Zm52.33,0H170.71a135.28,135.28,0,0,0-22.3-45.6A88.29,88.29,0,0,1,206.37,88ZM107.59,42.4A135.28,135.28,0,0,0,85.29,88H49.63A88.29,88.29,0,0,1,107.59,42.4ZM49.63,168H85.29a135.28,135.28,0,0,0,22.3,45.6A88.29,88.29,0,0,1,49.63,168Zm98.78,45.6a135.28,135.28,0,0,0,22.3-45.6h35.66A88.29,88.29,0,0,1,148.41,213.6Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,28h0A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,190.61c-6.33-6.09-23-24.41-31.27-54.61h62.54C151,194.2,134.33,212.52,128,218.61ZM94.82,156a140.42,140.42,0,0,1,0-56h66.36a140.42,140.42,0,0,1,0,56ZM128,37.39c6.33,6.09,23,24.41,31.27,54.61H96.73C105,61.8,121.67,43.48,128,37.39ZM169.41,100h46.23a92.09,92.09,0,0,1,0,56H169.41a152.65,152.65,0,0,0,0-56Zm43.25-8h-45a129.39,129.39,0,0,0-29.19-55.4A92.25,92.25,0,0,1,212.66,92ZM117.54,36.6A129.39,129.39,0,0,0,88.35,92h-45A92.25,92.25,0,0,1,117.54,36.6ZM40.36,100H86.59a152.65,152.65,0,0,0,0,56H40.36a92.09,92.09,0,0,1,0-56Zm3,64h45a129.39,129.39,0,0,0,29.19,55.4A92.25,92.25,0,0,1,43.34,164Zm95.12,55.4A129.39,129.39,0,0,0,167.65,164h45A92.25,92.25,0,0,1,138.46,219.4Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M222.14,105.85l-80-80a20,20,0,0,0-28.28,0l-80,80A19.86,19.86,0,0,0,28,120v96a12,12,0,0,0,12,12H216a12,12,0,0,0,12-12V120A19.86,19.86,0,0,0,222.14,105.85ZM204,204H52V121.65l76-76,76,76Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,120v96H40V120a8,8,0,0,1,2.34-5.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,216,120Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8H216a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H48V120l80-80,80,80Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,120v96a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a15.87,15.87,0,0,1,4.69-11.32l80-80a16,16,0,0,1,22.62,0l80,80A15.87,15.87,0,0,1,224,120Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M217.9,110.1l-80-80a14,14,0,0,0-19.8,0l-80,80A13.92,13.92,0,0,0,34,120v96a6,6,0,0,0,6,6H216a6,6,0,0,0,6-6V120A13.92,13.92,0,0,0,217.9,110.1ZM210,210H46V120a2,2,0,0,1,.58-1.42l80-80a2,2,0,0,1,2.84,0l80,80A2,2,0,0,1,210,120Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8H216a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H48V120l80-80,80,80Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216.49,111.51l-80-80a12,12,0,0,0-17,0l-80,80A12,12,0,0,0,36,120v96a4,4,0,0,0,4,4H216a4,4,0,0,0,4-4V120A12,12,0,0,0,216.49,111.51ZM212,212H44V120a4,4,0,0,1,1.17-2.83l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,212,120Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M235.79,142.88a12,12,0,0,0,4.7-19.87L125,7.52a12,12,0,0,0-17,0L70.25,45.29,48.48,23.52a12,12,0,0,0-17,17L53.28,62.26,12.2,103.35a28,28,0,0,0,0,39.6l84.86,84.86a28,28,0,0,0,39.6,0L214.48,150Zm-31.58-14.77a12,12,0,0,0-4.7,2.9l-79.82,79.83a4,4,0,0,1-5.66,0L29.17,126a4,4,0,0,1,0-5.66L70.25,79.24l24.29,24.29a32,32,0,0,0,52.09,35.11h0a32,32,0,0,0-35.12-52.08L87.23,62.26,116.52,33l93.27,93.28Zm-85.87-17.75,0,0a8,8,0,1,1-.06.06ZM256,208a24,24,0,0,1-48,0c0-19.44,12.93-37.23,14.4-39.2a12,12,0,0,1,19.2,0C243.07,170.78,256,188.57,256,208Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M248,208a16,16,0,0,1-32,0c0-16,16-40,16-40S248,192,248,208Zm-16-76.52-24,8-79.83,79.83a16,16,0,0,1-22.63,0L20.69,134.46a16,16,0,0,1,0-22.63L116.52,16Zm-93.86-29.62a20,20,0,1,0,0,28.28A20,20,0,0,0,138.14,101.86Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M238.66,163.56a8,8,0,0,0-13.32,0C223.57,166.23,208,190.09,208,208a24,24,0,0,0,48,0C256,190.09,240.43,166.23,238.66,163.56ZM232,216a8,8,0,0,1-8-8c0-6.8,4-16.32,8-24.08,4,7.76,8,17.34,8,24.08A8,8,0,0,1,232,216Zm2.53-76.93a8,8,0,0,0,3.13-13.24L122.17,10.34a8,8,0,0,0-11.31,0L70.25,51,45.65,26.34A8,8,0,0,0,34.34,37.66l24.6,24.6L15,106.17a24,24,0,0,0,0,33.94L99.89,225a24,24,0,0,0,33.94,0l78.49-78.49Zm-32.19-5.24-79.83,79.83a8,8,0,0,1-11.31,0L26.34,128.8a8,8,0,0,1,0-11.31L70.25,73.57l29.12,29.12a28,28,0,1,0,11.31-11.32L81.57,62.26l35-34.95L217.19,128l-11.72,3.9A8.09,8.09,0,0,0,202.34,133.83Zm-86.83-26.31,0,0a13.26,13.26,0,1,1-.05.06S115.51,107.53,115.51,107.52Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M256,208a24,24,0,0,1-48,0c0-17.91,15.57-41.77,17.34-44.44a8,8,0,0,1,13.32,0C240.43,166.23,256,190.09,256,208ZM132.49,124.49a12,12,0,0,0-17-17l0,0s0,0,0,0a12,12,0,0,0,17,16.94ZM37.65,18.34A8,8,0,0,0,26.34,29.66l32.6,32.6L70.25,51ZM234.53,139.07a8,8,0,0,0,3.13-13.24L122.17,10.34a8,8,0,0,0-11.31,0L70.25,51l40.43,40.42a28,28,0,1,1-11.31,11.32L58.94,62.26,15,106.17a24,24,0,0,0,0,33.94L99.89,225a24,24,0,0,0,33.94,0l78.49-78.49Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M237,164.67a6,6,0,0,0-10,0c-.7,1-17,25.72-17,43.33a22,22,0,0,0,44,0C254,190.39,237.69,165.71,237,164.67ZM232,218a10,10,0,0,1-10-10c0-8.17,5.37-19.92,10-28.34,4.63,8.41,10,20.15,10,28.34A10,10,0,0,1,232,218Zm1.9-80.82a6,6,0,0,0,2.34-9.94L120.76,11.76a6,6,0,0,0-8.49,0l-42,42-26-26a6,6,0,0,0-8.49,8.48l26,26L16.44,107.59a22,22,0,0,0,0,31.11l84.86,84.86a22,22,0,0,0,31.11,0l78.83-78.83Zm-30.14-1.94-79.83,79.83a10,10,0,0,1-14.14,0L24.93,130.21a10,10,0,0,1,0-14.14L70.25,70.75l31.62,31.61a26,26,0,0,0,3.75,32,26,26,0,0,0,36.76,0h0a26,26,0,0,0-32-40.51L78.74,62.26l37.78-37.77L220.89,128.86l-14.79,4.93A6.07,6.07,0,0,0,203.76,135.24ZM114.1,106.11l0,0a14,14,0,1,1,0,19.82,13.91,13.91,0,0,1,0-19.82Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M234.53,139.07a8,8,0,0,0,3.13-13.24L122.17,10.34a8,8,0,0,0-11.31,0L70.25,51,45.65,26.34A8,8,0,0,0,34.34,37.66l24.6,24.6L15,106.17a24,24,0,0,0,0,33.94L99.89,225a24,24,0,0,0,33.94,0l78.49-78.49Zm-32.19-5.24-79.83,79.83a8,8,0,0,1-11.31,0L26.34,128.8a8,8,0,0,1,0-11.31L70.25,73.57l29.12,29.12a28,28,0,1,0,11.31-11.32L81.57,62.26l35-34.95L217.19,128l-11.72,3.9A8.09,8.09,0,0,0,202.34,133.83Zm-86.83-26.31,0,0a13.26,13.26,0,1,1-.05.06S115.51,107.53,115.51,107.52Zm123.15,56a8,8,0,0,0-13.32,0C223.57,166.23,208,190.09,208,208a24,24,0,0,0,48,0C256,190.09,240.43,166.23,238.66,163.56ZM232,216a8,8,0,0,1-8-8c0-6.8,4-16.32,8-24.08,4,7.76,8,17.34,8,24.08A8,8,0,0,1,232,216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M235.33,165.78a4,4,0,0,0-6.66,0C228,166.8,212,191,212,208a20,20,0,0,0,40,0C252,191,236,166.8,235.33,165.78ZM232,220a12,12,0,0,1-12-12c0-10.25,7.49-24.64,12-32.37,4.51,7.73,12,22.1,12,32.37A12,12,0,0,1,232,220Zm3.89-87.6a4,4,0,0,0-1.06-3.74L119.34,13.17a4,4,0,0,0-5.65,0L70.25,56.6,42.82,29.17a4,4,0,0,0-5.65,5.66L64.6,62.26,17.86,109a20,20,0,0,0,0,28.29l84.85,84.85a20,20,0,0,0,28.29,0L210.16,143l23.1-7.7A4,4,0,0,0,235.89,132.4Zm-29.15,3.29a4.06,4.06,0,0,0-1.57,1l-79.83,79.82a12,12,0,0,1-17,0L23.51,131.63a12,12,0,0,1,0-17L70.25,67.92l34.2,34.2A24,24,0,0,0,141,133h0a24,24,0,0,0-30.86-36.51l-34.2-34.2,40.61-40.6L224.59,129.74Zm-94.05-31a0,0,0,0,0,0,0,16,16,0,1,1,0,22.64,16,16,0,0,1,0-22.64Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M230.14,25.86a20,20,0,0,0-19.57-5.11l-.22.07L18.44,79a20,20,0,0,0-3.06,37.25L99,157l40.71,83.65a19.81,19.81,0,0,0,18,11.38c.57,0,1.15,0,1.73-.07A19.82,19.82,0,0,0,177,237.56L235.18,45.65a1.42,1.42,0,0,0,.07-.22A20,20,0,0,0,230.14,25.86ZM156.91,221.07l-34.37-70.64,46-45.95a12,12,0,0,0-17-17l-46,46L34.93,99.09,210,46Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M223.69,42.18l-58.22,192a8,8,0,0,1-14.92,1.25L108,148,20.58,105.45a8,8,0,0,1,1.25-14.92l192-58.22A8,8,0,0,1,223.69,42.18Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M231.4,44.34s0,.1,0,.15l-58.2,191.94a15.88,15.88,0,0,1-14,11.51q-.69.06-1.38.06a15.86,15.86,0,0,1-14.42-9.15L107,164.15a4,4,0,0,1,.77-4.58l57.92-57.92a8,8,0,0,0-11.31-11.31L96.43,148.26a4,4,0,0,1-4.58.77L17.08,112.64a16,16,0,0,1,2.49-29.8l191.94-58.2.15,0A16,16,0,0,1,231.4,44.34Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M225.88,30.12a13.83,13.83,0,0,0-13.7-3.58l-.11,0L20.14,84.77A14,14,0,0,0,18,110.85l85.56,41.64L145.12,238a13.87,13.87,0,0,0,12.61,8c.4,0,.81,0,1.21-.05a13.9,13.9,0,0,0,12.29-10.09l58.2-191.93,0-.11A13.83,13.83,0,0,0,225.88,30.12Zm-8,10.4L159.73,232.43l0,.11a2,2,0,0,1-3.76.26l-40.68-83.58,49-49a6,6,0,1,0-8.49-8.49l-49,49L23.15,100a2,2,0,0,1,.31-3.74l.11,0L215.48,38.08a1.94,1.94,0,0,1,1.92.52A2,2,0,0,1,217.92,40.52Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224.47,31.52a11.87,11.87,0,0,0-11.82-3L20.74,86.67a12,12,0,0,0-1.91,22.38L105,151l41.92,86.15A11.88,11.88,0,0,0,157.74,244c.34,0,.69,0,1,0a11.89,11.89,0,0,0,10.52-8.63l58.21-192,0-.08A11.85,11.85,0,0,0,224.47,31.52Zm-4.62,9.54-58.23,192a4,4,0,0,1-7.48.59l-41.3-84.86,50-50a4,4,0,1,0-5.66-5.66l-50,50-84.9-41.31a3.88,3.88,0,0,1-2.27-4,3.93,3.93,0,0,1,3-3.54L214.9,36.16A3.93,3.93,0,0,1,216,36a4,4,0,0,1,2.79,1.19A3.93,3.93,0,0,1,219.85,41.06Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport f from \"../defs/ArrowLeft.es.js\";\nconst r = o.forwardRef((e, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...e, weights: f }));\nr.displayName = \"ArrowLeftIcon\";\nconst s = r;\nexport {\n s as ArrowLeft,\n r as ArrowLeftIcon\n};\n","import * as e from \"react\";\nimport s from \"../lib/IconBase.es.js\";\nimport t from \"../defs/Devices.es.js\";\nconst o = e.forwardRef((c, r) => /* @__PURE__ */ e.createElement(s, { ref: r, ...c, weights: t }));\no.displayName = \"DevicesIcon\";\nconst m = o;\nexport {\n m as Devices,\n o as DevicesIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Globe.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"GlobeIcon\";\nconst n = e;\nexport {\n n as Globe,\n e as GlobeIcon\n};\n","import * as e from \"react\";\nimport s from \"../lib/IconBase.es.js\";\nimport t from \"../defs/HouseSimple.es.js\";\nconst o = e.forwardRef((m, r) => /* @__PURE__ */ e.createElement(s, { ref: r, ...m, weights: t }));\no.displayName = \"HouseSimpleIcon\";\nconst p = o;\nexport {\n p as HouseSimple,\n o as HouseSimpleIcon\n};\n","import * as t from \"react\";\nimport c from \"../lib/IconBase.es.js\";\nimport r from \"../defs/PaintBucket.es.js\";\nconst e = t.forwardRef((o, a) => /* @__PURE__ */ t.createElement(c, { ref: a, ...o, weights: r }));\ne.displayName = \"PaintBucketIcon\";\nconst m = e;\nexport {\n m as PaintBucket,\n e as PaintBucketIcon\n};\n","import * as e from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport n from \"../defs/PaperPlaneTilt.es.js\";\nconst a = e.forwardRef((o, r) => /* @__PURE__ */ e.createElement(t, { ref: r, ...o, weights: n }));\na.displayName = \"PaperPlaneTiltIcon\";\nconst m = a;\nexport {\n m as PaperPlaneTilt,\n a as PaperPlaneTiltIcon\n};\n","export function Palette() {\n return (\n <>\n <div className=\"flex items-center justify-center\">\n <div className=\"bg-contrast-0 p-5\" />\n <div className=\"bg-contrast-25 p-5\" />\n <div className=\"bg-contrast-50 p-5\" />\n <div className=\"bg-contrast-100 p-5\" />\n <div className=\"bg-contrast-200 p-5\" />\n <div className=\"bg-contrast-300 p-5\" />\n <div className=\"bg-contrast-400 p-5\" />\n <div className=\"bg-contrast-500 p-5\" />\n <div className=\"bg-contrast-600 p-5\" />\n <div className=\"bg-contrast-700 p-5\" />\n <div className=\"bg-contrast-800 p-5\" />\n <div className=\"bg-contrast-900 p-5\" />\n <div className=\"bg-contrast-950 p-5\" />\n <div className=\"bg-contrast-975 p-5\" />\n <div className=\"bg-contrast-1000 p-5\" />\n </div>\n\n <div className=\"flex items-center justify-center\">\n <div className=\"bg-primary-25 p-5\" />\n <div className=\"bg-primary-50 p-5\" />\n <div className=\"bg-primary-100 p-5\" />\n <div className=\"bg-primary-200 p-5\" />\n <div className=\"bg-primary-300 p-5\" />\n <div className=\"bg-primary-400 p-5\" />\n <div className=\"bg-primary-500 p-5\" />\n <div className=\"bg-primary-600 p-5\" />\n <div className=\"bg-primary-700 p-5\" />\n <div className=\"bg-primary-800 p-5\" />\n <div className=\"bg-primary-900 p-5\" />\n <div className=\"bg-primary-950 p-5\" />\n <div className=\"bg-primary-975 p-5\" />\n </div>\n\n <div className=\"flex items-center justify-center\">\n <div className=\"bg-error-25 p-5\" />\n <div className=\"bg-error-50 p-5\" />\n <div className=\"bg-error-100 p-5\" />\n <div className=\"bg-error-200 p-5\" />\n <div className=\"bg-error-300 p-5\" />\n <div className=\"bg-error-400 p-5\" />\n <div className=\"bg-error-500 p-5\" />\n <div className=\"bg-error-600 p-5\" />\n <div className=\"bg-error-700 p-5\" />\n <div className=\"bg-error-800 p-5\" />\n <div className=\"bg-error-900 p-5\" />\n <div className=\"bg-error-950 p-5\" />\n <div className=\"bg-error-975 p-5\" />\n </div>\n\n <div className=\"flex items-center justify-center\">\n <div className=\"bg-warning-25 p-5\" />\n <div className=\"bg-warning-50 p-5\" />\n <div className=\"bg-warning-100 p-5\" />\n <div className=\"bg-warning-200 p-5\" />\n <div className=\"bg-warning-300 p-5\" />\n <div className=\"bg-warning-400 p-5\" />\n <div className=\"bg-warning-500 p-5\" />\n <div className=\"bg-warning-600 p-5\" />\n <div className=\"bg-warning-700 p-5\" />\n <div className=\"bg-warning-800 p-5\" />\n <div className=\"bg-warning-900 p-5\" />\n <div className=\"bg-warning-950 p-5\" />\n <div className=\"bg-warning-975 p-5\" />\n </div>\n\n <div className=\"flex items-center justify-center\">\n <div className=\"bg-info-25 p-5\" />\n <div className=\"bg-info-50 p-5\" />\n <div className=\"bg-info-100 p-5\" />\n <div className=\"bg-info-200 p-5\" />\n <div className=\"bg-info-300 p-5\" />\n <div className=\"bg-info-400 p-5\" />\n <div className=\"bg-info-500 p-5\" />\n <div className=\"bg-info-600 p-5\" />\n <div className=\"bg-info-700 p-5\" />\n <div className=\"bg-info-800 p-5\" />\n <div className=\"bg-info-900 p-5\" />\n <div className=\"bg-info-950 p-5\" />\n <div className=\"bg-info-975 p-5\" />\n </div>\n\n <div className=\"flex items-center justify-center\">\n <div className=\"bg-success-25 p-5\" />\n <div className=\"bg-success-50 p-5\" />\n <div className=\"bg-success-100 p-5\" />\n <div className=\"bg-success-200 p-5\" />\n <div className=\"bg-success-300 p-5\" />\n <div className=\"bg-success-400 p-5\" />\n <div className=\"bg-success-500 p-5\" />\n <div className=\"bg-success-600 p-5\" />\n <div className=\"bg-success-700 p-5\" />\n <div className=\"bg-success-800 p-5\" />\n <div className=\"bg-success-900 p-5\" />\n <div className=\"bg-success-950 p-5\" />\n <div className=\"bg-success-975 p-5\" />\n </div>\n\n <div className=\"flex items-center justify-center\">\n <div className=\"bg-primary text-primary-contrast p-5\">Az</div>\n <div className=\"bg-error text-error-contrast p-5\">Az</div>\n <div className=\"bg-warning text-warning-contrast p-5\">Az</div>\n <div className=\"bg-success text-success-contrast p-5\">Az</div>\n </div>\n </>\n )\n}\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { clsx } from 'clsx'\nimport { JSX, ReactNode } from 'react'\nimport type { Account } from '@atproto/oauth-provider-api'\nimport { Override } from '#/lib/util.ts'\nimport { AccountIdentifier } from './account-identifier.tsx'\nimport { AccountImage } from './account-image.tsx'\nimport { AccountName } from './account-name.tsx'\n\nexport type AccountOverviewProps = Override<\n {\n account: Account\n },\n JSX.IntrinsicElements['div']\n>\n\nexport function AccountOverview({\n account,\n\n // div\n className,\n ...props\n}: AccountOverviewProps): ReactNode {\n return (\n <div\n className={clsx(\n 'flex min-h-full max-w-full flex-col items-center justify-start gap-1',\n className,\n )}\n {...props}\n >\n <AccountImage account={account} size=\"3xl\" className=\"mb-4 max-w-full\" />\n {account.name && (\n <AccountName\n account={account}\n className=\"text-text-default max-w-full truncate text-xl font-medium\"\n />\n )}\n <AccountIdentifier\n account={account}\n className=\"text-md text-text-light max-w-full truncate\"\n />\n </div>\n )\n}\n","import { Trans, useLingui } from '@lingui/react/macro'\nimport { XIcon } from '@phosphor-icons/react'\nimport * as Popover from '@radix-ui/react-popover'\nimport { ReactNode } from 'react'\nimport { useAuthenticationContext } from '#/contexts/authentication.tsx'\nimport { useSessionContext } from '#/contexts/session.tsx'\nimport { Button, ButtonProps } from '../forms/button.tsx'\nimport { AccountImage } from './account-image.tsx'\nimport { AccountOverview } from './account-overview.tsx'\n\nexport type AccountSelectorProps = Omit<\n ButtonProps,\n 'shape' | 'transparent' | 'color'\n>\n\nexport function AccountSelector(props: AccountSelectorProps): ReactNode {\n const { t } = useLingui()\n const { session, canSwitchAccounts } = useAuthenticationContext()\n const { setSession, doSignOut } = useSessionContext()\n\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <Button\n aria-label={t`Account selector`}\n shape=\"circle\"\n transparent\n color=\"gray\"\n {...props}\n >\n <AccountImage account={session.account} size={props.size} />\n </Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side=\"top\"\n align=\"end\"\n className=\"w-full\"\n sideOffset={5}\n style={{ width: 320 }}\n >\n <div className=\"relative flex flex-col gap-2 rounded-lg border border-slate-200 bg-white p-2 shadow-lg dark:border-slate-700 dark:bg-slate-800\">\n <AccountOverview\n account={session.account}\n aria-label={t`Account overview`}\n className=\"mt-4\"\n />\n <Button\n key=\"signout\"\n onClick={() => doSignOut(session.account)}\n color=\"primary\"\n >\n <Trans>Sign out</Trans>\n </Button>\n\n {canSwitchAccounts && (\n <Button key=\"other\" onClick={() => setSession(null)}>\n <Trans>Select another account</Trans>\n </Button>\n )}\n\n <Popover.Close\n key=\"close\"\n className=\"absolute right-2 top-2 rounded opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2\"\n aria-label={t`Close account selector`}\n >\n <XIcon className=\"size-6\" aria-hidden />\n </Popover.Close>\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n )\n}\n","import { MessageDescriptor } from '@lingui/core'\nimport { useLingui } from '@lingui/react'\nimport { ArrowLeftIcon, IconProps } from '@phosphor-icons/react'\nimport {\n Link,\n RegisteredRouter,\n ToPathOption,\n useRouterState,\n} from '@tanstack/react-router'\nimport { clsx } from 'clsx'\nimport { FunctionComponent, ReactNode } from 'react'\nimport { LayoutApp } from '#/components/layouts/layout-app.tsx'\nimport { AccountSelector } from '#/components/utils/account-selector.tsx'\n\nexport type LayoutPageLink = {\n to: ToPathOption<RegisteredRouter, '/', undefined>\n title: string | MessageDescriptor\n hidden?: boolean\n description?: string | MessageDescriptor\n icon?: FunctionComponent<IconProps>\n}\n\nexport type LayoutPageProps = {\n basePath: ToPathOption<RegisteredRouter, '/', undefined>\n title?: string | MessageDescriptor\n links: ReadonlyArray<LayoutPageLink>\n children?: ReactNode\n}\n\nexport function LayoutPage({\n children,\n basePath,\n title,\n links,\n}: LayoutPageProps) {\n const { _ } = useLingui()\n const { pathname } = useRouterState().location\n\n const atBase = pathname === basePath\n\n const currentLink = links.find((link) => link.to === pathname)\n const pageTitle = currentLink?.title\n const pageTitleStr = typeof pageTitle === 'object' ? _(pageTitle) : pageTitle\n\n return (\n <LayoutApp\n title={title}\n header={<AccountSelector className=\"shrink-0\" size=\"lg\" />}\n >\n <div className=\"flex w-full flex-1 flex-col md:flex-row\">\n <aside\n className={`shrink-0 p-4 md:px-8 ${atBase ? 'w-full md:w-auto' : 'hidden max-w-xs md:block'}`}\n role=\"navigation\"\n >\n <nav className=\"flex flex-col gap-2\">\n {links\n .filter(({ hidden, to }) => !hidden || pathname === to)\n .map(({ to, title, description, icon: Icon }) => (\n <Link\n key={to}\n to={to}\n className={clsx(\n 'flex items-center justify-start',\n 'min-h-12 px-4',\n 'rounded-3xl transition-colors',\n 'whitespace-nowrap font-medium md:whitespace-normal',\n 'focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2',\n 'text-text-default',\n 'md:text-text-light md:[&.active]:text-text-default',\n 'hover:bg-slate-100 dark:hover:bg-slate-800',\n '[&.active]:bg-slate-100 dark:[&.active]:bg-slate-800',\n atBase && to === basePath && 'hidden md:flex',\n )}\n activeOptions={{ exact: true }}\n activeProps={{\n className: 'active',\n 'aria-current': 'page' as const,\n }}\n >\n {Icon && (\n <span\n aria-hidden=\"true\"\n className=\"bg-primary text-primary-contrast -ml-2 mb-auto mr-2 mt-2 inline-flex size-8 shrink-0 grow-0 items-center justify-center rounded-full\"\n >\n <Icon className=\"size-4\" />\n </span>\n )}\n <span className=\"my-1 min-w-0 flex-1\">\n <span className=\"block truncate\">\n {typeof title === 'object' ? _(title) : title}\n </span>\n {description && (\n <span className=\"block whitespace-pre-wrap text-xs md:hidden\">\n {typeof description === 'object'\n ? _(description)\n : description}\n </span>\n )}\n </span>\n </Link>\n ))}\n </nav>\n </aside>\n\n <main\n className={`w-4xl mx-auto min-w-0 max-w-full px-4 md:px-8 ${atBase ? '-order-1 md:order-1 md:block' : ''}`}\n role=\"main\"\n >\n <nav className=\"mb-4 flex items-center gap-2\">\n {!atBase && (\n <Link\n to={basePath}\n key=\"back\"\n className=\"text-text-light rounded-full p-2 hover:bg-slate-200 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 md:hidden dark:hover:bg-slate-800\"\n >\n <ArrowLeftIcon className=\"size-6\" />\n </Link>\n )}\n {pageTitleStr && (\n <h2 className=\"text-text-default text-2xl font-light\">\n <title>{pageTitleStr}</title>\n <b>{pageTitleStr}</b>\n </h2>\n )}\n </nav>\n\n {children}\n </main>\n </div>\n </LayoutApp>\n )\n}\n","import { Outlet, createRootRoute } from '@tanstack/react-router'\nimport { ErrorView } from '#/components/error-view'\n\nexport const RootRoute = createRootRoute({\n component: Outlet,\n errorComponent: ErrorView,\n})\n","import { ReactNode } from 'react'\nimport { JSX } from 'react/jsx-runtime'\nimport { useCustomizationData } from '#/contexts/customization.tsx'\n\nexport function CustomizationName(\n props: JSX.IntrinsicElements['span'],\n): ReactNode {\n const { name, logo } = useCustomizationData()\n\n return (\n <span {...props}>\n {logo && (\n <img\n src={logo}\n alt={name}\n className=\"not-prose mr-1 inline-block h-[1em] select-none object-contain align-baseline\"\n />\n )}\n <b>{name}</b>\n </span>\n )\n}\n","import { Trans } from '@lingui/react/macro'\nimport { CustomizationName } from '#/components/customization-name.tsx'\nimport { AccountIdentifier } from '#/components/utils/account-identifier'\nimport { LinkExternal } from '#/components/utils/link-external'\nimport { useAuthenticatedSession } from '#/contexts/authentication'\n\nexport function Page() {\n const { account } = useAuthenticatedSession()\n\n return (\n <div className=\"prose-sm md:prose prose-slate dark:prose-invert max-w-none\">\n <section>\n <Trans>\n <h2>What is an Atmosphere account?</h2>\n <p>\n An <strong>Atmosphere account</strong> is your personal identity on\n the Atmosphere. Think of it as a digital passport that you truly\n own, not locked to any single app or company.\n </p>\n </Trans>\n </section>\n\n <section>\n <Trans>\n <h3>Use it across multiple apps</h3>\n <p>\n Your Atmosphere account works with the{' '}\n <LinkExternal className=\"underline\" href=\"https://bsky.app\">\n Bluesky Social App\n </LinkExternal>{' '}\n and any other social apps built on the same network.\n </p>\n <p>\n Just like you can use the same email address to sign into different\n websites, your Atmosphere account lets you sign into different\n social apps while keeping the same identity, connections, and\n content.\n </p>\n <p>\n When you see options to log in with an Atmosphere account or\n \"internet handle\" on other apps, you can use your existing account{' '}\n <strong className=\"whitespace-nowrap\">\n <AccountIdentifier account={account} />\n </strong>{' '}\n instead of creating a new one.\n </p>\n </Trans>\n </section>\n\n <section>\n <Trans>\n <h3>What makes it special</h3>\n <p>\n The key difference: your data isn't trapped in any one app. Unlike\n traditional social media accounts, where your data belongs to the\n platform, with an Atmosphere account you genuinely own your identity\n and data:\n </p>\n <ul>\n <li>\n <strong>You own your identity</strong>: Your username (handle) and\n permanent ID belong to you\n </li>\n <li>\n <strong>Your data is portable</strong>: Posts, follows, and\n content live in your personal data storage, not locked in an app's\n database\n </li>\n <li>\n <strong>You can move freely</strong>: Switch hosting providers\n without losing your followers, posts, or connections. This also\n lets you choose a provider in your country if it matters where\n your data is stored.\n </li>\n <li>\n <strong>Multiple apps, one identity</strong>: Use the same account\n across different apps built on the same network\n </li>\n </ul>\n </Trans>\n </section>\n\n <section>\n <Trans>\n <h3>This website: your account control center</h3>\n <p>\n The website you're on right now is your{' '}\n <strong>account management hub</strong>. Here you can:\n </p>\n <ul>\n <li>Update your email address and password</li>\n <li>Manage your personal data and security settings</li>\n <li>\n View and manage active sessions across devices (browsers where\n you're signed in)\n </li>\n </ul>\n <p>\n This place is where you control the fundamental aspects of your\n Atmosphere identity, independently of any app-specific details like\n the profile you have on the{' '}\n <LinkExternal\n href={`https://bsky.app/profile/${account.preferred_username ?? account.sub}`}\n >\n Bluesky social app\n </LinkExternal>\n .\n </p>\n <p>\n Your Atmosphere account is currently hosted by <CustomizationName />\n , one of many hosting providers in the Atmosphere network. You can\n switch to a different one at any time without losing your account,\n identity, or data.\n </p>\n </Trans>\n </section>\n\n <section>\n <Trans>\n <h3>Learn more</h3>\n <p>\n Want to learn more about the technology and network behind your\n Atmosphere account?\n </p>\n </Trans>\n <ul>\n <li>\n <Trans>\n <LinkExternal className=\"underline\" href=\"https://bsky.social\">\n Bluesky Social\n </LinkExternal>{' '}\n — General information about the network\n </Trans>\n </li>\n <li>\n <Trans>\n <LinkExternal className=\"underline\" href=\"https://atproto.com\">\n AT Protocol\n </LinkExternal>{' '}\n — Technical documentation for developers\n </Trans>\n </li>\n </ul>\n </section>\n </div>\n )\n}\n","import { clsx } from 'clsx'\nimport { JSX } from 'react'\nimport { Override } from '#/lib/util.ts'\n\nexport type CircularProgressProps = Override<\n JSX.IntrinsicElements['svg'],\n {\n /**\n * Progress value from 0 to 100\n */\n value?: number\n /**\n * Size of the circular progress in pixels (both width and height)\n * @default 24\n */\n size?: number\n /**\n * Width of the progress stroke in pixels\n * @default 2\n */\n strokeWidth?: number\n /**\n * Children are not supported for CircularProgress since it's meant to be a simple visual indicator. Any children passed will be ignored.\n */\n children?: never\n /**\n * Initial angle in degrees (0 = 3 o'clock, 90 = 6 o'clock, etc.)\n * @default 0\n */\n startAngle?: number\n /**\n * Direction of progress\n * @default 'clockwise'\n */\n progressDirection?: 'clockwise' | 'counter-clockwise'\n }\n>\n\nexport function CircularProgress({\n value,\n startAngle = 0,\n progressDirection = 'clockwise',\n size = 24,\n strokeWidth = 2,\n\n // svg\n className,\n ...props\n}: CircularProgressProps) {\n const center = size / 2\n const radius = center - strokeWidth / 2\n const circumference = 2 * Math.PI * radius\n\n // Clamp value between 0 and 100\n const clampedValue = Math.max(0, Math.min(100, value ?? 70))\n\n // Calculate progress (0-100 to 0-1)\n const progress = clampedValue / 100\n\n // For clockwise, we need to show progress from startAngle\n // For counter-clockwise, we invert the direction\n const strokeDashoffset =\n progressDirection === 'clockwise'\n ? circumference * (1 - progress)\n : circumference * progress\n\n return (\n <svg\n width={size}\n height={size}\n style={{ transform: `rotate(${startAngle}deg)` }}\n className={clsx(value == null && 'animate-spin', className)}\n {...props}\n >\n {/* Background circle */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n className=\"opacity-20\"\n />\n {/* Progress circle */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap=\"round\"\n className=\"transition-all duration-100 ease-linear\"\n style={{\n transform:\n progressDirection === 'counter-clockwise'\n ? 'scaleX(-1)'\n : undefined,\n transformOrigin: 'center',\n }}\n />\n </svg>\n )\n}\n","import { useLingui } from '@lingui/react/macro'\nimport { useEffect, useMemo, useState } from 'react'\n\nexport function useDateAgo(date: Date | string): string {\n const { t } = useLingui()\n const delta = useDateDelta(date)\n const todayTimestamp = useTodayTimestamp()\n\n const deltaSeconds = Math.floor(delta / 1000)\n if (deltaSeconds < 60) {\n return t`just now`\n }\n\n const deltaMinutes = Math.floor(deltaSeconds / 60)\n if (deltaMinutes === 1) {\n return t`1 minute ago`\n }\n if (deltaMinutes < 60) {\n return t`${deltaMinutes} minutes ago`\n }\n\n const deltaHours = Math.floor(deltaMinutes / 60)\n if (deltaHours === 1) {\n return t`1 hour ago`\n }\n if (deltaHours < 24) {\n return t`${deltaHours} hours ago`\n }\n\n if (deltaHours < 48 && new Date(date).getTime() < todayTimestamp) {\n return t`yesterday`\n }\n\n const deltaDays = Math.floor(deltaHours / 24)\n return t`${deltaDays} days ago`\n}\n\nfunction useDateDelta(input: Date | string) {\n const date = useMemo(() => new Date(input), [input])\n const [delta, setDelta] = useState(() => Date.now() - date.getTime())\n\n useEffect(() => {\n const interval = setInterval(() => {\n setDelta(Date.now() - date.getTime())\n }, 1000)\n return () => clearInterval(interval)\n }, [date])\n\n return delta\n}\n\nfunction useTodayTimestamp() {\n const [todayTimestamp, setTodayTimestamp] = useState(() => {\n const now = new Date()\n return new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime()\n })\n\n useEffect(() => {\n const interval = setInterval(() => {\n const now = new Date()\n setTodayTimestamp(\n new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime(),\n )\n }, 60 * 1000) // Check every minute\n return () => clearInterval(interval)\n }, [])\n\n return todayTimestamp\n}\n","import { ReactNode } from 'react'\nimport { useDateAgo } from '#/hooks/use-date-ago.ts'\n\nexport function DateAgo({ date }: { date: Date | string }): ReactNode {\n const lastUsedAgo = useDateAgo(date)\n return lastUsedAgo\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport type {\n ActiveOAuthSession,\n OAuthSessionsInput,\n RevokeOAuthSessionInput,\n} from '@atproto/oauth-provider-api'\nimport { useApi } from '#/contexts/session.tsx'\n\nexport const oauthSessionsQueryKey = ({ sub }: OAuthSessionsInput) =>\n ['oauth-sessions', sub] as const\n\nexport function useOAuthSessionsQuery({ sub }: OAuthSessionsInput) {\n const api = useApi()\n return useQuery<ActiveOAuthSession[]>({\n refetchOnWindowFocus: 'always',\n // staleTime: 15e3, // 15s\n queryKey: oauthSessionsQueryKey({ sub }),\n retry: 0,\n staleTime: 5e3,\n queryFn: async (options) => {\n return await api.fetch('GET', '/oauth-sessions', { sub }, options)\n },\n })\n}\n\nexport function useRevokeOAuthSessionMutation() {\n const api = useApi()\n const qc = useQueryClient()\n\n return useMutation({\n async mutationFn({ sub, tokenId }: RevokeOAuthSessionInput) {\n await api.fetch('POST', '/revoke-oauth-session', { sub, tokenId })\n },\n onError(error, { sub }) {\n qc.invalidateQueries({ queryKey: oauthSessionsQueryKey({ sub }) })\n },\n onSuccess(_, { sub }) {\n qc.invalidateQueries({ queryKey: oauthSessionsQueryKey({ sub }) })\n },\n })\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CLIENT_ASSERTION_TYPE_JWT_BEARER = void 0;\nexports.CLIENT_ASSERTION_TYPE_JWT_BEARER = 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer';\n//# sourceMappingURL=constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSpaceSeparatedValue = exports.numberPreprocess = exports.jsonObjectPreprocess = exports.canParseUrl = void 0;\nexports.isHostnameIP = isHostnameIP;\nexports.isLoopbackHost = isLoopbackHost;\nexports.isLocalHostname = isLocalHostname;\nexports.safeUrl = safeUrl;\nexports.extractUrlPath = extractUrlPath;\nexports.arrayEquivalent = arrayEquivalent;\nexports.includedIn = includedIn;\nexports.asArray = asArray;\nexports.canParseUrl = \n// eslint-disable-next-line n/no-unsupported-features/node-builtins\nURL.canParse?.bind(URL) ??\n // URL.canParse is not available in Node.js < 18.7.0\n ((urlStr) => {\n try {\n new URL(urlStr);\n return true;\n }\n catch {\n return false;\n }\n });\nfunction isHostnameIP(hostname) {\n // IPv4\n if (hostname.match(/^\\d+\\.\\d+\\.\\d+\\.\\d+$/))\n return true;\n // IPv6\n if (hostname.startsWith('[') && hostname.endsWith(']'))\n return true;\n return false;\n}\nfunction isLoopbackHost(host) {\n return host === 'localhost' || host === '127.0.0.1' || host === '[::1]';\n}\nfunction isLocalHostname(hostname) {\n const parts = hostname.split('.');\n if (parts.length < 2)\n return true;\n const tld = parts.at(-1).toLowerCase();\n return (tld === 'test' ||\n tld === 'local' ||\n tld === 'localhost' ||\n tld === 'invalid' ||\n tld === 'example');\n}\nfunction safeUrl(input) {\n try {\n return new URL(input);\n }\n catch {\n return null;\n }\n}\nfunction extractUrlPath(url) {\n // Extracts the path from a URL, without relying on the URL constructor\n // (because it normalizes the URL)\n const endOfProtocol = url.startsWith('https://')\n ? 8\n : url.startsWith('http://')\n ? 7\n : -1;\n if (endOfProtocol === -1) {\n throw new TypeError('URL must use the \"https:\" or \"http:\" protocol');\n }\n const hashIdx = url.indexOf('#', endOfProtocol);\n const questionIdx = url.indexOf('?', endOfProtocol);\n const queryStrIdx = questionIdx !== -1 && (hashIdx === -1 || questionIdx < hashIdx)\n ? questionIdx\n : -1;\n const pathEnd = hashIdx === -1\n ? queryStrIdx === -1\n ? url.length\n : queryStrIdx\n : queryStrIdx === -1\n ? hashIdx\n : Math.min(hashIdx, queryStrIdx);\n const slashIdx = url.indexOf('/', endOfProtocol);\n const pathStart = slashIdx === -1 || slashIdx > pathEnd ? pathEnd : slashIdx;\n if (endOfProtocol === pathStart) {\n throw new TypeError('URL must contain a host');\n }\n return url.substring(pathStart, pathEnd);\n}\nconst jsonObjectPreprocess = (val) => {\n if (typeof val === 'string' && val.startsWith('{') && val.endsWith('}')) {\n try {\n return JSON.parse(val);\n }\n catch {\n return val;\n }\n }\n return val;\n};\nexports.jsonObjectPreprocess = jsonObjectPreprocess;\nconst numberPreprocess = (val) => {\n if (typeof val === 'string') {\n const number = Number(val);\n if (!Number.isNaN(number))\n return number;\n }\n return val;\n};\nexports.numberPreprocess = numberPreprocess;\n/**\n * Returns true if the two arrays contain the same elements, regardless of order\n * or duplicates.\n */\nfunction arrayEquivalent(a, b) {\n if (a === b)\n return true;\n return a.every(includedIn, b) && b.every(includedIn, a);\n}\nfunction includedIn(item) {\n return this.includes(item);\n}\nfunction asArray(value) {\n if (value == null)\n return undefined;\n if (Array.isArray(value))\n return value; // already a (possibly readonly) array\n return Array.from(value);\n}\nconst isSpaceSeparatedValue = (value, input) => {\n if (value.length === 0)\n throw new TypeError('Value cannot be empty');\n if (value.includes(' '))\n throw new TypeError('Value cannot contain spaces');\n // Optimized version of:\n // return input.split(' ').includes(value)\n const inputLength = input.length;\n const valueLength = value.length;\n if (inputLength < valueLength)\n return false;\n let idx = input.indexOf(value);\n let idxEnd;\n while (idx !== -1) {\n idxEnd = idx + valueLength;\n if (\n // at beginning or preceded by space\n (idx === 0 || input.charCodeAt(idx - 1) === 32) &&\n // at end or followed by space\n (idxEnd === inputLength || input.charCodeAt(idxEnd) === 32)) {\n return true;\n }\n idx = input.indexOf(value, idxEnd + 1);\n }\n return false;\n};\nexports.isSpaceSeparatedValue = isSpaceSeparatedValue;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.privateUseUriSchema = exports.webUriSchema = exports.httpsUriSchema = exports.loopbackUriSchema = exports.dangerousUriSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst util_js_1 = require(\"./util.js\");\n/**\n * Valid, but potentially dangerous URL (`data:`, `file:`, `javascript:`, etc.).\n *\n * Any value that matches this schema is safe to parse using `new URL()`.\n */\nexports.dangerousUriSchema = zod_1.z\n .string()\n .refine((data) => data.includes(':') && (0, util_js_1.canParseUrl)(data), {\n message: 'Invalid URL',\n});\nexports.loopbackUriSchema = exports.dangerousUriSchema.superRefine((value, ctx) => {\n // Loopback url must use the \"http:\" protocol\n if (!value.startsWith('http://')) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'URL must use the \"http:\" protocol',\n });\n return false;\n }\n const url = new URL(value);\n if (!(0, util_js_1.isLoopbackHost)(url.hostname)) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'URL must use \"localhost\", \"127.0.0.1\" or \"[::1]\" as hostname',\n });\n return false;\n }\n return true;\n});\nexports.httpsUriSchema = exports.dangerousUriSchema.superRefine((value, ctx) => {\n if (!value.startsWith('https://')) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'URL must use the \"https:\" protocol',\n });\n return false;\n }\n const url = new URL(value);\n // Disallow loopback URLs with the `https:` protocol\n if ((0, util_js_1.isLoopbackHost)(url.hostname)) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'https: URL must not use a loopback host',\n });\n return false;\n }\n if ((0, util_js_1.isHostnameIP)(url.hostname)) {\n // Hostname is an IP address\n }\n else {\n // Hostname is a domain name\n if (!url.hostname.includes('.')) {\n // we don't depend on PSL here, so we only check for a dot\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'Domain name must contain at least two segments',\n });\n return false;\n }\n if (url.hostname.endsWith('.local')) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'Domain name must not end with \".local\"',\n });\n return false;\n }\n }\n return true;\n});\nexports.webUriSchema = zod_1.z\n .string()\n .superRefine((value, ctx) => {\n // discriminated union of `loopbackUriSchema` and `httpsUriSchema`\n if (value.startsWith('http://')) {\n const result = exports.loopbackUriSchema.safeParse(value);\n if (!result.success)\n result.error.issues.forEach(ctx.addIssue, ctx);\n return result.success;\n }\n if (value.startsWith('https://')) {\n const result = exports.httpsUriSchema.safeParse(value);\n if (!result.success)\n result.error.issues.forEach(ctx.addIssue, ctx);\n return result.success;\n }\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'URL must use the \"http:\" or \"https:\" protocol',\n });\n return false;\n});\nexports.privateUseUriSchema = exports.dangerousUriSchema.superRefine((value, ctx) => {\n const dotIdx = value.indexOf('.');\n const colonIdx = value.indexOf(':');\n // Optimization: avoid parsing the URL if the protocol does not contain a \".\"\n if (dotIdx === -1 || colonIdx === -1 || dotIdx > colonIdx) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'Private-use URI scheme requires a \".\" as part of the protocol',\n });\n return false;\n }\n const url = new URL(value);\n // Should be covered by the check before, but let's be extra sure\n if (!url.protocol.includes('.')) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'Invalid private-use URI scheme',\n });\n return false;\n }\n // https://datatracker.ietf.org/doc/html/rfc8252#section-7.1\n //\n // > When choosing a URI scheme to associate with the app, apps MUST use a\n // > URI scheme based on a domain name under their control, expressed in\n // > reverse order\n //\n // https://datatracker.ietf.org/doc/html/rfc8252#section-8.4\n //\n // > In addition to the collision-resistant properties, requiring a URI\n // > scheme based on a domain name that is under the control of the app can\n // > help to prove ownership in the event of a dispute where two apps claim\n // > the same private-use URI scheme (where one app is acting maliciously).\n //\n // We can't check for ownership here (as there is no concept of proven\n // ownership in a generic validation logic), besides excluding local domains\n // as they can't be controlled/owned by the app.\n //\n // https://atproto.com/specs/oauth\n //\n // > Any custom scheme must match the `client_id` hostname in reverse-domain\n // > order.\n //\n // This ATPROTO specific requirement cannot be enforced here, (as there is\n // no concept of `client_id` in this context).\n const uriScheme = url.protocol.slice(0, -1); // remove trailing \":\"\n const urlDomain = uriScheme.split('.').reverse().join('.');\n if ((0, util_js_1.isLocalHostname)(urlDomain)) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: `Private-use URI Scheme redirect URI must not be a local hostname`,\n });\n }\n // https://datatracker.ietf.org/doc/html/rfc8252#section-7.1\n //\n // > Following the requirements of Section 3.2 of [RFC3986], as there is no\n // > naming authority for private-use URI scheme redirects, only a single\n // > slash (\"/\") appears after the scheme component.\n if (url.href.startsWith(`${url.protocol}//`) ||\n url.username ||\n url.password ||\n url.hostname ||\n url.port) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'Private-Use URI Scheme must be in the form <scheme>:/{path} (notice the single slash!) as per RFC 8252',\n });\n return false;\n }\n return true;\n});\n//# sourceMappingURL=uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS = void 0;\nexports.DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS = Object.freeze([\n `http://127.0.0.1/`,\n `http://[::1]/`,\n]);\n//# sourceMappingURL=atproto-loopback-client-redirect-uris.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthScopeSchema = exports.isOAuthScope = exports.OAUTH_SCOPE_REGEXP = void 0;\nconst zod_1 = require(\"zod\");\n// scope = scope-token *( SP scope-token )\n// scope-token = 1*( %x21 / %x23-5B / %x5D-7E )\nexports.OAUTH_SCOPE_REGEXP = /^[\\x21\\x23-\\x5B\\x5D-\\x7E]+(?: [\\x21\\x23-\\x5B\\x5D-\\x7E]+)*$/;\nconst isOAuthScope = (input) => exports.OAUTH_SCOPE_REGEXP.test(input);\nexports.isOAuthScope = isOAuthScope;\n/**\n * A (single) space separated list of non empty printable ASCII char string\n * (except backslash and double quote).\n *\n * @see {@link https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-11#section-1.4.1}\n */\nexports.oauthScopeSchema = zod_1.z.string().refine(exports.isOAuthScope, {\n message: 'Invalid OAuth scope',\n});\n//# sourceMappingURL=oauth-scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_ATPROTO_OAUTH_SCOPE = exports.atprotoOAuthScopeSchema = exports.ATPROTO_SCOPE_VALUE = void 0;\nexports.isAtprotoOAuthScope = isAtprotoOAuthScope;\nexports.asAtprotoOAuthScope = asAtprotoOAuthScope;\nexports.assertAtprotoOAuthScope = assertAtprotoOAuthScope;\nconst zod_1 = require(\"zod\");\nconst oauth_scope_js_1 = require(\"./oauth-scope.js\");\nconst util_js_1 = require(\"./util.js\");\nexports.ATPROTO_SCOPE_VALUE = 'atproto';\nfunction isAtprotoOAuthScope(input) {\n return ((0, oauth_scope_js_1.isOAuthScope)(input) && (0, util_js_1.isSpaceSeparatedValue)(exports.ATPROTO_SCOPE_VALUE, input));\n}\nfunction asAtprotoOAuthScope(input) {\n if (isAtprotoOAuthScope(input))\n return input;\n throw new TypeError(`Value must contain \"${exports.ATPROTO_SCOPE_VALUE}\" scope value`);\n}\nfunction assertAtprotoOAuthScope(input) {\n void asAtprotoOAuthScope(input);\n}\nexports.atprotoOAuthScopeSchema = zod_1.z.string().refine(isAtprotoOAuthScope, {\n message: 'Invalid ATProto OAuth scope',\n});\n// Default scope is for reading identity (did) only\nexports.DEFAULT_ATPROTO_OAUTH_SCOPE = exports.ATPROTO_SCOPE_VALUE;\n//# sourceMappingURL=atproto-oauth-scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthClientIdSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthClientIdSchema = zod_1.z.string().min(1);\n//# sourceMappingURL=oauth-client-id.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthRedirectUriSchema = exports.oauthLoopbackClientRedirectUriSchema = exports.loopbackRedirectURISchema = void 0;\nconst zod_1 = require(\"zod\");\nconst uri_js_1 = require(\"./uri.js\");\n/**\n * This is a {@link loopbackUriSchema} with the additional restriction that\n * the hostname `localhost` is not allowed.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8252#section-8.3 Loopback Redirect Considerations} RFC8252\n *\n * > While redirect URIs using localhost (i.e.,\n * > \"http://localhost:{port}/{path}\") function similarly to loopback IP\n * > redirects described in Section 7.3, the use of localhost is NOT\n * > RECOMMENDED. Specifying a redirect URI with the loopback IP literal rather\n * > than localhost avoids inadvertently listening on network interfaces other\n * > than the loopback interface. It is also less susceptible to client-side\n * > firewalls and misconfigured host name resolution on the user's device.\n */\nexports.loopbackRedirectURISchema = uri_js_1.loopbackUriSchema.superRefine((value, ctx) => {\n if (value.startsWith('http://localhost')) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'Use of \"localhost\" hostname is not allowed (RFC 8252), use a loopback IP such as \"127.0.0.1\" instead',\n });\n return false;\n }\n return true;\n});\nexports.oauthLoopbackClientRedirectUriSchema = exports.loopbackRedirectURISchema;\nexports.oauthRedirectUriSchema = zod_1.z\n .string()\n .superRefine((value, ctx) => {\n if (value.startsWith('https:')) {\n const result = uri_js_1.httpsUriSchema.safeParse(value);\n if (!result.success)\n result.error.issues.forEach(ctx.addIssue, ctx);\n return result.success;\n }\n else if (value.startsWith('http:')) {\n const result = exports.loopbackRedirectURISchema.safeParse(value);\n if (!result.success)\n result.error.issues.forEach(ctx.addIssue, ctx);\n return result.success;\n }\n else if (/^[^.:]+(?:\\.[^.:]+)+:/.test(value)) {\n const result = uri_js_1.privateUseUriSchema.safeParse(value);\n if (!result.success)\n result.error.issues.forEach(ctx.addIssue, ctx);\n return result.success;\n }\n else {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: 'URL must use the \"https:\" or \"http:\" protocol, or a private-use URI scheme (RFC 8252)',\n });\n return false;\n }\n});\n//# sourceMappingURL=oauth-redirect-uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthClientIdLoopbackSchema = exports.LOOPBACK_CLIENT_ID_ORIGIN = void 0;\nexports.assertOAuthLoopbackClientId = assertOAuthLoopbackClientId;\nexports.isOAuthClientIdLoopback = isOAuthClientIdLoopback;\nexports.asOAuthClientIdLoopback = asOAuthClientIdLoopback;\nexports.parseOAuthLoopbackClientId = parseOAuthLoopbackClientId;\nexports.safeParseOAuthLoopbackClientId = safeParseOAuthLoopbackClientId;\nexports.safeParseOAuthLoopbackClientIdQueryString = safeParseOAuthLoopbackClientIdQueryString;\nconst oauth_client_id_js_1 = require(\"./oauth-client-id.js\");\nconst oauth_redirect_uri_js_1 = require(\"./oauth-redirect-uri.js\");\nconst oauth_scope_js_1 = require(\"./oauth-scope.js\");\nexports.LOOPBACK_CLIENT_ID_ORIGIN = 'http://localhost';\nexports.oauthClientIdLoopbackSchema = oauth_client_id_js_1.oauthClientIdSchema.superRefine((input, ctx) => {\n const result = safeParseOAuthLoopbackClientId(input);\n if (!result.success) {\n ctx.addIssue({ code: 'custom', message: result.message });\n }\n return result.success;\n});\nfunction assertOAuthLoopbackClientId(input) {\n void parseOAuthLoopbackClientId(input);\n}\nfunction isOAuthClientIdLoopback(input) {\n return safeParseOAuthLoopbackClientId(input).success;\n}\nfunction asOAuthClientIdLoopback(input) {\n assertOAuthLoopbackClientId(input);\n return input;\n}\nfunction parseOAuthLoopbackClientId(input) {\n const result = safeParseOAuthLoopbackClientId(input);\n if (result.success)\n return result.value;\n throw new TypeError(`Invalid loopback client ID: ${result.message}`);\n}\nfunction safeParseOAuthLoopbackClientId(input) {\n // @NOTE Not using \"new URL\" to ensure input indeed matches the type\n // OAuthClientIdLoopback\n if (!input.startsWith(exports.LOOPBACK_CLIENT_ID_ORIGIN)) {\n return {\n success: false,\n message: `Value must start with \"${exports.LOOPBACK_CLIENT_ID_ORIGIN}\"`,\n };\n }\n if (input.includes('#', exports.LOOPBACK_CLIENT_ID_ORIGIN.length)) {\n return {\n success: false,\n message: 'Value must not contain a hash component',\n };\n }\n // Since we don't allow a path component (except for a single \"/\") the query\n // string starts after the origin (+ 1 if there is a \"/\")\n const queryStringIdx = input.length > exports.LOOPBACK_CLIENT_ID_ORIGIN.length &&\n input.charCodeAt(exports.LOOPBACK_CLIENT_ID_ORIGIN.length) === 0x2f /* '/' */\n ? exports.LOOPBACK_CLIENT_ID_ORIGIN.length + 1\n : exports.LOOPBACK_CLIENT_ID_ORIGIN.length;\n // Since we determined the position of the query string based on the origin\n // length (instead of looking for a \"?\"), we need to make sure the query\n // string position (if any) indeed starts with a \"?\".\n if (input.length !== queryStringIdx &&\n input.charCodeAt(queryStringIdx) !== 0x3f /* '?' */) {\n return {\n success: false,\n message: 'Value must not contain a path component',\n };\n }\n const queryString = input.slice(queryStringIdx + 1);\n return safeParseOAuthLoopbackClientIdQueryString(queryString);\n}\nfunction safeParseOAuthLoopbackClientIdQueryString(input) {\n // Parse query params\n const params = {};\n const it = typeof input === 'string' ? new URLSearchParams(input) : input;\n for (const [key, value] of it) {\n if (key === 'scope') {\n if ('scope' in params) {\n return {\n success: false,\n message: 'Duplicate \"scope\" query parameter',\n };\n }\n const res = oauth_scope_js_1.oauthScopeSchema.safeParse(value);\n if (!res.success) {\n const reason = res.error.issues.map((i) => i.message).join(', ');\n return {\n success: false,\n message: `Invalid \"scope\" query parameter: ${reason || 'Validation failed'}`,\n };\n }\n params.scope = res.data;\n }\n else if (key === 'redirect_uri') {\n const res = oauth_redirect_uri_js_1.oauthLoopbackClientRedirectUriSchema.safeParse(value);\n if (!res.success) {\n const reason = res.error.issues.map((i) => i.message).join(', ');\n return {\n success: false,\n message: `Invalid \"redirect_uri\" query parameter: ${reason || 'Validation failed'}`,\n };\n }\n if (params.redirect_uris == null)\n params.redirect_uris = [res.data];\n else\n params.redirect_uris.push(res.data);\n }\n else {\n return {\n success: false,\n message: `Unexpected query parameter \"${key}\"`,\n };\n }\n }\n return {\n success: true,\n value: params,\n };\n}\n//# sourceMappingURL=oauth-client-id-loopback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildAtprotoLoopbackClientId = buildAtprotoLoopbackClientId;\nexports.parseAtprotoLoopbackClientId = parseAtprotoLoopbackClientId;\nconst atproto_loopback_client_redirect_uris_js_1 = require(\"./atproto-loopback-client-redirect-uris.js\");\nconst atproto_oauth_scope_js_1 = require(\"./atproto-oauth-scope.js\");\nconst oauth_client_id_loopback_js_1 = require(\"./oauth-client-id-loopback.js\");\nconst oauth_redirect_uri_js_1 = require(\"./oauth-redirect-uri.js\");\nconst util_js_1 = require(\"./util.js\");\nfunction buildAtprotoLoopbackClientId(config) {\n if (config) {\n const params = new URLSearchParams();\n const { scope } = config;\n if (scope != null && scope !== atproto_oauth_scope_js_1.DEFAULT_ATPROTO_OAUTH_SCOPE) {\n params.set('scope', (0, atproto_oauth_scope_js_1.asAtprotoOAuthScope)(scope));\n }\n const redirectUris = (0, util_js_1.asArray)(config.redirect_uris);\n if (redirectUris &&\n !(0, util_js_1.arrayEquivalent)(redirectUris, atproto_loopback_client_redirect_uris_js_1.DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS)) {\n if (!redirectUris.length) {\n throw new TypeError(`Unexpected empty \"redirect_uris\" config`);\n }\n for (const uri of redirectUris) {\n params.append('redirect_uri', oauth_redirect_uri_js_1.oauthLoopbackClientRedirectUriSchema.parse(uri));\n }\n }\n if (params.size) {\n return `${oauth_client_id_loopback_js_1.LOOPBACK_CLIENT_ID_ORIGIN}?${params.toString()}`;\n }\n }\n return oauth_client_id_loopback_js_1.LOOPBACK_CLIENT_ID_ORIGIN;\n}\nfunction parseAtprotoLoopbackClientId(clientId) {\n const { scope = atproto_oauth_scope_js_1.DEFAULT_ATPROTO_OAUTH_SCOPE, redirect_uris } = (0, oauth_client_id_loopback_js_1.parseOAuthLoopbackClientId)(clientId);\n if (!(0, atproto_oauth_scope_js_1.isAtprotoOAuthScope)(scope)) {\n throw new TypeError('ATProto Loopback ClientID must include \"atproto\" scope');\n }\n return {\n scope,\n redirect_uris: redirect_uris ?? [...atproto_loopback_client_redirect_uris_js_1.DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS],\n };\n}\n//# sourceMappingURL=atproto-loopback-client-id.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.atprotoLoopbackClientMetadata = atprotoLoopbackClientMetadata;\nexports.buildAtprotoLoopbackClientMetadata = buildAtprotoLoopbackClientMetadata;\nconst atproto_loopback_client_id_js_1 = require(\"./atproto-loopback-client-id.js\");\nfunction atprotoLoopbackClientMetadata(clientId) {\n const params = (0, atproto_loopback_client_id_js_1.parseAtprotoLoopbackClientId)(clientId);\n // Safe to cast because parseAtprotoLoopbackClientId ensures it's a loopback ID\n return buildMetadataInternal(clientId, params);\n}\nfunction buildAtprotoLoopbackClientMetadata(config) {\n const clientId = (0, atproto_loopback_client_id_js_1.buildAtprotoLoopbackClientId)(config);\n return buildMetadataInternal(clientId, (0, atproto_loopback_client_id_js_1.parseAtprotoLoopbackClientId)(clientId));\n}\nfunction buildMetadataInternal(clientId, clientParams) {\n return {\n client_id: clientId,\n scope: clientParams.scope,\n redirect_uris: clientParams.redirect_uris,\n response_types: ['code'],\n grant_types: ['authorization_code', 'refresh_token'],\n token_endpoint_auth_method: 'none',\n application_type: 'native',\n dpop_bound_access_tokens: true,\n };\n}\n//# sourceMappingURL=atproto-loopback-client-metadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JwtVerifyError = exports.JwtCreateError = exports.JwkError = exports.ERR_JWT_VERIFY = exports.ERR_JWT_CREATE = exports.ERR_JWT_INVALID = exports.ERR_JWK_NOT_FOUND = exports.ERR_JWK_INVALID = exports.ERR_JWKS_NO_MATCHING_KEY = void 0;\nexports.ERR_JWKS_NO_MATCHING_KEY = 'ERR_JWKS_NO_MATCHING_KEY';\nexports.ERR_JWK_INVALID = 'ERR_JWK_INVALID';\nexports.ERR_JWK_NOT_FOUND = 'ERR_JWK_NOT_FOUND';\nexports.ERR_JWT_INVALID = 'ERR_JWT_INVALID';\nexports.ERR_JWT_CREATE = 'ERR_JWT_CREATE';\nexports.ERR_JWT_VERIFY = 'ERR_JWT_VERIFY';\nclass JwkError extends TypeError {\n constructor(message = 'JWK error', code = exports.ERR_JWK_INVALID, options) {\n super(message, options);\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: code\n });\n }\n}\nexports.JwkError = JwkError;\nclass JwtCreateError extends Error {\n constructor(message = 'Unable to create JWT', code = exports.ERR_JWT_CREATE, options) {\n super(message, options);\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: code\n });\n }\n static from(cause, code, message) {\n if (cause instanceof JwtCreateError)\n return cause;\n if (cause instanceof JwkError) {\n return new JwtCreateError(message, cause.code, { cause });\n }\n return new JwtCreateError(message, code, { cause });\n }\n}\nexports.JwtCreateError = JwtCreateError;\nclass JwtVerifyError extends Error {\n constructor(message = 'Invalid JWT', code = exports.ERR_JWT_VERIFY, options) {\n super(message, options);\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: code\n });\n }\n static from(cause, code, message) {\n if (cause instanceof JwtVerifyError)\n return cause;\n if (cause instanceof JwkError) {\n return new JwtVerifyError(message, cause.code, { cause });\n }\n return new JwtVerifyError(message, code, { cause });\n }\n}\nexports.JwtVerifyError = JwtVerifyError;\n//# sourceMappingURL=errors.js.map","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.segmentedStringRefinementFactory = exports.jwtCharsRefinement = exports.cachedGetter = exports.preferredOrderCmp = exports.isDefined = void 0;\nexports.matchesAny = matchesAny;\nexports.parseB64uJson = parseB64uJson;\nexports.isLastOccurrence = isLastOccurrence;\nconst base64_1 = require(\"multiformats/bases/base64\");\nconst zod_1 = require(\"zod\");\nconst isDefined = (i) => i !== undefined;\nexports.isDefined = isDefined;\nconst preferredOrderCmp = (order) => (a, b) => {\n const aIdx = order.indexOf(a);\n const bIdx = order.indexOf(b);\n if (aIdx === bIdx)\n return 0;\n if (aIdx === -1)\n return 1;\n if (bIdx === -1)\n return -1;\n return aIdx - bIdx;\n};\nexports.preferredOrderCmp = preferredOrderCmp;\nfunction matchesAny(value) {\n return value == null\n ? (v) => true\n : Array.isArray(value)\n ? (v) => value.includes(v)\n : (v) => v === value;\n}\n/**\n * Decorator to cache the result of a getter on a class instance.\n */\nconst cachedGetter = (target, _context) => {\n return function () {\n const value = target.call(this);\n Object.defineProperty(this, target.name, {\n get: () => value,\n enumerable: true,\n configurable: true,\n });\n return value;\n };\n};\nexports.cachedGetter = cachedGetter;\nconst decoder = new TextDecoder();\nfunction parseB64uJson(input) {\n const inputBytes = base64_1.base64url.baseDecode(input);\n const json = decoder.decode(inputBytes);\n return JSON.parse(json);\n}\n/**\n * @example\n * ```ts\n * // jwtSchema will only allow base64url chars & \".\" (dot)\n * const jwtSchema = z.string().superRefine(jwtCharsRefinement)\n * ```\n */\nconst jwtCharsRefinement = (data, ctx) => {\n // Note: this is a hot path, let's avoid using a RegExp\n let char;\n for (let i = 0; i < data.length; i++) {\n char = data.charCodeAt(i);\n if (\n // Base64 URL encoding (most frequent)\n (65 <= char && char <= 90) || // A-Z\n (97 <= char && char <= 122) || // a-z\n (48 <= char && char <= 57) || // 0-9\n char === 45 || // -\n char === 95 || // _\n // Boundary (least frequent, check last)\n char === 46 // .\n ) {\n // continue\n }\n else {\n // Invalid char might be a surrogate pair\n const invalidChar = String.fromCodePoint(data.codePointAt(i));\n return ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: `Invalid character \"${invalidChar}\" in JWT at position ${i}`,\n });\n }\n }\n};\nexports.jwtCharsRefinement = jwtCharsRefinement;\n/**\n * @example\n * ```ts\n * const jwtSchema = z.string().superRefine(segmentedStringRefinementFactory(3))\n * type Jwt = z.infer<typeof jwtSchema> // `${string}.${string}.${string}`\n * ```\n */\nconst segmentedStringRefinementFactory = (count, minPartLength = 2) => {\n if (!Number.isFinite(count) || count < 1 || (count | 0) !== count) {\n throw new TypeError(`Count must be a natural number (got ${count})`);\n }\n const minTotalLength = count * minPartLength + (count - 1);\n const errorPrefix = `Invalid JWT format`;\n return (data, ctx) => {\n if (data.length < minTotalLength) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: `${errorPrefix}: too short`,\n });\n return false;\n }\n let currentStart = 0;\n for (let i = 0; i < count - 1; i++) {\n const nextDot = data.indexOf('.', currentStart);\n if (nextDot === -1) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: `${errorPrefix}: expected ${count} segments, got ${i + 1}`,\n });\n return false;\n }\n if (nextDot - currentStart < minPartLength) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: `${errorPrefix}: segment ${i + 1} is too short`,\n });\n return false;\n }\n currentStart = nextDot + 1;\n }\n if (data.indexOf('.', currentStart) !== -1) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: `${errorPrefix}: too many segments`,\n });\n return false;\n }\n if (data.length - currentStart < minPartLength) {\n ctx.addIssue({\n code: zod_1.ZodIssueCode.custom,\n message: `${errorPrefix}: last segment is too short`,\n });\n return false;\n }\n return true;\n };\n};\nexports.segmentedStringRefinementFactory = segmentedStringRefinementFactory;\nfunction isLastOccurrence(v, i, arr) {\n return arr.indexOf(v, i + 1) === -1;\n}\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.jwkPrivateSchema = exports.jwkPubSchema = exports.jwkValidator = exports.jwkSchema = exports.keyUsageSchema = exports.KEY_USAGE = exports.privateKeyUsageSchema = exports.PRIVATE_KEY_USAGE = exports.publicKeyUsageSchema = exports.PUBLIC_KEY_USAGE = void 0;\nexports.isPublicKeyUsage = isPublicKeyUsage;\nexports.isSigKeyUsage = isSigKeyUsage;\nexports.isEncKeyUsage = isEncKeyUsage;\nexports.isPrivateKeyUsage = isPrivateKeyUsage;\nexports.hasKid = hasKid;\nexports.hasSharedSecretJwk = hasSharedSecretJwk;\nexports.hasPrivateSecretJwk = hasPrivateSecretJwk;\nexports.isPrivateJwk = isPrivateJwk;\nexports.isPublicJwk = isPublicJwk;\nconst zod_1 = require(\"zod\");\nconst util_1 = require(\"./util\");\nexports.PUBLIC_KEY_USAGE = ['verify', 'encrypt', 'wrapKey'];\nexports.publicKeyUsageSchema = zod_1.z.enum(exports.PUBLIC_KEY_USAGE);\nfunction isPublicKeyUsage(usage) {\n return exports.PUBLIC_KEY_USAGE.includes(usage);\n}\n/**\n * Determines if the given key usage is consistent for \"sig\" (signature) public\n * key use.\n */\nfunction isSigKeyUsage(v) {\n return v === 'verify';\n}\n/**\n * Determines if the given key usage is consistent for \"enc\" (encryption) public\n * key use.\n *\n * > When a key is used to wrap another key and a public key use\n * > designation for the first key is desired, the \"enc\" (encryption)\n * > key use value is used, since key wrapping is a kind of encryption.\n * > The \"enc\" value is also to be used for public keys used for key\n * > agreement operations.\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7517#section-4.2}\n */\nfunction isEncKeyUsage(v) {\n return v === 'encrypt' || v === 'wrapKey';\n}\nexports.PRIVATE_KEY_USAGE = [\n 'sign',\n 'decrypt',\n 'unwrapKey',\n 'deriveKey',\n 'deriveBits',\n];\nexports.privateKeyUsageSchema = zod_1.z.enum(exports.PRIVATE_KEY_USAGE);\nfunction isPrivateKeyUsage(usage) {\n return exports.PRIVATE_KEY_USAGE.includes(usage);\n}\nexports.KEY_USAGE = [...exports.PRIVATE_KEY_USAGE, ...exports.PUBLIC_KEY_USAGE];\nexports.keyUsageSchema = zod_1.z.enum(exports.KEY_USAGE);\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7517#section-4 JSON Web Key (JWK) Format}\n * @see {@link https://www.iana.org/assignments/jose/jose.xhtml#web-key-parameters IANA \"JSON Web Key Parameters\" registry}\n */\nconst jwkBaseSchema = zod_1.z.object({\n kty: zod_1.z.string().min(1),\n alg: zod_1.z.string().min(1).optional(),\n kid: zod_1.z.string().min(1).optional(),\n use: zod_1.z.enum(['sig', 'enc']).optional(),\n key_ops: zod_1.z\n .array(exports.keyUsageSchema)\n .min(1, { message: 'At least one key usage must be specified' })\n // https://datatracker.ietf.org/doc/html/rfc7517#section-4.3\n // > Duplicate key operation values MUST NOT be present in the array.\n .refine((ops) => ops.every(util_1.isLastOccurrence), {\n message: 'key_ops must not contain duplicates',\n })\n .optional(),\n x5c: zod_1.z.array(zod_1.z.string()).optional(), // X.509 Certificate Chain\n x5t: zod_1.z.string().min(1).optional(), // X.509 Certificate SHA-1 Thumbprint\n 'x5t#S256': zod_1.z.string().min(1).optional(), // X.509 Certificate SHA-256 Thumbprint\n x5u: zod_1.z.string().url().optional(), // X.509 URL\n // https://www.w3.org/TR/webcrypto/\n ext: zod_1.z.boolean().optional(), // Extractable\n // Federation Historical Keys Response\n // https://openid.net/specs/openid-federation-1_0.html#name-federation-historical-keys-res\n iat: zod_1.z.number().int().optional(), // Issued At (timestamp)\n exp: zod_1.z.number().int().optional(), // Expiration Time (timestamp)\n nbf: zod_1.z.number().int().optional(), // Not Before (timestamp)\n revoked: zod_1.z // properties of the revocation\n .object({\n revoked_at: zod_1.z.number().int(),\n reason: zod_1.z.string().optional(),\n })\n .optional(),\n});\nconst jwkRsaKeySchema = jwkBaseSchema.extend({\n kty: zod_1.z.literal('RSA'),\n alg: zod_1.z\n .enum(['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512'])\n .optional(),\n n: zod_1.z.string().min(1), // Modulus\n e: zod_1.z.string().min(1), // Exponent\n d: zod_1.z.string().min(1).optional(), // Private Exponent\n p: zod_1.z.string().min(1).optional(), // First Prime Factor\n q: zod_1.z.string().min(1).optional(), // Second Prime Factor\n dp: zod_1.z.string().min(1).optional(), // First Factor CRT Exponent\n dq: zod_1.z.string().min(1).optional(), // Second Factor CRT Exponent\n qi: zod_1.z.string().min(1).optional(), // First CRT Coefficient\n oth: zod_1.z\n .array(zod_1.z.object({\n r: zod_1.z.string().optional(),\n d: zod_1.z.string().optional(),\n t: zod_1.z.string().optional(),\n }))\n .min(1)\n .optional(), // Other Primes Info\n});\nconst jwkEcKeySchema = jwkBaseSchema.extend({\n kty: zod_1.z.literal('EC'),\n alg: zod_1.z.enum(['ES256', 'ES384', 'ES512']).optional(),\n crv: zod_1.z.enum(['P-256', 'P-384', 'P-521']),\n x: zod_1.z.string().min(1),\n y: zod_1.z.string().min(1),\n d: zod_1.z.string().min(1).optional(), // ECC Private Key\n});\nconst jwkEcSecp256k1KeySchema = jwkBaseSchema.extend({\n kty: zod_1.z.literal('EC'),\n alg: zod_1.z.enum(['ES256K']).optional(),\n crv: zod_1.z.enum(['secp256k1']),\n x: zod_1.z.string().min(1),\n y: zod_1.z.string().min(1),\n d: zod_1.z.string().min(1).optional(), // ECC Private Key\n});\nconst jwkOkpKeySchema = jwkBaseSchema.extend({\n kty: zod_1.z.literal('OKP'),\n alg: zod_1.z.enum(['EdDSA']).optional(),\n crv: zod_1.z.enum(['Ed25519', 'Ed448']),\n x: zod_1.z.string().min(1),\n d: zod_1.z.string().min(1).optional(), // ECC Private Key\n});\nconst jwkSymKeySchema = jwkBaseSchema.extend({\n kty: zod_1.z.literal('oct'), // Octet Sequence (used to represent symmetric keys)\n alg: zod_1.z.enum(['HS256', 'HS384', 'HS512']).optional(),\n k: zod_1.z.string(), // Key Value (base64url encoded)\n});\n/**\n * Zod parser for known JWK types\n */\nexports.jwkSchema = zod_1.z\n .union([\n jwkRsaKeySchema,\n jwkEcKeySchema,\n jwkEcSecp256k1KeySchema,\n jwkOkpKeySchema,\n jwkSymKeySchema,\n])\n // @TODO These rules should be applied to jwkBaseSchema, but Zod 3 doesn't\n // support extending refined schemas. Move these to the base schema when we\n // upgrade to Zod 4.\n .refine(\n// https://datatracker.ietf.org/doc/html/rfc7517#section-4.2\n// > The \"use\" (public key use) parameter identifies the intended use of the\n// > public key\n(k) => k.use == null || isPublicJwk(k), {\n message: '\"use\" can only be used with public keys',\n path: ['use'],\n})\n .refine((k) => !k.key_ops?.some(isPrivateKeyUsage) || isPrivateJwk(k), {\n message: 'private key usage not allowed for public keys',\n path: ['key_ops'],\n})\n .refine(\n// https://datatracker.ietf.org/doc/html/rfc7517#section-4.3\n// > The \"use\" and \"key_ops\" JWK members SHOULD NOT be used together;\n// > however, if both are used, the information they convey MUST be\n// > consistent.\n(k) => k.use == null ||\n k.key_ops == null ||\n (k.use === 'sig' && k.key_ops.every(isSigKeyUsage)) ||\n (k.use === 'enc' && k.key_ops.every(isEncKeyUsage)), {\n message: '\"key_ops\" must be consistent with \"use\"',\n path: ['key_ops'],\n});\n/** @deprecated use {@link jwkSchema} instead */\nexports.jwkValidator = exports.jwkSchema;\nexports.jwkPubSchema = exports.jwkSchema\n .refine(hasKid, {\n message: '\"kid\" is required',\n path: ['kid'],\n})\n // @NOTE for legacy reasons, we don't impose the presence of either \"use\" or \"key_ops\"\n .refine(isPublicJwk, {\n message: 'private key not allowed',\n})\n .refine((k) => !k.key_ops || k.key_ops.every(isPublicKeyUsage), {\n message: '\"key_ops\" must not contain private key usage for public keys',\n path: ['key_ops'],\n});\nexports.jwkPrivateSchema = exports.jwkSchema\n // @NOTE we don't impose the presence of \"kid\"\n .refine(isPrivateJwk, {\n message: 'private key required',\n});\nfunction hasKid(jwk) {\n return 'kid' in jwk && jwk.kid != null;\n}\nfunction hasSharedSecretJwk(jwk) {\n return 'k' in jwk && jwk.k != null;\n}\nfunction hasPrivateSecretJwk(jwk) {\n return 'd' in jwk && jwk.d != null;\n}\nfunction isPrivateJwk(jwk) {\n return hasPrivateSecretJwk(jwk) || hasSharedSecretJwk(jwk);\n}\nfunction isPublicJwk(jwk) {\n return !hasPrivateSecretJwk(jwk) && !hasSharedSecretJwk(jwk);\n}\n//# sourceMappingURL=jwk.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.jwkAlgorithms = jwkAlgorithms;\nconst errors_js_1 = require(\"./errors.js\");\nconst jwk_js_1 = require(\"./jwk.js\");\n// Copy variable to prevent bundlers from automatically polyfilling \"process\" (e.g. parcel)\nconst { process } = globalThis;\nconst IS_NODE_RUNTIME = typeof process !== 'undefined' && typeof process?.versions?.node === 'string';\nfunction* jwkAlgorithms(jwk) {\n // Ed25519, Ed448, and secp256k1 always have \"alg\"\n if (typeof jwk.alg === 'string') {\n yield jwk.alg;\n return;\n }\n switch (jwk.kty) {\n case 'EC': {\n if (jwkSupportsEnc(jwk)) {\n yield 'ECDH-ES';\n yield 'ECDH-ES+A128KW';\n yield 'ECDH-ES+A192KW';\n yield 'ECDH-ES+A256KW';\n }\n if (jwkSupportsSig(jwk)) {\n const crv = 'crv' in jwk ? jwk.crv : undefined;\n switch (crv) {\n case 'P-256':\n case 'P-384':\n yield `ES${crv.slice(-3)}`;\n break;\n case 'P-521':\n yield 'ES512';\n break;\n case 'secp256k1':\n if (IS_NODE_RUNTIME)\n yield 'ES256K';\n break;\n default:\n throw new errors_js_1.JwkError(`Unsupported crv \"${crv}\"`);\n }\n }\n return;\n }\n case 'OKP': {\n if (!jwk.use)\n throw new errors_js_1.JwkError('Missing \"use\" Parameter value');\n yield 'ECDH-ES';\n yield 'ECDH-ES+A128KW';\n yield 'ECDH-ES+A192KW';\n yield 'ECDH-ES+A256KW';\n return;\n }\n case 'RSA': {\n if (jwkSupportsEnc(jwk)) {\n yield 'RSA-OAEP';\n yield 'RSA-OAEP-256';\n yield 'RSA-OAEP-384';\n yield 'RSA-OAEP-512';\n if (IS_NODE_RUNTIME)\n yield 'RSA1_5';\n }\n if (jwkSupportsSig(jwk)) {\n yield 'PS256';\n yield 'PS384';\n yield 'PS512';\n yield 'RS256';\n yield 'RS384';\n yield 'RS512';\n }\n return;\n }\n case 'oct': {\n if (jwkSupportsEnc(jwk)) {\n yield 'A128GCMKW';\n yield 'A192GCMKW';\n yield 'A256GCMKW';\n yield 'A128KW';\n yield 'A192KW';\n yield 'A256KW';\n }\n if (jwkSupportsSig(jwk)) {\n yield 'HS256';\n yield 'HS384';\n yield 'HS512';\n }\n return;\n }\n default:\n throw new errors_js_1.JwkError(`Unsupported kty \"${jwk.kty}\"`);\n }\n}\nfunction jwkSupportsEnc(jwk) {\n return (jwk.key_ops?.some(jwk_js_1.isEncKeyUsage) ?? (jwk.use == null || jwk.use === 'enc'));\n}\nfunction jwkSupportsSig(jwk) {\n return (jwk.key_ops?.some(jwk_js_1.isSigKeyUsage) ?? (jwk.use == null || jwk.use === 'sig'));\n}\n//# sourceMappingURL=alg.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.jwksPubSchema = exports.jwksSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst jwk_js_1 = require(\"./jwk.js\");\n/**\n * JSON Web Key Set schema. The keys set, in this context, represents a\n * collection of JSON Web Keys (JWKs), that can be both public and private.\n */\nexports.jwksSchema = zod_1.z.object({\n keys: zod_1.z.array(zod_1.z.unknown()).transform((input) => {\n // > Implementations SHOULD ignore JWKs within a JWK Set that use \"kty\"\n // > (key type) values that are not understood by them, that are missing\n // > required members, or for which values are out of the supported\n // > ranges.\n return input\n .map((item) => jwk_js_1.jwkSchema.safeParse(item))\n .filter((res) => res.success)\n .map((res) => res.data);\n }),\n});\n/**\n * Public JSON Web Key Set schema.\n */\nexports.jwksPubSchema = zod_1.z.object({\n keys: zod_1.z.array(zod_1.z.unknown()).transform((input) => {\n // > Implementations SHOULD ignore JWKs within a JWK Set that use \"kty\"\n // > (key type) values that are not understood by them, that are missing\n // > required members, or for which values are out of the supported\n // > ranges.\n return input\n .map((item) => jwk_js_1.jwkPubSchema.safeParse(item))\n .filter((res) => res.success)\n .map((res) => res.data);\n }),\n});\n//# sourceMappingURL=jwks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.jwtPayloadSchema = exports.htuSchema = exports.jwtHeaderSchema = exports.isUnsignedJwt = exports.unsignedJwtSchema = exports.isSignedJwt = exports.signedJwtSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst jwk_js_1 = require(\"./jwk.js\");\nconst util_js_1 = require(\"./util.js\");\nexports.signedJwtSchema = zod_1.z\n .string()\n .superRefine(util_js_1.jwtCharsRefinement)\n .superRefine((0, util_js_1.segmentedStringRefinementFactory)(3));\nconst isSignedJwt = (data) => exports.signedJwtSchema.safeParse(data).success;\nexports.isSignedJwt = isSignedJwt;\nexports.unsignedJwtSchema = zod_1.z\n .string()\n .superRefine(util_js_1.jwtCharsRefinement)\n .superRefine((0, util_js_1.segmentedStringRefinementFactory)(2));\nconst isUnsignedJwt = (data) => exports.unsignedJwtSchema.safeParse(data).success;\nexports.isUnsignedJwt = isUnsignedJwt;\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc7515.html#section-4}\n */\nexports.jwtHeaderSchema = zod_1.z\n .object({\n /** \"alg\" (Algorithm) Header Parameter */\n alg: zod_1.z.string(),\n /** \"jku\" (JWK Set URL) Header Parameter */\n jku: zod_1.z.string().url().optional(),\n /** \"jwk\" (JSON Web Key) Header Parameter */\n jwk: zod_1.z\n .object({\n kty: zod_1.z.string(),\n crv: zod_1.z.string().optional(),\n x: zod_1.z.string().optional(),\n y: zod_1.z.string().optional(),\n e: zod_1.z.string().optional(),\n n: zod_1.z.string().optional(),\n })\n .optional(),\n /** \"kid\" (Key ID) Header Parameter */\n kid: zod_1.z.string().optional(),\n /** \"x5u\" (X.509 URL) Header Parameter */\n x5u: zod_1.z.string().optional(),\n /** \"x5c\" (X.509 Certificate Chain) Header Parameter */\n x5c: zod_1.z.array(zod_1.z.string()).optional(),\n /** \"x5t\" (X.509 Certificate SHA-1 Thumbprint) Header Parameter */\n x5t: zod_1.z.string().optional(),\n /** \"x5t#S256\" (X.509 Certificate SHA-256 Thumbprint) Header Parameter */\n 'x5t#S256': zod_1.z.string().optional(),\n /** \"typ\" (Type) Header Parameter */\n typ: zod_1.z.string().optional(),\n /** \"cty\" (Content Type) Header Parameter */\n cty: zod_1.z.string().optional(),\n /** \"crit\" (Critical) Header Parameter */\n crit: zod_1.z.array(zod_1.z.string()).optional(),\n})\n .passthrough();\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc9449.html#section-4.2-4.6}\n * @see {@link https://www.rfc-editor.org/rfc/rfc9110#section-7.1}\n */\nexports.htuSchema = zod_1.z.string().superRefine((value, ctx) => {\n try {\n const url = new URL(value);\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Only http: and https: protocols are allowed',\n });\n }\n if (url.username || url.password) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Credentials not allowed',\n });\n }\n if (url.search) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Query string not allowed',\n });\n }\n if (url.hash) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Fragment not allowed',\n });\n }\n }\n catch (err) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.invalid_string,\n validation: 'url',\n });\n }\n return value;\n});\n// https://www.iana.org/assignments/jwt/jwt.xhtml\nexports.jwtPayloadSchema = zod_1.z\n .object({\n iss: zod_1.z.string().optional(),\n aud: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string()).nonempty()]).optional(),\n sub: zod_1.z.string().optional(),\n exp: zod_1.z.number().int().optional(),\n nbf: zod_1.z.number().int().optional(),\n iat: zod_1.z.number().int().optional(),\n jti: zod_1.z.string().optional(),\n htm: zod_1.z.string().optional(),\n htu: exports.htuSchema.optional(),\n ath: zod_1.z.string().optional(),\n acr: zod_1.z.string().optional(),\n azp: zod_1.z.string().optional(),\n amr: zod_1.z.array(zod_1.z.string()).optional(),\n // https://datatracker.ietf.org/doc/html/rfc7800\n cnf: zod_1.z\n .object({\n kid: zod_1.z.string().optional(), // Key ID\n jwk: jwk_js_1.jwkPubSchema.optional(), // JWK\n jwe: zod_1.z.string().optional(), // Encrypted key\n jku: zod_1.z.string().url().optional(), // JWK Set URI (\"kid\" should also be provided)\n // https://datatracker.ietf.org/doc/html/rfc9449#section-6.1\n jkt: zod_1.z.string().optional(),\n // https://datatracker.ietf.org/doc/html/rfc8705\n 'x5t#S256': zod_1.z.string().optional(), // X.509 Certificate SHA-256 Thumbprint\n // https://datatracker.ietf.org/doc/html/rfc9203\n osc: zod_1.z.string().optional(), // OSCORE_Input_Material carrying the parameters for using OSCORE per-message security with implicit key confirmation\n })\n .optional(),\n client_id: zod_1.z.string().optional(),\n scope: zod_1.z.string().optional(),\n nonce: zod_1.z.string().optional(),\n at_hash: zod_1.z.string().optional(),\n c_hash: zod_1.z.string().optional(),\n s_hash: zod_1.z.string().optional(),\n auth_time: zod_1.z.number().int().optional(),\n // https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims\n // OpenID: \"profile\" scope\n name: zod_1.z.string().optional(),\n family_name: zod_1.z.string().optional(),\n given_name: zod_1.z.string().optional(),\n middle_name: zod_1.z.string().optional(),\n nickname: zod_1.z.string().optional(),\n preferred_username: zod_1.z.string().optional(),\n gender: zod_1.z.string().optional(), // OpenID only defines \"male\" and \"female\" without forbidding other values\n picture: zod_1.z.string().url().optional(),\n profile: zod_1.z.string().url().optional(),\n website: zod_1.z.string().url().optional(),\n birthdate: zod_1.z\n .string()\n .regex(/\\d{4}-\\d{2}-\\d{2}/) // YYYY-MM-DD\n .optional(),\n zoneinfo: zod_1.z\n .string()\n .regex(/^[A-Za-z0-9_/]+$/)\n .optional(),\n locale: zod_1.z\n .string()\n .regex(/^[a-z]{2,3}(-[A-Z]{2})?$/)\n .optional(),\n updated_at: zod_1.z.number().int().optional(),\n // OpenID: \"email\" scope\n email: zod_1.z.string().optional(),\n email_verified: zod_1.z.boolean().optional(),\n // OpenID: \"phone\" scope\n phone_number: zod_1.z.string().optional(),\n phone_number_verified: zod_1.z.boolean().optional(),\n // OpenID: \"address\" scope\n // https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim\n address: zod_1.z\n .object({\n formatted: zod_1.z.string().optional(),\n street_address: zod_1.z.string().optional(),\n locality: zod_1.z.string().optional(),\n region: zod_1.z.string().optional(),\n postal_code: zod_1.z.string().optional(),\n country: zod_1.z.string().optional(),\n })\n .optional(),\n // https://datatracker.ietf.org/doc/html/rfc9396#section-14.2\n authorization_details: zod_1.z\n .array(zod_1.z\n .object({\n type: zod_1.z.string(),\n // https://datatracker.ietf.org/doc/html/rfc9396#section-2.2\n locations: zod_1.z.array(zod_1.z.string()).optional(),\n actions: zod_1.z.array(zod_1.z.string()).optional(),\n datatypes: zod_1.z.array(zod_1.z.string()).optional(),\n identifier: zod_1.z.string().optional(),\n privileges: zod_1.z.array(zod_1.z.string()).optional(),\n })\n .passthrough())\n .optional(),\n})\n .passthrough();\n//# sourceMappingURL=jwt.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsafeDecodeJwt = unsafeDecodeJwt;\nconst errors_js_1 = require(\"./errors.js\");\nconst jwt_js_1 = require(\"./jwt.js\");\nconst util_js_1 = require(\"./util.js\");\nfunction unsafeDecodeJwt(jwt) {\n const { 0: headerEnc, 1: payloadEnc, length } = jwt.split('.');\n if (length > 3 || length < 2) {\n throw new errors_js_1.JwtVerifyError(undefined, errors_js_1.ERR_JWT_INVALID);\n }\n const header = jwt_js_1.jwtHeaderSchema.parse((0, util_js_1.parseB64uJson)(headerEnc));\n if (length === 2 && header?.alg !== 'none') {\n throw new errors_js_1.JwtVerifyError(undefined, errors_js_1.ERR_JWT_INVALID);\n }\n const payload = jwt_js_1.jwtPayloadSchema.parse((0, util_js_1.parseB64uJson)(payloadEnc));\n return { header, payload };\n}\n//# sourceMappingURL=jwt-decode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=jwt-verify.js.map","\"use strict\";\nvar __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\nvar __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Key = void 0;\nconst alg_js_1 = require(\"./alg.js\");\nconst jwk_js_1 = require(\"./jwk.js\");\nconst util_js_1 = require(\"./util.js\");\nlet Key = (() => {\n var _a;\n let _instanceExtraInitializers = [];\n let _get_isPrivate_decorators;\n let _get_isSymetric_decorators;\n let _get_publicJwk_decorators;\n let _get_bareJwk_decorators;\n let _get_algorithms_decorators;\n return _a = class Key {\n constructor(jwk) {\n Object.defineProperty(this, \"jwk\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (__runInitializers(this, _instanceExtraInitializers), jwk)\n });\n }\n get isPrivate() {\n return (0, jwk_js_1.isPrivateJwk)(this.jwk);\n }\n get isSymetric() {\n return (0, jwk_js_1.hasSharedSecretJwk)(this.jwk);\n }\n get privateJwk() {\n if (!this.isPrivate)\n return undefined;\n return this.jwk;\n }\n get publicJwk() {\n if (this.isSymetric)\n return undefined;\n if (!this.isPrivate)\n return this.jwk;\n const validated = jwk_js_1.jwkPubSchema.safeParse({\n ...this.jwk,\n d: undefined,\n k: undefined,\n use: undefined,\n key_ops: buildPublicKeyOps(this.keyOps) ?? jwk_js_1.PUBLIC_KEY_USAGE,\n });\n // One reason why the parsing might fail is if key_ops is empty. This check\n // also allows to future proof the code (e.g if another type of private key\n // is added that uses a different property than \"d\" or \"k\" to store its\n // private value).\n if (!validated.success)\n return undefined;\n return Object.freeze(validated.data);\n }\n get bareJwk() {\n if (this.isSymetric)\n return undefined;\n const { kty, crv, e, n, x, y } = this.jwk;\n return Object.freeze(jwk_js_1.jwkSchema.parse({ crv, e, kty, n, x, y }));\n }\n /**\n * @note Only defined on public keys\n */\n get use() {\n return this.jwk.use;\n }\n get keyOps() {\n return this.jwk.key_ops;\n }\n /**\n * The (forced) algorithm to use. If not provided, the key will be usable with\n * any of the algorithms in {@link algorithms}.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7518#section-3.1 | \"alg\" (Algorithm) Header Parameter Values for JWS}\n */\n get alg() {\n return this.jwk.alg;\n }\n get kid() {\n return this.jwk.kid;\n }\n get crv() {\n return this.jwk.crv;\n }\n /**\n * All the algorithms that this key can be used with. If `alg` is provided,\n * this set will only contain that algorithm.\n */\n get algorithms() {\n return Object.freeze(Array.from((0, alg_js_1.jwkAlgorithms)(this.jwk)));\n }\n get isRevoked() {\n return this.jwk.revoked != null;\n }\n isActive(options) {\n if (!options?.allowRevoked && this.isRevoked)\n return false;\n const tolerance = options?.clockTolerance ?? 0;\n if (tolerance !== Infinity) {\n const now = options?.currentDate?.getTime() ?? Date.now();\n const { exp, nbf } = this.jwk;\n if (nbf != null && !(now >= nbf * 1e3 - tolerance))\n return false;\n if (exp != null && !(now < exp * 1e3 + tolerance))\n return false;\n }\n return true;\n }\n matches(opts) {\n if (opts.kid != null) {\n const matchesKid = Array.isArray(opts.kid)\n ? this.kid != null && opts.kid.includes(this.kid)\n : this.kid === opts.kid;\n if (!matchesKid)\n return false;\n }\n if (opts.alg != null) {\n const matchesAlg = Array.isArray(opts.alg)\n ? opts.alg.some((a) => this.algorithms.includes(a))\n : this.algorithms.includes(opts.alg);\n if (!matchesAlg)\n return false;\n }\n if (opts.usage != null) {\n const matchesOps = this.keyOps == null ||\n this.keyOps.includes(opts.usage) ||\n // @NOTE Because this.jwk represents the private key (typically used for\n // private operations), the public counterpart operations are allowed.\n (opts.usage === 'verify' && this.keyOps.includes('sign')) ||\n (opts.usage === 'encrypt' && this.keyOps.includes('decrypt')) ||\n (opts.usage === 'wrapKey' && this.keyOps.includes('unwrapKey'));\n if (!matchesOps)\n return false;\n const matchesUse = this.use == null ||\n (this.use === 'sig' && (0, jwk_js_1.isSigKeyUsage)(opts.usage)) ||\n (this.use === 'enc' && (0, jwk_js_1.isEncKeyUsage)(opts.usage));\n if (!matchesUse)\n return false;\n // @NOTE This is only relevant when \"key_ops\" and \"use\" are undefined.\n // This line also ensures that when \"opts.usage\" is a private key usage\n // (e.g. \"sign\"), the key is indeed a private key.\n const matchesKeyType = this.isPrivate || (0, jwk_js_1.isPublicKeyUsage)(opts.usage);\n if (!matchesKeyType)\n return false;\n }\n return true;\n }\n },\n (() => {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(null) : void 0;\n _get_isPrivate_decorators = [util_js_1.cachedGetter];\n _get_isSymetric_decorators = [util_js_1.cachedGetter];\n _get_publicJwk_decorators = [util_js_1.cachedGetter];\n _get_bareJwk_decorators = [util_js_1.cachedGetter];\n _get_algorithms_decorators = [util_js_1.cachedGetter];\n __esDecorate(_a, null, _get_isPrivate_decorators, { kind: \"getter\", name: \"isPrivate\", static: false, private: false, access: { has: obj => \"isPrivate\" in obj, get: obj => obj.isPrivate }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(_a, null, _get_isSymetric_decorators, { kind: \"getter\", name: \"isSymetric\", static: false, private: false, access: { has: obj => \"isSymetric\" in obj, get: obj => obj.isSymetric }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(_a, null, _get_publicJwk_decorators, { kind: \"getter\", name: \"publicJwk\", static: false, private: false, access: { has: obj => \"publicJwk\" in obj, get: obj => obj.publicJwk }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(_a, null, _get_bareJwk_decorators, { kind: \"getter\", name: \"bareJwk\", static: false, private: false, access: { has: obj => \"bareJwk\" in obj, get: obj => obj.bareJwk }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(_a, null, _get_algorithms_decorators, { kind: \"getter\", name: \"algorithms\", static: false, private: false, access: { has: obj => \"algorithms\" in obj, get: obj => obj.algorithms }, metadata: _metadata }, null, _instanceExtraInitializers);\n if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n })(),\n _a;\n})();\nexports.Key = Key;\nfunction buildPublicKeyOps(keyUsages) {\n if (keyUsages == null)\n return undefined;\n // https://datatracker.ietf.org/doc/html/rfc7517#section-4.3\n // > Duplicate key operation values MUST NOT be present in the array.\n const publicOps = new Set(keyUsages.filter(jwk_js_1.isPublicKeyUsage));\n // @NOTE Translating private key usage into public key usage\n if (keyUsages.includes('sign'))\n publicOps.add('verify');\n if (keyUsages.includes('decrypt'))\n publicOps.add('encrypt');\n if (keyUsages.includes('unwrapKey'))\n publicOps.add('wrapKey');\n return Array.from(publicOps);\n}\n//# sourceMappingURL=key.js.map","\"use strict\";\nvar __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\nvar __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Keyset = void 0;\nconst errors_js_1 = require(\"./errors.js\");\nconst jwt_decode_js_1 = require(\"./jwt-decode.js\");\nconst util_js_1 = require(\"./util.js\");\nconst extractPrivateJwk = (key) => key.privateJwk;\nconst extractPublicJwk = (key) => key.publicJwk;\nlet Keyset = (() => {\n var _a;\n let _instanceExtraInitializers = [];\n let _get_signAlgorithms_decorators;\n let _get_publicJwks_decorators;\n let _get_privateJwks_decorators;\n return _a = class Keyset {\n constructor(iterable, \n /**\n * The preferred algorithms to use when signing a JWT using this keyset.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7518#section-3.1}\n */\n preferredSigningAlgorithms = iterable instanceof\n _a\n ? [...iterable.preferredSigningAlgorithms]\n : [\n // Prefer elliptic curve algorithms\n 'EdDSA',\n 'ES256K',\n 'ES256',\n // https://datatracker.ietf.org/doc/html/rfc7518#section-3.5\n 'PS256',\n 'PS384',\n 'PS512',\n 'HS256',\n 'HS384',\n 'HS512',\n ]) {\n Object.defineProperty(this, \"preferredSigningAlgorithms\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (__runInitializers(this, _instanceExtraInitializers), preferredSigningAlgorithms)\n });\n Object.defineProperty(this, \"keys\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n const keys = [];\n const keyIds = new Set();\n for (const key of iterable) {\n if (!key)\n continue;\n keys.push(key);\n if (key.kid) {\n if (keyIds.has(key.kid))\n throw new errors_js_1.JwkError(`Duplicate key: ${key.kid}`);\n else\n keyIds.add(key.kid);\n }\n }\n this.keys = Object.freeze(keys);\n }\n get size() {\n return this.keys.length;\n }\n get signAlgorithms() {\n const algorithms = new Set();\n for (const key of this) {\n if (key.use !== 'sig')\n continue;\n for (const alg of key.algorithms) {\n algorithms.add(alg);\n }\n }\n return Object.freeze([...algorithms].sort((0, util_js_1.preferredOrderCmp)(this.preferredSigningAlgorithms)));\n }\n get publicJwks() {\n return Object.freeze({\n keys: Object.freeze(Array.from(this, extractPublicJwk).filter(util_js_1.isDefined)),\n });\n }\n get privateJwks() {\n return Object.freeze({\n keys: Object.freeze(Array.from(this, extractPrivateJwk).filter(util_js_1.isDefined)),\n });\n }\n has(kid) {\n return this.keys.some((key) => key.kid === kid);\n }\n get(options) {\n const key = this.find(options);\n if (key)\n return key;\n throw new errors_js_1.JwkError(`Key not found ${options.kid ?? options.alg ?? options.usage ?? '<unknown>'}`, errors_js_1.ERR_JWK_NOT_FOUND);\n }\n find(options) {\n for (const key of this.list(options)) {\n return key;\n }\n return undefined;\n }\n *list(options) {\n for (const key of this) {\n if (key.isActive(options) && key.matches(options)) {\n yield key;\n }\n }\n }\n findPrivateKey({ kid, alg, usage, ...options }) {\n const matchingKeys = [];\n // Allow the loop bellow to return early when a single \"alg\" is provided\n if (Array.isArray(alg) && alg.length === 1)\n alg = alg[0];\n for (const key of this.list({ ...options, kid, alg, usage })) {\n // Skip negotiation if a single \"alg\" was provided\n if (typeof alg === 'string')\n return { key, alg };\n matchingKeys.push(key);\n }\n const isAllowedAlg = (0, util_js_1.matchesAny)(alg);\n const candidates = matchingKeys.map((key) => [key, key.algorithms.filter(isAllowedAlg)]);\n // Return the first candidates that matches the preferred algorithms\n for (const prefAlg of this.preferredSigningAlgorithms) {\n for (const [matchingKey, matchingAlgs] of candidates) {\n if (matchingAlgs.includes(prefAlg)) {\n return { key: matchingKey, alg: prefAlg };\n }\n }\n }\n // Return any candidate\n for (const [matchingKey, matchingAlgs] of candidates) {\n for (const alg of matchingAlgs) {\n return { key: matchingKey, alg };\n }\n }\n throw new errors_js_1.JwkError(`No private key found for ${kid || alg || usage}`, errors_js_1.ERR_JWK_NOT_FOUND);\n }\n [(_get_signAlgorithms_decorators = [util_js_1.cachedGetter], _get_publicJwks_decorators = [util_js_1.cachedGetter], _get_privateJwks_decorators = [util_js_1.cachedGetter], Symbol.iterator)]() {\n return this.keys.values();\n }\n async createJwt({ alg: sAlg, kid: sKid, ...header }, payload) {\n try {\n const { key, alg } = this.findPrivateKey({\n alg: sAlg,\n kid: sKid,\n usage: 'sign',\n allowRevoked: false, // For explicitness (default value is false)\n });\n const protectedHeader = { ...header, alg, kid: key.kid };\n if (typeof payload === 'function') {\n payload = await payload(protectedHeader, key);\n }\n return await key.createJwt(protectedHeader, payload);\n }\n catch (err) {\n throw errors_js_1.JwtCreateError.from(err);\n }\n }\n async verifyJwt(token, options) {\n const { header } = (0, jwt_decode_js_1.unsafeDecodeJwt)(token);\n const { kid, alg } = header;\n const errors = [];\n for (const key of this.list({ ...options, kid, alg, usage: 'verify' })) {\n try {\n const result = await key.verifyJwt(token, options);\n return { ...result, key };\n }\n catch (err) {\n errors.push(err);\n }\n }\n switch (errors.length) {\n case 0:\n throw new errors_js_1.JwtVerifyError('No key matched', errors_js_1.ERR_JWKS_NO_MATCHING_KEY);\n case 1:\n throw errors_js_1.JwtVerifyError.from(errors[0], errors_js_1.ERR_JWT_INVALID);\n default:\n throw errors_js_1.JwtVerifyError.from(errors, errors_js_1.ERR_JWT_INVALID);\n }\n }\n toJSON() {\n // Make a copy to allow mutation of the result\n return structuredClone(this.publicJwks);\n }\n },\n (() => {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(null) : void 0;\n __esDecorate(_a, null, _get_signAlgorithms_decorators, { kind: \"getter\", name: \"signAlgorithms\", static: false, private: false, access: { has: obj => \"signAlgorithms\" in obj, get: obj => obj.signAlgorithms }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(_a, null, _get_publicJwks_decorators, { kind: \"getter\", name: \"publicJwks\", static: false, private: false, access: { has: obj => \"publicJwks\" in obj, get: obj => obj.publicJwks }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(_a, null, _get_privateJwks_decorators, { kind: \"getter\", name: \"privateJwks\", static: false, private: false, access: { has: obj => \"privateJwks\" in obj, get: obj => obj.privateJwks }, metadata: _metadata }, null, _instanceExtraInitializers);\n if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n })(),\n _a;\n})();\nexports.Keyset = Keyset;\n//# sourceMappingURL=keyset.js.map","\"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.ValidationError = void 0;\n// Since we expose zod schemas, let's expose ZodError (under a generic name) so\n// that dependents can catch schema parsing errors without requiring an explicit\n// dependency on zod, or risking a conflict in case of mismatching zob versions.\nvar zod_1 = require(\"zod\");\nObject.defineProperty(exports, \"ValidationError\", { enumerable: true, get: function () { return zod_1.ZodError; } });\n__exportStar(require(\"./alg.js\"), exports);\n__exportStar(require(\"./errors.js\"), exports);\n__exportStar(require(\"./jwk.js\"), exports);\n__exportStar(require(\"./jwks.js\"), exports);\n__exportStar(require(\"./jwt-decode.js\"), exports);\n__exportStar(require(\"./jwt-verify.js\"), exports);\n__exportStar(require(\"./jwt.js\"), exports);\n__exportStar(require(\"./key.js\"), exports);\n__exportStar(require(\"./keyset.js\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationDetailsSchema = exports.oauthAuthorizationDetailSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst uri_js_1 = require(\"./uri.js\");\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc9396#section-2 | RFC 9396, Section 2}\n */\nexports.oauthAuthorizationDetailSchema = zod_1.z.object({\n type: zod_1.z.string(),\n /**\n * An array of strings representing the location of the resource or RS. These\n * strings are typically URIs identifying the location of the RS.\n */\n locations: zod_1.z.array(uri_js_1.dangerousUriSchema).optional(),\n /**\n * An array of strings representing the kinds of actions to be taken at the\n * resource.\n */\n actions: zod_1.z.array(zod_1.z.string()).optional(),\n /**\n * An array of strings representing the kinds of data being requested from the\n * resource.\n */\n datatypes: zod_1.z.array(zod_1.z.string()).optional(),\n /**\n * A string identifier indicating a specific resource available at the API.\n */\n identifier: zod_1.z.string().optional(),\n /**\n * An array of strings representing the types or levels of privilege being\n * requested at the resource.\n */\n privileges: zod_1.z.array(zod_1.z.string()).optional(),\n});\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc9396#section-2 | RFC 9396, Section 2}\n */\nexports.oauthAuthorizationDetailsSchema = zod_1.z.array(exports.oauthAuthorizationDetailSchema);\n//# sourceMappingURL=oauth-authorization-details.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthTokenTypeSchema = void 0;\nconst zod_1 = require(\"zod\");\n// Case insensitive input, normalized output\nexports.oauthTokenTypeSchema = zod_1.z.union([\n zod_1.z\n .string()\n .regex(/^DPoP$/i)\n .transform(() => 'DPoP'),\n zod_1.z\n .string()\n .regex(/^Bearer$/i)\n .transform(() => 'Bearer'),\n]);\n//# sourceMappingURL=oauth-token-type.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthTokenResponseSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst jwk_1 = require(\"@atproto/jwk\");\nconst oauth_authorization_details_js_1 = require(\"./oauth-authorization-details.js\");\nconst oauth_token_type_js_1 = require(\"./oauth-token-type.js\");\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1 | RFC 6749 (OAuth2), Section 5.1}\n */\nexports.oauthTokenResponseSchema = zod_1.z\n .object({\n // https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1\n access_token: zod_1.z.string(),\n token_type: oauth_token_type_js_1.oauthTokenTypeSchema,\n scope: zod_1.z.string().optional(),\n refresh_token: zod_1.z.string().optional(),\n expires_in: zod_1.z.number().optional(),\n // https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse\n id_token: jwk_1.signedJwtSchema.optional(),\n // https://datatracker.ietf.org/doc/html/rfc9396#name-enriched-authorization-deta\n authorization_details: oauth_authorization_details_js_1.oauthAuthorizationDetailsSchema.optional(),\n})\n // https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1\n // > The client MUST ignore unrecognized value names in the response.\n .passthrough();\n//# sourceMappingURL=oauth-token-response.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.atprotoOAuthTokenResponseSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst did_1 = require(\"@atproto/did\");\nconst atproto_oauth_scope_1 = require(\"./atproto-oauth-scope\");\nconst oauth_token_response_js_1 = require(\"./oauth-token-response.js\");\nexports.atprotoOAuthTokenResponseSchema = oauth_token_response_js_1.oauthTokenResponseSchema.extend({\n token_type: zod_1.z.literal('DPoP'),\n sub: did_1.atprotoDidSchema,\n scope: atproto_oauth_scope_1.atprotoOAuthScopeSchema,\n // OpenID is not compatible with atproto identities\n id_token: zod_1.z.never().optional(),\n});\n//# sourceMappingURL=atproto-oauth-token-response.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAccessTokenSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthAccessTokenSchema = zod_1.z.string().min(1);\n//# sourceMappingURL=oauth-access-token.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationCodeGrantTokenRequestSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_redirect_uri_js_1 = require(\"./oauth-redirect-uri.js\");\nexports.oauthAuthorizationCodeGrantTokenRequestSchema = zod_1.z.object({\n grant_type: zod_1.z.literal('authorization_code'),\n code: zod_1.z.string().min(1),\n redirect_uri: oauth_redirect_uri_js_1.oauthRedirectUriSchema,\n /** @see {@link https://datatracker.ietf.org/doc/html/rfc7636#section-4.1} */\n code_verifier: zod_1.z\n .string()\n .min(43)\n .max(128)\n .regex(/^[a-zA-Z0-9-._~]+$/)\n .optional(),\n});\n//# sourceMappingURL=oauth-authorization-code-grant-token-request.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationRequestJarSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst jwk_1 = require(\"@atproto/jwk\");\nexports.oauthAuthorizationRequestJarSchema = zod_1.z.object({\n /**\n * AuthorizationRequest inside a JWT:\n * - \"iat\" is required and **MUST** be less than one minute\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc9101}\n */\n request: zod_1.z.union([jwk_1.signedJwtSchema, jwk_1.unsignedJwtSchema]),\n});\n//# sourceMappingURL=oauth-authorization-request-jar.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthCodeChallengeMethodSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthCodeChallengeMethodSchema = zod_1.z.enum(['S256', 'plain']);\n//# sourceMappingURL=oauth-code-challenge-method.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthPromptModeSchema = void 0;\nconst zod_1 = require(\"zod\");\n/**\n * - \"none\" will only be allowed if the user already allowed the client on the same device\n * - \"login\" will force the user to login again, unless he very recently logged in\n * - \"consent\" will force the user to consent again\n * - \"select_account\" will force the user to select an account\n * - \"create\" will force the user registration screen\n */\nexports.oauthPromptModeSchema = zod_1.z.enum([\n 'none',\n 'login',\n 'consent',\n 'select_account',\n 'create',\n]);\n//# sourceMappingURL=oauth-prompt-mode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthResponseModeSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthResponseModeSchema = zod_1.z.enum([\n 'query',\n 'fragment',\n 'form_post',\n]);\n//# sourceMappingURL=oauth-response-mode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthResponseTypeSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthResponseTypeSchema = zod_1.z.enum([\n // OAuth2 (https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-10#section-4.1.1)\n 'code', // Authorization Code Grant\n 'token', // Implicit Grant\n // OIDC (https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html)\n 'none',\n 'code id_token token',\n 'code id_token',\n 'code token',\n 'id_token token',\n 'id_token',\n]);\n//# sourceMappingURL=oauth-response-type.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oidcClaimsParameterSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oidcClaimsParameterSchema = zod_1.z.enum([\n // https://openid.net/specs/openid-provider-authentication-policy-extension-1_0.html#rfc.section.5.2\n // if client metadata \"require_auth_time\" is true, this *must* be provided\n 'auth_time',\n // OIDC\n 'nonce',\n 'acr',\n // OpenID: \"profile\" scope\n 'name',\n 'family_name',\n 'given_name',\n 'middle_name',\n 'nickname',\n 'preferred_username',\n 'gender',\n 'picture',\n 'profile',\n 'website',\n 'birthdate',\n 'zoneinfo',\n 'locale',\n 'updated_at',\n // OpenID: \"email\" scope\n 'email',\n 'email_verified',\n // OpenID: \"phone\" scope\n 'phone_number',\n 'phone_number_verified',\n // OpenID: \"address\" scope\n 'address',\n]);\n//# sourceMappingURL=oidc-claims-parameter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oidcClaimsPropertiesSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oidcClaimsValueSchema = zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()]);\nexports.oidcClaimsPropertiesSchema = zod_1.z.object({\n essential: zod_1.z.boolean().optional(),\n value: oidcClaimsValueSchema.optional(),\n values: zod_1.z.array(oidcClaimsValueSchema).optional(),\n});\n//# sourceMappingURL=oidc-claims-properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oidcEntityTypeSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oidcEntityTypeSchema = zod_1.z.enum(['userinfo', 'id_token']);\n//# sourceMappingURL=oidc-entity-type.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationRequestParametersSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst jwk_1 = require(\"@atproto/jwk\");\nconst oauth_authorization_details_js_1 = require(\"./oauth-authorization-details.js\");\nconst oauth_client_id_js_1 = require(\"./oauth-client-id.js\");\nconst oauth_code_challenge_method_js_1 = require(\"./oauth-code-challenge-method.js\");\nconst oauth_prompt_mode_js_1 = require(\"./oauth-prompt-mode.js\");\nconst oauth_redirect_uri_js_1 = require(\"./oauth-redirect-uri.js\");\nconst oauth_response_mode_js_1 = require(\"./oauth-response-mode.js\");\nconst oauth_response_type_js_1 = require(\"./oauth-response-type.js\");\nconst oauth_scope_js_1 = require(\"./oauth-scope.js\");\nconst oidc_claims_parameter_js_1 = require(\"./oidc-claims-parameter.js\");\nconst oidc_claims_properties_js_1 = require(\"./oidc-claims-properties.js\");\nconst oidc_entity_type_js_1 = require(\"./oidc-entity-type.js\");\nconst util_js_1 = require(\"./util.js\");\n/**\n * @note non string parameters will be converted from their string\n * representation since oauth request parameters are typically sent as URL\n * encoded form data or URL encoded query string.\n * @see {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest | OIDC}\n */\nexports.oauthAuthorizationRequestParametersSchema = zod_1.z.object({\n client_id: oauth_client_id_js_1.oauthClientIdSchema,\n state: zod_1.z.string().optional(),\n redirect_uri: oauth_redirect_uri_js_1.oauthRedirectUriSchema.optional(),\n scope: oauth_scope_js_1.oauthScopeSchema.optional(),\n response_type: oauth_response_type_js_1.oauthResponseTypeSchema,\n // PKCE\n // https://datatracker.ietf.org/doc/html/rfc7636#section-4.3\n code_challenge: zod_1.z.string().optional(),\n code_challenge_method: oauth_code_challenge_method_js_1.oauthCodeChallengeMethodSchema.optional(),\n // DPOP\n // https://datatracker.ietf.org/doc/html/rfc9449#section-12.3\n dpop_jkt: zod_1.z.string().optional(),\n // OIDC\n // Default depend on response_type\n response_mode: oauth_response_mode_js_1.oauthResponseModeSchema.optional(),\n nonce: zod_1.z.string().optional(),\n // Specifies the allowable elapsed time in seconds since the last time the\n // End-User was actively authenticated by the OP. If the elapsed time is\n // greater than this value, the OP MUST attempt to actively re-authenticate\n // the End-User. (The max_age request parameter corresponds to the OpenID 2.0\n // PAPE [OpenID.PAPE] max_auth_age request parameter.) When max_age is used,\n // the ID Token returned MUST include an auth_time Claim Value. Note that\n // max_age=0 is equivalent to prompt=login.\n max_age: zod_1.z.preprocess(util_js_1.numberPreprocess, zod_1.z.number().int().min(0)).optional(),\n claims: zod_1.z\n .preprocess(util_js_1.jsonObjectPreprocess, zod_1.z.record(oidc_entity_type_js_1.oidcEntityTypeSchema, zod_1.z.record(oidc_claims_parameter_js_1.oidcClaimsParameterSchema, zod_1.z.union([zod_1.z.literal(null), oidc_claims_properties_js_1.oidcClaimsPropertiesSchema]))))\n .optional(),\n // https://openid.net/specs/openid-connect-core-1_0.html#RegistrationParameter\n // Not supported by this library (yet?)\n // registration: clientMetadataSchema.optional(),\n login_hint: zod_1.z.string().min(1).optional(),\n ui_locales: zod_1.z\n .string()\n .regex(/^[a-z]{2,3}(-[A-Z]{2})?( [a-z]{2,3}(-[A-Z]{2})?)*$/) // fr-CA fr en\n .optional(),\n // Previous ID Token, should be provided when prompt=none is used\n id_token_hint: jwk_1.signedJwtSchema.optional(),\n // Type of UI the AS is displayed on\n display: zod_1.z.enum(['page', 'popup', 'touch', 'wap']).optional(),\n // How the AS should prompt the user for authorization:\n prompt: oauth_prompt_mode_js_1.oauthPromptModeSchema.optional(),\n // https://datatracker.ietf.org/doc/html/rfc9396\n authorization_details: zod_1.z\n .preprocess(util_js_1.jsonObjectPreprocess, oauth_authorization_details_js_1.oauthAuthorizationDetailsSchema)\n .optional(),\n});\n//# sourceMappingURL=oauth-authorization-request-parameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationRequestParSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_authorization_request_jar_js_1 = require(\"./oauth-authorization-request-jar.js\");\nconst oauth_authorization_request_parameters_js_1 = require(\"./oauth-authorization-request-parameters.js\");\nexports.oauthAuthorizationRequestParSchema = zod_1.z.union([\n oauth_authorization_request_parameters_js_1.oauthAuthorizationRequestParametersSchema,\n oauth_authorization_request_jar_js_1.oauthAuthorizationRequestJarSchema,\n]);\n//# sourceMappingURL=oauth-authorization-request-par.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthRequestUriSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthRequestUriSchema = zod_1.z.string().min(1);\n//# sourceMappingURL=oauth-request-uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationRequestUriSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_request_uri_js_1 = require(\"./oauth-request-uri.js\");\nexports.oauthAuthorizationRequestUriSchema = zod_1.z.object({\n request_uri: oauth_request_uri_js_1.oauthRequestUriSchema,\n});\n//# sourceMappingURL=oauth-authorization-request-uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationRequestQuerySchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_authorization_request_jar_js_1 = require(\"./oauth-authorization-request-jar.js\");\nconst oauth_authorization_request_parameters_js_1 = require(\"./oauth-authorization-request-parameters.js\");\nconst oauth_authorization_request_uri_js_1 = require(\"./oauth-authorization-request-uri.js\");\nconst oauth_client_id_js_1 = require(\"./oauth-client-id.js\");\nexports.oauthAuthorizationRequestQuerySchema = zod_1.z.intersection(zod_1.z.object({\n // REQUIRED. OAuth 2.0 [RFC6749] client_id.\n client_id: oauth_client_id_js_1.oauthClientIdSchema,\n}), zod_1.z.union([\n oauth_authorization_request_parameters_js_1.oauthAuthorizationRequestParametersSchema,\n oauth_authorization_request_jar_js_1.oauthAuthorizationRequestJarSchema,\n oauth_authorization_request_uri_js_1.oauthAuthorizationRequestUriSchema,\n]));\n//# sourceMappingURL=oauth-authorization-request-query.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationResponseErrorSchema = void 0;\nconst zod_1 = require(\"zod\");\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-12#name-error-response-2}\n */\nexports.oauthAuthorizationResponseErrorSchema = zod_1.z.enum([\n // The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.\n 'invalid_request',\n // The client is not authorized to request an authorization code using this method.\n 'unauthorized_client',\n // The resource owner or authorization server denied the request.\n 'access_denied',\n // The authorization server does not support obtaining an authorization code using this method.\n 'unsupported_response_type',\n // The requested scope is invalid, unknown, or malformed.\n 'invalid_scope',\n // The authorization server encountered an unexpected condition that prevented it from fulfilling the request. (This error code is needed because a 500 Internal Server Error HTTP status code cannot be returned to the client via an HTTP redirect.)\n 'server_error',\n // The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server. (This error code is needed because a 503 Service Unavailable HTTP status code cannot be returned to the client via an HTTP redirect.)\n 'temporarily_unavailable',\n]);\n//# sourceMappingURL=oauth-authorization-response-error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthIssuerIdentifierSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst uri_js_1 = require(\"./uri.js\");\nexports.oauthIssuerIdentifierSchema = uri_js_1.webUriSchema.superRefine((value, ctx) => {\n // Validate the issuer (MIX-UP attacks)\n if (value.endsWith('/')) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Issuer URL must not end with a slash',\n });\n return false;\n }\n const url = new URL(value);\n if (url.username || url.password) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Issuer URL must not contain a username or password',\n });\n return false;\n }\n if (url.hash || url.search) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Issuer URL must not contain a query or fragment',\n });\n return false;\n }\n const canonicalValue = url.pathname === '/' ? url.origin : url.href;\n if (value !== canonicalValue) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Issuer URL must be in the canonical form',\n });\n return false;\n }\n return true;\n});\n//# sourceMappingURL=oauth-issuer-identifier.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthAuthorizationServerMetadataValidator = exports.oauthAuthorizationServerMetadataSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_code_challenge_method_js_1 = require(\"./oauth-code-challenge-method.js\");\nconst oauth_issuer_identifier_js_1 = require(\"./oauth-issuer-identifier.js\");\nconst oauth_prompt_mode_js_1 = require(\"./oauth-prompt-mode.js\");\nconst uri_js_1 = require(\"./uri.js\");\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8414}\n * @note we do not enforce https: scheme in URIs to support development\n * environments. Make sure to validate the URIs before using it in a production\n * environment.\n */\nexports.oauthAuthorizationServerMetadataSchema = zod_1.z.object({\n issuer: oauth_issuer_identifier_js_1.oauthIssuerIdentifierSchema,\n claims_supported: zod_1.z.array(zod_1.z.string()).optional(),\n claims_locales_supported: zod_1.z.array(zod_1.z.string()).optional(),\n claims_parameter_supported: zod_1.z.boolean().optional(),\n request_parameter_supported: zod_1.z.boolean().optional(),\n request_uri_parameter_supported: zod_1.z.boolean().optional(),\n require_request_uri_registration: zod_1.z.boolean().optional(),\n scopes_supported: zod_1.z.array(zod_1.z.string()).optional(),\n subject_types_supported: zod_1.z.array(zod_1.z.string()).optional(),\n response_types_supported: zod_1.z.array(zod_1.z.string()).optional(),\n response_modes_supported: zod_1.z.array(zod_1.z.string()).optional(),\n grant_types_supported: zod_1.z.array(zod_1.z.string()).optional(),\n code_challenge_methods_supported: zod_1.z\n .array(oauth_code_challenge_method_js_1.oauthCodeChallengeMethodSchema)\n .min(1)\n .optional(),\n ui_locales_supported: zod_1.z.array(zod_1.z.string()).optional(),\n id_token_signing_alg_values_supported: zod_1.z.array(zod_1.z.string()).optional(),\n display_values_supported: zod_1.z.array(zod_1.z.string()).optional(),\n request_object_signing_alg_values_supported: zod_1.z.array(zod_1.z.string()).optional(),\n authorization_response_iss_parameter_supported: zod_1.z.boolean().optional(),\n authorization_details_types_supported: zod_1.z.array(zod_1.z.string()).optional(),\n request_object_encryption_alg_values_supported: zod_1.z\n .array(zod_1.z.string())\n .optional(),\n request_object_encryption_enc_values_supported: zod_1.z\n .array(zod_1.z.string())\n .optional(),\n jwks_uri: uri_js_1.webUriSchema.optional(),\n authorization_endpoint: uri_js_1.webUriSchema, // .optional(),\n token_endpoint: uri_js_1.webUriSchema, // .optional(),\n // https://www.rfc-editor.org/rfc/rfc8414.html#section-2\n token_endpoint_auth_methods_supported: zod_1.z\n .array(zod_1.z.string())\n // > If omitted, the default is \"client_secret_basic\" [...].\n .default(['client_secret_basic']),\n token_endpoint_auth_signing_alg_values_supported: zod_1.z\n .array(zod_1.z.string())\n .optional(),\n revocation_endpoint: uri_js_1.webUriSchema.optional(),\n introspection_endpoint: uri_js_1.webUriSchema.optional(),\n pushed_authorization_request_endpoint: uri_js_1.webUriSchema.optional(),\n require_pushed_authorization_requests: zod_1.z.boolean().optional(),\n userinfo_endpoint: uri_js_1.webUriSchema.optional(),\n end_session_endpoint: uri_js_1.webUriSchema.optional(),\n registration_endpoint: uri_js_1.webUriSchema.optional(),\n // https://datatracker.ietf.org/doc/html/rfc9449#section-5.1\n dpop_signing_alg_values_supported: zod_1.z.array(zod_1.z.string()).optional(),\n // https://www.rfc-editor.org/rfc/rfc9728.html#section-4\n protected_resources: zod_1.z.array(uri_js_1.webUriSchema).optional(),\n // https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-00.html\n client_id_metadata_document_supported: zod_1.z.boolean().optional(),\n // https://openid.net/specs/openid-connect-prompt-create-1_0.html#section-4.2\n prompt_values_supported: zod_1.z.array(oauth_prompt_mode_js_1.oauthPromptModeSchema).optional(),\n});\nexports.oauthAuthorizationServerMetadataValidator = exports.oauthAuthorizationServerMetadataSchema\n .superRefine((data, ctx) => {\n if (data.require_pushed_authorization_requests &&\n !data.pushed_authorization_request_endpoint) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: '\"pushed_authorization_request_endpoint\" required when \"require_pushed_authorization_requests\" is true',\n });\n }\n})\n .superRefine((data, ctx) => {\n if (data.response_types_supported) {\n if (!data.response_types_supported.includes('code')) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Response type \"code\" is required',\n });\n }\n }\n})\n .superRefine((data, ctx) => {\n if (data.token_endpoint_auth_signing_alg_values_supported?.includes('none')) {\n // https://openid.net/specs/openid-connect-discovery-1_0.html#rfc.section.3\n // > The value `none` MUST NOT be used.\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'Client authentication method \"none\" is not allowed',\n });\n }\n});\n//# sourceMappingURL=oauth-authorization-server-metadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthClientCredentialsGrantTokenRequestSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthClientCredentialsGrantTokenRequestSchema = zod_1.z.object({\n grant_type: zod_1.z.literal('client_credentials'),\n});\n//# sourceMappingURL=oauth-client-credentials-grant-token-request.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthClientCredentialsSchema = exports.oauthClientCredentialsNoneSchema = exports.oauthClientCredentialsSecretPostSchema = exports.oauthClientCredentialsJwtBearerSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst jwk_1 = require(\"@atproto/jwk\");\nconst constants_js_1 = require(\"./constants.js\");\nconst oauth_client_id_js_1 = require(\"./oauth-client-id.js\");\nexports.oauthClientCredentialsJwtBearerSchema = zod_1.z.object({\n client_id: oauth_client_id_js_1.oauthClientIdSchema,\n client_assertion_type: zod_1.z.literal(constants_js_1.CLIENT_ASSERTION_TYPE_JWT_BEARER),\n /**\n * - \"sub\" the subject MUST be the \"client_id\" of the OAuth client\n * - \"iat\" is required and MUST be less than one minute\n * - \"aud\" must containing a value that identifies the authorization server\n * - The JWT MAY contain a \"jti\" (JWT ID) claim that provides a unique identifier for the token.\n * - Note that the authorization server may reject JWTs with an \"exp\" claim value that is unreasonably far in the future.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7523#section-3}\n */\n client_assertion: jwk_1.signedJwtSchema,\n});\nexports.oauthClientCredentialsSecretPostSchema = zod_1.z.object({\n client_id: oauth_client_id_js_1.oauthClientIdSchema,\n client_secret: zod_1.z.string(),\n});\nexports.oauthClientCredentialsNoneSchema = zod_1.z.object({\n client_id: oauth_client_id_js_1.oauthClientIdSchema,\n});\n//\nexports.oauthClientCredentialsSchema = zod_1.z.union([\n exports.oauthClientCredentialsJwtBearerSchema,\n exports.oauthClientCredentialsSecretPostSchema,\n // Must be last since it is less specific\n exports.oauthClientCredentialsNoneSchema,\n]);\n//# sourceMappingURL=oauth-client-credentials.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.conventionalOAuthClientIdSchema = exports.oauthClientIdDiscoverableSchema = void 0;\nexports.isOAuthClientIdDiscoverable = isOAuthClientIdDiscoverable;\nexports.isConventionalOAuthClientId = isConventionalOAuthClientId;\nexports.assertOAuthDiscoverableClientId = assertOAuthDiscoverableClientId;\nexports.parseOAuthDiscoverableClientId = parseOAuthDiscoverableClientId;\nconst zod_1 = require(\"zod\");\nconst oauth_client_id_js_1 = require(\"./oauth-client-id.js\");\nconst uri_js_1 = require(\"./uri.js\");\nconst util_js_1 = require(\"./util.js\");\n/**\n * @see {@link https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-00.html}\n */\nexports.oauthClientIdDiscoverableSchema = zod_1.z\n .intersection(oauth_client_id_js_1.oauthClientIdSchema, uri_js_1.httpsUriSchema)\n .superRefine((value, ctx) => {\n const url = new URL(value);\n if (url.username || url.password) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'ClientID must not contain credentials',\n });\n return false;\n }\n if (url.hash) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'ClientID must not contain a fragment',\n });\n return false;\n }\n if (url.pathname === '/') {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'ClientID must contain a path component (e.g. \"/client-metadata.json\")',\n });\n return false;\n }\n if (url.pathname.endsWith('/')) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'ClientID path must not end with a trailing slash',\n });\n return false;\n }\n if ((0, util_js_1.isHostnameIP)(url.hostname)) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'ClientID hostname must not be an IP address',\n });\n return false;\n }\n // URL constructor normalizes the URL, so we extract the path manually to\n // avoid normalization, then compare it to the normalized path to ensure\n // that the URL does not contain path traversal or other unexpected characters\n if ((0, util_js_1.extractUrlPath)(value) !== url.pathname) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: `ClientID must be in canonical form (\"${url.href}\", got \"${value}\")`,\n });\n return false;\n }\n return true;\n});\nfunction isOAuthClientIdDiscoverable(clientId) {\n return exports.oauthClientIdDiscoverableSchema.safeParse(clientId).success;\n}\nexports.conventionalOAuthClientIdSchema = exports.oauthClientIdDiscoverableSchema.superRefine((value, ctx) => {\n const url = new URL(value);\n if (url.port) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'ClientID must not contain a port',\n });\n return false;\n }\n if (url.search) {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'ClientID must not contain a query string',\n });\n return false;\n }\n if (url.pathname !== '/oauth-client-metadata.json') {\n ctx.addIssue({\n code: zod_1.z.ZodIssueCode.custom,\n message: 'ClientID must be \"/oauth-client-metadata.json\"',\n });\n return false;\n }\n return true;\n});\nfunction isConventionalOAuthClientId(clientId) {\n return exports.conventionalOAuthClientIdSchema.safeParse(clientId).success;\n}\nfunction assertOAuthDiscoverableClientId(value) {\n void exports.oauthClientIdDiscoverableSchema.parse(value);\n}\nfunction parseOAuthDiscoverableClientId(clientId) {\n return new URL(exports.oauthClientIdDiscoverableSchema.parse(clientId));\n}\n//# sourceMappingURL=oauth-client-id-discoverable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthEndpointAuthMethod = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthEndpointAuthMethod = zod_1.z.enum([\n 'client_secret_basic',\n 'client_secret_jwt',\n 'client_secret_post',\n 'none',\n 'private_key_jwt',\n 'self_signed_tls_client_auth',\n 'tls_client_auth',\n]);\n//# sourceMappingURL=oauth-endpoint-auth-method.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthGrantTypeSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthGrantTypeSchema = zod_1.z.enum([\n 'authorization_code',\n 'implicit',\n 'refresh_token',\n 'password', // Not part of OAuth 2.1\n 'client_credentials',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer',\n]);\n//# sourceMappingURL=oauth-grant-type.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthClientMetadataSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst jwk_1 = require(\"@atproto/jwk\");\nconst oauth_client_id_js_1 = require(\"./oauth-client-id.js\");\nconst oauth_endpoint_auth_method_js_1 = require(\"./oauth-endpoint-auth-method.js\");\nconst oauth_grant_type_js_1 = require(\"./oauth-grant-type.js\");\nconst oauth_redirect_uri_js_1 = require(\"./oauth-redirect-uri.js\");\nconst oauth_response_type_js_1 = require(\"./oauth-response-type.js\");\nconst oauth_scope_js_1 = require(\"./oauth-scope.js\");\nconst uri_js_1 = require(\"./uri.js\");\n/**\n * @see {@link https://openid.net/specs/openid-connect-registration-1_0.html}\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7591}\n * @note we do not enforce https: scheme in URIs to support development\n * environments. Make sure to validate the URIs before using it in a production\n * environment.\n */\nexports.oauthClientMetadataSchema = zod_1.z.object({\n /**\n * @note redirect_uris require additional validation\n */\n // https://www.rfc-editor.org/rfc/rfc7591.html#section-2\n redirect_uris: zod_1.z.array(oauth_redirect_uri_js_1.oauthRedirectUriSchema).nonempty(),\n response_types: zod_1.z\n .array(oauth_response_type_js_1.oauthResponseTypeSchema)\n .nonempty()\n // > If omitted, the default is that the client will use only the \"code\"\n // > response type.\n .default(['code']),\n grant_types: zod_1.z\n .array(oauth_grant_type_js_1.oauthGrantTypeSchema)\n .nonempty()\n // > If omitted, the default behavior is that the client will use only the\n // > \"authorization_code\" Grant Type.\n .default(['authorization_code']),\n scope: oauth_scope_js_1.oauthScopeSchema.optional(),\n // https://www.rfc-editor.org/rfc/rfc7591.html#section-2\n token_endpoint_auth_method: oauth_endpoint_auth_method_js_1.oauthEndpointAuthMethod\n // > If unspecified or omitted, the default is \"client_secret_basic\" [...].\n .default('client_secret_basic'),\n token_endpoint_auth_signing_alg: zod_1.z.string().optional(),\n userinfo_signed_response_alg: zod_1.z.string().optional(),\n userinfo_encrypted_response_alg: zod_1.z.string().optional(),\n jwks_uri: uri_js_1.webUriSchema.optional(),\n jwks: jwk_1.jwksPubSchema.optional(),\n application_type: zod_1.z.enum(['web', 'native']).default('web'), // default, per spec, is \"web\"\n subject_type: zod_1.z.enum(['public', 'pairwise']).default('public'),\n request_object_signing_alg: zod_1.z.string().optional(),\n id_token_signed_response_alg: zod_1.z.string().optional(),\n authorization_signed_response_alg: zod_1.z.string().default('RS256'),\n authorization_encrypted_response_enc: zod_1.z.enum(['A128CBC-HS256']).optional(),\n authorization_encrypted_response_alg: zod_1.z.string().optional(),\n client_id: oauth_client_id_js_1.oauthClientIdSchema.optional(),\n client_name: zod_1.z.string().optional(),\n client_uri: uri_js_1.webUriSchema.optional(),\n policy_uri: uri_js_1.webUriSchema.optional(),\n tos_uri: uri_js_1.webUriSchema.optional(),\n logo_uri: uri_js_1.webUriSchema.optional(), // @TODO: allow data: uri ?\n /**\n * Default Maximum Authentication Age. Specifies that the End-User MUST be\n * actively authenticated if the End-User was authenticated longer ago than\n * the specified number of seconds. The max_age request parameter overrides\n * this default value. If omitted, no default Maximum Authentication Age is\n * specified.\n */\n default_max_age: zod_1.z.number().optional(),\n require_auth_time: zod_1.z.boolean().optional(),\n contacts: zod_1.z.array(zod_1.z.string().email()).optional(),\n tls_client_certificate_bound_access_tokens: zod_1.z.boolean().optional(),\n // https://datatracker.ietf.org/doc/html/rfc9449#section-5.2\n dpop_bound_access_tokens: zod_1.z.boolean().optional(),\n // https://datatracker.ietf.org/doc/html/rfc9396#section-14.5\n authorization_details_types: zod_1.z.array(zod_1.z.string()).optional(),\n});\n//# sourceMappingURL=oauth-client-metadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OAUTH_ENDPOINT_NAMES = void 0;\nexports.OAUTH_ENDPOINT_NAMES = [\n 'token',\n 'revocation',\n 'introspection',\n 'pushed_authorization_request',\n];\n//# sourceMappingURL=oauth-endpoint-name.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=oauth-introspection-response.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthParResponseSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthParResponseSchema = zod_1.z.object({\n request_uri: zod_1.z.string(),\n expires_in: zod_1.z.number().int().positive(),\n});\n//# sourceMappingURL=oauth-par-response.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthPasswordGrantTokenRequestSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthPasswordGrantTokenRequestSchema = zod_1.z.object({\n grant_type: zod_1.z.literal('password'),\n username: zod_1.z.string(),\n password: zod_1.z.string(),\n});\n//# sourceMappingURL=oauth-password-grant-token-request.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthProtectedResourceMetadataSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_issuer_identifier_js_1 = require(\"./oauth-issuer-identifier.js\");\nconst uri_js_1 = require(\"./uri.js\");\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc9728.html#section-3.2}\n */\nexports.oauthProtectedResourceMetadataSchema = zod_1.z.object({\n /**\n * REQUIRED. The protected resource's resource identifier, which is a URL that\n * uses the https scheme and has no query or fragment components. Using these\n * well-known resources is described in Section 3.\n *\n * @note This schema allows non https URLs for testing & development purposes.\n * Make sure to validate the URL before using it in a production environment.\n */\n resource: uri_js_1.webUriSchema\n .refine((url) => !url.includes('?'), {\n message: 'Resource URL must not contain query parameters',\n })\n .refine((url) => !url.includes('#'), {\n message: 'Resource URL must not contain a fragment',\n }),\n /**\n * OPTIONAL. JSON array containing a list of OAuth authorization server issuer\n * identifiers, as defined in [RFC8414], for authorization servers that can be\n * used with this protected resource. Protected resources MAY choose not to\n * advertise some supported authorization servers even when this parameter is\n * used. In some use cases, the set of authorization servers will not be\n * enumerable, in which case this metadata parameter would not be used.\n */\n authorization_servers: zod_1.z.array(oauth_issuer_identifier_js_1.oauthIssuerIdentifierSchema).optional(),\n /**\n * OPTIONAL. URL of the protected resource's JWK Set [JWK] document. This\n * contains public keys belonging to the protected resource, such as signing\n * key(s) that the resource server uses to sign resource responses. This URL\n * MUST use the https scheme. When both signing and encryption keys are made\n * available, a use (public key use) parameter value is REQUIRED for all keys\n * in the referenced JWK Set to indicate each key's intended usage.\n */\n jwks_uri: uri_js_1.webUriSchema.optional(),\n /**\n * RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope\n * values that are used in authorization requests to request access to this\n * protected resource. Protected resources MAY choose not to advertise some\n * scope values supported even when this parameter is used.\n */\n scopes_supported: zod_1.z.array(zod_1.z.string()).optional(),\n /**\n * OPTIONAL. JSON array containing a list of the supported methods of sending\n * an OAuth 2.0 Bearer Token [RFC6750] to the protected resource. Defined\n * values are [\"header\", \"body\", \"query\"], corresponding to Sections 2.1, 2.2,\n * and 2.3 of RFC 6750.\n */\n bearer_methods_supported: zod_1.z\n .array(zod_1.z.enum(['header', 'body', 'query']))\n .optional(),\n /**\n * OPTIONAL. JSON array containing a list of the JWS [JWS] signing algorithms\n * (alg values) [JWA] supported by the protected resource for signing resource\n * responses, for instance, as described in [FAPI.MessageSigning]. No default\n * algorithms are implied if this entry is omitted. The value none MUST NOT be\n * used.\n */\n resource_signing_alg_values_supported: zod_1.z.array(zod_1.z.string()).optional(),\n /**\n * OPTIONAL. URL of a page containing human-readable information that\n * developers might want or need to know when using the protected resource\n */\n resource_documentation: uri_js_1.webUriSchema.optional(),\n /**\n * OPTIONAL. URL that the protected resource provides to read about the\n * protected resource's requirements on how the client can use the data\n * provided by the protected resource\n */\n resource_policy_uri: uri_js_1.webUriSchema.optional(),\n /**\n * OPTIONAL. URL that the protected resource provides to read about the\n * protected resource's terms of service\n */\n resource_tos_uri: uri_js_1.webUriSchema.optional(),\n});\n//# sourceMappingURL=oauth-protected-resource-metadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthRefreshTokenSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oauthRefreshTokenSchema = zod_1.z.string().min(1);\n//# sourceMappingURL=oauth-refresh-token.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthRefreshTokenGrantTokenRequestSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_refresh_token_js_1 = require(\"./oauth-refresh-token.js\");\nexports.oauthRefreshTokenGrantTokenRequestSchema = zod_1.z.object({\n grant_type: zod_1.z.literal('refresh_token'),\n refresh_token: oauth_refresh_token_js_1.oauthRefreshTokenSchema,\n});\n//# sourceMappingURL=oauth-refresh-token-grant-token-request.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthTokenIdentificationSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_access_token_js_1 = require(\"./oauth-access-token.js\");\nconst oauth_refresh_token_js_1 = require(\"./oauth-refresh-token.js\");\nexports.oauthTokenIdentificationSchema = zod_1.z.object({\n token: zod_1.z.union([oauth_access_token_js_1.oauthAccessTokenSchema, oauth_refresh_token_js_1.oauthRefreshTokenSchema]),\n token_type_hint: zod_1.z.enum(['access_token', 'refresh_token']).optional(),\n});\n//# sourceMappingURL=oauth-token-identification.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauthTokenRequestSchema = void 0;\nconst zod_1 = require(\"zod\");\nconst oauth_authorization_code_grant_token_request_js_1 = require(\"./oauth-authorization-code-grant-token-request.js\");\nconst oauth_client_credentials_grant_token_request_js_1 = require(\"./oauth-client-credentials-grant-token-request.js\");\nconst oauth_password_grant_token_request_js_1 = require(\"./oauth-password-grant-token-request.js\");\nconst oauth_refresh_token_grant_token_request_js_1 = require(\"./oauth-refresh-token-grant-token-request.js\");\nexports.oauthTokenRequestSchema = zod_1.z.discriminatedUnion('grant_type', [\n oauth_authorization_code_grant_token_request_js_1.oauthAuthorizationCodeGrantTokenRequestSchema,\n oauth_refresh_token_grant_token_request_js_1.oauthRefreshTokenGrantTokenRequestSchema,\n oauth_password_grant_token_request_js_1.oauthPasswordGrantTokenRequestSchema,\n oauth_client_credentials_grant_token_request_js_1.oauthClientCredentialsGrantTokenRequestSchema,\n]);\n//# sourceMappingURL=oauth-token-request.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oidcAuthorizationResponseErrorSchema = void 0;\nconst zod_1 = require(\"zod\");\n/**\n * @see {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthError}\n */\nexports.oidcAuthorizationResponseErrorSchema = zod_1.z.enum([\n // The Authorization Server requires End-User interaction of some form to proceed. This error MAY be returned when the prompt parameter value in the Authentication Request is none, but the Authentication Request cannot be completed without displaying a user interface for End-User interaction.\n 'interaction_required',\n // The Authorization Server requires End-User authentication. This error MAY be returned when the prompt parameter value in the Authentication Request is none, but the Authentication Request cannot be completed without displaying a user interface for End-User authentication.\n 'login_required',\n // The End-User is REQUIRED to select a session at the Authorization Server. The End-User MAY be authenticated at the Authorization Server with different associated accounts, but the End-User did not select a session. This error MAY be returned when the prompt parameter value in the Authentication Request is none, but the Authentication Request cannot be completed without displaying a user interface to prompt for a session to use.\n 'account_selection_required',\n // The Authorization Server requires End-User consent. This error MAY be returned when the prompt parameter value in the Authentication Request is none, but the Authentication Request cannot be completed without displaying a user interface for End-User consent.\n 'consent_required',\n // The request_uri in the Authorization Request returns an error or contains invalid data.\n 'invalid_request_uri',\n // The request parameter contains an invalid Request Object.\n 'invalid_request_object',\n // The OP does not support use of the request parameter defined in Section 6.\n 'request_not_supported',\n // The OP does not support use of the request_uri parameter defined in Section 6.\n 'request_uri_not_supported',\n // The OP does not support use of the registration parameter defined in Section 7.2.1.\n 'registration_not_supported',\n]);\n//# sourceMappingURL=oidc-authorization-error-response.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oidcUserinfoSchema = void 0;\nconst zod_1 = require(\"zod\");\nexports.oidcUserinfoSchema = zod_1.z.object({\n sub: zod_1.z.string(),\n iss: zod_1.z.string().url().optional(),\n aud: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string()).min(1)]).optional(),\n email: zod_1.z.string().email().optional(),\n email_verified: zod_1.z.boolean().optional(),\n name: zod_1.z.string().optional(),\n preferred_username: zod_1.z.string().optional(),\n picture: zod_1.z.string().url().optional(),\n});\n//# sourceMappingURL=oidc-userinfo.js.map","\"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 });\n__exportStar(require(\"./constants.js\"), exports);\n__exportStar(require(\"./uri.js\"), exports);\n__exportStar(require(\"./util.js\"), exports);\n__exportStar(require(\"./atproto-loopback-client-id.js\"), exports);\n__exportStar(require(\"./atproto-loopback-client-metadata.js\"), exports);\n__exportStar(require(\"./atproto-loopback-client-redirect-uris.js\"), exports);\n__exportStar(require(\"./atproto-oauth-scope.js\"), exports);\n__exportStar(require(\"./atproto-oauth-token-response.js\"), exports);\n__exportStar(require(\"./oauth-access-token.js\"), exports);\n__exportStar(require(\"./oauth-authorization-code-grant-token-request.js\"), exports);\n__exportStar(require(\"./oauth-authorization-details.js\"), exports);\n__exportStar(require(\"./oauth-authorization-request-jar.js\"), exports);\n__exportStar(require(\"./oauth-authorization-request-par.js\"), exports);\n__exportStar(require(\"./oauth-authorization-request-parameters.js\"), exports);\n__exportStar(require(\"./oauth-authorization-request-query.js\"), exports);\n__exportStar(require(\"./oauth-authorization-request-uri.js\"), exports);\n__exportStar(require(\"./oauth-authorization-response-error.js\"), exports);\n__exportStar(require(\"./oauth-authorization-server-metadata.js\"), exports);\n__exportStar(require(\"./oauth-client-credentials-grant-token-request.js\"), exports);\n__exportStar(require(\"./oauth-client-credentials.js\"), exports);\n__exportStar(require(\"./oauth-client-id-discoverable.js\"), exports);\n__exportStar(require(\"./oauth-client-id-loopback.js\"), exports);\n__exportStar(require(\"./oauth-client-id.js\"), exports);\n__exportStar(require(\"./oauth-client-metadata.js\"), exports);\n__exportStar(require(\"./oauth-endpoint-auth-method.js\"), exports);\n__exportStar(require(\"./oauth-endpoint-name.js\"), exports);\n__exportStar(require(\"./oauth-grant-type.js\"), exports);\n__exportStar(require(\"./oauth-introspection-response.js\"), exports);\n__exportStar(require(\"./oauth-issuer-identifier.js\"), exports);\n__exportStar(require(\"./oauth-par-response.js\"), exports);\n__exportStar(require(\"./oauth-password-grant-token-request.js\"), exports);\n__exportStar(require(\"./oauth-prompt-mode.js\"), exports);\n__exportStar(require(\"./oauth-protected-resource-metadata.js\"), exports);\n__exportStar(require(\"./oauth-redirect-uri.js\"), exports);\n__exportStar(require(\"./oauth-refresh-token-grant-token-request.js\"), exports);\n__exportStar(require(\"./oauth-refresh-token.js\"), exports);\n__exportStar(require(\"./oauth-request-uri.js\"), exports);\n__exportStar(require(\"./oauth-response-mode.js\"), exports);\n__exportStar(require(\"./oauth-response-type.js\"), exports);\n__exportStar(require(\"./oauth-scope.js\"), exports);\n__exportStar(require(\"./oauth-token-identification.js\"), exports);\n__exportStar(require(\"./oauth-token-request.js\"), exports);\n__exportStar(require(\"./oauth-token-response.js\"), exports);\n__exportStar(require(\"./oauth-token-type.js\"), exports);\n__exportStar(require(\"./oidc-authorization-error-response.js\"), exports);\n__exportStar(require(\"./oidc-claims-parameter.js\"), exports);\n__exportStar(require(\"./oidc-claims-properties.js\"), exports);\n__exportStar(require(\"./oidc-entity-type.js\"), exports);\n__exportStar(require(\"./oidc-userinfo.js\"), exports);\n//# sourceMappingURL=index.js.map","import { useLingui } from '@lingui/react/macro'\nimport {\n isConventionalOAuthClientId,\n isOAuthClientIdLoopback,\n} from '@atproto/oauth-types'\n\nexport function useOAuthClientIdentifier({\n clientId,\n}: {\n clientId: string\n}): string {\n const { t } = useLingui()\n\n if (isOAuthClientIdLoopback(clientId)) {\n return t`loopback`\n }\n\n if (isConventionalOAuthClientId(clientId)) {\n return new URL(clientId).hostname\n }\n\n // Should never happen\n return clientId\n}\n","import { useLingui } from '@lingui/react/macro'\nimport {\n type OAuthClientMetadata,\n isConventionalOAuthClientId,\n isOAuthClientIdLoopback,\n} from '@atproto/oauth-types'\n\nexport function useOauthClientName({\n clientId,\n clientMetadata,\n}: {\n clientId: string\n clientMetadata?: OAuthClientMetadata\n}): string {\n const { t } = useLingui()\n\n if (isOAuthClientIdLoopback(clientId)) {\n return t`A local app`\n }\n\n if (clientMetadata?.client_name) {\n return clientMetadata.client_name\n }\n\n if (isConventionalOAuthClientId(clientId)) {\n return new URL(clientId).hostname\n }\n\n // Should never happen\n return clientId\n}\n","import { Trans, useLingui } from '@lingui/react/macro'\nimport type { ActiveOAuthSession } from '@atproto/oauth-provider-api'\nimport { Button } from '#/components/forms/button'\nimport { Action, Admonition } from '#/components/utils/admonition.tsx'\nimport { CircularProgress } from '#/components/utils/circular-progress'\nimport { DateAgo } from '#/components/utils/date-ago'\nimport { useAuthenticatedSession } from '#/contexts/authentication.tsx'\nimport { useNotificationsContext } from '#/contexts/notifications.tsx'\nimport {\n useOAuthSessionsQuery,\n useRevokeOAuthSessionMutation,\n} from '#/data/oauth-sessions.ts'\nimport { useOAuthClientIdentifier } from '#/hooks/use-oauth-client-identifier.ts'\nimport { useOauthClientName } from '#/hooks/use-oauth-client-name.ts'\n\nexport function Page() {\n const { account } = useAuthenticatedSession()\n const { sub } = account\n const { data, isLoading, refetch } = useOAuthSessionsQuery({ sub })\n\n if (!data) {\n if (isLoading) {\n return <CircularProgress className=\"text-primary\" size={28} />\n }\n\n return (\n <Admonition\n role=\"status\"\n action={\n <Action onClick={() => refetch()}>\n <Trans>Retry</Trans>\n </Action>\n }\n >\n <Trans>Failed to load connected apps</Trans>\n </Admonition>\n )\n }\n\n return data.length > 0 ? (\n <div className=\"space-y-2\">\n <p>\n <Trans>\n These apps have access to your account. An app may appear multiple\n times if you use it on different devices. You can revoke access to log\n out the app until you sign in again.\n </Trans>\n </p>\n\n {data.map((session) => (\n <ApplicationSessionCard\n key={session.tokenId}\n sub={sub}\n session={session}\n />\n ))}\n\n <p className=\"text-text-light mt-4 text-sm\">\n <Trans>\n Apps may access your account in the background (to check\n notifications, sync data, etc.) even when you're not actively using\n them. This is normal behavior and will update the \"last accessed\" time\n shown above.\n </Trans>\n </p>\n </div>\n ) : (\n <p>\n <Trans>\n It appears that you haven’t used this account to sign in to any apps\n yet.\n </Trans>\n </p>\n )\n}\n\nfunction ApplicationSessionCard({\n session: {\n clientId,\n clientMetadata,\n tokenId,\n createdAt,\n updatedAt,\n scope = clientMetadata?.scope,\n },\n sub,\n}: {\n session: ActiveOAuthSession\n sub: string\n}) {\n const { t, i18n } = useLingui()\n const { notify } = useNotificationsContext()\n const { mutateAsync: revokeSessions, isPending } =\n useRevokeOAuthSessionMutation()\n\n const friendlyClientId = useOAuthClientIdentifier({\n clientId,\n })\n const clientName = useOauthClientName({\n clientId,\n clientMetadata,\n })\n\n const revoke = async () => {\n try {\n await revokeSessions({ sub, tokenId })\n notify({\n variant: 'success',\n title: t`Successfully revoked access`,\n duration: 2e3,\n })\n } catch (err) {\n console.error('Failed to revoke OAuth session', err)\n notify({\n variant: 'error',\n title: t`Failed to revoke access`,\n duration: 2e3,\n })\n }\n }\n\n // @TODO Display scopes using <ScopeDescription />\n scope\n\n return (\n <div className=\"border-contrast-50 dark:border-contrast-100 flex flex-wrap items-center justify-between space-x-4 border-t px-2 pt-3\">\n <div className=\"flex min-w-36 flex-1 flex-col space-x-2 truncate\">\n <p className=\"truncate font-semibold\">{clientName}</p>\n <p className=\"font-mono text-xs\">{friendlyClientId}</p>\n <p className=\"text-text-light truncate text-xs\">\n <Trans context=\"OAuthApp\">\n Authorized on{' '}\n {i18n.date(createdAt, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n })}\n </Trans>\n {' • '}\n <Trans context=\"OAuthApp\">\n Last accessed <DateAgo date={updatedAt} />\n </Trans>\n </p>\n </div>\n <Button\n size=\"sm\"\n className=\"min-w-max shrink-0 grow-0\"\n loading={isPending}\n onClick={revoke}\n >\n <Trans context=\"OAuthApp\">Revoke access</Trans>\n </Button>\n </div>\n )\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport type {\n AccountSessionsInput,\n ActiveAccountSession,\n RevokeAccountSessionInput,\n} from '@atproto/oauth-provider-api'\nimport { useApi } from '#/contexts/session'\n\nexport const accountSessionsQueryKey = ({ sub }: AccountSessionsInput) =>\n ['account-sessions', sub] as const\n\nexport function useAccountSessionsQuery({ sub }: AccountSessionsInput) {\n const api = useApi()\n\n return useQuery<ActiveAccountSession[]>({\n refetchOnWindowFocus: 'always',\n staleTime: 15e3, // 15s\n queryKey: accountSessionsQueryKey({ sub }),\n queryFn: async ({ signal }) => {\n return api.fetch('GET', '/account-sessions', { sub }, { signal })\n },\n })\n}\n\nexport function useRevokeAccountSessionMutation() {\n const api = useApi()\n const qc = useQueryClient()\n\n return useMutation({\n async mutationFn({ sub, deviceId }: RevokeAccountSessionInput) {\n return api.fetch('POST', '/revoke-account-session', { sub, deviceId })\n },\n onSuccess(_, { sub }) {\n qc.invalidateQueries({ queryKey: accountSessionsQueryKey({ sub }) })\n },\n })\n}\n","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.3\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.3',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n\n // typeof\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n\n // properties\n UA_BROWSER = 'browser',\n UA_CPU = 'cpu',\n UA_DEVICE = 'device',\n UA_ENGINE = 'engine',\n UA_OS = 'os',\n UA_RESULT = 'result',\n \n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH_HEADER = 'sec-ch-ua',\n CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n CH_HEADER_ARCH = CH_HEADER + '-arch',\n CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS,\n CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE,\n CH_HEADER_MODEL = CH_HEADER + '-' + MODEL,\n CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM,\n CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== UNDEF_TYPE,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n if (typeof str1 === OBJ_TYPE && str1.length > 0) {\n for (var i in str1) {\n if (lowerize(str1[i]) == lowerize(str2)) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === STR_TYPE;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n var propName = arr[i];\n if (typeof propName == OBJ_TYPE && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n if (isString(str)) {\n str = strip(/^\\s\\s*/, str);\n return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n if(!ua || !arrays) return;\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115|surf)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115/Surf\n /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i // Ecosia/Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i // LieBao Browser/Rekonq\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((ppc|powerpc)(64)?)( mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n / sun4\\w[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // BLU Vivo Series\n /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [ \n // Vivo\n /; vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*))/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(?:015|06[35]|142p?))/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix) (x1101b?)/i // Infinix XPad\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n /; (blu|hmd|imo|tcl)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i, // BLU/HMD/IMO/TCL\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i, // Lenovo\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia Tablets\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /tcast.+(lg)e?. ([-\\w]+)/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /(portaltv)/i // Facebook Portal TV\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mi(tv|box)-?\\w+) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n // SmartTV from Unidentified Vendors\n /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /(quest( \\d| pro)?s?).+vr/i // Meta Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /droid .+?; ([\\w\\. -]+)( bui|\\))/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome OS\"], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [UA_BROWSER, [VERSION, MAJOR]],\n [UA_ENGINE, [VERSION]],\n [UA_OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [UA_BROWSER, / ?browser$/i],\n [UA_OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [UA_BROWSER, [NAME, VERSION]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [VENDOR, MODEL]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != UA_RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != UNDEF_TYPE) break;\n } else if (strToCheck == UNDEF_TYPE && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || UNDEF_TYPE;\n };\n }\n\n if (!NAVIGATOR_UADATA) {\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n }\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH_HEADER])],\n [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n\n this.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n this.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n this.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n this.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case UA_BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n this.set(NAME, 'Brave');\n }\n break;\n case UA_DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case UA_OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case UA_RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(UA_BROWSER, detect(UA_BROWSER))\n .set(UA_CPU, detect(UA_CPU))\n .set(UA_DEVICE, detect(UA_DEVICE))\n .set(UA_ENGINE, detect(UA_ENGINE))\n .set(UA_OS, detect(UA_OS));\n }\n }\n return this;\n };\n\n this.parseUA = function () {\n if (this.itemType != UA_RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n if (this.itemType == UA_BROWSER) {\n this.set(MAJOR, majorize(this.get(VERSION)));\n }\n return this;\n };\n\n this.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n \n switch (this.itemType) {\n case UA_BROWSER:\n case UA_ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i in brands) {\n var brandName = brands[i].brand || brands[i],\n brandVersion = brands[i].version;\n if (this.itemType == UA_BROWSER && !/not.a.brand/i.test(brandName) && (!prevName || (/chrom/i.test(prevName) && brandName != CHROMIUM))) {\n brandName = strMapper(brandName, {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Chrome WebView' : 'Android WebView',\n 'Chrome Headless' : 'HeadlessChrome',\n 'Huawei Browser' : 'HuaweiBrowser',\n 'MIUI Browser' : 'Miui Browser',\n 'Opera Mobi' : 'OperaMobile',\n 'Yandex' : 'YaBrowser'\n });\n this.set(NAME, brandName)\n .set(VERSION, brandVersion)\n .set(MAJOR, majorize(brandVersion));\n prevName = brandName;\n }\n if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n this.set(VERSION, brandVersion);\n }\n }\n }\n break;\n case UA_CPU:\n var archName = uaCH[ARCHITECTURE];\n if (archName) {\n if (archName && uaCH[BITNESS] == '64') archName += '64';\n rgxMapper.call(this.data, archName + ';', rgxMap);\n }\n break;\n case UA_DEVICE:\n if (uaCH[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n if (uaCH[MODEL]) {\n this.set(MODEL, uaCH[MODEL]);\n if (!this.get(TYPE) || !this.get(VENDOR)) {\n var reParse = {};\n rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n if (!this.get(TYPE) && !!reParse.type) {\n this.set(TYPE, reParse.type);\n }\n if (!this.get(VENDOR) && !!reParse.vendor) {\n this.set(VENDOR, reParse.vendor);\n }\n }\n }\n if (uaCH[FORMFACTORS]) {\n var ff;\n if (typeof uaCH[FORMFACTORS] !== 'string') {\n var idx = 0;\n while (!ff && idx < uaCH[FORMFACTORS].length) {\n ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n }\n } else {\n ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n }\n this.set(TYPE, ff);\n }\n break;\n case UA_OS:\n var osName = uaCH[PLATFORM];\n if(osName) {\n var osVersion = uaCH[PLATFORMVER];\n if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case UA_RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(UA_BROWSER, parse(UA_BROWSER))\n .set(UA_CPU, parse(UA_CPU))\n .set(UA_DEVICE, parse(UA_DEVICE))\n .set(UA_ENGINE, parse(UA_ENGINE))\n .set(UA_OS, parse(UA_OS));\n }\n return this;\n };\n\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n\n return this;\n }\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === OBJ_TYPE) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === OBJ_TYPE) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n // Convert Headers object into a plain object\n if (headers && typeof headers.append === FUNC_TYPE) {\n var kv = {};\n headers.forEach(function (v, k) { kv[k] = v; });\n headers = kv;\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == UA_RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(UA_BROWSER, this.getBrowser())\n .set(UA_CPU, this.getCPU())\n .set(UA_DEVICE, this.getDevice())\n .set(UA_ENGINE, this.getEngine())\n .set(UA_OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(UA_BROWSER)],\n ['getCPU', createItemFunc(UA_CPU)],\n ['getDevice', createItemFunc(UA_DEVICE)],\n ['getEngine', createItemFunc(UA_ENGINE)],\n ['getOS', createItemFunc(UA_OS)],\n ['getResult', createItemFunc(UA_RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua))\n userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n export {UAParser};","import { useMemo } from 'react'\nimport { UAParser } from 'ua-parser-js'\n\nexport function useBrowserName(userAgent?: string): string | undefined {\n const ua = useMemo(\n () => (userAgent ? UAParser(userAgent) : null),\n [userAgent],\n )\n\n return ua\n ? ua.device.is('mobile')\n ? [ua.os.name].filter(Boolean).join(' • ')\n : [ua.os.name, ua.browser.name].filter(Boolean).join(' • ')\n : undefined\n}\n","import { Trans, useLingui } from '@lingui/react/macro'\nimport { Link } from '@tanstack/react-router'\nimport type { ActiveAccountSession } from '@atproto/oauth-provider-api'\nimport { Button } from '#/components/forms/button'\nimport { Action, Admonition } from '#/components/utils/admonition.tsx'\nimport { CircularProgress } from '#/components/utils/circular-progress'\nimport { useAuthenticatedSession } from '#/contexts/authentication.tsx'\nimport { useNotificationsContext } from '#/contexts/notifications.tsx'\nimport {\n useAccountSessionsQuery,\n useRevokeAccountSessionMutation,\n} from '#/data/account-sessions.ts'\nimport { useBrowserName } from '#/hooks/use-browser-name'\nimport { useDateAgo } from '#/hooks/use-date-ago'\n\nexport function Page() {\n const { account } = useAuthenticatedSession()\n const { data, refetch, isLoading } = useAccountSessionsQuery(account)\n\n if (!data) {\n if (isLoading) {\n return <CircularProgress className=\"text-primary\" size={28} />\n }\n\n return (\n <Admonition\n role=\"status\"\n action={\n <Action onClick={() => refetch()}>\n <Trans>Retry</Trans>\n </Action>\n }\n >\n <Trans>Failed to load connected apps</Trans>\n </Admonition>\n )\n }\n\n return data.length > 0 ? (\n <div className=\"space-y-2\">\n <p>\n <Trans>\n Your account is signed in on the devices listed below. If your account\n was compromised, sign out all devices, change your password, and check\n your connected{' '}\n <Link to=\"/account/apps\" className=\"text-blue-600 hover:underline\">\n apps\n </Link>\n .\n </Trans>\n </p>\n\n {data.map((session) => (\n <AccountSessionCard\n key={`${account.sub}@${session.deviceId}`}\n sub={account.sub}\n session={session}\n />\n ))}\n </div>\n ) : (\n <p>\n <Trans>Looks like you aren't logged in on any other devices.</Trans>\n </p>\n )\n}\n\nfunction AccountSessionCard({\n session,\n sub,\n}: {\n session: ActiveAccountSession\n sub: string\n}) {\n const { notify } = useNotificationsContext()\n const { t } = useLingui()\n const { mutateAsync, isPending } = useRevokeAccountSessionMutation()\n\n const { userAgent, lastSeenAt, ipAddress } = session.deviceMetadata\n const browserName = useBrowserName(userAgent || undefined)\n const lastUsedAgo = useDateAgo(lastSeenAt)\n\n const remove = async () => {\n try {\n await mutateAsync({ sub, deviceId: session.deviceId })\n notify({\n variant: 'success',\n title: t`Successfully removed device`,\n duration: 2e3,\n })\n } catch (e) {\n notify({\n variant: 'error',\n title: t`Failed to remove device`,\n duration: 2e3,\n })\n }\n }\n\n return (\n <div className=\"border-contrast-50 dark:border-contrast-100 flex flex-wrap items-center justify-between space-x-4 border-t px-2 pt-3\">\n <div className=\"flex min-w-36 flex-1 flex-col space-x-2 truncate\">\n <p className=\"truncate font-semibold\">\n {browserName || (\n <Trans context=\"device list\">Unknown user agent</Trans>\n )}\n </p>\n <p className=\"font-mono text-xs\">{ipAddress}</p>\n <p className=\"text-text-light truncate text-xs\">\n <Trans context=\"device list\">Last seen {lastUsedAgo}</Trans>\n </p>\n </div>\n <Button\n size=\"sm\"\n className=\"min-w-max shrink-0 grow-0\"\n disabled={session.isCurrentDevice}\n loading={isPending}\n onClick={remove}\n title={\n session.isCurrentDevice ? t`Cannot remove current device` : undefined\n }\n >\n <Trans context=\"device list\">Sign out</Trans>\n </Button>\n </div>\n )\n}\n","import { Trans } from '@lingui/react/macro'\nimport { Link } from '@tanstack/react-router'\nimport { ReactNode } from 'react'\nimport { JSX } from 'react/jsx-runtime'\nimport { CustomizationName } from '#/components/customization-name'\nimport { AccountOverview } from '#/components/utils/account-overview'\nimport { useAuthenticatedSession } from '#/contexts/authentication.tsx'\n\nexport function Page(): ReactNode {\n const { account } = useAuthenticatedSession()\n\n return (\n <div className=\"flex min-h-full flex-col items-center justify-start gap-4 py-4 md:pt-24\">\n <AccountOverview account={account} />\n <HostedByParagraph className=\"text-text-light text-center text-sm\" />\n </div>\n )\n}\n\nfunction HostedByParagraph(props: JSX.IntrinsicElements['p']): ReactNode {\n return (\n <p {...props}>\n <Trans>\n Your Atmosphere account is hosted by <CustomizationName />.\n </Trans>{' '}\n <Link\n to=\"/account/about\"\n className=\"text-sm text-blue-600 hover:underline\"\n >\n <Trans>What does this mean?</Trans>\n </Link>\n </p>\n )\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react'\n\nexport type RateLimitedActionOptions = {\n cooldownSeconds?: number\n initialCooldown?: number\n}\n\nexport function useRateLimitedAction<\n TAction extends (...args: any[]) => unknown,\n>(\n action?: TAction,\n { cooldownSeconds = 60, initialCooldown = 0 }: RateLimitedActionOptions = {},\n) {\n const [remaining, setRemaining] = useState(initialCooldown)\n const disabled = remaining > 0\n\n const trigger = useCallback(\n (...args: Parameters<TAction>): void | ReturnType<TAction> => {\n if (disabled) throw new Error('Action is on cooldown')\n setRemaining(cooldownSeconds)\n return action?.(...args) as void | ReturnType<TAction>\n },\n [action, cooldownSeconds, disabled],\n )\n\n useEffect(() => {\n if (remaining > 0) {\n const timer = setTimeout(() => {\n setRemaining(remaining - 1)\n }, 1000)\n return () => clearTimeout(timer)\n }\n }, [remaining])\n\n const clear = useCallback(() => setRemaining(0), [])\n\n return useMemo(\n () => ({ disabled, trigger, clear, remaining, total: cooldownSeconds }),\n [disabled, trigger, clear, remaining, cooldownSeconds],\n )\n}\n","import { Trans, useLingui } from '@lingui/react/macro'\nimport * as Popover from '@radix-ui/react-popover'\nimport { clsx } from 'clsx'\nimport { useState } from 'react'\nimport {\n RateLimitedActionOptions,\n useRateLimitedAction,\n} from '#/hooks/use-rate-limited-action.ts'\nimport { CircularProgress } from '../utils/circular-progress.tsx'\nimport { Button, ButtonProps } from './button.tsx'\n\nexport type ButtonCooldownProps = ButtonProps & RateLimitedActionOptions\n\nexport function ButtonCooldown({\n cooldownSeconds,\n initialCooldown,\n\n // button\n children,\n onClick,\n disabled = false,\n className,\n ...props\n}: ButtonCooldownProps) {\n const { t } = useLingui()\n const action = useRateLimitedAction(onClick, {\n cooldownSeconds,\n initialCooldown,\n })\n const [isHovered, setIsHovered] = useState(false)\n const remainingSeconds = Math.ceil(action.remaining)\n const isCoolingDown = !disabled && action.disabled\n\n return (\n <div\n className=\"inline-block\"\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n <Popover.Root open={isCoolingDown && isHovered}>\n <Popover.Trigger asChild>\n <Button\n onClick={action.trigger}\n disabled={isCoolingDown || disabled}\n className={clsx('relative pr-9', className)}\n aria-label={\n isCoolingDown\n ? t`Please wait ${remainingSeconds} seconds before trying again.`\n : undefined\n }\n aria-live={isCoolingDown ? 'polite' : undefined}\n aria-atomic=\"true\"\n {...props}\n >\n <CircularProgress\n size={16}\n value={((action.total - action.remaining) / action.total) * 100}\n startAngle={-90}\n className={clsx(\n 'absolute right-3 top-1/2 inline-block -translate-y-1/2 transform transition-opacity',\n isCoolingDown ? 'opacity-100' : 'opacity-0',\n )}\n aria-hidden=\"true\"\n />\n {children}\n </Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side=\"bottom\" align=\"center\" role=\"tooltip\">\n <div className=\"rounded border border-slate-300 bg-white px-2 py-1.5 text-xs shadow-sm dark:border-slate-600 dark:bg-slate-800\">\n <Trans>Retry in {remainingSeconds}s</Trans>\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n )\n}\n","import { useLingui } from '@lingui/react/macro'\nimport { useMutation } from '@tanstack/react-query'\nimport {\n ConfirmResetPasswordInput,\n InitiatePasswordResetInput,\n} from '@atproto/oauth-provider-api'\nimport { useNotificationsContext } from '#/contexts/notifications.tsx'\nimport { useApi } from '#/contexts/session.tsx'\nimport { Override } from '#/lib/util.ts'\nimport { useCurrentLocale } from '#/locales/locale-provider.tsx'\n\nexport function useResetPasswordRequest() {\n const api = useApi()\n const { t } = useLingui()\n const { notify } = useNotificationsContext()\n const currentLocale = useCurrentLocale()\n\n return useMutation({\n async mutationFn({\n locale = currentLocale,\n email,\n }: Override<InitiatePasswordResetInput, { locale?: string }>) {\n return api.fetch('POST', '/reset-password-request', { locale, email })\n },\n onSuccess(_data, _variables, _context) {\n notify({\n variant: 'success',\n title: t`Password reset email sent`,\n description: t`Check your inbox.`,\n })\n },\n onError(error, _variables, _context) {\n console.error('Failed to request password reset', error)\n notify({\n variant: 'error',\n title: t`Failed to request password reset`,\n description: t`Please check the email address and try again.`,\n })\n },\n })\n}\n\nexport function useResetPasswordConfirm() {\n const api = useApi()\n const { t } = useLingui()\n const { notify } = useNotificationsContext()\n\n return useMutation({\n async mutationFn({ token, password }: ConfirmResetPasswordInput) {\n return api.fetch('POST', '/reset-password-confirm', { token, password })\n },\n onSuccess(_data, _variables, _context) {\n notify({\n variant: 'success',\n title: t`Password reset successful`,\n description: t`You can now sign in with your new password.`,\n })\n },\n onError(error, _variables, _context) {\n console.error('Failed to reset password', error)\n notify({\n variant: 'error',\n title: t`Failed to reset password`,\n description: t`Please check your reset code and try again.`,\n })\n },\n })\n}\n","import { Trans } from '@lingui/react/macro'\nimport { PaperPlaneTiltIcon } from '@phosphor-icons/react'\nimport { useState } from 'react'\nimport { ButtonCooldown } from '#/components/forms/button-cooldown.tsx'\nimport { ResetPasswordConfirmForm } from '#/components/reset-password-confirm-form.tsx'\nimport { Admonition } from '#/components/utils/admonition.tsx'\nimport { useAuthenticatedSession } from '#/contexts/authentication.tsx'\nimport {\n useResetPasswordConfirm,\n useResetPasswordRequest,\n} from '#/data/password.ts'\n\nexport function Page() {\n const [success, setSuccess] = useState(false)\n const { account } = useAuthenticatedSession()\n\n const { email } = account\n if (!email) {\n return (\n <Admonition role=\"status\">\n <Trans context=\"PasswordReset\">\n No email associated with this account. Password reset is unavailable.\n </Trans>\n </Admonition>\n )\n }\n\n const resetPasswordRequest = useResetPasswordRequest()\n const resetPasswordConfirm = useResetPasswordConfirm()\n\n return (\n <div className=\"space-y-4\">\n <p>\n <Trans context=\"PasswordReset\">\n To reset your password, we'll send a verification code to{' '}\n <strong>{email}</strong>. Enter the code below to set a new password.\n </Trans>\n </p>\n\n <ButtonCooldown\n onClick={async () => {\n await resetPasswordRequest.mutateAsync({ email })\n }}\n cooldownSeconds={30}\n loading={resetPasswordRequest.isPending}\n disabled={success}\n className=\"max-w-full\"\n >\n <PaperPlaneTiltIcon aria-hidden className=\"mr-2\" weight=\"bold\" />\n <span className=\"flex-1 truncate\">\n <Trans context=\"PasswordReset\">Send reset code</Trans>\n </span>\n </ButtonCooldown>\n\n <ResetPasswordConfirmForm\n disabled={success || resetPasswordConfirm.isPending}\n onSubmit={async (data) => {\n await resetPasswordConfirm.mutateAsync(data)\n setSuccess(true)\n }}\n />\n </div>\n )\n}\n","import { MessageDescriptor } from '@lingui/core'\nimport { msg } from '@lingui/core/macro'\nimport {\n DevicesIcon,\n GlobeIcon,\n HouseSimpleIcon,\n IconProps,\n KeyIcon,\n QuestionIcon,\n} from '@phosphor-icons/react'\nimport {\n Outlet,\n RegisteredRouter,\n ToPathOption,\n createRoute,\n useRouter,\n} from '@tanstack/react-router'\nimport { FunctionComponent, ReactNode, useEffect, useMemo, useRef } from 'react'\nimport {\n LayoutPage,\n LayoutPageLink,\n} from '#/components/layouts/layout-page.tsx'\nimport { AuthenticationProvider } from '#/contexts/authentication.tsx'\nimport { useSessionContext } from '#/contexts/session.tsx'\nimport { Explicit } from '#/lib/util.ts'\nimport { RootRoute } from '../../route.tsx'\nimport { Page as AccountAboutPage } from './about/page.tsx'\nimport { Page as AccountOAuthPage } from './apps/page.tsx'\nimport { Page as AccountDevicesPage } from './devices/page.tsx'\nimport { Page as AccountIndexPage } from './page.tsx'\nimport { Page as AccountPasswordPage } from './password/page.tsx'\n\ntype SubPage = {\n title: string | MessageDescriptor\n icon?: FunctionComponent<IconProps>\n hidden?: boolean\n position?: number\n description?: string | MessageDescriptor\n component: FunctionComponent\n}\n\ntype SubPages<T extends `/${string}` = `/${string}`> = {\n [K in T]: SubPage\n}\n\nconst DEFAULT_PAGES = {\n '/': {\n icon: HouseSimpleIcon,\n position: 0,\n title: msg`Account`,\n component: AccountIndexPage,\n },\n '/devices': {\n icon: DevicesIcon,\n position: 10,\n title: msg`Devices`,\n description: msg`Manage your active sessions`,\n component: AccountDevicesPage,\n },\n '/apps': {\n icon: GlobeIcon,\n position: 20,\n title: msg`Apps`,\n description: msg`Manage applications that have access to your account`,\n component: AccountOAuthPage,\n },\n '/password': {\n icon: KeyIcon,\n position: 30,\n title: msg`Password`,\n description: msg`Change your account password`,\n component: AccountPasswordPage,\n },\n '/about': {\n icon: QuestionIcon,\n position: 50,\n title: msg`About`,\n component: AccountAboutPage,\n description: msg`What is an Atmosphere Account?`,\n },\n} satisfies SubPages\n\nexport function buildRoutes<T extends `/${string}`>(\n path: T,\n customPages?: SubPages,\n) {\n const subPages = { ...DEFAULT_PAGES, ...customPages }\n\n const route = createRoute({\n path,\n component: (props) => (\n <Page basePath={path} subPages={subPages} {...props} />\n ),\n getParentRoute: () => RootRoute,\n })\n\n const childRoutes = (\n Object.entries(subPages) as [keyof typeof subPages, SubPage][]\n ).map(([path, { component }]) => {\n return createRoute({ getParentRoute: () => route, path, component })\n })\n\n return [route, ...childRoutes] as const\n}\n\nfunction Page({\n basePath,\n subPages,\n}: {\n basePath: ToPathOption<RegisteredRouter, '/', undefined>\n subPages: SubPages\n}) {\n const links = useMemo<readonly LayoutPageLink[]>(() => {\n return Object.entries(subPages)\n .sort(([ap, a], [bp, b]) => {\n if (a.position != null && b.position != null) {\n const diff = a.position - b.position\n if (diff !== 0) return diff\n }\n return ap.localeCompare(bp)\n })\n .map(\n ([subPath, page]): Explicit<LayoutPageLink> => ({\n to: ((basePath as string) === '/'\n ? subPath\n : subPath === '/'\n ? basePath\n : `${basePath}${subPath}`) as any,\n title: page.title,\n description: page.description,\n hidden: page.hidden,\n icon: page.icon,\n }),\n )\n }, [subPages, basePath])\n\n return (\n <AuthGate signOutTo={basePath}>\n <LayoutPage\n title={msg`My Atmosphere Account`}\n basePath={basePath}\n links={links}\n >\n <Outlet />\n </LayoutPage>\n </AuthGate>\n )\n}\n\nconst initialUrl = new URL(window.location.href)\n\nfunction AuthGate({\n children,\n signOutTo,\n}: {\n children?: ReactNode\n signOutTo?: ToPathOption<RegisteredRouter, '/', undefined>\n}) {\n // This page supports a mode where it is loaded, by an app, in a webview or\n // popup, to let the user manage their atmosphere account without leaving the\n // app. In that case, we constrain the user to only use the account for which\n // they opened the page, and we send a signal to the opener when they perform\n // actions that signal the user is done with the page (like logging out, or\n // explicitly \"canceling\" the sign-in).\n\n // @NOTE The VERY EXPERIMENTAL API used here **WILL** change in the future as\n // it gets specified (or not) in the AT Protocol specification. It MUST NOT be\n // used in places where security is a concern and is ONLY there for testing\n // and experimentation purposes. DO NOT USE.\n\n const router = useRouter()\n const { session } = useSessionContext()\n const hasSession = useRef(session != null)\n\n const isPopup = initialUrl.searchParams.get('display') === 'popup'\n const identifier = initialUrl.searchParams.get('login_hint') || undefined\n const nonce = initialUrl.searchParams.get('nonce') || undefined\n const callbackUrl = initialUrl.searchParams.get('redirect_uri') || undefined\n\n const done = useMemo<undefined | (() => void)>(() => {\n if (callbackUrl && nonce) {\n return () => {\n const url = new URL(callbackUrl)\n window.location.href = url.toString()\n }\n } else if (isPopup) {\n return () => {\n // Due to the various ways this page can be embedded (e.g. webview in a\n // mobile app, a popup in a browser), and the fact that the opener might\n // be on a different origin, we post the message on various targets to\n // ensure it is received. We might want to configure this based on\n // query params.\n\n // @NOTE We might want to restrict the targetOrigin based on the client\n // metadata.\n window.opener?.postMessage({ nonce, event: 'done' }, '*')\n window.postMessage({ nonce, event: 'done' }, '*')\n window.close()\n }\n }\n }, [isPopup, callbackUrl, nonce])\n\n useEffect(() => {\n if (session && !hasSession.current) {\n hasSession.current = true\n } else if (!session && hasSession.current) {\n hasSession.current = false\n if (signOutTo) router.navigate({ to: signOutTo })\n done?.()\n }\n }, [session, done])\n\n return (\n <AuthenticationProvider\n forcedIdentifier={identifier}\n disableRemember={isPopup}\n onCancel={done}\n >\n {children}\n </AuthenticationProvider>\n )\n}\n","import { createRoute, useRouter } from '@tanstack/react-router'\nimport { ErrorView } from '#/components/error-view'\nimport { ResetPasswordView } from '#/components/reset-password-view'\nimport { useSessionContext } from '#/contexts/session'\nimport { RootRoute } from '../../../route.tsx'\n\nexport const Route = createRoute({\n getParentRoute: () => RootRoute,\n path: '/account/reset-password',\n component: Page,\n errorComponent: ErrorView,\n})\n\nexport function Page() {\n const { doInitiatePasswordReset, doConfirmResetPassword } =\n useSessionContext()\n\n const router = useRouter()\n\n return (\n <ResetPasswordView\n onResetPasswordRequest={doInitiatePasswordReset}\n onResetPasswordConfirm={doConfirmResetPassword}\n onBack={() => {\n // Try to send them back to wherever they came from\n window.history.back()\n\n // If they didn't move, send them to the account page\n setTimeout(() => {\n if (router.state.location.pathname === '/account/reset-password') {\n router.navigate({ to: '/account' })\n }\n }, 1_000)\n }}\n />\n )\n}\n","import { msg } from '@lingui/core/macro'\nimport { PaintBucketIcon } from '@phosphor-icons/react'\nimport { createRouter } from '@tanstack/react-router'\nimport { Palette } from '#/components/utils/palette.tsx'\nimport { buildRoutes as buildAccountRoutes } from './account/(authenticated)/route.tsx'\nimport { Route as ResetPasswordRoute } from './account/(unauthenticated)/reset-password/route.tsx'\nimport { RootRoute } from './route.tsx'\n\nconst authenticatedRoutes = buildAccountRoutes('/account', {\n // Custom extra pages. The purpose of these is to (eventually!) allow adding\n // custom pages (or changing existing pages) to the account manager, for\n // specific deployments, without having to fork the entire package. The page\n // below serves as an example of how this would work, and provides a \"hidden\"\n // page can be used by self-hosters of the \"official\" PDS distribution for\n // branding customization.\n '/branding': {\n icon: PaintBucketIcon,\n hidden: true,\n position: 40,\n title: msg`Branding`,\n component: Palette,\n },\n})\n\nexport const router = createRouter({\n routeTree: RootRoute.addChildren([\n ...authenticatedRoutes,\n ResetPasswordRoute,\n ]),\n})\n\n// Register the router instance for type safety\ndeclare module '@tanstack/react-router' {\n interface Register {\n router: typeof router\n }\n}\n","import './style.css'\n\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { RouterProvider } from '@tanstack/react-router'\nimport { StrictMode } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { errorViewRender } from '#/components/error-view.tsx'\nimport { CustomizationProvider } from '#/contexts/customization.tsx'\nimport { NotificationsProvider } from '#/contexts/notifications.tsx'\nimport { InitialSelectedSession, SessionProvider } from '#/contexts/session.tsx'\nimport type { HydrationData } from '#/hydration-data.d.ts'\nimport { LocaleProvider } from '#/locales/locale-provider.tsx'\nimport { router } from '#/pages/router'\n\nconst {\n __customizationData: customizationData,\n __deviceSessions: deviceSessions,\n} = window as typeof window & HydrationData['account-page']\n\nconst qc = new QueryClient()\n\nconst container = document.getElementById('root')!\n\ncreateRoot(container).render(\n <StrictMode>\n <CustomizationProvider value={customizationData}>\n <LocaleProvider>\n <NotificationsProvider>\n <ErrorBoundary fallbackRender={errorViewRender}>\n <SessionProvider\n initialSessions={deviceSessions}\n initialSelected={InitialSelectedSession.Only}\n >\n <QueryClientProvider client={qc}>\n <RouterProvider router={router} />\n </QueryClientProvider>\n </SessionProvider>\n </ErrorBoundary>\n </NotificationsProvider>\n </LocaleProvider>\n </CustomizationProvider>\n </StrictMode>,\n)\n"],"names":["Subscribable","listener","isServer","noop","functionalUpdate","updater","input","isValidTimeout","value","timeUntilStale","updatedAt","staleTime","resolveStaleTime","query","resolveEnabled","enabled","matchQuery","filters","type","exact","fetchStatus","predicate","queryKey","stale","hashQueryKeyByOptions","partialMatchKey","isActive","matchMutation","mutation","status","mutationKey","hashKey","options","_","val","isPlainObject","result","key","a","b","replaceEqualDeep","array","isPlainArray","aItems","aSize","bItems","bSize","copy","equalItems","i","shallowEqualObjects","o","hasObjectPrototype","ctor","prot","sleep","timeout","resolve","replaceData","prevData","data","addToEnd","items","item","max","newItems","addToStart","skipToken","ensureQueryFn","fetchOptions","FocusManager","_a","__privateAdd","_focused","_cleanup","_setup","__privateSet","onFocus","__privateGet","setup","focused","isFocused","focusManager","OnlineManager","_online","onOnline","onlineListener","offlineListener","online","onlineManager","pendingThenable","reject","thenable","_resolve","_reject","finalize","reason","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","isCancelledError","createRetryer","config","isRetryCancelled","isResolved","continueFn","cancel","cancelOptions","cancelRetry","continueRetry","canContinue","canStart","pause","continueResolve","run","promiseOrValue","initialPromise","error","retry","retryDelay","delay","shouldRetry","defaultScheduler","cb","createNotifyManager","queue","transactions","notifyFn","callback","batchNotifyFn","scheduleFn","schedule","flush","originalQueue","args","fn","notifyManager","Removable","_gcTimeout","newGcTime","Query","_Query_instances","_initialState","_revertState","_cache","_client","_retryer","_defaultOptions","_abortSignalConsumed","getDefaultState","newData","__privateMethod","dispatch_fn","state","setStateOptions","promise","_b","observer","x","abortController","addSignalProperty","object","fetchFn","queryFn","queryFnContext","context","_c","onError","_d","action","reducer","fetchState","hasData","initialDataUpdatedAt","QueryCache","_queries","client","queryHash","queryInMap","defaultedFilters","queries","event","Mutation","_Mutation_instances","_observers","_mutationCache","variables","restored","isPaused","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","MutationCache","_mutations","_scopes","_mutationId","__privateWrapper","scope","scopeFor","scopedMutations","index","mutationsWithSameScope","firstPendingMutation","m","foundMutation","pausedMutations","infiniteQueryBehavior","pages","direction","oldPages","oldPageParams","currentPage","cancelled","fetchPage","param","previous","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","QueryClient","_queryCache","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","defaultedOptions","cachedData","queryCache","defaultedCancelOptions","promises","defaults","queryDefault","QueryObserver","_QueryObserver_instances","_currentQuery","_currentQueryInitialState","_currentResult","_currentResultState","_currentResultOptions","_currentThenable","_selectError","_selectFn","_selectResult","_lastQueryWithDefinedData","_staleTimeoutId","_refetchIntervalId","_currentRefetchInterval","_trackedProps","shouldFetchOnMount","executeFetch_fn","updateTimers_fn","shouldFetchOn","clearStaleTimeout_fn","clearRefetchInterval_fn","prevOptions","prevQuery","updateQuery_fn","mounted","shouldFetchOptionally","updateStaleTimeout_fn","nextRefetchInterval","computeRefetchInterval_fn","updateRefetchInterval_fn","shouldAssignObserverCurrentProperties","onPropTracked","trackedResult","prevResult","prevResultState","prevResultOptions","queryInitialState","newState","isPlaceholderData","fetchOnMount","fetchOptionally","errorUpdatedAt","selectError","placeholderData","isFetching","isPending","isError","isLoading","nextResult","isStale","finalizeThenableIfPossible","recreateThenable","pending","prevThenable","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","notify_fn","nextInterval","notifyOptions","shouldLoadOnMount","field","optimisticResult","MutationObserver","_MutationObserver_instances","_currentMutation","_mutateOptions","updateResult_fn","QueryClientContext","React.createContext","useQueryClient","queryClient","React.useContext","QueryClientProvider","children","React.useEffect","jsx","IsRestoringContext","useIsRestoring","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","shouldThrowError","throwError","params","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","throwOnError","suspense","ensureSuspenseTimers","originalStaleTime","willFetch","isRestoring","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","isNewCacheEntry","React.useState","shouldSubscribe","React.useSyncExternalStore","React.useCallback","onStoreChange","unsubscribe","useQuery","useMutation","mutate","mutateOptions","prefix","invariant","condition","message","__storeToDerived","__derivedToStore","__depsThatHaveWrittenThisTick","__isFlushing","__batchDepth","__pendingUpdates","__initialBatchValues","__flush_internals","relatedVals","sorted","Derived","derived","stores","store","relatedLinkedDerivedVals","__notifyListeners","__notifyDerivedListeners","__flush","store2","prevState","derivedVals","batch","pendingUpdateToFlush","isUpdaterFunction","Store","initialState","unsub","prevDepVals","currDepVals","dep","prevVal","shouldRecompute","lastSeenDepValues","cleanup","deps","relatedStores","stateIndexKey","popStateEvent","beforeUnloadEvent","createHistory","opts","location","subscribers","notify","subscriber","handleIndexChange","tryNavigation","task","navigateOpts","actionInfo","blockers","isPushOrReplace","blocker","nextLocation","parseHref","path","currentIndex","assignKeyAndIndex","str","_a2","blockers2","createRandomKey","createBrowserHistory","win","originalPushState","originalReplaceState","_getBlockers","_setBlockers","newBlockers","createHref","parseLocation","currentLocation","rollbackLocation","nextPopIsGo","ignoreNextPop","skipBlockerNextPop","ignoreNextBeforeUnload","getLocation","next","scheduled","history","queueHistoryAction","destHref","href","onPushPop","onPushPopEvent","delta","isForward","isBack","isGo","onBeforeUnload","e","shouldBlock","shouldHaveBeforeUnload","ignoreBlocker","n","res","createMemoryHistory","entries","states","_entry","index2","hashIndex","searchIndex","last","arr","isFunction","d","pick","parent","keys","obj","prev","_next","prevItems","prevSize","nextItems","nextSize","getObjectKeys","ignoreUndefined","deepEqual","aKeys","bKeys","createControlledPromise","onResolve","resolveLoadPromise","rejectLoadPromise","controlledPromise","hasUriEncodedChars","inputString","joinPaths","paths","cleanPath","trimPathLeft","trimPathRight","trimPath","removeTrailingSlash","basepath","exactPathTest","pathName1","pathName2","resolvePath","base","to","trailingSlash","caseSensitive","removeBasepath","baseSegments","parsePathname","toSegments","toSegment","joined","pathname","segments","split","part","segment","interpolatePath","leaveWildcards","leaveParams","decodeCharMap","interpolatedPathSegments","encodeParam","isValueString","encodePathParam","usedParams","interpolatedPath","encoded","encodedChar","char","matchPathname","currentPathname","matchLocation","pathParams","matchByPath","normalizedBasepath","normalizedPathname","from","routeSegments","baseSegment","routeSegment","isLastBaseSegment","isLastRouteSegment","_splat","isNotFound","storageKey","sessionsStorage","throttle","wait","scrollRestorationCache","defaultGetScrollRestorationKey","getCssSelector","el","ignoreScroll","restoreScroll","storageKey2","behavior","shouldScrollRestoration","scrollToTopSelectors","byKey","resolvedKey","elementEntries","elementSelector","entry","element","hash","hashScrollIntoViewOptions","selector","setupScrollRestoration","router","force","getKey","onScroll","attrId","restoreKey","keyEntry","elementEntry","cacheKey","handleHashScroll","encode","pfx","normalizedObject","v","toValue","mix","decode","searchParamsPart","acc","previousValue","defaultParseSearch","parseSearchWith","defaultStringifySearch","stringifySearchWith","parser","searchStr","stringify","stringifyValue","search","rootRouteId","isRedirect","isResolvedRedirect","getLocationChangeInfo","routerState","fromLocation","toLocation","pathChanged","hrefChanged","hashChanged","RouterCore","newOptions","previousOptions","getInitialRouterState","notFoundRoute","recurseRoutes","childRoutes","childRoute","existingRoute","trimmedFullPath","scoredRoutes","trimmed","parsed","scores","minLength","eventType","routerEvent","previousLocation","locationToParse","parse","parsedSearch","__tempLocation","__tempKey","parsedTempLocation","pathnameOrNext","locationSearchOrOpts","dest","routeParams","trimmedPath","getMatchedParams","route","foundRoute","matchedParams","routeCursor","matchedRoutes","id","match","build","matchedRoutesResult","fromMatches","fromMatch","fromPath","fromSearch","stayingMatches","resolvePathTo","fromRouteByFromPathRouteId","prevParams","nextParams","validatedSearch","validateSearch","search2","allMiddlewares","middlewares","legacyMiddleware","search3","nextSearch","next2","validate","final","applyNext","currentSearch","middleware","newSearch","hashStr","nextState","buildWithMatches","maskedDest","maskedNext","foundMask","_from","maskProps","nextMatches","maskedMatches","maskedFinal","viewTransition","isSameState","ignoredProps","prop","isEqual","isSameUrl","previousCommitPromise","maskedLocation","hashScrollIntoView","nextHistory","replace","resetScroll","rest","reloadDocument","redirect","notFound","loadPromise","prevLocation","pendingMatches","s","exitingMatches","enteringMatches","previousMatches","newMatches","matches","hook","err","shouldViewTransition","startViewTransitionParams","updated","isMatched","isCached","matchesKey","matchId","allPreload","onReady","updateMatch","sync","firstBadMatchIndex","rendered","triggerOnReady","resolvePreload","handleRedirectAndNotFound","resolveAll","rejectAll","handleSerialError","routerCode","_b2","routeId","errorHandlerErr","_a3","_b3","existingMatch","parentMatchId","pendingMs","shouldPending","executeBeforeLoad","prevLoadPromise","pendingTimeout","paramsError","searchError","getParentMatchContext","cause","preload","beforeLoadFnContext","beforeLoadContext","validResolvedMatches","matchPromises","prevLoaderPromise","loaderShouldRunAsync","loaderIsRunningAsync","parentMatchPromise","getLoaderContext","loaderDeps","preload2","age","staleAge","shouldReloadOption","shouldReload","runLoader","_c2","_d2","potentialPendingMinPromise","latestMatch","loaderData","assetContext","headFnContent","meta","links","headScripts","scripts","headers","onErrorError","invalid","loaderPromise","invalidate","filter","gcTime","lazyRoute","_id","options2","componentTypes","component","activeMatchIds","loadedMatchIds","baseLocation","matchesByRouteId","matchForRoute","isGlobalNotFound","globalNotFoundRouteId","parseErrors","parsedParamsError","parseParams","parsedParams","PathParamError","getParentContext","parentMatch","preMatchSearch","strictMatchSearch","parentSearch","parentStrictSearch","strictSearch","searchParamError","SearchParamError","loaderDepsHash","previousMatch","routeNeedsPreload","parentContext","contextFnContext","opts2","validateSearch2","componentType","preloadWarning","BaseRoute","isRoot","customId","fullPath","lazyFn","BaseRootRoute","CatchBoundary","props","errorComponent","ErrorComponent","CatchBoundaryImpl","reset","React.createElement","React.Component","prevProps","errorInfo","show","setShow","jsxs","React","require$$0","is","y","objectIs","useState","useEffect","useLayoutEffect","useDebugValue","useSyncExternalStore$2","subscribe","getSnapshot","_useState","inst","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","useSyncExternalStoreShim_production","shimModule","require$$1","useSyncExternalStore","useRef","useMemo","withSelector_production","getServerSnapshot","instRef","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelectorModule","useStore","useSyncExternalStoreWithSelector","shallow","objA","objB","k","keysA","routerContext","getRouterContext","useRouter","useRouterState","contextRouter","previousResult","newSlice","matchContext","dummyMatchContext","useMatch","nearestMatchId","useLoaderData","useLoaderDeps","select","useParams","useSearch","useNavigate","_defaultOpts","navigate","createRoute","Route","createRootRoute","RootRoute","CatchNotFound","resetKey","DefaultGlobalNotFound","SafeFragment","Fragment","renderRouteNotFound","hasOwnProperty","forOwn","extend","destination","source","forEach","length","fourHexEscape","hex","hexadecimal","code","lowercase","toString","isArray","isBuffer","isObject","isString","isNumber","isBigInt","isMap","isSet","singleEscapes","regexSingleEscape","regexDigit","regexWhitespace","escapeEverythingRegex","escapeNonAsciiRegex","jsesc","argument","increaseIndentation","oldIndent","indent","json","quote","compact","lowercaseHex","inline1","inline2","newLine","isEmpty","useBinNumbers","useOctNumbers","useDecNumbers","useHexNumbers","regex","pair","lone","quoteChar","string","first","second","codePoint","jsesc_1","ScriptOnce","log","ScrollRestoration","userKey","Match","React.memo","PendingComponent","pendingElement","routeErrorComponent","routeOnCatch","routeNotFoundComponent","ResolvedSuspenseBoundary","React.Suspense","ResolvedCatchBoundary","ResolvedNotFoundBoundary","parentRouteId","MatchInner","OnRendered","prevLocationRef","React.useRef","matchIndex","match2","routeId2","remountFn","remountDeps","out","React.useMemo","Comp","Outlet","RouteErrorComponent","pendingMinMs","minPendingPromise","parentGlobalNotFound","childMatchId","nextMatch","React.useLayoutEffect","usePrevious","ref","current","useIntersectionObserver","intersectionObserverOptions","isIntersectionObserverAvailable","observerRef","useForwardedRef","innerRef","React.useImperativeHandle","Transitioner","mountLoadForRouter","isLoading2","isTransitioning","setIsTransitioning","hasPendingMatches","previousIsLoading","isAnyPending","previousIsAnyPending","isPagePending","previousIsPagePending","React.startTransition","Matches","ResolvedSuspense","inner","MatchesInner","useMatches","useLinkProps","forwardedRef","hasRenderFetched","activeProps","inactiveProps","activeOptions","userPreload","userPreloadDelay","startTransition","target","disabled","style","className","onClick","onMouseEnter","onMouseLeave","onTouchStart","_params","_search","_hash","_state","_mask","_reloadDocument","propsSafeToSpread","_options","preloadDelay","currentPathSplit","doPreload","preloadViewportIoCallback","handleClick","isCtrlEvent","flushSync","handleFocus","handleTouchStart","handleEnter","eventTarget","handleLeave","composeHandlers","handlers","handler","resolvedActiveProps","resolvedInactiveProps","resolvedClassName","resolvedStyle","Link","React.forwardRef","_asChild","_type","linkProps","createRouter","Router","RouterContextProvider","provider","RouterProvider","e.createElement","e.Fragment","a.createElement","a.Fragment","r","o.forwardRef","o.createElement","f","e.forwardRef","c","t","t.forwardRef","t.createElement","Palette","_Fragment","div","sides","min","round","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","start","end","evaluate","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","side","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","width","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","name","nextX","nextY","detectOverflow","_await$platform$isEle","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","offsets","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","node","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","timeoutId","root","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","ratio","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","ReactDOM.flushSync","refs","floatingStyles","initialStyles","isRef","arrow$2","NAME","Arrow","arrowProps","Primitive","Root","useSize","setSize","borderSizeEntry","borderSize","POPPER_NAME","createPopperContext","createPopperScope","createContextScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","composedRefs","useComposedRefs","anchorRef","previousAnchor","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","contentProps","content","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","useCallbackRef","arrowX","arrowY","cannotCenterArrow","contentZIndex","setContentZIndex","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Root2","Anchor","Content","POPOVER_NAME","createPopoverContext","createPopoverScope","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","openProp","defaultOpen","onOpenChange","modal","popperScope","triggerRef","hasCustomAnchor","setHasCustomAnchor","setOpen","useControllableState","PopperPrimitive.Root","useId","prevOpen","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopperPrimitive.Anchor","TRIGGER_NAME","PopoverTrigger","triggerProps","composedTriggerRef","trigger","getState","composeEventHandlers","PORTAL_NAME","PortalProvider","usePortalContext","PopoverPortal","forceMount","container","Presence","PortalPrimitive","PopoverContent","portalContext","PopoverContentModal","PopoverContentNonModal","Slot","createSlot","contentRef","isRightClickOutsideRef","hideOthers","RemoveScroll","PopoverContentImpl","originalEvent","ctrlLeftClick","isRightClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","useFocusGuards","FocusScope","DismissableLayer","PopperPrimitive.Content","CLOSE_NAME","PopoverClose","closeProps","PopoverArrow","PopperPrimitive.Arrow","Trigger","Portal","Content2","Close","AccountOverview","account","clsx","AccountImage","_jsx","AccountName","AccountIdentifier","AccountSelector","useLingui","session","canSwitchAccounts","useAuthenticationContext","setSession","doSignOut","useSessionContext","_jsxs","asChild","Button","aria-label","$__i18n","shape","transparent","color","Trans_","XIcon","aria-hidden","LayoutPage","basePath","title","atBase","currentLink","find","link","pageTitle","pageTitleStr","LayoutApp","header","aside","role","nav","hidden","map","description","icon","Icon","span","main","ArrowLeftIcon","h2","ErrorView","CustomizationName","logo","useCustomizationData","img","src","alt","Page","useAuthenticatedSession","section","p","strong","h3","LinkExternal","ul","li","preferred_username","sub","CircularProgress","startAngle","progressDirection","strokeWidth","radius","circumference","Math","PI","progress","strokeDashoffset","svg","circle","cx","cy","fill","stroke","strokeDasharray","strokeLinecap","undefined","useDateAgo","date","useDateDelta","todayTimestamp","useTodayTimestamp","deltaSeconds","deltaMinutes","deltaHours","Date","getTime","deltaDays","setDelta","now","interval","setInterval","clearInterval","setTodayTimestamp","getFullYear","getMonth","getDate","DateAgo","lastUsedAgo","oauthSessionsQueryKey","useOAuthSessionsQuery","api","useApi","refetchOnWindowFocus","fetch","useRevokeOAuthSessionMutation","qc","mutationFn","tokenId","invalidateQueries","onSuccess","constants","util","isHostnameIP","isLoopbackHost","isLocalHostname","safeUrl","extractUrlPath","arrayEquivalent","includedIn","asArray","urlStr","hostname","host","parts","tld","url","endOfProtocol","hashIdx","questionIdx","queryStrIdx","pathEnd","slashIdx","pathStart","jsonObjectPreprocess","numberPreprocess","number","isSpaceSeparatedValue","inputLength","valueLength","idx","idxEnd","exports","zod_1","util_js_1","ctx","dotIdx","colonIdx","urlDomain","atprotoLoopbackClientRedirectUris","isOAuthScope","isAtprotoOAuthScope","asAtprotoOAuthScope","assertAtprotoOAuthScope","oauth_scope_js_1","require$$2","oauthClientId","uri_js_1","assertOAuthLoopbackClientId","isOAuthClientIdLoopback","asOAuthClientIdLoopback","parseOAuthLoopbackClientId","safeParseOAuthLoopbackClientId","safeParseOAuthLoopbackClientIdQueryString","oauth_client_id_js_1","oauth_redirect_uri_js_1","queryStringIdx","queryString","it","atprotoLoopbackClientId","buildAtprotoLoopbackClientId","parseAtprotoLoopbackClientId","atproto_loopback_client_redirect_uris_js_1","atproto_oauth_scope_js_1","oauth_client_id_loopback_js_1","require$$3","require$$4","redirectUris","uri","clientId","redirect_uris","atprotoLoopbackClientMetadata_1","atprotoLoopbackClientMetadata","buildAtprotoLoopbackClientMetadata","atproto_loopback_client_id_js_1","buildMetadataInternal","clientParams","JwkError","JwtCreateError","JwtVerifyError","Encoder","baseEncode","bytes","Decoder","baseDecode","text","decoder","or","ComposedDecoder","decoders","right","Codec","alphabet","bitsPerChar","codes","bits","buffer","written","pad","mask","rfc4648","base64","base64pad","base64url","base64urlpad","matchesAny","parseB64uJson","isLastOccurrence","base64_1","isDefined","preferredOrderCmp","order","aIdx","bIdx","cachedGetter","_context","inputBytes","jwtCharsRefinement","invalidChar","segmentedStringRefinementFactory","count","minPartLength","minTotalLength","errorPrefix","currentStart","nextDot","isPublicKeyUsage","isSigKeyUsage","isEncKeyUsage","isPrivateKeyUsage","hasKid","hasSharedSecretJwk","hasPrivateSecretJwk","isPrivateJwk","isPublicJwk","util_1","usage","jwkBaseSchema","ops","jwkRsaKeySchema","jwkEcKeySchema","jwkEcSecp256k1KeySchema","jwkOkpKeySchema","jwkSymKeySchema","jwk","alg","jwkAlgorithms","errors_js_1","jwk_js_1","process","IS_NODE_RUNTIME","jwkSupportsEnc","jwkSupportsSig","crv","jwks","isSignedJwt","isUnsignedJwt","jwtDecode","unsafeDecodeJwt","jwt_js_1","jwt","headerEnc","payloadEnc","payload","jwtVerify","__runInitializers","this","thisArg","initializers","useValue","__esDecorate","descriptorIn","decorators","contextIn","extraInitializers","accept","kind","descriptor","done","alg_js_1","Key","_instanceExtraInitializers","_get_isPrivate_decorators","_get_isSymetric_decorators","_get_publicJwk_decorators","_get_bareJwk_decorators","_get_algorithms_decorators","validated","buildPublicKeyOps","kty","tolerance","exp","nbf","_metadata","keyUsages","publicOps","keyset","jwt_decode_js_1","extractPrivateJwk","extractPublicJwk","Keyset","_get_signAlgorithms_decorators","_get_publicJwks_decorators","_get_privateJwks_decorators","iterable","preferredSigningAlgorithms","keyIds","algorithms","kid","matchingKeys","isAllowedAlg","candidates","prefAlg","matchingKey","matchingAlgs","sAlg","sKid","protectedHeader","token","errors","__createBinding","k2","desc","__exportStar","require$$5","require$$6","require$$7","require$$8","require$$9","oauthTokenType","oauthTokenResponse","jwk_1","oauth_authorization_details_js_1","oauth_token_type_js_1","atprotoOauthTokenResponse","did_1","atproto_oauth_scope_1","oauth_token_response_js_1","oauthAccessToken","oauthAuthorizationCodeGrantTokenRequest","oauthAuthorizationRequestJar","oauthCodeChallengeMethod","oauthPromptMode","oauthResponseMode","oauthResponseType","oidcClaimsParameter","oidcClaimsProperties","oidcClaimsValueSchema","oidcEntityType","oauthAuthorizationRequestParameters","oauth_code_challenge_method_js_1","oauth_prompt_mode_js_1","oauth_response_mode_js_1","oauth_response_type_js_1","oidc_claims_parameter_js_1","require$$10","oidc_claims_properties_js_1","require$$11","oidc_entity_type_js_1","require$$12","require$$13","oauthAuthorizationRequestPar","oauth_authorization_request_jar_js_1","oauth_authorization_request_parameters_js_1","oauthRequestUri","oauthAuthorizationRequestUri","oauth_request_uri_js_1","oauthAuthorizationRequestQuery","oauth_authorization_request_uri_js_1","oauthAuthorizationResponseError","oauthIssuerIdentifier","canonicalValue","oauth_issuer_identifier_js_1","oauthClientCredentialsGrantTokenRequest","constants_js_1","isOAuthClientIdDiscoverable","isConventionalOAuthClientId","assertOAuthDiscoverableClientId","parseOAuthDiscoverableClientId","oauthEndpointAuthMethod","oauthGrantType","oauthClientMetadata","oauth_endpoint_auth_method_js_1","oauth_grant_type_js_1","oauthEndpointName","oauthIntrospectionResponse","oauthParResponse","oauthPasswordGrantTokenRequest","oauthProtectedResourceMetadata","oauthRefreshToken","oauthRefreshTokenGrantTokenRequest","oauth_refresh_token_js_1","oauthTokenIdentification","oauth_access_token_js_1","oauthTokenRequest","oauth_authorization_code_grant_token_request_js_1","oauth_client_credentials_grant_token_request_js_1","oauth_password_grant_token_request_js_1","oauth_refresh_token_grant_token_request_js_1","oidcAuthorizationErrorResponse","oidcUserinfo","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40","require$$41","require$$42","require$$43","require$$44","require$$45","require$$46","require$$47","require$$48","useOAuthClientIdentifier","URL","useOauthClientName","clientMetadata","client_name","refetch","ApplicationSessionCard","Admonition","Action","createdAt","i18n","useNotificationsContext","mutateAsync","revokeSessions","friendlyClientId","clientName","revoke","variant","duration","year","month","day","loading","accountSessionsQueryKey","useAccountSessionsQuery","signal","useRevokeAccountSessionMutation","deviceId","LIBVERSION","UA_MAX_LENGTH","USER_AGENT","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","UA_BROWSER","UA_CPU","UA_DEVICE","UA_ENGINE","UA_OS","UA_RESULT","TYPE","VENDOR","VERSION","ARCHITECTURE","MAJOR","MODEL","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","XR","EMBEDDED","INAPP","BRANDS","FORMFACTORS","FULLVERLIST","PLATFORM","PLATFORMVER","BITNESS","CH_HEADER","CH_HEADER_FULL_VER_LIST","CH_HEADER_ARCH","CH_HEADER_BITNESS","CH_HEADER_FORM_FACTORS","CH_HEADER_MOBILE","CH_HEADER_MODEL","CH_HEADER_PLATFORM","CH_HEADER_PLATFORM_VER","CH_ALL_VALUES","AMAZON","APPLE","ASUS","BLACKBERRY","GOOGLE","HUAWEI","LENOVO","HONOR","LG","MICROSOFT","MOTOROLA","NVIDIA","ONEPLUS","OPPO","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","CHROME","CHROMIUM","CHROMECAST","EDGE","FIREFOX","OPERA","FACEBOOK","SOGOU","PREFIX_MOBILE","SUFFIX_BROWSER","WINDOWS","isWindow","NAVIGATOR","NAVIGATOR_UADATA","defaultRgx","extensions","mergedRgx","extraRgx","isExtensions","j","enumerize","enums","has","str1","str2","lowerize","deep","itemListToArray","tokens","strip","trim","majorize","version","setProps","propName","pattern","stripQuotes","rgxMapper","ua","arrays","q","strMapper","windowsVersionMap","formFactorsMap","defaultRegexes","defaultProps","createIData","itemType","init_props","is_ignoreProps","is_ignoreRgx","toString_props","IData","UACHData","strToCheck","that","IDataResolve","resolveData","uach","isHttpUACH","UAItem","rgxMap","uaCH","ch","detect","brands","prevName","brandName","brandVersion","archName","reParse","ff","osName","osVersion","UAParser","kv","userAgent","httpUACH","regexMap","createItemFunc","useBrowserName","device","os","Boolean","join","browser","AccountSessionCard","lastSeenAt","ipAddress","deviceMetadata","browserName","remove","isCurrentDevice","HostedByParagraph","useRateLimitedAction","cooldownSeconds","initialCooldown","remaining","setRemaining","useCallback","Error","timer","setTimeout","clearTimeout","clear","total","ButtonCooldown","isHovered","setIsHovered","remainingSeconds","ceil","isCoolingDown","aria-live","aria-atomic","useResetPasswordRequest","currentLocale","useCurrentLocale","locale","email","_data","_variables","useResetPasswordConfirm","password","success","setSuccess","resetPasswordRequest","resetPasswordConfirm","PaperPlaneTiltIcon","weight","ResetPasswordConfirmForm","onSubmit","DEFAULT_PAGES","HouseSimpleIcon","position","AccountIndexPage","DevicesIcon","AccountDevicesPage","GlobeIcon","AccountOAuthPage","KeyIcon","AccountPasswordPage","QuestionIcon","AccountAboutPage","buildRoutes","customPages","subPages","getParentRoute","Object","sort","ap","bp","diff","localeCompare","subPath","AuthGate","signOutTo","initialUrl","window","hasSession","isPopup","searchParams","get","identifier","nonce","callbackUrl","opener","postMessage","close","AuthenticationProvider","forcedIdentifier","disableRemember","onCancel","doInitiatePasswordReset","doConfirmResetPassword","ResetPasswordView","onResetPasswordRequest","onResetPasswordConfirm","onBack","back","authenticatedRoutes","buildAccountRoutes","PaintBucketIcon","routeTree","addChildren","ResetPasswordRoute","__customizationData","customizationData","__deviceSessions","deviceSessions","document","getElementById","createRoot","render","StrictMode","CustomizationProvider","LocaleProvider","NotificationsProvider","ErrorBoundary","fallbackRender","errorViewRender","SessionProvider","initialSessions","initialSelected","InitialSelectedSession","Only"],"mappings":"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","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,85,86,87,88,89,90,91,92,93,116,117,172]}
|