@tanstack/solid-router 1.111.3 → 1.111.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/source/Asset.d.ts +2 -0
  2. package/dist/source/Asset.jsx +22 -0
  3. package/dist/source/Asset.jsx.map +1 -0
  4. package/dist/source/CatchBoundary.d.ts +11 -0
  5. package/dist/source/CatchBoundary.jsx +43 -0
  6. package/dist/source/CatchBoundary.jsx.map +1 -0
  7. package/dist/source/HeadContent.d.ts +8 -0
  8. package/dist/source/HeadContent.jsx +125 -0
  9. package/dist/source/HeadContent.jsx.map +1 -0
  10. package/dist/source/Match.d.ts +8 -0
  11. package/dist/source/Match.jsx +256 -0
  12. package/dist/source/Match.jsx.map +1 -0
  13. package/dist/source/Matches.d.ts +67 -0
  14. package/dist/source/Matches.jsx +103 -0
  15. package/dist/source/Matches.jsx.map +1 -0
  16. package/dist/source/RouterProvider.d.ts +10 -0
  17. package/dist/source/RouterProvider.jsx +27 -0
  18. package/dist/source/RouterProvider.jsx.map +1 -0
  19. package/dist/source/SafeFragment.d.ts +1 -0
  20. package/dist/source/SafeFragment.jsx +4 -0
  21. package/dist/source/SafeFragment.jsx.map +1 -0
  22. package/dist/source/ScriptOnce.d.ts +5 -0
  23. package/dist/source/ScriptOnce.jsx +17 -0
  24. package/dist/source/ScriptOnce.jsx.map +1 -0
  25. package/dist/source/Scripts.d.ts +1 -0
  26. package/dist/source/Scripts.jsx +49 -0
  27. package/dist/source/Scripts.jsx.map +1 -0
  28. package/dist/source/ScrollRestoration.d.ts +15 -0
  29. package/dist/source/ScrollRestoration.jsx +36 -0
  30. package/dist/source/ScrollRestoration.jsx.map +1 -0
  31. package/dist/source/Transitioner.d.ts +1 -0
  32. package/dist/source/Transitioner.jsx +112 -0
  33. package/dist/source/Transitioner.jsx.map +1 -0
  34. package/dist/source/awaited.d.ts +11 -0
  35. package/dist/source/awaited.jsx +24 -0
  36. package/dist/source/awaited.jsx.map +1 -0
  37. package/dist/source/fileRoute.d.ts +46 -0
  38. package/dist/source/fileRoute.js +85 -0
  39. package/dist/source/fileRoute.js.map +1 -0
  40. package/dist/source/history.d.ts +8 -0
  41. package/dist/source/history.js +2 -0
  42. package/dist/source/history.js.map +1 -0
  43. package/dist/source/index.d.ts +52 -0
  44. package/dist/source/index.jsx +41 -0
  45. package/dist/source/index.jsx.map +1 -0
  46. package/dist/source/lazyRouteComponent.d.ts +7 -0
  47. package/dist/source/lazyRouteComponent.jsx +82 -0
  48. package/dist/source/lazyRouteComponent.jsx.map +1 -0
  49. package/dist/source/link.d.ts +41 -0
  50. package/dist/source/link.jsx +339 -0
  51. package/dist/source/link.jsx.map +1 -0
  52. package/dist/source/matchContext.d.ts +3 -0
  53. package/dist/source/matchContext.jsx +5 -0
  54. package/dist/source/matchContext.jsx.map +1 -0
  55. package/dist/source/not-found.d.ts +27 -0
  56. package/dist/source/not-found.jsx +39 -0
  57. package/dist/source/not-found.jsx.map +1 -0
  58. package/dist/source/redirects.d.ts +19 -0
  59. package/dist/source/redirects.js +25 -0
  60. package/dist/source/redirects.js.map +1 -0
  61. package/dist/source/renderRouteNotFound.d.ts +3 -0
  62. package/dist/source/renderRouteNotFound.jsx +15 -0
  63. package/dist/source/renderRouteNotFound.jsx.map +1 -0
  64. package/dist/source/route.d.ts +257 -0
  65. package/dist/source/route.js +240 -0
  66. package/dist/source/route.js.map +1 -0
  67. package/dist/source/router.d.ts +550 -0
  68. package/dist/source/router.js +1802 -0
  69. package/dist/source/router.js.map +1 -0
  70. package/dist/source/routerContext.d.ts +8 -0
  71. package/dist/source/routerContext.jsx +13 -0
  72. package/dist/source/routerContext.jsx.map +1 -0
  73. package/dist/source/scroll-restoration.d.ts +29 -0
  74. package/dist/source/scroll-restoration.jsx +244 -0
  75. package/dist/source/scroll-restoration.jsx.map +1 -0
  76. package/dist/source/typePrimitives.d.ts +70 -0
  77. package/dist/source/typePrimitives.js +2 -0
  78. package/dist/source/typePrimitives.js.map +1 -0
  79. package/dist/source/useBlocker.d.ts +68 -0
  80. package/dist/source/useBlocker.jsx +136 -0
  81. package/dist/source/useBlocker.jsx.map +1 -0
  82. package/dist/source/useCanGoBack.d.ts +1 -0
  83. package/dist/source/useCanGoBack.js +5 -0
  84. package/dist/source/useCanGoBack.js.map +1 -0
  85. package/dist/source/useLoaderData.d.ts +12 -0
  86. package/dist/source/useLoaderData.jsx +11 -0
  87. package/dist/source/useLoaderData.jsx.map +1 -0
  88. package/dist/source/useLoaderDeps.d.ts +11 -0
  89. package/dist/source/useLoaderDeps.jsx +11 -0
  90. package/dist/source/useLoaderDeps.jsx.map +1 -0
  91. package/dist/source/useLocation.d.ts +7 -0
  92. package/dist/source/useLocation.jsx +7 -0
  93. package/dist/source/useLocation.jsx.map +1 -0
  94. package/dist/source/useMatch.d.ts +14 -0
  95. package/dist/source/useMatch.jsx +19 -0
  96. package/dist/source/useMatch.jsx.map +1 -0
  97. package/dist/source/useNavigate.d.ts +7 -0
  98. package/dist/source/useNavigate.jsx +32 -0
  99. package/dist/source/useNavigate.jsx.map +1 -0
  100. package/dist/source/useParams.d.ts +14 -0
  101. package/dist/source/useParams.jsx +12 -0
  102. package/dist/source/useParams.jsx.map +1 -0
  103. package/dist/source/useRouteContext.d.ts +12 -0
  104. package/dist/source/useRouteContext.js +8 -0
  105. package/dist/source/useRouteContext.js.map +1 -0
  106. package/dist/source/useRouter.d.ts +4 -0
  107. package/dist/source/useRouter.jsx +9 -0
  108. package/dist/source/useRouter.jsx.map +1 -0
  109. package/dist/source/useRouterState.d.ts +8 -0
  110. package/dist/source/useRouterState.jsx +14 -0
  111. package/dist/source/useRouterState.jsx.map +1 -0
  112. package/dist/source/useSearch.d.ts +14 -0
  113. package/dist/source/useSearch.jsx +12 -0
  114. package/dist/source/useSearch.jsx.map +1 -0
  115. package/dist/source/utils.d.ts +43 -0
  116. package/dist/source/utils.js +59 -0
  117. package/dist/source/utils.js.map +1 -0
  118. package/package.json +5 -1
@@ -0,0 +1,103 @@
1
+ import * as Solid from 'solid-js';
2
+ import warning from 'tiny-warning';
3
+ import { CatchBoundary, ErrorComponent } from './CatchBoundary';
4
+ import { useRouterState } from './useRouterState';
5
+ import { useRouter } from './useRouter';
6
+ import { Transitioner } from './Transitioner';
7
+ import { matchContext } from './matchContext';
8
+ import { Match } from './Match';
9
+ import { SafeFragment } from './SafeFragment';
10
+ export function Matches() {
11
+ const router = useRouter();
12
+ const pendingElement = router.options.defaultPendingComponent ? (<router.options.defaultPendingComponent />) : null;
13
+ // Do not render a root Suspense during SSR or hydrating from SSR
14
+ const ResolvedSuspense = router.isServer || (typeof document !== 'undefined' && router.clientSsr)
15
+ ? SafeFragment
16
+ : Solid.Suspense;
17
+ const inner = (<ResolvedSuspense fallback={pendingElement}>
18
+ <Transitioner />
19
+ <MatchesInner />
20
+ </ResolvedSuspense>);
21
+ return router.options.InnerWrap ? (<router.options.InnerWrap>{inner}</router.options.InnerWrap>) : (inner);
22
+ }
23
+ function MatchesInner() {
24
+ const matchId = useRouterState({
25
+ select: (s) => {
26
+ return s.matches[0]?.id;
27
+ },
28
+ });
29
+ const resetKey = useRouterState({
30
+ select: (s) => s.loadedAt,
31
+ });
32
+ return (<matchContext.Provider value={matchId}>
33
+ <CatchBoundary getResetKey={() => resetKey()} errorComponent={ErrorComponent} onCatch={(error) => {
34
+ warning(false, `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`);
35
+ warning(false, error.message || error.toString());
36
+ }}>
37
+ {matchId() ? <Match matchId={matchId()}/> : null}
38
+ </CatchBoundary>
39
+ </matchContext.Provider>);
40
+ }
41
+ export function useMatchRoute() {
42
+ const router = useRouter();
43
+ const status = useRouterState({
44
+ select: (s) => s.status,
45
+ });
46
+ return (opts) => {
47
+ const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;
48
+ const matchRoute = Solid.createMemo(() => {
49
+ status();
50
+ return router.matchRoute(rest, {
51
+ pending,
52
+ caseSensitive,
53
+ fuzzy,
54
+ includeSearch,
55
+ });
56
+ });
57
+ return matchRoute;
58
+ };
59
+ }
60
+ export function MatchRoute(props) {
61
+ const status = useRouterState({
62
+ select: (s) => s.status,
63
+ });
64
+ return (<Solid.Show when={status()} keyed>
65
+ {(_) => {
66
+ const matchRoute = useMatchRoute();
67
+ const params = matchRoute(props)();
68
+ if (typeof props.children === 'function') {
69
+ return props.children(params);
70
+ }
71
+ return params ? props.children : null;
72
+ }}
73
+ </Solid.Show>);
74
+ }
75
+ export function useMatches(opts) {
76
+ return useRouterState({
77
+ select: (state) => {
78
+ const matches = state.matches;
79
+ return opts?.select
80
+ ? opts.select(matches)
81
+ : matches;
82
+ },
83
+ });
84
+ }
85
+ export function useParentMatches(opts) {
86
+ const contextMatchId = Solid.useContext(matchContext);
87
+ return useMatches({
88
+ select: (matches) => {
89
+ matches = matches.slice(0, matches.findIndex((d) => d.id === contextMatchId()));
90
+ return opts?.select ? opts.select(matches) : matches;
91
+ },
92
+ });
93
+ }
94
+ export function useChildMatches(opts) {
95
+ const contextMatchId = Solid.useContext(matchContext);
96
+ return useMatches({
97
+ select: (matches) => {
98
+ matches = matches.slice(matches.findIndex((d) => d.id === contextMatchId()) + 1);
99
+ return opts?.select ? opts.select(matches) : matches;
100
+ },
101
+ });
102
+ }
103
+ //# sourceMappingURL=Matches.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matches.jsx","sourceRoot":"","sources":["../../src/Matches.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type * as Solid from 'solid-js';
2
+ import type { AnyRouter, RegisteredRouter, Router, RouterOptions } from './router';
3
+ export declare function RouterContextProvider<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>>({ router, children, ...rest }: RouterProps<TRouter, TDehydrated> & {
4
+ children: () => Solid.JSX.Element;
5
+ }): Solid.JSX.Element;
6
+ export declare function RouterProvider<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>>({ router, ...rest }: RouterProps<TRouter, TDehydrated>): Solid.JSX.Element;
7
+ export type RouterProps<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>> = Omit<RouterOptions<TRouter['routeTree'], NonNullable<TRouter['options']['trailingSlash']>, TRouter['history'], TDehydrated>, 'context'> & {
8
+ router: Router<TRouter['routeTree'], NonNullable<TRouter['options']['trailingSlash']>, TRouter['history']>;
9
+ context?: Partial<RouterOptions<TRouter['routeTree'], NonNullable<TRouter['options']['trailingSlash']>, TRouter['history'], TDehydrated>['context']>;
10
+ };
@@ -0,0 +1,27 @@
1
+ import { Matches } from './Matches';
2
+ import { getRouterContext } from './routerContext';
3
+ export function RouterContextProvider({ router, children, ...rest }) {
4
+ // Allow the router to update options on the router instance
5
+ router.update({
6
+ ...router.options,
7
+ ...rest,
8
+ context: {
9
+ ...router.options.context,
10
+ ...rest.context,
11
+ },
12
+ });
13
+ const routerContext = getRouterContext();
14
+ const provider = (<routerContext.Provider value={router}>
15
+ {children()}
16
+ </routerContext.Provider>);
17
+ if (router.options.Wrap) {
18
+ return <router.options.Wrap>{provider}</router.options.Wrap>;
19
+ }
20
+ return provider;
21
+ }
22
+ export function RouterProvider({ router, ...rest }) {
23
+ return (<RouterContextProvider router={router} {...rest}>
24
+ {() => <Matches />}
25
+ </RouterContextProvider>);
26
+ }
27
+ //# sourceMappingURL=RouterProvider.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterProvider.jsx","sourceRoot":"","sources":["../../src/RouterProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AASlD,MAAM,UAAU,qBAAqB,CAGnC,EACA,MAAM,EACN,QAAQ,EACR,GAAG,IAAI,EAGR;IACC,4DAA4D;IAC5D,MAAM,CAAC,MAAM,CAAC;QACZ,GAAG,MAAM,CAAC,OAAO;QACjB,GAAG,IAAI;QACP,OAAO,EAAE;YACP,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;YACzB,GAAG,IAAI,CAAC,OAAO;SAChB;KACK,CAAC,CAAA;IAET,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,MAAM,QAAQ,GAAG,CACf,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAmB,CAAC,CACjD;MAAA,CAAC,QAAQ,EAAE,CACb;IAAA,EAAE,aAAa,CAAC,QAAQ,CAAC,CAC1B,CAAA;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAG5B,EAAE,MAAM,EAAE,GAAG,IAAI,EAAqC;IACtD,OAAO,CACL,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAC9C;MAAA,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,AAAD,EAAG,CACpB;IAAA,EAAE,qBAAqB,CAAC,CACzB,CAAA;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function SafeFragment(props: any): import("solid-js").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export function SafeFragment(props) {
2
+ return <>{props.children}</>;
3
+ }
4
+ //# sourceMappingURL=SafeFragment.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeFragment.jsx","sourceRoot":"","sources":["../../src/SafeFragment.tsx"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,KAAU;IACrC,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function ScriptOnce({ children, log, }: {
2
+ children: string;
3
+ log?: boolean;
4
+ sync?: boolean;
5
+ }): import("solid-js").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import jsesc from 'jsesc';
2
+ export function ScriptOnce({ children, log, }) {
3
+ if (typeof document !== 'undefined') {
4
+ return null;
5
+ }
6
+ return (<script class="tsr-once" innerHTML={[
7
+ children,
8
+ (log ?? true) && process.env.NODE_ENV === 'development'
9
+ ? `console.info(\`Injected From Server:
10
+ ${jsesc(children.toString(), { quotes: 'backtick' })}\`)`
11
+ : '',
12
+ 'if (typeof __TSR_SSR__ !== "undefined") __TSR_SSR__.cleanScripts()',
13
+ ]
14
+ .filter(Boolean)
15
+ .join('\n')}/>);
16
+ }
17
+ //# sourceMappingURL=ScriptOnce.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptOnce.jsx","sourceRoot":"","sources":["../../src/ScriptOnce.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,GAAG,GAKJ;IACC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,CAAC,MAAM,CACL,KAAK,CAAC,UAAU,CAChB,SAAS,CAAC,CAAC;YACT,QAAQ;YACR,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;gBACrD,CAAC,CAAC;EACV,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,KAAK;gBAC/C,CAAC,CAAC,EAAE;YACN,oEAAoE;SACrE;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC,EACd,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const Scripts: () => import("solid-js").JSX.Element;
@@ -0,0 +1,49 @@
1
+ import { Asset } from './Asset';
2
+ import { useRouterState } from './useRouterState';
3
+ import { useRouter } from './useRouter';
4
+ export const Scripts = () => {
5
+ const router = useRouter();
6
+ const assetScripts = useRouterState({
7
+ select: (state) => {
8
+ const assetScripts = [];
9
+ const manifest = router.ssr?.manifest;
10
+ if (!manifest) {
11
+ return [];
12
+ }
13
+ state.matches
14
+ .map((match) => router.looseRoutesById[match.routeId])
15
+ .forEach((route) => manifest.routes[route.id]?.assets
16
+ ?.filter((d) => d.tag === 'script')
17
+ .forEach((asset) => {
18
+ assetScripts.push({
19
+ tag: 'script',
20
+ attrs: asset.attrs,
21
+ children: asset.children,
22
+ });
23
+ }));
24
+ return assetScripts;
25
+ },
26
+ });
27
+ const scripts = useRouterState({
28
+ select: (state) => ({
29
+ scripts: state.matches
30
+ .map((match) => match.scripts)
31
+ .flat(1)
32
+ .filter(Boolean).map(({ children, ...script }) => ({
33
+ tag: 'script',
34
+ attrs: {
35
+ ...script,
36
+ },
37
+ children,
38
+ })),
39
+ }),
40
+ });
41
+ const allScripts = [
42
+ ...scripts().scripts,
43
+ ...assetScripts(),
44
+ ];
45
+ return (<>
46
+ {allScripts.map((asset, i) => (<Asset {...asset}/>))}
47
+ </>);
48
+ };
49
+ //# sourceMappingURL=Scripts.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scripts.jsx","sourceRoot":"","sources":["../../src/Scripts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,YAAY,GAAG,cAAc,CAAC;QAClC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,YAAY,GAA4B,EAAE,CAAA;YAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAA;YAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,EAAE,CAAA;YACX,CAAC;YAED,KAAK,CAAC,OAAO;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;iBACtD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM;gBAC/B,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;iBAClC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,YAAY,CAAC,IAAI,CAAC;oBAChB,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBAClB,CAAC,CAAA;YACX,CAAC,CAAC,CACL,CAAA;YAEH,OAAO,YAAY,CAAA;QACrB,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,cAAc,CAAC;QAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClB,OAAO,EACL,KAAK,CAAC,OAAO;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAQ,CAAC;iBAC9B,IAAI,CAAC,CAAC,CAAC;iBACP,MAAM,CAAC,OAAO,CAClB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE;oBACL,GAAG,MAAM;iBACV;gBACD,QAAQ;aACT,CAAC,CAAC;SACJ,CAAC;KACH,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO,EAAE,CAAC,OAAO;QACpB,GAAG,YAAY,EAAE;KACS,CAAA;IAE5B,OAAO,CACL,EACE;MAAA,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAG,CACrB,CAAC,CACJ;IAAA,GAAG,CACJ,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { ScrollRestorationOptions } from './scroll-restoration';
2
+ import type { ParsedLocation } from '@tanstack/router-core';
3
+ /**
4
+ * @deprecated use createRouter's `scrollRestoration` option instead
5
+ */
6
+ export declare function ScrollRestoration(_props: ScrollRestorationOptions): null;
7
+ export declare function useElementScrollRestoration(options: ({
8
+ id: string;
9
+ getElement?: () => Element | undefined | null;
10
+ } | {
11
+ id?: string;
12
+ getElement: () => Element | undefined | null;
13
+ }) & {
14
+ getKey?: (location: ParsedLocation) => string;
15
+ }): import("./scroll-restoration").ScrollRestorationEntry | undefined;
@@ -0,0 +1,36 @@
1
+ import { useRouter } from './useRouter';
2
+ import { defaultGetScrollRestorationKey, getCssSelector, scrollRestorationCache, setupScrollRestoration, } from './scroll-restoration';
3
+ function useScrollRestoration() {
4
+ const router = useRouter();
5
+ setupScrollRestoration(router, true);
6
+ }
7
+ /**
8
+ * @deprecated use createRouter's `scrollRestoration` option instead
9
+ */
10
+ export function ScrollRestoration(_props) {
11
+ useScrollRestoration();
12
+ if (process.env.NODE_ENV === 'development') {
13
+ console.warn("The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.");
14
+ }
15
+ return null;
16
+ }
17
+ export function useElementScrollRestoration(options) {
18
+ useScrollRestoration();
19
+ const router = useRouter();
20
+ const getKey = options.getKey || defaultGetScrollRestorationKey;
21
+ let elementSelector = '';
22
+ if (options.id) {
23
+ elementSelector = `[data-scroll-restoration-id="${options.id}"]`;
24
+ }
25
+ else {
26
+ const element = options.getElement?.();
27
+ if (!element) {
28
+ return;
29
+ }
30
+ elementSelector = getCssSelector(element);
31
+ }
32
+ const restoreKey = getKey(router.latestLocation);
33
+ const byKey = scrollRestorationCache.state[restoreKey];
34
+ return byKey?.[elementSelector];
35
+ }
36
+ //# sourceMappingURL=ScrollRestoration.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollRestoration.jsx","sourceRoot":"","sources":["../../src/ScrollRestoration.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA;AAI7B,SAAS,oBAAoB;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAgC;IAChE,oBAAoB,EAAE,CAAA;IAEtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CACV,uGAAuG,CACxG,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAWC;IAED,oBAAoB,EAAE,CAAA;IAEtB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,8BAA8B,CAAA;IAE/D,IAAI,eAAe,GAAG,EAAE,CAAA;IAExB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,eAAe,GAAG,gCAAgC,OAAO,CAAC,EAAE,IAAI,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,CAAA;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QACD,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACtD,OAAO,KAAK,EAAE,CAAC,eAAe,CAAC,CAAA;AACjC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function Transitioner(): null;
@@ -0,0 +1,112 @@
1
+ import * as Solid from 'solid-js';
2
+ import { getLocationChangeInfo, trimPathRight } from '@tanstack/router-core';
3
+ import { useRouter } from './useRouter';
4
+ import { useRouterState } from './useRouterState';
5
+ import { usePrevious } from './utils';
6
+ export function Transitioner() {
7
+ const router = useRouter();
8
+ let mountLoadForRouter = { router, mounted: false };
9
+ const isLoading = useRouterState({
10
+ select: ({ isLoading }) => isLoading,
11
+ });
12
+ const [isTransitioning, setIsTransitioning] = Solid.createSignal(false);
13
+ // Track pending state changes
14
+ const hasPendingMatches = useRouterState({
15
+ select: (s) => s.matches.some((d) => d.status === 'pending'),
16
+ });
17
+ const previousIsLoading = usePrevious(isLoading);
18
+ const isAnyPending = () => isLoading() || isTransitioning() || hasPendingMatches();
19
+ const previousIsAnyPending = usePrevious(isAnyPending);
20
+ const isPagePending = () => isLoading() || hasPendingMatches();
21
+ const previousIsPagePending = usePrevious(isPagePending);
22
+ if (!router.isServer) {
23
+ router.startSolidTransition = (fn) => {
24
+ setIsTransitioning(true);
25
+ fn();
26
+ setIsTransitioning(false);
27
+ };
28
+ }
29
+ // Subscribe to location changes
30
+ // and try to load the new location
31
+ Solid.onMount(() => {
32
+ const unsub = router.history.subscribe(router.load);
33
+ const nextLocation = router.buildLocation({
34
+ to: router.latestLocation.pathname,
35
+ search: true,
36
+ params: true,
37
+ hash: true,
38
+ state: true,
39
+ _includeValidateSearch: true,
40
+ });
41
+ if (trimPathRight(router.latestLocation.href) !==
42
+ trimPathRight(nextLocation.href)) {
43
+ router.commitLocation({ ...nextLocation, replace: true });
44
+ }
45
+ Solid.onCleanup(() => {
46
+ unsub();
47
+ });
48
+ });
49
+ // Try to load the initial location
50
+ Solid.createRenderEffect(() => {
51
+ Solid.untrack(() => {
52
+ if ((typeof window !== 'undefined' && router.clientSsr) ||
53
+ (mountLoadForRouter.router === router && mountLoadForRouter.mounted)) {
54
+ return;
55
+ }
56
+ mountLoadForRouter = { router, mounted: true };
57
+ const tryLoad = async () => {
58
+ try {
59
+ await router.load();
60
+ }
61
+ catch (err) {
62
+ console.error(err);
63
+ }
64
+ };
65
+ tryLoad();
66
+ });
67
+ });
68
+ Solid.createRenderEffect(Solid.on([previousIsLoading, isLoading], ([previousIsLoading, isLoading]) => {
69
+ if (previousIsLoading.previous && !isLoading) {
70
+ router.emit({
71
+ type: 'onLoad',
72
+ ...getLocationChangeInfo(router.state),
73
+ });
74
+ }
75
+ }));
76
+ Solid.createRenderEffect(Solid.on([isPagePending, previousIsPagePending], ([isPagePending, previousIsPagePending]) => {
77
+ // emit onBeforeRouteMount
78
+ if (previousIsPagePending.previous && !isPagePending) {
79
+ router.emit({
80
+ type: 'onBeforeRouteMount',
81
+ ...getLocationChangeInfo(router.state),
82
+ });
83
+ }
84
+ }));
85
+ Solid.createRenderEffect(Solid.on([isAnyPending, previousIsAnyPending], ([isAnyPending, previousIsAnyPending]) => {
86
+ // The router was pending and now it's not
87
+ if (previousIsAnyPending.previous && !isAnyPending) {
88
+ router.emit({
89
+ type: 'onResolved',
90
+ ...getLocationChangeInfo(router.state),
91
+ });
92
+ router.__store.setState((s) => ({
93
+ ...s,
94
+ status: 'idle',
95
+ resolvedLocation: s.location,
96
+ }));
97
+ if (typeof document !== 'undefined' &&
98
+ document.querySelector) {
99
+ const hashScrollIntoViewOptions = router.state.location.state.__hashScrollIntoViewOptions ?? true;
100
+ if (hashScrollIntoViewOptions &&
101
+ router.state.location.hash !== '') {
102
+ const el = document.getElementById(router.state.location.hash);
103
+ if (el) {
104
+ el.scrollIntoView(hashScrollIntoViewOptions);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }));
110
+ return null;
111
+ }
112
+ //# sourceMappingURL=Transitioner.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import * as Solid from 'solid-js';
2
+ import type { DeferredPromise } from '@tanstack/router-core';
3
+ import type { SolidNode } from './route';
4
+ export type AwaitOptions<T> = {
5
+ promise: Promise<T>;
6
+ };
7
+ export declare function useAwaited<T>({ promise: _promise, }: AwaitOptions<T>): [T, DeferredPromise<T>];
8
+ export declare function Await<T>(props: AwaitOptions<T> & {
9
+ fallback?: SolidNode;
10
+ children: (result: T) => SolidNode;
11
+ }): Solid.JSX.Element;
@@ -0,0 +1,24 @@
1
+ import * as Solid from 'solid-js';
2
+ import { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core';
3
+ export function useAwaited({ promise: _promise, }) {
4
+ const promise = defer(_promise);
5
+ if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {
6
+ throw promise;
7
+ }
8
+ if (promise[TSR_DEFERRED_PROMISE].status === 'error') {
9
+ throw promise[TSR_DEFERRED_PROMISE].error;
10
+ }
11
+ return [promise[TSR_DEFERRED_PROMISE].data, promise];
12
+ }
13
+ export function Await(props) {
14
+ const inner = <AwaitInner {...props}/>;
15
+ if (props.fallback) {
16
+ return <Solid.Suspense fallback={props.fallback}>{inner}</Solid.Suspense>;
17
+ }
18
+ return inner;
19
+ }
20
+ function AwaitInner(props) {
21
+ const [data] = useAwaited(props);
22
+ return props.children(data);
23
+ }
24
+ //# sourceMappingURL=awaited.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaited.jsx","sourceRoot":"","sources":["../../src/awaited.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAQnE,MAAM,UAAU,UAAU,CAAI,EAC5B,OAAO,EAAE,QAAQ,GACD;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE/B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,OAAO,CAAA;IACf,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACrD,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,KAGC;IAED,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;IACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CACjB,KAGC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAEhC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { UseParamsRoute } from './useParams';
2
+ import type { UseMatchRoute } from './useMatch';
3
+ import type { UseSearchRoute } from './useSearch';
4
+ import type { AnyContext, AnyPathParams, AnyValidator, Constrain, FileRoutesByPath, ResolveParams, RouteById, RouteIds } from '@tanstack/router-core';
5
+ import type { AnyRoute, FileBaseRouteOptions, Route, RouteConstraints, RouteLoaderFn, UpdatableRouteOptions } from './route';
6
+ import type { RegisteredRouter } from './router';
7
+ import type { UseLoaderDepsRoute } from './useLoaderDeps';
8
+ import type { UseLoaderDataRoute } from './useLoaderData';
9
+ import type { UseRouteContextRoute } from './useRouteContext';
10
+ export declare function createFileRoute<TFilePath extends keyof FileRoutesByPath, TParentRoute extends AnyRoute = FileRoutesByPath[TFilePath]['parentRoute'], TId extends RouteConstraints['TId'] = FileRoutesByPath[TFilePath]['id'], TPath extends RouteConstraints['TPath'] = FileRoutesByPath[TFilePath]['path'], TFullPath extends RouteConstraints['TFullPath'] = FileRoutesByPath[TFilePath]['fullPath']>(path: TFilePath): FileRoute<TFilePath, TParentRoute, TId, TPath, TFullPath>['createRoute'];
11
+ /**
12
+ @deprecated It's no longer recommended to use the `FileRoute` class directly.
13
+ Instead, use `createFileRoute('/path/to/file')(options)` to create a file route.
14
+ */
15
+ export declare class FileRoute<TFilePath extends keyof FileRoutesByPath, TParentRoute extends AnyRoute = FileRoutesByPath[TFilePath]['parentRoute'], TId extends RouteConstraints['TId'] = FileRoutesByPath[TFilePath]['id'], TPath extends RouteConstraints['TPath'] = FileRoutesByPath[TFilePath]['path'], TFullPath extends RouteConstraints['TFullPath'] = FileRoutesByPath[TFilePath]['fullPath']> {
16
+ path: TFilePath;
17
+ silent?: boolean;
18
+ constructor(path: TFilePath, _opts?: {
19
+ silent: boolean;
20
+ });
21
+ createRoute: <TSearchValidator = undefined, TParams = ResolveParams<TPath>, TRouteContextFn = AnyContext, TBeforeLoadFn = AnyContext, TLoaderDeps extends Record<string, any> = {}, TLoaderFn = undefined, TChildren = unknown>(options?: FileBaseRouteOptions<TParentRoute, TId, TPath, TSearchValidator, TParams, TLoaderDeps, TLoaderFn, AnyContext, TRouteContextFn, TBeforeLoadFn> & UpdatableRouteOptions<TParentRoute, TId, TFullPath, TParams, TSearchValidator, TLoaderFn, TLoaderDeps, AnyContext, TRouteContextFn, TBeforeLoadFn>) => Route<TParentRoute, TPath, TFullPath, TFilePath, TId, TSearchValidator, TParams, AnyContext, TRouteContextFn, TBeforeLoadFn, TLoaderDeps, TLoaderFn, TChildren>;
22
+ }
23
+ /**
24
+ @deprecated It's recommended not to split loaders into separate files.
25
+ Instead, place the loader function in the the main route file, inside the
26
+ `createFileRoute('/path/to/file)(options)` options.
27
+ */
28
+ export declare function FileRouteLoader<TFilePath extends keyof FileRoutesByPath, TRoute extends FileRoutesByPath[TFilePath]['preLoaderRoute']>(_path: TFilePath): <TLoaderFn>(loaderFn: Constrain<TLoaderFn, RouteLoaderFn<TRoute['parentRoute'], TRoute['types']['id'], TRoute['types']['params'], TRoute['types']['loaderDeps'], TRoute['types']['routerContext'], TRoute['types']['routeContextFn'], TRoute['types']['beforeLoadFn']>>) => TLoaderFn;
29
+ export type LazyRouteOptions = Pick<UpdatableRouteOptions<AnyRoute, string, string, AnyPathParams, AnyValidator, {}, AnyContext, AnyContext, AnyContext, AnyContext>, 'component' | 'errorComponent' | 'pendingComponent' | 'notFoundComponent'>;
30
+ export declare class LazyRoute<TRoute extends AnyRoute> {
31
+ options: {
32
+ id: string;
33
+ } & LazyRouteOptions;
34
+ constructor(opts: {
35
+ id: string;
36
+ } & LazyRouteOptions);
37
+ useMatch: UseMatchRoute<TRoute['id']>;
38
+ useRouteContext: UseRouteContextRoute<TRoute['id']>;
39
+ useSearch: UseSearchRoute<TRoute['id']>;
40
+ useParams: UseParamsRoute<TRoute['id']>;
41
+ useLoaderDeps: UseLoaderDepsRoute<TRoute['id']>;
42
+ useLoaderData: UseLoaderDataRoute<TRoute['id']>;
43
+ useNavigate: () => import("./useNavigate").UseNavigateResult<string>;
44
+ }
45
+ export declare function createLazyRoute<TId extends RouteIds<RegisteredRouter['routeTree']>, TRoute extends AnyRoute = RouteById<RegisteredRouter['routeTree'], TId>>(id: TId): (opts: LazyRouteOptions) => LazyRoute<TRoute>;
46
+ export declare function createLazyFileRoute<TFilePath extends keyof FileRoutesByPath, TRoute extends FileRoutesByPath[TFilePath]['preLoaderRoute']>(id: TFilePath): (opts: LazyRouteOptions) => LazyRoute<TRoute>;
@@ -0,0 +1,85 @@
1
+ import warning from 'tiny-warning';
2
+ import { createRoute } from './route';
3
+ import { useMatch } from './useMatch';
4
+ import { useLoaderDeps } from './useLoaderDeps';
5
+ import { useLoaderData } from './useLoaderData';
6
+ import { useSearch } from './useSearch';
7
+ import { useParams } from './useParams';
8
+ import { useNavigate } from './useNavigate';
9
+ export function createFileRoute(path) {
10
+ return new FileRoute(path, {
11
+ silent: true,
12
+ }).createRoute;
13
+ }
14
+ /**
15
+ @deprecated It's no longer recommended to use the `FileRoute` class directly.
16
+ Instead, use `createFileRoute('/path/to/file')(options)` to create a file route.
17
+ */
18
+ export class FileRoute {
19
+ constructor(path, _opts) {
20
+ this.path = path;
21
+ this.createRoute = (options) => {
22
+ warning(this.silent, 'FileRoute is deprecated and will be removed in the next major version. Use the createFileRoute(path)(options) function instead.');
23
+ const route = createRoute(options);
24
+ route.isRoot = false;
25
+ return route;
26
+ };
27
+ this.silent = _opts?.silent;
28
+ }
29
+ }
30
+ /**
31
+ @deprecated It's recommended not to split loaders into separate files.
32
+ Instead, place the loader function in the the main route file, inside the
33
+ `createFileRoute('/path/to/file)(options)` options.
34
+ */
35
+ export function FileRouteLoader(_path) {
36
+ warning(false, `FileRouteLoader is deprecated and will be removed in the next major version. Please place the loader function in the the main route file, inside the \`createFileRoute('/path/to/file')(options)\` options`);
37
+ return (loaderFn) => loaderFn;
38
+ }
39
+ export class LazyRoute {
40
+ constructor(opts) {
41
+ this.useMatch = (opts) => {
42
+ return useMatch({
43
+ select: opts?.select,
44
+ from: this.options.id,
45
+ });
46
+ };
47
+ this.useRouteContext = (opts) => {
48
+ return useMatch({
49
+ from: this.options.id,
50
+ select: (d) => (opts?.select ? opts.select(d.context) : d.context),
51
+ });
52
+ };
53
+ this.useSearch = (opts) => {
54
+ return useSearch({
55
+ select: opts?.select,
56
+ from: this.options.id,
57
+ });
58
+ };
59
+ this.useParams = (opts) => {
60
+ return useParams({
61
+ select: opts?.select,
62
+ from: this.options.id,
63
+ });
64
+ };
65
+ this.useLoaderDeps = (opts) => {
66
+ return useLoaderDeps({ ...opts, from: this.options.id });
67
+ };
68
+ this.useLoaderData = (opts) => {
69
+ return useLoaderData({ ...opts, from: this.options.id });
70
+ };
71
+ this.useNavigate = () => {
72
+ return useNavigate({ from: this.options.id });
73
+ };
74
+ this.options = opts;
75
+ }
76
+ }
77
+ export function createLazyRoute(id) {
78
+ return (opts) => {
79
+ return new LazyRoute({ id: id, ...opts });
80
+ };
81
+ }
82
+ export function createLazyFileRoute(id) {
83
+ return (opts) => new LazyRoute({ id, ...opts });
84
+ }
85
+ //# sourceMappingURL=fileRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileRoute.js","sourceRoot":"","sources":["../../src/fileRoute.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AA4B3C,MAAM,UAAU,eAAe,CAQ7B,IAAe;IAEf,OAAO,IAAI,SAAS,CAAiD,IAAI,EAAE;QACzE,MAAM,EAAE,IAAI;KACb,CAAC,CAAC,WAAW,CAAA;AAChB,CAAC;AAED;;;EAGE;AACF,MAAM,OAAO,SAAS;IAUpB,YACS,IAAe,EACtB,KAA2B;QADpB,SAAI,GAAJ,IAAI,CAAW;QAMxB,gBAAW,GAAG,CASZ,OAuBG,EAeH,EAAE;YACF,OAAO,CACL,IAAI,CAAC,MAAM,EACX,iIAAiI,CAClI,CAAA;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAc,CAAC,CACxC;YAAC,KAAa,CAAC,MAAM,GAAG,KAAK,CAAA;YAC9B,OAAO,KAAY,CAAA;QACrB,CAAC,CAAA;QA1DC,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,MAAM,CAAA;IAC7B,CAAC;CA0DF;AAED;;;;EAIE;AACF,MAAM,UAAU,eAAe,CAI7B,KAAgB;IAehB,OAAO,CACL,KAAK,EACL,4MAA4M,CAC7M,CAAA;IACD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAe,CAAA;AACtC,CAAC;AAkBD,MAAM,OAAO,SAAS;IAKpB,YACE,IAEoB;QAKtB,aAAQ,GAAgC,CAAC,IAAI,EAAE,EAAE;YAC/C,OAAO,QAAQ,CAAC;gBACd,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;aACf,CAAQ,CAAA;QAClB,CAAC,CAAA;QAED,oBAAe,GAAuC,CAAC,IAAI,EAAE,EAAE;YAC7D,OAAO,QAAQ,CAAC;gBACd,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;gBACrB,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACxE,CAAQ,CAAA;QACX,CAAC,CAAA;QAED,cAAS,GAAiC,CAAC,IAAI,EAAE,EAAE;YACjD,OAAO,SAAS,CAAC;gBACf,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;aACf,CAAQ,CAAA;QAClB,CAAC,CAAA;QAED,cAAS,GAAiC,CAAC,IAAI,EAAE,EAAE;YACjD,OAAO,SAAS,CAAC;gBACf,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;aACf,CAAQ,CAAA;QAClB,CAAC,CAAA;QAED,kBAAa,GAAqC,CAAC,IAAI,EAAE,EAAE;YACzD,OAAO,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAS,CAAC,CAAA;QACjE,CAAC,CAAA;QAED,kBAAa,GAAqC,CAAC,IAAI,EAAE,EAAE;YACzD,OAAO,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAS,CAAC,CAAA;QACjE,CAAC,CAAA;QAED,gBAAW,GAAG,GAAG,EAAE;YACjB,OAAO,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAC/C,CAAC,CAAA;QAzCC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;CAyCF;AAED,MAAM,UAAU,eAAe,CAG7B,EAAO;IACP,OAAO,CAAC,IAAsB,EAAE,EAAE;QAChC,OAAO,IAAI,SAAS,CAAS,EAAE,EAAE,EAAE,EAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAGjC,EAAa;IACb,OAAO,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,SAAS,CAAS,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;AAC3E,CAAC"}
@@ -0,0 +1,8 @@
1
+ declare module '@tanstack/history' {
2
+ interface HistoryState {
3
+ __tempLocation?: HistoryLocation;
4
+ __tempKey?: string;
5
+ __hashScrollIntoViewOptions?: boolean | ScrollIntoViewOptions;
6
+ }
7
+ }
8
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=history.js.map