@tanstack/solid-router 2.0.0-alpha.1 → 2.0.0-alpha.3

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 (207) hide show
  1. package/dist/cjs/Asset.cjs +124 -167
  2. package/dist/cjs/Asset.cjs.map +1 -1
  3. package/dist/cjs/CatchBoundary.cjs +52 -68
  4. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  5. package/dist/cjs/ClientOnly.cjs +61 -39
  6. package/dist/cjs/ClientOnly.cjs.map +1 -1
  7. package/dist/cjs/HeadContent.cjs +35 -27
  8. package/dist/cjs/HeadContent.cjs.map +1 -1
  9. package/dist/cjs/HeadContent.dev.cjs +48 -41
  10. package/dist/cjs/HeadContent.dev.cjs.map +1 -1
  11. package/dist/cjs/Match.cjs +367 -442
  12. package/dist/cjs/Match.cjs.map +1 -1
  13. package/dist/cjs/Matches.cjs +114 -158
  14. package/dist/cjs/Matches.cjs.map +1 -1
  15. package/dist/cjs/RouterProvider.cjs +29 -41
  16. package/dist/cjs/RouterProvider.cjs.map +1 -1
  17. package/dist/cjs/SafeFragment.cjs +7 -5
  18. package/dist/cjs/SafeFragment.cjs.map +1 -1
  19. package/dist/cjs/ScriptOnce.cjs +20 -22
  20. package/dist/cjs/ScriptOnce.cjs.map +1 -1
  21. package/dist/cjs/Scripts.cjs +43 -58
  22. package/dist/cjs/Scripts.cjs.map +1 -1
  23. package/dist/cjs/ScrollRestoration.cjs +26 -28
  24. package/dist/cjs/ScrollRestoration.cjs.map +1 -1
  25. package/dist/cjs/Transitioner.cjs +91 -124
  26. package/dist/cjs/Transitioner.cjs.map +1 -1
  27. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  28. package/dist/cjs/awaited.cjs +31 -53
  29. package/dist/cjs/awaited.cjs.map +1 -1
  30. package/dist/cjs/fileRoute.cjs +96 -91
  31. package/dist/cjs/fileRoute.cjs.map +1 -1
  32. package/dist/cjs/fileRoute.d.cts +2 -2
  33. package/dist/cjs/headContentUtils.cjs +132 -170
  34. package/dist/cjs/headContentUtils.cjs.map +1 -1
  35. package/dist/cjs/index.cjs +245 -176
  36. package/dist/cjs/index.dev.cjs +245 -176
  37. package/dist/cjs/lazyRouteComponent.cjs +48 -54
  38. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  39. package/dist/cjs/link.cjs +310 -345
  40. package/dist/cjs/link.cjs.map +1 -1
  41. package/dist/cjs/matchContext.cjs +9 -23
  42. package/dist/cjs/matchContext.cjs.map +1 -1
  43. package/dist/cjs/not-found.cjs +26 -34
  44. package/dist/cjs/not-found.cjs.map +1 -1
  45. package/dist/cjs/renderRouteNotFound.cjs +23 -16
  46. package/dist/cjs/renderRouteNotFound.cjs.map +1 -1
  47. package/dist/cjs/route.cjs +200 -215
  48. package/dist/cjs/route.cjs.map +1 -1
  49. package/dist/cjs/router.cjs +18 -16
  50. package/dist/cjs/router.cjs.map +1 -1
  51. package/dist/cjs/routerContext.cjs +8 -22
  52. package/dist/cjs/routerContext.cjs.map +1 -1
  53. package/dist/cjs/scroll-restoration.cjs +25 -35
  54. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  55. package/dist/cjs/ssr/RouterClient.cjs +18 -23
  56. package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
  57. package/dist/cjs/ssr/RouterServer.cjs +10 -10
  58. package/dist/cjs/ssr/RouterServer.cjs.map +1 -1
  59. package/dist/cjs/ssr/client.cjs +2 -4
  60. package/dist/cjs/ssr/defaultRenderHandler.cjs +12 -16
  61. package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -1
  62. package/dist/cjs/ssr/defaultStreamHandler.cjs +13 -18
  63. package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -1
  64. package/dist/cjs/ssr/renderRouterToStream.cjs +26 -54
  65. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
  66. package/dist/cjs/ssr/renderRouterToString.cjs +33 -57
  67. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
  68. package/dist/cjs/ssr/server.cjs +18 -18
  69. package/dist/cjs/useBlocker.cjs +140 -177
  70. package/dist/cjs/useBlocker.cjs.map +1 -1
  71. package/dist/cjs/useBlocker.d.cts +8 -5
  72. package/dist/cjs/useCanGoBack.cjs +6 -5
  73. package/dist/cjs/useCanGoBack.cjs.map +1 -1
  74. package/dist/cjs/useLoaderData.cjs +12 -11
  75. package/dist/cjs/useLoaderData.cjs.map +1 -1
  76. package/dist/cjs/useLoaderDeps.cjs +12 -14
  77. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  78. package/dist/cjs/useLocation.cjs +6 -7
  79. package/dist/cjs/useLocation.cjs.map +1 -1
  80. package/dist/cjs/useMatch.cjs +25 -46
  81. package/dist/cjs/useMatch.cjs.map +1 -1
  82. package/dist/cjs/useNavigate.cjs +20 -38
  83. package/dist/cjs/useNavigate.cjs.map +1 -1
  84. package/dist/cjs/useParams.cjs +14 -13
  85. package/dist/cjs/useParams.cjs.map +1 -1
  86. package/dist/cjs/useRouteContext.cjs +9 -8
  87. package/dist/cjs/useRouteContext.cjs.map +1 -1
  88. package/dist/cjs/useRouter.cjs +13 -26
  89. package/dist/cjs/useRouter.cjs.map +1 -1
  90. package/dist/cjs/useRouterState.cjs +40 -43
  91. package/dist/cjs/useRouterState.cjs.map +1 -1
  92. package/dist/cjs/useSearch.cjs +13 -12
  93. package/dist/cjs/useSearch.cjs.map +1 -1
  94. package/dist/cjs/utils.cjs +57 -49
  95. package/dist/cjs/utils.cjs.map +1 -1
  96. package/dist/esm/Asset.js +122 -166
  97. package/dist/esm/Asset.js.map +1 -1
  98. package/dist/esm/CatchBoundary.js +48 -50
  99. package/dist/esm/CatchBoundary.js.map +1 -1
  100. package/dist/esm/ClientOnly.js +58 -22
  101. package/dist/esm/ClientOnly.js.map +1 -1
  102. package/dist/esm/HeadContent.dev.js +46 -40
  103. package/dist/esm/HeadContent.dev.js.map +1 -1
  104. package/dist/esm/HeadContent.js +33 -26
  105. package/dist/esm/HeadContent.js.map +1 -1
  106. package/dist/esm/Match.js +359 -422
  107. package/dist/esm/Match.js.map +1 -1
  108. package/dist/esm/Matches.js +107 -142
  109. package/dist/esm/Matches.js.map +1 -1
  110. package/dist/esm/RouterProvider.js +26 -40
  111. package/dist/esm/RouterProvider.js.map +1 -1
  112. package/dist/esm/SafeFragment.js +6 -5
  113. package/dist/esm/SafeFragment.js.map +1 -1
  114. package/dist/esm/ScriptOnce.js +18 -21
  115. package/dist/esm/ScriptOnce.js.map +1 -1
  116. package/dist/esm/Scripts.js +42 -58
  117. package/dist/esm/Scripts.js.map +1 -1
  118. package/dist/esm/ScrollRestoration.js +25 -29
  119. package/dist/esm/ScrollRestoration.js.map +1 -1
  120. package/dist/esm/Transitioner.js +87 -105
  121. package/dist/esm/Transitioner.js.map +1 -1
  122. package/dist/esm/awaited.js +28 -36
  123. package/dist/esm/awaited.js.map +1 -1
  124. package/dist/esm/fileRoute.d.ts +2 -2
  125. package/dist/esm/fileRoute.js +90 -92
  126. package/dist/esm/fileRoute.js.map +1 -1
  127. package/dist/esm/headContentUtils.js +129 -152
  128. package/dist/esm/headContentUtils.js.map +1 -1
  129. package/dist/esm/index.dev.js +15 -115
  130. package/dist/esm/index.js +17 -116
  131. package/dist/esm/lazyRouteComponent.js +46 -53
  132. package/dist/esm/lazyRouteComponent.js.map +1 -1
  133. package/dist/esm/link.js +306 -329
  134. package/dist/esm/link.js.map +1 -1
  135. package/dist/esm/matchContext.js +7 -7
  136. package/dist/esm/matchContext.js.map +1 -1
  137. package/dist/esm/not-found.js +23 -33
  138. package/dist/esm/not-found.js.map +1 -1
  139. package/dist/esm/renderRouteNotFound.js +20 -15
  140. package/dist/esm/renderRouteNotFound.js.map +1 -1
  141. package/dist/esm/route.js +193 -218
  142. package/dist/esm/route.js.map +1 -1
  143. package/dist/esm/router.js +17 -17
  144. package/dist/esm/router.js.map +1 -1
  145. package/dist/esm/routerContext.js +6 -5
  146. package/dist/esm/routerContext.js.map +1 -1
  147. package/dist/esm/scroll-restoration.js +23 -34
  148. package/dist/esm/scroll-restoration.js.map +1 -1
  149. package/dist/esm/ssr/RouterClient.js +16 -22
  150. package/dist/esm/ssr/RouterClient.js.map +1 -1
  151. package/dist/esm/ssr/RouterServer.js +9 -10
  152. package/dist/esm/ssr/RouterServer.js.map +1 -1
  153. package/dist/esm/ssr/client.js +1 -4
  154. package/dist/esm/ssr/defaultRenderHandler.js +11 -15
  155. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -1
  156. package/dist/esm/ssr/defaultStreamHandler.js +12 -17
  157. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -1
  158. package/dist/esm/ssr/renderRouterToStream.js +23 -36
  159. package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
  160. package/dist/esm/ssr/renderRouterToString.js +31 -40
  161. package/dist/esm/ssr/renderRouterToString.js.map +1 -1
  162. package/dist/esm/ssr/server.js +3 -10
  163. package/dist/esm/useBlocker.d.ts +8 -5
  164. package/dist/esm/useBlocker.js +136 -159
  165. package/dist/esm/useBlocker.js.map +1 -1
  166. package/dist/esm/useCanGoBack.js +6 -5
  167. package/dist/esm/useCanGoBack.js.map +1 -1
  168. package/dist/esm/useLoaderData.js +12 -11
  169. package/dist/esm/useLoaderData.js.map +1 -1
  170. package/dist/esm/useLoaderDeps.js +12 -14
  171. package/dist/esm/useLoaderDeps.js.map +1 -1
  172. package/dist/esm/useLocation.js +6 -7
  173. package/dist/esm/useLocation.js.map +1 -1
  174. package/dist/esm/useMatch.js +21 -28
  175. package/dist/esm/useMatch.js.map +1 -1
  176. package/dist/esm/useNavigate.js +18 -22
  177. package/dist/esm/useNavigate.js.map +1 -1
  178. package/dist/esm/useParams.js +14 -13
  179. package/dist/esm/useParams.js.map +1 -1
  180. package/dist/esm/useRouteContext.js +9 -8
  181. package/dist/esm/useRouteContext.js.map +1 -1
  182. package/dist/esm/useRouter.js +9 -8
  183. package/dist/esm/useRouter.js.map +1 -1
  184. package/dist/esm/useRouterState.js +38 -42
  185. package/dist/esm/useRouterState.js.map +1 -1
  186. package/dist/esm/useSearch.js +13 -12
  187. package/dist/esm/useSearch.js.map +1 -1
  188. package/dist/esm/utils.js +55 -33
  189. package/dist/esm/utils.js.map +1 -1
  190. package/dist/source/fileRoute.d.ts +2 -2
  191. package/dist/source/useBlocker.d.ts +8 -5
  192. package/dist/source/useBlocker.jsx +2 -2
  193. package/dist/source/useBlocker.jsx.map +1 -1
  194. package/dist/source/useRouterState.jsx +7 -0
  195. package/dist/source/useRouterState.jsx.map +1 -1
  196. package/package.json +3 -3
  197. package/src/fileRoute.ts +2 -2
  198. package/src/useBlocker.tsx +15 -10
  199. package/src/useRouterState.tsx +10 -0
  200. package/dist/cjs/index.cjs.map +0 -1
  201. package/dist/cjs/index.dev.cjs.map +0 -1
  202. package/dist/cjs/ssr/client.cjs.map +0 -1
  203. package/dist/cjs/ssr/server.cjs.map +0 -1
  204. package/dist/esm/index.dev.js.map +0 -1
  205. package/dist/esm/index.js.map +0 -1
  206. package/dist/esm/ssr/client.js.map +0 -1
  207. package/dist/esm/ssr/server.js.map +0 -1
@@ -1,24 +1,21 @@
1
- import { template, effect, setAttribute } from "@solidjs/web";
2
- import { isServer } from "@tanstack/router-core/isServer";
3
1
  import { useRouter } from "./useRouter.js";
2
+ import { effect, setAttribute, template } from "@solidjs/web";
3
+ import { isServer } from "@tanstack/router-core/isServer";
4
+ //#region src/ScriptOnce.tsx
4
5
  var _tmpl$ = /* @__PURE__ */ template(`<script class=$tsr>`);
5
- function ScriptOnce({
6
- children
7
- }) {
8
- const router = useRouter();
9
- if (!(isServer ?? router.isServer)) {
10
- return null;
11
- }
12
- return (() => {
13
- var _el$ = _tmpl$();
14
- _el$.innerHTML = children + ";document.currentScript.remove()";
15
- effect(() => router.options.ssr?.nonce, (_v$) => {
16
- setAttribute(_el$, "nonce", _v$);
17
- });
18
- return _el$;
19
- })();
6
+ function ScriptOnce({ children }) {
7
+ const router = useRouter();
8
+ if (!(isServer ?? router.isServer)) return null;
9
+ return (() => {
10
+ var _el$ = _tmpl$();
11
+ _el$.innerHTML = children + ";document.currentScript.remove()";
12
+ effect(() => router.options.ssr?.nonce, (_v$) => {
13
+ setAttribute(_el$, "nonce", _v$);
14
+ });
15
+ return _el$;
16
+ })();
20
17
  }
21
- export {
22
- ScriptOnce
23
- };
24
- //# sourceMappingURL=ScriptOnce.js.map
18
+ //#endregion
19
+ export { ScriptOnce };
20
+
21
+ //# sourceMappingURL=ScriptOnce.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptOnce.js","sources":["../../src/ScriptOnce.tsx"],"sourcesContent":["import { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\n\nexport function ScriptOnce({\n children,\n}: {\n children: string\n log?: boolean\n sync?: boolean\n}) {\n const router = useRouter()\n if (!(isServer ?? router.isServer)) {\n return null\n }\n return (\n <script\n nonce={router.options.ssr?.nonce}\n class=\"$tsr\"\n innerHTML={children + ';document.currentScript.remove()'}\n />\n )\n}\n"],"names":["ScriptOnce","children","router","useRouter","isServer","_el$","_tmpl$","innerHTML","_$effect","options","ssr","nonce","_v$","_$setAttribute"],"mappings":";;;;AAGO,SAASA,WAAW;AAAA,EACzBC;AAKF,GAAG;AACD,QAAMC,SAASC,UAAAA;AACf,MAAI,EAAEC,YAAYF,OAAOE,WAAW;AAClC,WAAO;AAAA,EACT;AACA,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA;AAAAD,SAAAE,YAIeN,WAAW;AAAkCO,WAAA,MAFjDN,OAAOO,QAAQC,KAAKC,OAAKC,CAAAA,QAAA;AAAAC,mBAAAR,MAAA,SAAAO,GAAA;AAAA,IAAA,CAAA;AAAA,WAAAP;AAAAA,EAAA,GAAA;AAKtC;"}
1
+ {"version":3,"file":"ScriptOnce.js","names":["isServer","useRouter","ScriptOnce","children","log","sync","router","_el$","_tmpl$","innerHTML","_$effect","options","ssr","nonce","_v$","_$setAttribute"],"sources":["../../src/ScriptOnce.tsx"],"sourcesContent":["import { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\n\nexport function ScriptOnce({\n children,\n}: {\n children: string\n log?: boolean\n sync?: boolean\n}) {\n const router = useRouter()\n if (!(isServer ?? router.isServer)) {\n return null\n }\n return (\n <script\n nonce={router.options.ssr?.nonce}\n class=\"$tsr\"\n innerHTML={children + ';document.currentScript.remove()'}\n />\n )\n}\n"],"mappings":";;;;;AAGA,SAAgBE,WAAW,EACzBC,YAKC;CACD,MAAMG,SAASL,WAAW;AAC1B,KAAI,EAAED,YAAYM,OAAON,UACvB,QAAO;AAET,eAAA;EAAA,IAAAO,OAAAC,QAAA;AAAAD,OAAAE,YAIeN,WAAW;AAAkCO,eAFjDJ,OAAOK,QAAQC,KAAKC,QAAKC,QAAA;AAAAC,gBAAAR,MAAA,SAAAO,IAAA;IAAA;AAAA,SAAAP;KAAA"}
@@ -1,60 +1,44 @@
1
- import { createComponent, NoHydration } from "@solidjs/web";
2
- import { Asset } from "./Asset.js";
3
- import { useRouterState } from "./useRouterState.js";
4
1
  import { useRouter } from "./useRouter.js";
5
- const Scripts = () => {
6
- const router = useRouter();
7
- const nonce = router.options.ssr?.nonce;
8
- const assetScripts = useRouterState({
9
- select: (state) => {
10
- const assetScripts2 = [];
11
- const manifest = router.ssr?.manifest;
12
- if (!manifest) {
13
- return [];
14
- }
15
- state.matches.map((match) => router.looseRoutesById[match.routeId]).forEach((route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
16
- assetScripts2.push({
17
- tag: "script",
18
- attrs: {
19
- ...asset.attrs,
20
- nonce
21
- },
22
- children: asset.children
23
- });
24
- }));
25
- return assetScripts2;
26
- }
27
- });
28
- const scripts = useRouterState({
29
- select: (state) => ({
30
- scripts: state.matches.map((match) => match.scripts).flat(1).filter(Boolean).map(({
31
- children,
32
- ...script
33
- }) => ({
34
- tag: "script",
35
- attrs: {
36
- ...script,
37
- nonce
38
- },
39
- children
40
- }))
41
- })
42
- });
43
- let serverBufferedScript = void 0;
44
- if (router.serverSsr) {
45
- serverBufferedScript = router.serverSsr.takeBufferedScripts();
46
- }
47
- const allScripts = [...scripts().scripts, ...assetScripts()];
48
- if (serverBufferedScript) {
49
- allScripts.unshift(serverBufferedScript);
50
- }
51
- return createComponent(NoHydration, {
52
- get children() {
53
- return allScripts.map((asset, _i) => createComponent(Asset, asset));
54
- }
55
- });
56
- };
57
- export {
58
- Scripts
2
+ import { useRouterState } from "./useRouterState.js";
3
+ import { Asset } from "./Asset.js";
4
+ import { NoHydration, createComponent } from "@solidjs/web";
5
+ //#region src/Scripts.tsx
6
+ var Scripts = () => {
7
+ const router = useRouter();
8
+ const nonce = router.options.ssr?.nonce;
9
+ const assetScripts = useRouterState({ select: (state) => {
10
+ const assetScripts = [];
11
+ const manifest = router.ssr?.manifest;
12
+ if (!manifest) return [];
13
+ state.matches.map((match) => router.looseRoutesById[match.routeId]).forEach((route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
14
+ assetScripts.push({
15
+ tag: "script",
16
+ attrs: {
17
+ ...asset.attrs,
18
+ nonce
19
+ },
20
+ children: asset.children
21
+ });
22
+ }));
23
+ return assetScripts;
24
+ } });
25
+ const scripts = useRouterState({ select: (state) => ({ scripts: state.matches.map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
26
+ tag: "script",
27
+ attrs: {
28
+ ...script,
29
+ nonce
30
+ },
31
+ children
32
+ })) }) });
33
+ let serverBufferedScript = void 0;
34
+ if (router.serverSsr) serverBufferedScript = router.serverSsr.takeBufferedScripts();
35
+ const allScripts = [...scripts().scripts, ...assetScripts()];
36
+ if (serverBufferedScript) allScripts.unshift(serverBufferedScript);
37
+ return createComponent(NoHydration, { get children() {
38
+ return allScripts.map((asset, _i) => createComponent(Asset, asset));
39
+ } });
59
40
  };
60
- //# sourceMappingURL=Scripts.js.map
41
+ //#endregion
42
+ export { Scripts };
43
+
44
+ //# sourceMappingURL=Scripts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Scripts.js","sources":["../../src/Scripts.tsx"],"sourcesContent":["import { NoHydration } from '@solidjs/web'\nimport { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const Scripts = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const assetScripts = useRouterState({\n select: (state) => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as any)\n }),\n )\n\n return assetScripts\n },\n })\n\n const scripts = useRouterState({\n select: (state) => ({\n scripts: (\n state.matches\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script',\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n }),\n })\n\n let serverBufferedScript: RouterManagedTag | undefined = undefined\n\n if (router.serverSsr) {\n serverBufferedScript = router.serverSsr.takeBufferedScripts()\n }\n\n const allScripts = [\n ...scripts().scripts,\n ...assetScripts(),\n ] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n allScripts.unshift(serverBufferedScript)\n }\n\n return (\n <NoHydration>\n {allScripts.map((asset, _i) => (\n <Asset {...asset} />\n ))}\n </NoHydration>\n )\n}\n"],"names":["Scripts","router","useRouter","nonce","options","ssr","assetScripts","useRouterState","select","state","manifest","matches","map","match","looseRoutesById","routeId","forEach","route","routes","id","assets","filter","d","tag","asset","push","attrs","children","scripts","flat","Boolean","script","serverBufferedScript","undefined","serverSsr","takeBufferedScripts","allScripts","unshift","_$createComponent","NoHydration","_i","Asset"],"mappings":";;;;AAMO,MAAMA,UAAUA,MAAM;AAC3B,QAAMC,SAASC,UAAAA;AACf,QAAMC,QAAQF,OAAOG,QAAQC,KAAKF;AAClC,QAAMG,eAAeC,eAAe;AAAA,IAClCC,QAASC,CAAAA,UAAU;AACjB,YAAMH,gBAAwC,CAAA;AAC9C,YAAMI,WAAWT,OAAOI,KAAKK;AAE7B,UAAI,CAACA,UAAU;AACb,eAAO,CAAA;AAAA,MACT;AAEAD,YAAME,QACHC,IAAKC,CAAAA,UAAUZ,OAAOa,gBAAgBD,MAAME,OAAO,CAAE,EACrDC,QAASC,CAAAA,UACRP,SAASQ,OAAOD,MAAME,EAAE,GAAGC,QACvBC,OAAQC,CAAAA,MAAMA,EAAEC,QAAQ,QAAQ,EACjCP,QAASQ,CAAAA,UAAU;AAClBlB,sBAAamB,KAAK;AAAA,UAChBF,KAAK;AAAA,UACLG,OAAO;AAAA,YAAE,GAAGF,MAAME;AAAAA,YAAOvB;AAAAA,UAAAA;AAAAA,UACzBwB,UAAUH,MAAMG;AAAAA,QAAAA,CACV;AAAA,MACV,CAAC,CACL;AAEF,aAAOrB;AAAAA,IACT;AAAA,EAAA,CACD;AAED,QAAMsB,UAAUrB,eAAe;AAAA,IAC7BC,QAASC,CAAAA,WAAW;AAAA,MAClBmB,SACEnB,MAAME,QACHC,IAAKC,WAAUA,MAAMe,OAAQ,EAC7BC,KAAK,CAAC,EACNR,OAAOS,OAAO,EACjBlB,IAAI,CAAC;AAAA,QAAEe;AAAAA,QAAU,GAAGI;AAAAA,MAAAA,OAAc;AAAA,QAClCR,KAAK;AAAA,QACLG,OAAO;AAAA,UACL,GAAGK;AAAAA,UACH5B;AAAAA,QAAAA;AAAAA,QAEFwB;AAAAA,MAAAA,EACA;AAAA,IAAA;AAAA,EACJ,CACD;AAED,MAAIK,uBAAqDC;AAEzD,MAAIhC,OAAOiC,WAAW;AACpBF,2BAAuB/B,OAAOiC,UAAUC,oBAAAA;AAAAA,EAC1C;AAEA,QAAMC,aAAa,CACjB,GAAGR,QAAAA,EAAUA,SACb,GAAGtB,cAAc;AAGnB,MAAI0B,sBAAsB;AACxBI,eAAWC,QAAQL,oBAAoB;AAAA,EACzC;AAEA,SAAAM,gBACGC,aAAW;AAAA,IAAA,IAAAZ,WAAA;AAAA,aACTS,WAAWxB,IAAI,CAACY,OAAOgB,OAAEF,gBACvBG,OAAUjB,KAAK,CACjB;AAAA,IAAC;AAAA,EAAA,CAAA;AAGR;"}
1
+ {"version":3,"file":"Scripts.js","names":["NoHydration","Asset","useRouterState","useRouter","RouterManagedTag","Scripts","router","nonce","options","ssr","assetScripts","select","state","Array","manifest","matches","map","match","looseRoutesById","routeId","forEach","route","routes","id","assets","filter","d","tag","asset","push","attrs","children","scripts","flat","Boolean","script","serverBufferedScript","undefined","serverSsr","takeBufferedScripts","allScripts","unshift","_$createComponent","_i"],"sources":["../../src/Scripts.tsx"],"sourcesContent":["import { NoHydration } from '@solidjs/web'\nimport { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const Scripts = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const assetScripts = useRouterState({\n select: (state) => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as any)\n }),\n )\n\n return assetScripts\n },\n })\n\n const scripts = useRouterState({\n select: (state) => ({\n scripts: (\n state.matches\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script',\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n }),\n })\n\n let serverBufferedScript: RouterManagedTag | undefined = undefined\n\n if (router.serverSsr) {\n serverBufferedScript = router.serverSsr.takeBufferedScripts()\n }\n\n const allScripts = [\n ...scripts().scripts,\n ...assetScripts(),\n ] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n allScripts.unshift(serverBufferedScript)\n }\n\n return (\n <NoHydration>\n {allScripts.map((asset, _i) => (\n <Asset {...asset} />\n ))}\n </NoHydration>\n )\n}\n"],"mappings":";;;;;AAMA,IAAaK,gBAAgB;CAC3B,MAAMC,SAASH,WAAW;CAC1B,MAAMI,QAAQD,OAAOE,QAAQC,KAAKF;CAClC,MAAMG,eAAeR,eAAe,EAClCS,SAASC,UAAU;EACjB,MAAMF,eAAwC,EAAE;EAChD,MAAMI,WAAWR,OAAOG,KAAKK;AAE7B,MAAI,CAACA,SACH,QAAO,EAAE;AAGXF,QAAMG,QACHC,KAAKC,UAAUX,OAAOY,gBAAgBD,MAAME,SAAU,CACtDC,SAASC,UACRP,SAASQ,OAAOD,MAAME,KAAKC,QACvBC,QAAQC,MAAMA,EAAEC,QAAQ,SAAS,CAClCP,SAASQ,UAAU;AAClBlB,gBAAamB,KAAK;IAChBF,KAAK;IACLG,OAAO;KAAE,GAAGF,MAAME;KAAOvB;KAAO;IAChCwB,UAAUH,MAAMG;IACjB,CAAQ;IAEf,CAAC;AAEH,SAAOrB;IAEV,CAAC;CAEF,MAAMsB,UAAU9B,eAAe,EAC7BS,SAASC,WAAW,EAClBoB,SACEpB,MAAMG,QACHC,KAAKC,UAAUA,MAAMe,QAAS,CAC9BC,KAAK,EAAE,CACPR,OAAOS,QAAQ,CAClBlB,KAAK,EAAEe,UAAU,GAAGI,cAAc;EAClCR,KAAK;EACLG,OAAO;GACL,GAAGK;GACH5B;GACD;EACDwB;EACD,EAAC,EACH,GACF,CAAC;CAEF,IAAIK,uBAAqDC,KAAAA;AAEzD,KAAI/B,OAAOgC,UACTF,wBAAuB9B,OAAOgC,UAAUC,qBAAqB;CAG/D,MAAMC,aAAa,CACjB,GAAGR,SAAS,CAACA,SACb,GAAGtB,cAAc,CAClB;AAED,KAAI0B,qBACFI,YAAWC,QAAQL,qBAAqB;AAG1C,QAAAM,gBACG1C,aAAW,EAAA,IAAA+B,WAAA;AAAA,SACTS,WAAWxB,KAAKY,OAAOe,OAAED,gBACvBzC,OAAU2B,MACZ,CAAC;IAAA,CAAA"}
@@ -1,36 +1,32 @@
1
- import { defaultGetScrollRestorationKey, getCssSelector, scrollRestorationCache, setupScrollRestoration } from "@tanstack/router-core";
2
1
  import { useRouter } from "./useRouter.js";
2
+ import { defaultGetScrollRestorationKey, getCssSelector, scrollRestorationCache, setupScrollRestoration } from "@tanstack/router-core";
3
+ //#region src/ScrollRestoration.tsx
3
4
  function useScrollRestoration() {
4
- const router = useRouter();
5
- setupScrollRestoration(router, true);
5
+ setupScrollRestoration(useRouter(), true);
6
6
  }
7
+ /**
8
+ * @deprecated use createRouter's `scrollRestoration` option instead
9
+ */
7
10
  function ScrollRestoration(_props) {
8
- useScrollRestoration();
9
- if (process.env.NODE_ENV === "development") {
10
- console.warn("The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.");
11
- }
12
- return null;
11
+ useScrollRestoration();
12
+ if (process.env.NODE_ENV === "development") console.warn("The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.");
13
+ return null;
13
14
  }
14
15
  function useElementScrollRestoration(options) {
15
- useScrollRestoration();
16
- const router = useRouter();
17
- const getKey = options.getKey || defaultGetScrollRestorationKey;
18
- let elementSelector = "";
19
- if (options.id) {
20
- elementSelector = `[data-scroll-restoration-id="${options.id}"]`;
21
- } else {
22
- const element = options.getElement?.();
23
- if (!element) {
24
- return;
25
- }
26
- elementSelector = element instanceof Window ? "window" : getCssSelector(element);
27
- }
28
- const restoreKey = getKey(router.latestLocation);
29
- const byKey = scrollRestorationCache?.state[restoreKey];
30
- return byKey?.[elementSelector];
16
+ useScrollRestoration();
17
+ const router = useRouter();
18
+ const getKey = options.getKey || defaultGetScrollRestorationKey;
19
+ let elementSelector = "";
20
+ if (options.id) elementSelector = `[data-scroll-restoration-id="${options.id}"]`;
21
+ else {
22
+ const element = options.getElement?.();
23
+ if (!element) return;
24
+ elementSelector = element instanceof Window ? "window" : getCssSelector(element);
25
+ }
26
+ const restoreKey = getKey(router.latestLocation);
27
+ return (scrollRestorationCache?.state[restoreKey])?.[elementSelector];
31
28
  }
32
- export {
33
- ScrollRestoration,
34
- useElementScrollRestoration
35
- };
36
- //# sourceMappingURL=ScrollRestoration.js.map
29
+ //#endregion
30
+ export { ScrollRestoration, useElementScrollRestoration };
31
+
32
+ //# sourceMappingURL=ScrollRestoration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollRestoration.js","sources":["../../src/ScrollRestoration.tsx"],"sourcesContent":["import {\n defaultGetScrollRestorationKey,\n getCssSelector,\n scrollRestorationCache,\n setupScrollRestoration,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport type {\n ParsedLocation,\n ScrollRestorationEntry,\n ScrollRestorationOptions,\n} from '@tanstack/router-core'\n\nfunction useScrollRestoration() {\n const router = useRouter()\n setupScrollRestoration(router, true)\n}\n\n/**\n * @deprecated use createRouter's `scrollRestoration` option instead\n */\nexport function ScrollRestoration(_props: ScrollRestorationOptions) {\n useScrollRestoration()\n\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n \"The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.\",\n )\n }\n\n return null\n}\n\nexport function useElementScrollRestoration(\n options: (\n | {\n id: string\n getElement?: () => Window | Element | undefined | null\n }\n | {\n id?: string\n getElement: () => Window | Element | undefined | null\n }\n ) & {\n getKey?: (location: ParsedLocation) => string\n },\n): ScrollRestorationEntry | undefined {\n useScrollRestoration()\n\n const router = useRouter()\n const getKey = options.getKey || defaultGetScrollRestorationKey\n\n let elementSelector = ''\n\n if (options.id) {\n elementSelector = `[data-scroll-restoration-id=\"${options.id}\"]`\n } else {\n const element = options.getElement?.()\n if (!element) {\n return\n }\n elementSelector =\n element instanceof Window ? 'window' : getCssSelector(element)\n }\n\n const restoreKey = getKey(router.latestLocation)\n const byKey = scrollRestorationCache?.state[restoreKey]\n return byKey?.[elementSelector]\n}\n"],"names":["useScrollRestoration","router","useRouter","setupScrollRestoration","ScrollRestoration","_props","process","env","NODE_ENV","console","warn","useElementScrollRestoration","options","getKey","defaultGetScrollRestorationKey","elementSelector","id","element","getElement","Window","getCssSelector","restoreKey","latestLocation","byKey","scrollRestorationCache","state"],"mappings":";;AAaA,SAASA,uBAAuB;AAC9B,QAAMC,SAASC,UAAAA;AACfC,yBAAuBF,QAAQ,IAAI;AACrC;AAKO,SAASG,kBAAkBC,QAAkC;AAClEL,uBAAAA;AAEA,MAAIM,QAAQC,IAAIC,aAAa,eAAe;AAC1CC,YAAQC,KACN,uGACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAASC,4BACdC,SAYoC;AACpCZ,uBAAAA;AAEA,QAAMC,SAASC,UAAAA;AACf,QAAMW,SAASD,QAAQC,UAAUC;AAEjC,MAAIC,kBAAkB;AAEtB,MAAIH,QAAQI,IAAI;AACdD,sBAAkB,gCAAgCH,QAAQI,EAAE;AAAA,EAC9D,OAAO;AACL,UAAMC,UAAUL,QAAQM,aAAAA;AACxB,QAAI,CAACD,SAAS;AACZ;AAAA,IACF;AACAF,sBACEE,mBAAmBE,SAAS,WAAWC,eAAeH,OAAO;AAAA,EACjE;AAEA,QAAMI,aAAaR,OAAOZ,OAAOqB,cAAc;AAC/C,QAAMC,QAAQC,wBAAwBC,MAAMJ,UAAU;AACtD,SAAOE,QAAQR,eAAe;AAChC;"}
1
+ {"version":3,"file":"ScrollRestoration.js","names":["defaultGetScrollRestorationKey","getCssSelector","scrollRestorationCache","setupScrollRestoration","useRouter","ParsedLocation","ScrollRestorationEntry","ScrollRestorationOptions","useScrollRestoration","router","ScrollRestoration","_props","process","env","NODE_ENV","console","warn","useElementScrollRestoration","options","id","getElement","Window","Element","getKey","location","elementSelector","element","restoreKey","latestLocation","byKey","state"],"sources":["../../src/ScrollRestoration.tsx"],"sourcesContent":["import {\n defaultGetScrollRestorationKey,\n getCssSelector,\n scrollRestorationCache,\n setupScrollRestoration,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport type {\n ParsedLocation,\n ScrollRestorationEntry,\n ScrollRestorationOptions,\n} from '@tanstack/router-core'\n\nfunction useScrollRestoration() {\n const router = useRouter()\n setupScrollRestoration(router, true)\n}\n\n/**\n * @deprecated use createRouter's `scrollRestoration` option instead\n */\nexport function ScrollRestoration(_props: ScrollRestorationOptions) {\n useScrollRestoration()\n\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n \"The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.\",\n )\n }\n\n return null\n}\n\nexport function useElementScrollRestoration(\n options: (\n | {\n id: string\n getElement?: () => Window | Element | undefined | null\n }\n | {\n id?: string\n getElement: () => Window | Element | undefined | null\n }\n ) & {\n getKey?: (location: ParsedLocation) => string\n },\n): ScrollRestorationEntry | undefined {\n useScrollRestoration()\n\n const router = useRouter()\n const getKey = options.getKey || defaultGetScrollRestorationKey\n\n let elementSelector = ''\n\n if (options.id) {\n elementSelector = `[data-scroll-restoration-id=\"${options.id}\"]`\n } else {\n const element = options.getElement?.()\n if (!element) {\n return\n }\n elementSelector =\n element instanceof Window ? 'window' : getCssSelector(element)\n }\n\n const restoreKey = getKey(router.latestLocation)\n const byKey = scrollRestorationCache?.state[restoreKey]\n return byKey?.[elementSelector]\n}\n"],"mappings":";;;AAaA,SAASQ,uBAAuB;AAE9BL,wBADeC,WAAW,EACK,KAAK;;;;;AAMtC,SAAgBM,kBAAkBC,QAAkC;AAClEH,uBAAsB;AAEtB,KAAA,QAAA,IAAA,aAA6B,cAC3BO,SAAQC,KACN,wGACD;AAGH,QAAO;;AAGT,SAAgBC,4BACdC,SAYoC;AACpCV,uBAAsB;CAEtB,MAAMC,SAASL,WAAW;CAC1B,MAAMmB,SAASL,QAAQK,UAAUvB;CAEjC,IAAIyB,kBAAkB;AAEtB,KAAIP,QAAQC,GACVM,mBAAkB,gCAAgCP,QAAQC,GAAE;MACvD;EACL,MAAMO,UAAUR,QAAQE,cAAc;AACtC,MAAI,CAACM,QACH;AAEFD,oBACEC,mBAAmBL,SAAS,WAAWpB,eAAeyB,QAAQ;;CAGlE,MAAMC,aAAaJ,OAAOd,OAAOmB,eAAe;AAEhD,SADc1B,wBAAwB4B,MAAMH,eAC7BF"}
@@ -1,110 +1,92 @@
1
- import * as Solid from "solid-js";
2
- import { trimPathRight, getLocationChangeInfo, handleHashScroll } from "@tanstack/router-core";
3
1
  import { useRouter } from "./useRouter.js";
4
2
  import { useRouterState } from "./useRouterState.js";
5
3
  import { usePrevious } from "./utils.js";
4
+ import { getLocationChangeInfo, handleHashScroll, trimPathRight } from "@tanstack/router-core";
5
+ import * as Solid from "solid-js";
6
+ //#region src/Transitioner.tsx
6
7
  function Transitioner() {
7
- const router = useRouter();
8
- let mountLoadForRouter = {
9
- router,
10
- mounted: false
11
- };
12
- const isLoading = useRouterState({
13
- select: ({
14
- isLoading: isLoading2
15
- }) => isLoading2
16
- });
17
- const [isSolidTransitioning] = [() => false];
18
- const hasPendingMatches = useRouterState({
19
- select: (s) => s.matches.some((d) => d.status === "pending")
20
- });
21
- const previousIsLoading = usePrevious(isLoading);
22
- const isAnyPending = () => isLoading() || isSolidTransitioning() || hasPendingMatches();
23
- const previousIsAnyPending = usePrevious(isAnyPending);
24
- const isPagePending = () => isLoading() || hasPendingMatches();
25
- const previousIsPagePending = usePrevious(isPagePending);
26
- router.startTransition = (fn) => {
27
- Solid.runWithOwner(null, fn);
28
- };
29
- Solid.onSettled(() => {
30
- const unsub = router.history.subscribe(router.load);
31
- router.updateLatestLocation();
32
- const nextLocation = router.buildLocation({
33
- to: router.latestLocation.pathname,
34
- search: true,
35
- params: true,
36
- hash: true,
37
- state: true,
38
- _includeValidateSearch: true
39
- });
40
- if (trimPathRight(router.latestLocation.publicHref) !== trimPathRight(nextLocation.publicHref)) {
41
- router.commitLocation({
42
- ...nextLocation,
43
- replace: true
44
- });
45
- }
46
- Solid.onCleanup(() => {
47
- unsub();
48
- });
49
- });
50
- Solid.createTrackedEffect(() => {
51
- Solid.untrack(() => {
52
- if (
53
- // if we are hydrating from SSR, loading is triggered in ssr-client
54
- typeof window !== "undefined" && router.ssr || mountLoadForRouter.router === router && mountLoadForRouter.mounted
55
- ) {
56
- return;
57
- }
58
- mountLoadForRouter = {
59
- router,
60
- mounted: true
61
- };
62
- const tryLoad = async () => {
63
- try {
64
- await router.load();
65
- } catch (err) {
66
- console.error(err);
67
- }
68
- };
69
- tryLoad();
70
- });
71
- });
72
- Solid.createEffect(() => [previousIsLoading(), isLoading()], ([previousIsLoading2, isLoading2]) => {
73
- if (previousIsLoading2.previous && !isLoading2) {
74
- router.emit({
75
- type: "onLoad",
76
- ...getLocationChangeInfo(router.state)
77
- });
78
- }
79
- });
80
- Solid.createEffect(() => [isPagePending(), previousIsPagePending()], ([isPagePending2, previousIsPagePending2]) => {
81
- if (previousIsPagePending2.previous && !isPagePending2) {
82
- router.emit({
83
- type: "onBeforeRouteMount",
84
- ...getLocationChangeInfo(router.state)
85
- });
86
- }
87
- });
88
- Solid.createEffect(() => [isAnyPending(), previousIsAnyPending()], ([isAnyPending2, previousIsAnyPending2]) => {
89
- if (previousIsAnyPending2.previous && !isAnyPending2) {
90
- const changeInfo = getLocationChangeInfo(router.state);
91
- router.emit({
92
- type: "onResolved",
93
- ...changeInfo
94
- });
95
- router.__store.setState((s) => ({
96
- ...s,
97
- status: "idle",
98
- resolvedLocation: s.location
99
- }));
100
- if (changeInfo.hrefChanged) {
101
- handleHashScroll(router);
102
- }
103
- }
104
- });
105
- return null;
8
+ const router = useRouter();
9
+ let mountLoadForRouter = {
10
+ router,
11
+ mounted: false
12
+ };
13
+ const isLoading = useRouterState({ select: ({ isLoading }) => isLoading });
14
+ const [isSolidTransitioning] = [() => false];
15
+ const hasPendingMatches = useRouterState({ select: (s) => s.matches.some((d) => d.status === "pending") });
16
+ const previousIsLoading = usePrevious(isLoading);
17
+ const isAnyPending = () => isLoading() || isSolidTransitioning() || hasPendingMatches();
18
+ const previousIsAnyPending = usePrevious(isAnyPending);
19
+ const isPagePending = () => isLoading() || hasPendingMatches();
20
+ const previousIsPagePending = usePrevious(isPagePending);
21
+ router.startTransition = (fn) => {
22
+ Solid.runWithOwner(null, fn);
23
+ };
24
+ Solid.onSettled(() => {
25
+ const unsub = router.history.subscribe(router.load);
26
+ router.updateLatestLocation();
27
+ const nextLocation = router.buildLocation({
28
+ to: router.latestLocation.pathname,
29
+ search: true,
30
+ params: true,
31
+ hash: true,
32
+ state: true,
33
+ _includeValidateSearch: true
34
+ });
35
+ if (trimPathRight(router.latestLocation.publicHref) !== trimPathRight(nextLocation.publicHref)) router.commitLocation({
36
+ ...nextLocation,
37
+ replace: true
38
+ });
39
+ Solid.onCleanup(() => {
40
+ unsub();
41
+ });
42
+ });
43
+ Solid.createTrackedEffect(() => {
44
+ Solid.untrack(() => {
45
+ if (typeof window !== "undefined" && router.ssr || mountLoadForRouter.router === router && mountLoadForRouter.mounted) return;
46
+ mountLoadForRouter = {
47
+ router,
48
+ mounted: true
49
+ };
50
+ const tryLoad = async () => {
51
+ try {
52
+ await router.load();
53
+ } catch (err) {
54
+ console.error(err);
55
+ }
56
+ };
57
+ tryLoad();
58
+ });
59
+ });
60
+ Solid.createEffect(() => [previousIsLoading(), isLoading()], ([previousIsLoading, isLoading]) => {
61
+ if (previousIsLoading.previous && !isLoading) router.emit({
62
+ type: "onLoad",
63
+ ...getLocationChangeInfo(router.state)
64
+ });
65
+ });
66
+ Solid.createEffect(() => [isPagePending(), previousIsPagePending()], ([isPagePending, previousIsPagePending]) => {
67
+ if (previousIsPagePending.previous && !isPagePending) router.emit({
68
+ type: "onBeforeRouteMount",
69
+ ...getLocationChangeInfo(router.state)
70
+ });
71
+ });
72
+ Solid.createEffect(() => [isAnyPending(), previousIsAnyPending()], ([isAnyPending, previousIsAnyPending]) => {
73
+ if (previousIsAnyPending.previous && !isAnyPending) {
74
+ const changeInfo = getLocationChangeInfo(router.state);
75
+ router.emit({
76
+ type: "onResolved",
77
+ ...changeInfo
78
+ });
79
+ router.__store.setState((s) => ({
80
+ ...s,
81
+ status: "idle",
82
+ resolvedLocation: s.location
83
+ }));
84
+ if (changeInfo.hrefChanged) handleHashScroll(router);
85
+ }
86
+ });
87
+ return null;
106
88
  }
107
- export {
108
- Transitioner
109
- };
110
- //# sourceMappingURL=Transitioner.js.map
89
+ //#endregion
90
+ export { Transitioner };
91
+
92
+ //# sourceMappingURL=Transitioner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n const [isSolidTransitioning] = [() => false]\n\n // Track pending state changes\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === 'pending'),\n })\n\n const previousIsLoading = usePrevious(isLoading)\n\n const isAnyPending = () =>\n isLoading() || isSolidTransitioning() || hasPendingMatches()\n const previousIsAnyPending = usePrevious(isAnyPending)\n\n const isPagePending = () => isLoading() || hasPendingMatches()\n const previousIsPagePending = usePrevious(isPagePending)\n\n router.startTransition = (fn: () => void | Promise<void>) => {\n Solid.runWithOwner(null, fn)\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onSettled(() => {\n const unsub = router.history.subscribe(router.load)\n\n // Refresh latestLocation from the current browser URL before comparing.\n // The URL may have been changed synchronously (e.g. via replaceState) after\n // render() but before this effect ran, so we must not use the stale\n // render-time location here.\n router.updateLatestLocation()\n\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\n // Check if the current URL matches the canonical form.\n // Compare publicHref (browser-facing URL) for consistency with\n // the server-side redirect check in router.beforeLoad.\n if (\n trimPathRight(router.latestLocation.publicHref) !==\n trimPathRight(nextLocation.publicHref)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n Solid.onCleanup(() => {\n unsub()\n })\n })\n\n // Try to load the initial location\n Solid.createTrackedEffect(() => {\n Solid.untrack(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { 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 })\n })\n\n Solid.createEffect(\n () => [previousIsLoading(), isLoading()] as const,\n ([previousIsLoading, isLoading]) => {\n if (previousIsLoading.previous && !isLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n )\n\n Solid.createEffect(\n () => [isPagePending(), previousIsPagePending()] as const,\n ([isPagePending, previousIsPagePending]) => {\n // emit onBeforeRouteMount\n if (previousIsPagePending.previous && !isPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n )\n\n Solid.createEffect(\n () => [isAnyPending(), previousIsAnyPending()] as const,\n ([isAnyPending, previousIsAnyPending]) => {\n if (previousIsAnyPending.previous && !isAnyPending) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n },\n )\n\n return null\n}\n"],"names":["Transitioner","router","useRouter","mountLoadForRouter","mounted","isLoading","useRouterState","select","isSolidTransitioning","hasPendingMatches","s","matches","some","d","status","previousIsLoading","usePrevious","isAnyPending","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","Solid","runWithOwner","onSettled","unsub","history","subscribe","load","updateLatestLocation","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","trimPathRight","publicHref","commitLocation","replace","onCleanup","createTrackedEffect","untrack","window","ssr","tryLoad","err","console","error","createEffect","previous","emit","type","getLocationChangeInfo","changeInfo","__store","setState","resolvedLocation","location","hrefChanged","handleHashScroll"],"mappings":"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"}
1
+ {"version":3,"file":"Transitioner.js","names":["Solid","getLocationChangeInfo","handleHashScroll","trimPathRight","useRouter","useRouterState","usePrevious","Transitioner","router","mountLoadForRouter","mounted","isLoading","select","isSolidTransitioning","hasPendingMatches","s","matches","some","d","status","previousIsLoading","isAnyPending","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","Promise","runWithOwner","onSettled","unsub","history","subscribe","load","updateLatestLocation","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","publicHref","commitLocation","replace","onCleanup","createTrackedEffect","untrack","window","ssr","tryLoad","err","console","error","createEffect","const","previous","emit","type","changeInfo","__store","setState","resolvedLocation","location","hrefChanged"],"sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n const [isSolidTransitioning] = [() => false]\n\n // Track pending state changes\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === 'pending'),\n })\n\n const previousIsLoading = usePrevious(isLoading)\n\n const isAnyPending = () =>\n isLoading() || isSolidTransitioning() || hasPendingMatches()\n const previousIsAnyPending = usePrevious(isAnyPending)\n\n const isPagePending = () => isLoading() || hasPendingMatches()\n const previousIsPagePending = usePrevious(isPagePending)\n\n router.startTransition = (fn: () => void | Promise<void>) => {\n Solid.runWithOwner(null, fn)\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onSettled(() => {\n const unsub = router.history.subscribe(router.load)\n\n // Refresh latestLocation from the current browser URL before comparing.\n // The URL may have been changed synchronously (e.g. via replaceState) after\n // render() but before this effect ran, so we must not use the stale\n // render-time location here.\n router.updateLatestLocation()\n\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\n // Check if the current URL matches the canonical form.\n // Compare publicHref (browser-facing URL) for consistency with\n // the server-side redirect check in router.beforeLoad.\n if (\n trimPathRight(router.latestLocation.publicHref) !==\n trimPathRight(nextLocation.publicHref)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n Solid.onCleanup(() => {\n unsub()\n })\n })\n\n // Try to load the initial location\n Solid.createTrackedEffect(() => {\n Solid.untrack(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { 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 })\n })\n\n Solid.createEffect(\n () => [previousIsLoading(), isLoading()] as const,\n ([previousIsLoading, isLoading]) => {\n if (previousIsLoading.previous && !isLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n )\n\n Solid.createEffect(\n () => [isPagePending(), previousIsPagePending()] as const,\n ([isPagePending, previousIsPagePending]) => {\n // emit onBeforeRouteMount\n if (previousIsPagePending.previous && !isPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n )\n\n Solid.createEffect(\n () => [isAnyPending(), previousIsAnyPending()] as const,\n ([isAnyPending, previousIsAnyPending]) => {\n if (previousIsAnyPending.previous && !isAnyPending) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n },\n )\n\n return null\n}\n"],"mappings":";;;;;;AAUA,SAAgBO,eAAe;CAC7B,MAAMC,SAASJ,WAAW;CAC1B,IAAIK,qBAAqB;EAAED;EAAQE,SAAS;EAAO;CACnD,MAAMC,YAAYN,eAAe,EAC/BO,SAAS,EAAED,gBAAgBA,WAC5B,CAAC;CAEF,MAAM,CAACE,wBAAwB,OAAO,MAAM;CAG5C,MAAMC,oBAAoBT,eAAe,EACvCO,SAASG,MAAMA,EAAEC,QAAQC,MAAMC,MAAMA,EAAEC,WAAW,UAAS,EAC5D,CAAC;CAEF,MAAMC,oBAAoBd,YAAYK,UAAU;CAEhD,MAAMU,qBACJV,WAAW,IAAIE,sBAAsB,IAAIC,mBAAmB;CAC9D,MAAMQ,uBAAuBhB,YAAYe,aAAa;CAEtD,MAAME,sBAAsBZ,WAAW,IAAIG,mBAAmB;CAC9D,MAAMU,wBAAwBlB,YAAYiB,cAAc;AAExDf,QAAOiB,mBAAmBC,OAAmC;AAC3D1B,QAAM4B,aAAa,MAAMF,GAAG;;AAK9B1B,OAAM6B,gBAAgB;EACpB,MAAMC,QAAQtB,OAAOuB,QAAQC,UAAUxB,OAAOyB,KAAK;AAMnDzB,SAAO0B,sBAAsB;EAE7B,MAAMC,eAAe3B,OAAO4B,cAAc;GACxCC,IAAI7B,OAAO8B,eAAeC;GAC1BC,QAAQ;GACRC,QAAQ;GACRC,MAAM;GACNC,OAAO;GACPC,wBAAwB;GACzB,CAAC;AAKF,MACEzC,cAAcK,OAAO8B,eAAeO,WAAW,KAC/C1C,cAAcgC,aAAaU,WAAW,CAEtCrC,QAAOsC,eAAe;GAAE,GAAGX;GAAcY,SAAS;GAAM,CAAC;AAG3D/C,QAAMgD,gBAAgB;AACpBlB,UAAO;IACP;GACF;AAGF9B,OAAMiD,0BAA0B;AAC9BjD,QAAMkD,cAAc;AAClB,OAEG,OAAOC,WAAW,eAAe3C,OAAO4C,OACxC3C,mBAAmBD,WAAWA,UAAUC,mBAAmBC,QAE5D;AAEFD,wBAAqB;IAAED;IAAQE,SAAS;IAAM;GAC9C,MAAM2C,UAAU,YAAY;AAC1B,QAAI;AACF,WAAM7C,OAAOyB,MAAM;aACZqB,KAAK;AACZC,aAAQC,MAAMF,IAAI;;;AAGtBD,YAAS;IACT;GACF;AAEFrD,OAAMyD,mBACE,CAACrC,mBAAmB,EAAET,WAAW,CAAC,GACvC,CAACS,mBAAmBT,eAAe;AAClC,MAAIS,kBAAkBuC,YAAY,CAAChD,UACjCH,QAAOoD,KAAK;GACVC,MAAM;GACN,GAAG5D,sBAAsBO,OAAOmC,MAAK;GACtC,CAAC;GAGP;AAED3C,OAAMyD,mBACE,CAAClC,eAAe,EAAEC,uBAAuB,CAAC,GAC/C,CAACD,eAAeC,2BAA2B;AAE1C,MAAIA,sBAAsBmC,YAAY,CAACpC,cACrCf,QAAOoD,KAAK;GACVC,MAAM;GACN,GAAG5D,sBAAsBO,OAAOmC,MAAK;GACtC,CAAC;GAGP;AAED3C,OAAMyD,mBACE,CAACpC,cAAc,EAAEC,sBAAsB,CAAC,GAC7C,CAACD,cAAcC,0BAA0B;AACxC,MAAIA,qBAAqBqC,YAAY,CAACtC,cAAc;GAClD,MAAMyC,aAAa7D,sBAAsBO,OAAOmC,MAAM;AACtDnC,UAAOoD,KAAK;IACVC,MAAM;IACN,GAAGC;IACJ,CAAC;AAEFtD,UAAOuD,QAAQC,UAAUjD,OAAO;IAC9B,GAAGA;IACHI,QAAQ;IACR8C,kBAAkBlD,EAAEmD;IACrB,EAAE;AAEH,OAAIJ,WAAWK,YACbjE,kBAAiBM,OAAO;;GAI/B;AAED,QAAO"}
@@ -1,43 +1,35 @@
1
+ import { TSR_DEFERRED_PROMISE, defer } from "@tanstack/router-core";
1
2
  import { createComponent } from "@solidjs/web";
2
3
  import * as Solid from "solid-js";
3
- import { defer, TSR_DEFERRED_PROMISE } from "@tanstack/router-core";
4
- function useAwaited({
5
- promise: _promise
6
- }) {
7
- const promise = defer(_promise);
8
- if (promise[TSR_DEFERRED_PROMISE].status === "pending") {
9
- throw promise;
10
- }
11
- if (promise[TSR_DEFERRED_PROMISE].status === "error") {
12
- throw promise[TSR_DEFERRED_PROMISE].error;
13
- }
14
- return [promise[TSR_DEFERRED_PROMISE].data, promise];
4
+ //#region src/awaited.tsx
5
+ function useAwaited({ promise: _promise }) {
6
+ const promise = defer(_promise);
7
+ if (promise[TSR_DEFERRED_PROMISE].status === "pending") throw promise;
8
+ if (promise[TSR_DEFERRED_PROMISE].status === "error") throw promise[TSR_DEFERRED_PROMISE].error;
9
+ return [promise[TSR_DEFERRED_PROMISE].data, promise];
15
10
  }
16
11
  function InnerAwait(props) {
17
- const [data] = useAwaited({
18
- promise: props.promise
19
- });
20
- return props.children(data);
12
+ const [data] = useAwaited({ promise: props.promise });
13
+ return props.children(data);
21
14
  }
22
15
  function Await(props) {
23
- return createComponent(Solid.Loading, {
24
- get fallback() {
25
- return props.fallback;
26
- },
27
- get children() {
28
- return createComponent(InnerAwait, {
29
- get promise() {
30
- return props.promise;
31
- },
32
- get children() {
33
- return props.children;
34
- }
35
- });
36
- }
37
- });
16
+ return createComponent(Solid.Loading, {
17
+ get fallback() {
18
+ return props.fallback;
19
+ },
20
+ get children() {
21
+ return createComponent(InnerAwait, {
22
+ get promise() {
23
+ return props.promise;
24
+ },
25
+ get children() {
26
+ return props.children;
27
+ }
28
+ });
29
+ }
30
+ });
38
31
  }
39
- export {
40
- Await,
41
- useAwaited
42
- };
43
- //# sourceMappingURL=awaited.js.map
32
+ //#endregion
33
+ export { Await, useAwaited };
34
+
35
+ //# sourceMappingURL=awaited.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.js","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nfunction InnerAwait<T>(props: {\n promise: Promise<T>\n children: (res: T) => SolidNode\n}) {\n const [data] = useAwaited({ promise: props.promise })\n return props.children(data) as any\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n return (\n <Solid.Loading fallback={props.fallback as any}>\n <InnerAwait promise={props.promise}>{props.children}</InnerAwait>\n </Solid.Loading>\n )\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","InnerAwait","props","children","Await","_$createComponent","Solid","Loading","fallback"],"mappings":";;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AAC3C,QAAMD,UAAUE,MAAMD,QAAQ;AAE9B,MAAID,QAAQG,oBAAoB,EAAEC,WAAW,WAAW;AACtD,UAAMJ;AAAAA,EACR;AAEA,MAAIA,QAAQG,oBAAoB,EAAEC,WAAW,SAAS;AACpD,UAAMJ,QAAQG,oBAAoB,EAAEE;AAAAA,EACtC;AAEA,SAAO,CAACL,QAAQG,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEA,SAASO,WAAcC,OAGpB;AACD,QAAM,CAACF,IAAI,IAAIP,WAAW;AAAA,IAAEC,SAASQ,MAAMR;AAAAA,EAAAA,CAAS;AACpD,SAAOQ,MAAMC,SAASH,IAAI;AAC5B;AAEO,SAASI,MACdF,OAIA;AACA,SAAAG,gBACGC,MAAMC,SAAO;AAAA,IAAA,IAACC,WAAQ;AAAA,aAAEN,MAAMM;AAAAA,IAAe;AAAA,IAAA,IAAAL,WAAA;AAAA,aAAAE,gBAC3CJ,YAAU;AAAA,QAAA,IAACP,UAAO;AAAA,iBAAEQ,MAAMR;AAAAA,QAAO;AAAA,QAAA,IAAAS,WAAA;AAAA,iBAAGD,MAAMC;AAAAA,QAAQ;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAGzD;"}
1
+ {"version":3,"file":"awaited.js","names":["Solid","TSR_DEFERRED_PROMISE","defer","DeferredPromise","SolidNode","AwaitOptions","promise","Promise","T","useAwaited","_promise","status","error","data","InnerAwait","props","children","res","Await","fallback","result","_$createComponent","Loading"],"sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nfunction InnerAwait<T>(props: {\n promise: Promise<T>\n children: (res: T) => SolidNode\n}) {\n const [data] = useAwaited({ promise: props.promise })\n return props.children(data) as any\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n return (\n <Solid.Loading fallback={props.fallback as any}>\n <InnerAwait promise={props.promise}>{props.children}</InnerAwait>\n </Solid.Loading>\n )\n}\n"],"mappings":";;;;AAUA,SAAgBS,WAAc,EAC5BH,SAASI,YACkC;CAC3C,MAAMJ,UAAUJ,MAAMQ,SAAS;AAE/B,KAAIJ,QAAQL,sBAAsBU,WAAW,UAC3C,OAAML;AAGR,KAAIA,QAAQL,sBAAsBU,WAAW,QAC3C,OAAML,QAAQL,sBAAsBW;AAGtC,QAAO,CAACN,QAAQL,sBAAsBY,MAAMP,QAAQ;;AAGtD,SAASQ,WAAcC,OAGpB;CACD,MAAM,CAACF,QAAQJ,WAAW,EAAEH,SAASS,MAAMT,SAAS,CAAC;AACrD,QAAOS,MAAMC,SAASH,KAAK;;AAG7B,SAAgBK,MACdH,OAIA;AACA,QAAAM,gBACGrB,MAAMsB,SAAO;EAAA,IAACH,WAAQ;AAAA,UAAEJ,MAAMI;;EAAe,IAAAH,WAAA;AAAA,UAAAK,gBAC3CP,YAAU;IAAA,IAACR,UAAO;AAAA,YAAES,MAAMT;;IAAO,IAAAU,WAAA;AAAA,YAAGD,MAAMC;;IAAQ,CAAA;;EAAA,CAAA"}