@depup/tanstack__react-router 1.167.1-depup.0 → 1.167.4-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/README.md +2 -2
  2. package/changes.json +14 -0
  3. package/dist/cjs/Asset.cjs +115 -174
  4. package/dist/cjs/Asset.cjs.map +1 -1
  5. package/dist/cjs/CatchBoundary.cjs +92 -108
  6. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  7. package/dist/cjs/ClientOnly.cjs +47 -13
  8. package/dist/cjs/ClientOnly.cjs.map +1 -1
  9. package/dist/cjs/HeadContent.cjs +23 -12
  10. package/dist/cjs/HeadContent.cjs.map +1 -1
  11. package/dist/cjs/HeadContent.dev.cjs +33 -38
  12. package/dist/cjs/HeadContent.dev.cjs.map +1 -1
  13. package/dist/cjs/Match.cjs +190 -247
  14. package/dist/cjs/Match.cjs.map +1 -1
  15. package/dist/cjs/Matches.cjs +131 -118
  16. package/dist/cjs/Matches.cjs.map +1 -1
  17. package/dist/cjs/RouterProvider.cjs +43 -27
  18. package/dist/cjs/RouterProvider.cjs.map +1 -1
  19. package/dist/cjs/SafeFragment.cjs +9 -5
  20. package/dist/cjs/SafeFragment.cjs.map +1 -1
  21. package/dist/cjs/ScriptOnce.cjs +17 -19
  22. package/dist/cjs/ScriptOnce.cjs.map +1 -1
  23. package/dist/cjs/Scripts.cjs +56 -54
  24. package/dist/cjs/Scripts.cjs.map +1 -1
  25. package/dist/cjs/ScrollRestoration.cjs +26 -30
  26. package/dist/cjs/ScrollRestoration.cjs.map +1 -1
  27. package/dist/cjs/Transitioner.cjs +109 -116
  28. package/dist/cjs/Transitioner.cjs.map +1 -1
  29. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  30. package/dist/cjs/awaited.cjs +28 -43
  31. package/dist/cjs/awaited.cjs.map +1 -1
  32. package/dist/cjs/fileRoute.cjs +133 -95
  33. package/dist/cjs/fileRoute.cjs.map +1 -1
  34. package/dist/cjs/headContentUtils.cjs +144 -181
  35. package/dist/cjs/headContentUtils.cjs.map +1 -1
  36. package/dist/cjs/index.cjs +249 -178
  37. package/dist/cjs/index.dev.cjs +249 -178
  38. package/dist/cjs/lazyRouteComponent.cjs +52 -67
  39. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  40. package/dist/cjs/link.cjs +462 -556
  41. package/dist/cjs/link.cjs.map +1 -1
  42. package/dist/cjs/matchContext.cjs +9 -25
  43. package/dist/cjs/matchContext.cjs.map +1 -1
  44. package/dist/cjs/not-found.cjs +25 -32
  45. package/dist/cjs/not-found.cjs.map +1 -1
  46. package/dist/cjs/renderRouteNotFound.cjs +25 -19
  47. package/dist/cjs/renderRouteNotFound.cjs.map +1 -1
  48. package/dist/cjs/route.cjs +258 -178
  49. package/dist/cjs/route.cjs.map +1 -1
  50. package/dist/cjs/router.cjs +29 -16
  51. package/dist/cjs/router.cjs.map +1 -1
  52. package/dist/cjs/routerContext.cjs +8 -22
  53. package/dist/cjs/routerContext.cjs.map +1 -1
  54. package/dist/cjs/scroll-restoration.cjs +23 -36
  55. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  56. package/dist/cjs/ssr/RouterClient.cjs +16 -22
  57. package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
  58. package/dist/cjs/ssr/RouterServer.cjs +10 -6
  59. package/dist/cjs/ssr/RouterServer.cjs.map +1 -1
  60. package/dist/cjs/ssr/client.cjs +10 -10
  61. package/dist/cjs/ssr/defaultRenderHandler.cjs +13 -14
  62. package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -1
  63. package/dist/cjs/ssr/defaultStreamHandler.cjs +14 -15
  64. package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -1
  65. package/dist/cjs/ssr/renderRouterToStream.cjs +51 -71
  66. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
  67. package/dist/cjs/ssr/renderRouterToString.cjs +26 -29
  68. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
  69. package/dist/cjs/ssr/server.cjs +18 -18
  70. package/dist/cjs/useBlocker.cjs +126 -162
  71. package/dist/cjs/useBlocker.cjs.map +1 -1
  72. package/dist/cjs/useCanGoBack.cjs +6 -5
  73. package/dist/cjs/useCanGoBack.cjs.map +1 -1
  74. package/dist/cjs/useLoaderData.cjs +24 -12
  75. package/dist/cjs/useLoaderData.cjs.map +1 -1
  76. package/dist/cjs/useLoaderDeps.cjs +23 -11
  77. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  78. package/dist/cjs/useLocation.cjs +17 -7
  79. package/dist/cjs/useLocation.cjs.map +1 -1
  80. package/dist/cjs/useMatch.cjs +25 -44
  81. package/dist/cjs/useMatch.cjs.map +1 -1
  82. package/dist/cjs/useNavigate.cjs +53 -43
  83. package/dist/cjs/useNavigate.cjs.map +1 -1
  84. package/dist/cjs/useParams.cjs +27 -14
  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 +23 -29
  89. package/dist/cjs/useRouter.cjs.map +1 -1
  90. package/dist/cjs/useRouterState.cjs +40 -35
  91. package/dist/cjs/useRouterState.cjs.map +1 -1
  92. package/dist/cjs/useSearch.cjs +26 -13
  93. package/dist/cjs/useSearch.cjs.map +1 -1
  94. package/dist/cjs/utils.cjs +81 -51
  95. package/dist/cjs/utils.cjs.map +1 -1
  96. package/dist/esm/Asset.js +112 -156
  97. package/dist/esm/Asset.js.map +1 -1
  98. package/dist/esm/CatchBoundary.js +90 -92
  99. package/dist/esm/CatchBoundary.js.map +1 -1
  100. package/dist/esm/ClientOnly.js +45 -14
  101. package/dist/esm/ClientOnly.js.map +1 -1
  102. package/dist/esm/HeadContent.dev.js +31 -21
  103. package/dist/esm/HeadContent.dev.js.map +1 -1
  104. package/dist/esm/HeadContent.js +20 -11
  105. package/dist/esm/HeadContent.js.map +1 -1
  106. package/dist/esm/Match.js +181 -226
  107. package/dist/esm/Match.js.map +1 -1
  108. package/dist/esm/Matches.js +125 -103
  109. package/dist/esm/Matches.js.map +1 -1
  110. package/dist/esm/RouterProvider.js +41 -28
  111. package/dist/esm/RouterProvider.js.map +1 -1
  112. package/dist/esm/SafeFragment.js +8 -6
  113. package/dist/esm/SafeFragment.js.map +1 -1
  114. package/dist/esm/ScriptOnce.js +15 -18
  115. package/dist/esm/ScriptOnce.js.map +1 -1
  116. package/dist/esm/Scripts.js +55 -54
  117. package/dist/esm/Scripts.js.map +1 -1
  118. package/dist/esm/ScrollRestoration.js +25 -31
  119. package/dist/esm/ScrollRestoration.js.map +1 -1
  120. package/dist/esm/Transitioner.js +106 -98
  121. package/dist/esm/Transitioner.js.map +1 -1
  122. package/dist/esm/awaited.js +26 -27
  123. package/dist/esm/awaited.js.map +1 -1
  124. package/dist/esm/fileRoute.js +127 -96
  125. package/dist/esm/fileRoute.js.map +1 -1
  126. package/dist/esm/headContentUtils.js +141 -163
  127. package/dist/esm/headContentUtils.js.map +1 -1
  128. package/dist/esm/index.dev.js +16 -117
  129. package/dist/esm/index.js +18 -118
  130. package/dist/esm/lazyRouteComponent.js +50 -50
  131. package/dist/esm/lazyRouteComponent.js.map +1 -1
  132. package/dist/esm/link.js +459 -541
  133. package/dist/esm/link.js.map +1 -1
  134. package/dist/esm/matchContext.js +8 -10
  135. package/dist/esm/matchContext.js.map +1 -1
  136. package/dist/esm/not-found.js +22 -32
  137. package/dist/esm/not-found.js.map +1 -1
  138. package/dist/esm/renderRouteNotFound.js +21 -18
  139. package/dist/esm/renderRouteNotFound.js.map +1 -1
  140. package/dist/esm/route.js +249 -180
  141. package/dist/esm/route.js.map +1 -1
  142. package/dist/esm/router.js +28 -17
  143. package/dist/esm/router.js.map +1 -1
  144. package/dist/esm/routerContext.js +7 -6
  145. package/dist/esm/routerContext.js.map +1 -1
  146. package/dist/esm/scroll-restoration.js +21 -35
  147. package/dist/esm/scroll-restoration.js.map +1 -1
  148. package/dist/esm/ssr/RouterClient.js +14 -21
  149. package/dist/esm/ssr/RouterClient.js.map +1 -1
  150. package/dist/esm/ssr/RouterServer.js +8 -6
  151. package/dist/esm/ssr/RouterServer.js.map +1 -1
  152. package/dist/esm/ssr/client.js +1 -4
  153. package/dist/esm/ssr/defaultRenderHandler.js +12 -13
  154. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -1
  155. package/dist/esm/ssr/defaultStreamHandler.js +13 -14
  156. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -1
  157. package/dist/esm/ssr/renderRouterToStream.js +48 -70
  158. package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
  159. package/dist/esm/ssr/renderRouterToString.js +24 -29
  160. package/dist/esm/ssr/renderRouterToString.js.map +1 -1
  161. package/dist/esm/ssr/server.js +3 -10
  162. package/dist/esm/useBlocker.js +124 -146
  163. package/dist/esm/useBlocker.js.map +1 -1
  164. package/dist/esm/useCanGoBack.js +6 -5
  165. package/dist/esm/useCanGoBack.js.map +1 -1
  166. package/dist/esm/useLoaderData.js +24 -12
  167. package/dist/esm/useLoaderData.js.map +1 -1
  168. package/dist/esm/useLoaderDeps.js +23 -11
  169. package/dist/esm/useLoaderDeps.js.map +1 -1
  170. package/dist/esm/useLocation.js +17 -7
  171. package/dist/esm/useLocation.js.map +1 -1
  172. package/dist/esm/useMatch.js +21 -26
  173. package/dist/esm/useMatch.js.map +1 -1
  174. package/dist/esm/useNavigate.js +50 -26
  175. package/dist/esm/useNavigate.js.map +1 -1
  176. package/dist/esm/useParams.js +27 -14
  177. package/dist/esm/useParams.js.map +1 -1
  178. package/dist/esm/useRouteContext.js +9 -8
  179. package/dist/esm/useRouteContext.js.map +1 -1
  180. package/dist/esm/useRouter.js +20 -12
  181. package/dist/esm/useRouter.js.map +1 -1
  182. package/dist/esm/useRouterState.js +38 -34
  183. package/dist/esm/useRouterState.js.map +1 -1
  184. package/dist/esm/useSearch.js +26 -13
  185. package/dist/esm/useSearch.js.map +1 -1
  186. package/dist/esm/utils.js +80 -39
  187. package/dist/esm/utils.js.map +1 -1
  188. package/package.json +8 -6
  189. package/dist/cjs/index.cjs.map +0 -1
  190. package/dist/cjs/index.dev.cjs.map +0 -1
  191. package/dist/cjs/ssr/client.cjs.map +0 -1
  192. package/dist/cjs/ssr/server.cjs.map +0 -1
  193. package/dist/esm/index.dev.js.map +0 -1
  194. package/dist/esm/index.js.map +0 -1
  195. package/dist/esm/ssr/client.js.map +0 -1
  196. package/dist/esm/ssr/server.js.map +0 -1
@@ -1,56 +1,57 @@
1
- import { jsx, Fragment } from "react/jsx-runtime";
2
- import { createElement } from "react";
3
- import { Asset } from "./Asset.js";
4
- import { useRouterState } from "./useRouterState.js";
5
1
  import { useRouter } from "./useRouter.js";
6
- const Scripts = () => {
7
- const router = useRouter();
8
- const nonce = router.options.ssr?.nonce;
9
- const assetScripts = useRouterState({
10
- select: (state) => {
11
- const assetScripts2 = [];
12
- const manifest = router.ssr?.manifest;
13
- if (!manifest) {
14
- return [];
15
- }
16
- state.matches.map((match) => router.looseRoutesById[match.routeId]).forEach(
17
- (route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
18
- assetScripts2.push({
19
- tag: "script",
20
- attrs: { ...asset.attrs, nonce },
21
- children: asset.children
22
- });
23
- })
24
- );
25
- return assetScripts2;
26
- },
27
- structuralSharing: true
28
- });
29
- const { scripts } = useRouterState({
30
- select: (state) => ({
31
- scripts: state.matches.map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
32
- tag: "script",
33
- attrs: {
34
- ...script,
35
- suppressHydrationWarning: true,
36
- nonce
37
- },
38
- children
39
- }))
40
- }),
41
- structuralSharing: true
42
- });
43
- let serverBufferedScript = void 0;
44
- if (router.serverSsr) {
45
- serverBufferedScript = router.serverSsr.takeBufferedScripts();
46
- }
47
- const allScripts = [...scripts, ...assetScripts];
48
- if (serverBufferedScript) {
49
- allScripts.unshift(serverBufferedScript);
50
- }
51
- return /* @__PURE__ */ jsx(Fragment, { children: allScripts.map((asset, i) => /* @__PURE__ */ createElement(Asset, { ...asset, key: `tsr-scripts-${asset.tag}-${i}` })) });
52
- };
53
- export {
54
- Scripts
2
+ import { useRouterState } from "./useRouterState.js";
3
+ import { Asset } from "./Asset.js";
4
+ import { createElement } from "react";
5
+ import { Fragment, jsx } from "react/jsx-runtime";
6
+ //#region src/Scripts.tsx
7
+ /**
8
+ * Render body script tags collected from route matches and SSR manifests.
9
+ * Should be placed near the end of the document body.
10
+ */
11
+ var Scripts = () => {
12
+ const router = useRouter();
13
+ const nonce = router.options.ssr?.nonce;
14
+ const assetScripts = useRouterState({
15
+ select: (state) => {
16
+ const assetScripts = [];
17
+ const manifest = router.ssr?.manifest;
18
+ if (!manifest) return [];
19
+ state.matches.map((match) => router.looseRoutesById[match.routeId]).forEach((route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
20
+ assetScripts.push({
21
+ tag: "script",
22
+ attrs: {
23
+ ...asset.attrs,
24
+ nonce
25
+ },
26
+ children: asset.children
27
+ });
28
+ }));
29
+ return assetScripts;
30
+ },
31
+ structuralSharing: true
32
+ });
33
+ const { scripts } = useRouterState({
34
+ select: (state) => ({ scripts: state.matches.map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
35
+ tag: "script",
36
+ attrs: {
37
+ ...script,
38
+ suppressHydrationWarning: true,
39
+ nonce
40
+ },
41
+ children
42
+ })) }),
43
+ structuralSharing: true
44
+ });
45
+ let serverBufferedScript = void 0;
46
+ if (router.serverSsr) serverBufferedScript = router.serverSsr.takeBufferedScripts();
47
+ const allScripts = [...scripts, ...assetScripts];
48
+ if (serverBufferedScript) allScripts.unshift(serverBufferedScript);
49
+ return /* @__PURE__ */ jsx(Fragment, { children: allScripts.map((asset, i) => /* @__PURE__ */ createElement(Asset, {
50
+ ...asset,
51
+ key: `tsr-scripts-${asset.tag}-${i}`
52
+ })) });
55
53
  };
56
- //# sourceMappingURL=Scripts.js.map
54
+ //#endregion
55
+ export { Scripts };
56
+
57
+ //# sourceMappingURL=Scripts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Scripts.js","sources":["../../src/Scripts.tsx"],"sourcesContent":["import { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\n/**\n * Render body script tags collected from route matches and SSR manifests.\n * Should be placed near the end of the document body.\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 structuralSharing: true as any,\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 suppressHydrationWarning: true,\n nonce,\n },\n children,\n })),\n }),\n structuralSharing: true as any,\n })\n\n let serverBufferedScript: RouterManagedTag | undefined = undefined\n\n if (router.serverSsr) {\n serverBufferedScript = router.serverSsr.takeBufferedScripts()\n }\n\n const allScripts = [...scripts, ...assetScripts] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n allScripts.unshift(serverBufferedScript)\n }\n\n return (\n <>\n {allScripts.map((asset, i) => (\n <Asset {...asset} key={`tsr-scripts-${asset.tag}-${i}`} />\n ))}\n </>\n )\n}\n"],"names":["assetScripts"],"mappings":";;;;;AASO,MAAM,UAAU,MAAM;AAC3B,QAAM,SAAS,UAAA;AACf,QAAM,QAAQ,OAAO,QAAQ,KAAK;AAClC,QAAM,eAAe,eAAe;AAAA,IAClC,QAAQ,CAAC,UAAU;AACjB,YAAMA,gBAAwC,CAAA;AAC9C,YAAM,WAAW,OAAO,KAAK;AAE7B,UAAI,CAAC,UAAU;AACb,eAAO,CAAA;AAAA,MACT;AAEA,YAAM,QACH,IAAI,CAAC,UAAU,OAAO,gBAAgB,MAAM,OAAO,CAAE,EACrD;AAAA,QAAQ,CAAC,UACR,SAAS,OAAO,MAAM,EAAE,GAAG,QACvB,OAAO,CAAC,MAAM,EAAE,QAAQ,QAAQ,EACjC,QAAQ,CAAC,UAAU;AAClBA,wBAAa,KAAK;AAAA,YAChB,KAAK;AAAA,YACL,OAAO,EAAE,GAAG,MAAM,OAAO,MAAA;AAAA,YACzB,UAAU,MAAM;AAAA,UAAA,CACV;AAAA,QACV,CAAC;AAAA,MAAA;AAGP,aAAOA;AAAAA,IACT;AAAA,IACA,mBAAmB;AAAA,EAAA,CACpB;AAED,QAAM,EAAE,QAAA,IAAY,eAAe;AAAA,IACjC,QAAQ,CAAC,WAAW;AAAA,MAClB,SACE,MAAM,QACH,IAAI,CAAC,UAAU,MAAM,OAAQ,EAC7B,KAAK,CAAC,EACN,OAAO,OAAO,EACjB,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc;AAAA,QAClC,KAAK;AAAA,QACL,OAAO;AAAA,UACL,GAAG;AAAA,UACH,0BAA0B;AAAA,UAC1B;AAAA,QAAA;AAAA,QAEF;AAAA,MAAA,EACA;AAAA,IAAA;AAAA,IAEJ,mBAAmB;AAAA,EAAA,CACpB;AAED,MAAI,uBAAqD;AAEzD,MAAI,OAAO,WAAW;AACpB,2BAAuB,OAAO,UAAU,oBAAA;AAAA,EAC1C;AAEA,QAAM,aAAa,CAAC,GAAG,SAAS,GAAG,YAAY;AAE/C,MAAI,sBAAsB;AACxB,eAAW,QAAQ,oBAAoB;AAAA,EACzC;AAEA,yCAEK,UAAA,WAAW,IAAI,CAAC,OAAO,oCACrB,OAAA,EAAO,GAAG,OAAO,KAAK,eAAe,MAAM,GAAG,IAAI,CAAC,IAAI,CACzD,GACH;AAEJ;"}
1
+ {"version":3,"file":"Scripts.js","names":[],"sources":["../../src/Scripts.tsx"],"sourcesContent":["import { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\n/**\n * Render body script tags collected from route matches and SSR manifests.\n * Should be placed near the end of the document body.\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 structuralSharing: true as any,\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 suppressHydrationWarning: true,\n nonce,\n },\n children,\n })),\n }),\n structuralSharing: true as any,\n })\n\n let serverBufferedScript: RouterManagedTag | undefined = undefined\n\n if (router.serverSsr) {\n serverBufferedScript = router.serverSsr.takeBufferedScripts()\n }\n\n const allScripts = [...scripts, ...assetScripts] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n allScripts.unshift(serverBufferedScript)\n }\n\n return (\n <>\n {allScripts.map((asset, i) => (\n <Asset {...asset} key={`tsr-scripts-${asset.tag}-${i}`} />\n ))}\n </>\n )\n}\n"],"mappings":";;;;;;;;;;AASA,IAAa,gBAAgB;CAC3B,MAAM,SAAS,WAAW;CAC1B,MAAM,QAAQ,OAAO,QAAQ,KAAK;CAClC,MAAM,eAAe,eAAe;EAClC,SAAS,UAAU;GACjB,MAAM,eAAwC,EAAE;GAChD,MAAM,WAAW,OAAO,KAAK;AAE7B,OAAI,CAAC,SACH,QAAO,EAAE;AAGX,SAAM,QACH,KAAK,UAAU,OAAO,gBAAgB,MAAM,SAAU,CACtD,SAAS,UACR,SAAS,OAAO,MAAM,KAAK,QACvB,QAAQ,MAAM,EAAE,QAAQ,SAAS,CAClC,SAAS,UAAU;AAClB,iBAAa,KAAK;KAChB,KAAK;KACL,OAAO;MAAE,GAAG,MAAM;MAAO;MAAO;KAChC,UAAU,MAAM;KACjB,CAAQ;KACT,CACL;AAEH,UAAO;;EAET,mBAAmB;EACpB,CAAC;CAEF,MAAM,EAAE,YAAY,eAAe;EACjC,SAAS,WAAW,EAClB,SACE,MAAM,QACH,KAAK,UAAU,MAAM,QAAS,CAC9B,KAAK,EAAE,CACP,OAAO,QAAQ,CAClB,KAAK,EAAE,UAAU,GAAG,cAAc;GAClC,KAAK;GACL,OAAO;IACL,GAAG;IACH,0BAA0B;IAC1B;IACD;GACD;GACD,EAAE,EACJ;EACD,mBAAmB;EACpB,CAAC;CAEF,IAAI,uBAAqD,KAAA;AAEzD,KAAI,OAAO,UACT,wBAAuB,OAAO,UAAU,qBAAqB;CAG/D,MAAM,aAAa,CAAC,GAAG,SAAS,GAAG,aAAa;AAEhD,KAAI,qBACF,YAAW,QAAQ,qBAAqB;AAG1C,QACE,oBAAA,UAAA,EAAA,UACG,WAAW,KAAK,OAAO,MACtB,8BAAC,OAAD;EAAO,GAAI;EAAO,KAAK,eAAe,MAAM,IAAI,GAAG;EAAO,CAAA,CAC1D,EACD,CAAA"}
@@ -1,38 +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 the `scrollRestoration` router option instead.
9
+ */
7
10
  function ScrollRestoration(_props) {
8
- useScrollRestoration();
9
- if (process.env.NODE_ENV === "development") {
10
- console.warn(
11
- "The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead."
12
- );
13
- }
14
- 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;
15
14
  }
16
15
  function useElementScrollRestoration(options) {
17
- useScrollRestoration();
18
- const router = useRouter();
19
- const getKey = options.getKey || defaultGetScrollRestorationKey;
20
- let elementSelector = "";
21
- if (options.id) {
22
- elementSelector = `[data-scroll-restoration-id="${options.id}"]`;
23
- } else {
24
- const element = options.getElement?.();
25
- if (!element) {
26
- return;
27
- }
28
- elementSelector = element instanceof Window ? "window" : getCssSelector(element);
29
- }
30
- const restoreKey = getKey(router.latestLocation);
31
- const byKey = scrollRestorationCache?.state[restoreKey];
32
- 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];
33
28
  }
34
- export {
35
- ScrollRestoration,
36
- useElementScrollRestoration
37
- };
38
- //# 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 the `scrollRestoration` router 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":[],"mappings":";;AAaA,SAAS,uBAAuB;AAC9B,QAAM,SAAS,UAAA;AACf,yBAAuB,QAAQ,IAAI;AACrC;AAKO,SAAS,kBAAkB,QAAkC;AAClE,uBAAA;AAEA,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,YAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAEA,SAAO;AACT;AAEO,SAAS,4BACd,SAYoC;AACpC,uBAAA;AAEA,QAAM,SAAS,UAAA;AACf,QAAM,SAAS,QAAQ,UAAU;AAEjC,MAAI,kBAAkB;AAEtB,MAAI,QAAQ,IAAI;AACd,sBAAkB,gCAAgC,QAAQ,EAAE;AAAA,EAC9D,OAAO;AACL,UAAM,UAAU,QAAQ,aAAA;AACxB,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,sBACE,mBAAmB,SAAS,WAAW,eAAe,OAAO;AAAA,EACjE;AAEA,QAAM,aAAa,OAAO,OAAO,cAAc;AAC/C,QAAM,QAAQ,wBAAwB,MAAM,UAAU;AACtD,SAAO,QAAQ,eAAe;AAChC;"}
1
+ {"version":3,"file":"ScrollRestoration.js","names":[],"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 the `scrollRestoration` router 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,SAAS,uBAAuB;AAE9B,wBADe,WAAW,EACK,KAAK;;;;;AAMtC,SAAgB,kBAAkB,QAAkC;AAClE,uBAAsB;AAEtB,KAAA,QAAA,IAAA,aAA6B,cAC3B,SAAQ,KACN,wGACD;AAGH,QAAO;;AAGT,SAAgB,4BACd,SAYoC;AACpC,uBAAsB;CAEtB,MAAM,SAAS,WAAW;CAC1B,MAAM,SAAS,QAAQ,UAAU;CAEjC,IAAI,kBAAkB;AAEtB,KAAI,QAAQ,GACV,mBAAkB,gCAAgC,QAAQ,GAAG;MACxD;EACL,MAAM,UAAU,QAAQ,cAAc;AACtC,MAAI,CAAC,QACH;AAEF,oBACE,mBAAmB,SAAS,WAAW,eAAe,QAAQ;;CAGlE,MAAM,aAAa,OAAO,OAAO,eAAe;AAEhD,SADc,wBAAwB,MAAM,eAC7B"}
@@ -1,102 +1,110 @@
1
- import * as React from "react";
2
- import { trimPathRight, getLocationChangeInfo, handleHashScroll } from "@tanstack/router-core";
3
- import { usePrevious, useLayoutEffect } from "./utils.js";
1
+ import { useLayoutEffect, usePrevious } from "./utils.js";
4
2
  import { useRouter } from "./useRouter.js";
5
3
  import { useRouterState } from "./useRouterState.js";
4
+ import { getLocationChangeInfo, handleHashScroll, trimPathRight } from "@tanstack/router-core";
5
+ import * as React$1 from "react";
6
+ //#region src/Transitioner.tsx
6
7
  function Transitioner() {
7
- const router = useRouter();
8
- const mountLoadForRouter = React.useRef({ router, mounted: false });
9
- const [isTransitioning, setIsTransitioning] = React.useState(false);
10
- const { hasPendingMatches, isLoading } = useRouterState({
11
- select: (s) => ({
12
- isLoading: s.isLoading,
13
- hasPendingMatches: s.matches.some((d) => d.status === "pending")
14
- }),
15
- structuralSharing: true
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
- router.startTransition = (fn) => {
23
- setIsTransitioning(true);
24
- React.startTransition(() => {
25
- fn();
26
- setIsTransitioning(false);
27
- });
28
- };
29
- React.useEffect(() => {
30
- const unsub = router.history.subscribe(router.load);
31
- const nextLocation = router.buildLocation({
32
- to: router.latestLocation.pathname,
33
- search: true,
34
- params: true,
35
- hash: true,
36
- state: true,
37
- _includeValidateSearch: true
38
- });
39
- if (trimPathRight(router.latestLocation.publicHref) !== trimPathRight(nextLocation.publicHref)) {
40
- router.commitLocation({ ...nextLocation, replace: true });
41
- }
42
- return () => {
43
- unsub();
44
- };
45
- }, [router, router.history]);
46
- useLayoutEffect(() => {
47
- if (
48
- // if we are hydrating from SSR, loading is triggered in ssr-client
49
- typeof window !== "undefined" && router.ssr || mountLoadForRouter.current.router === router && mountLoadForRouter.current.mounted
50
- ) {
51
- return;
52
- }
53
- mountLoadForRouter.current = { router, mounted: true };
54
- const tryLoad = async () => {
55
- try {
56
- await router.load();
57
- } catch (err) {
58
- console.error(err);
59
- }
60
- };
61
- tryLoad();
62
- }, [router]);
63
- useLayoutEffect(() => {
64
- if (previousIsLoading && !isLoading) {
65
- router.emit({
66
- type: "onLoad",
67
- // When the new URL has committed, when the new matches have been loaded into state.matches
68
- ...getLocationChangeInfo(router.state)
69
- });
70
- }
71
- }, [previousIsLoading, router, isLoading]);
72
- useLayoutEffect(() => {
73
- if (previousIsPagePending && !isPagePending) {
74
- router.emit({
75
- type: "onBeforeRouteMount",
76
- ...getLocationChangeInfo(router.state)
77
- });
78
- }
79
- }, [isPagePending, previousIsPagePending, router]);
80
- useLayoutEffect(() => {
81
- if (previousIsAnyPending && !isAnyPending) {
82
- const changeInfo = getLocationChangeInfo(router.state);
83
- router.emit({
84
- type: "onResolved",
85
- ...changeInfo
86
- });
87
- router.__store.setState((s) => ({
88
- ...s,
89
- status: "idle",
90
- resolvedLocation: s.location
91
- }));
92
- if (changeInfo.hrefChanged) {
93
- handleHashScroll(router);
94
- }
95
- }
96
- }, [isAnyPending, previousIsAnyPending, router]);
97
- return null;
8
+ const router = useRouter();
9
+ const mountLoadForRouter = React$1.useRef({
10
+ router,
11
+ mounted: false
12
+ });
13
+ const [isTransitioning, setIsTransitioning] = React$1.useState(false);
14
+ const { hasPendingMatches, isLoading } = useRouterState({
15
+ select: (s) => ({
16
+ isLoading: s.isLoading,
17
+ hasPendingMatches: s.matches.some((d) => d.status === "pending")
18
+ }),
19
+ structuralSharing: true
20
+ });
21
+ const previousIsLoading = usePrevious(isLoading);
22
+ const isAnyPending = isLoading || isTransitioning || hasPendingMatches;
23
+ const previousIsAnyPending = usePrevious(isAnyPending);
24
+ const isPagePending = isLoading || hasPendingMatches;
25
+ const previousIsPagePending = usePrevious(isPagePending);
26
+ router.startTransition = (fn) => {
27
+ setIsTransitioning(true);
28
+ React$1.startTransition(() => {
29
+ fn();
30
+ setIsTransitioning(false);
31
+ });
32
+ };
33
+ React$1.useEffect(() => {
34
+ const unsub = router.history.subscribe(router.load);
35
+ const nextLocation = router.buildLocation({
36
+ to: router.latestLocation.pathname,
37
+ search: true,
38
+ params: true,
39
+ hash: true,
40
+ state: true,
41
+ _includeValidateSearch: true
42
+ });
43
+ if (trimPathRight(router.latestLocation.publicHref) !== trimPathRight(nextLocation.publicHref)) router.commitLocation({
44
+ ...nextLocation,
45
+ replace: true
46
+ });
47
+ return () => {
48
+ unsub();
49
+ };
50
+ }, [router, router.history]);
51
+ useLayoutEffect(() => {
52
+ if (typeof window !== "undefined" && router.ssr || mountLoadForRouter.current.router === router && mountLoadForRouter.current.mounted) return;
53
+ mountLoadForRouter.current = {
54
+ router,
55
+ mounted: true
56
+ };
57
+ const tryLoad = async () => {
58
+ try {
59
+ await router.load();
60
+ } catch (err) {
61
+ console.error(err);
62
+ }
63
+ };
64
+ tryLoad();
65
+ }, [router]);
66
+ useLayoutEffect(() => {
67
+ if (previousIsLoading && !isLoading) router.emit({
68
+ type: "onLoad",
69
+ ...getLocationChangeInfo(router.state)
70
+ });
71
+ }, [
72
+ previousIsLoading,
73
+ router,
74
+ isLoading
75
+ ]);
76
+ useLayoutEffect(() => {
77
+ if (previousIsPagePending && !isPagePending) router.emit({
78
+ type: "onBeforeRouteMount",
79
+ ...getLocationChangeInfo(router.state)
80
+ });
81
+ }, [
82
+ isPagePending,
83
+ previousIsPagePending,
84
+ router
85
+ ]);
86
+ useLayoutEffect(() => {
87
+ if (previousIsAnyPending && !isAnyPending) {
88
+ const changeInfo = getLocationChangeInfo(router.state);
89
+ router.emit({
90
+ type: "onResolved",
91
+ ...changeInfo
92
+ });
93
+ router.__store.setState((s) => ({
94
+ ...s,
95
+ status: "idle",
96
+ resolvedLocation: s.location
97
+ }));
98
+ if (changeInfo.hrefChanged) handleHashScroll(router);
99
+ }
100
+ }, [
101
+ isAnyPending,
102
+ previousIsAnyPending,
103
+ router
104
+ ]);
105
+ return null;
98
106
  }
99
- export {
100
- Transitioner
101
- };
102
- //# sourceMappingURL=Transitioner.js.map
107
+ //#endregion
108
+ export { Transitioner };
109
+
110
+ //# sourceMappingURL=Transitioner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as React from 'react'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useLayoutEffect, usePrevious } from './utils'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\n\nexport function Transitioner() {\n const router = useRouter()\n const mountLoadForRouter = React.useRef({ router, mounted: false })\n\n const [isTransitioning, setIsTransitioning] = React.useState(false)\n // Track pending state changes\n const { hasPendingMatches, isLoading } = useRouterState({\n select: (s) => ({\n isLoading: s.isLoading,\n hasPendingMatches: s.matches.some((d) => d.status === 'pending'),\n }),\n structuralSharing: true,\n })\n\n const previousIsLoading = usePrevious(isLoading)\n\n const isAnyPending = isLoading || isTransitioning || hasPendingMatches\n const previousIsAnyPending = usePrevious(isAnyPending)\n\n const isPagePending = isLoading || hasPendingMatches\n const previousIsPagePending = usePrevious(isPagePending)\n\n router.startTransition = (fn: () => void) => {\n setIsTransitioning(true)\n React.startTransition(() => {\n fn()\n setIsTransitioning(false)\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n React.useEffect(() => {\n const unsub = router.history.subscribe(router.load)\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 return () => {\n unsub()\n }\n }, [router, router.history])\n\n // Try to load the initial location\n useLayoutEffect(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.current.router === router &&\n mountLoadForRouter.current.mounted)\n ) {\n return\n }\n mountLoadForRouter.current = { router, mounted: true }\n\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n\n tryLoad()\n }, [router])\n\n useLayoutEffect(() => {\n // The router was loading and now it's not\n if (previousIsLoading && !isLoading) {\n router.emit({\n type: 'onLoad', // When the new URL has committed, when the new matches have been loaded into state.matches\n ...getLocationChangeInfo(router.state),\n })\n }\n }, [previousIsLoading, router, isLoading])\n\n useLayoutEffect(() => {\n // emit onBeforeRouteMount\n if (previousIsPagePending && !isPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n }, [isPagePending, previousIsPagePending, router])\n\n useLayoutEffect(() => {\n if (previousIsAnyPending && !isAnyPending) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n router.__store.setState((s: typeof router.state) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n }, [isAnyPending, previousIsAnyPending, router])\n\n return null\n}\n"],"names":[],"mappings":";;;;;AAUO,SAAS,eAAe;AAC7B,QAAM,SAAS,UAAA;AACf,QAAM,qBAAqB,MAAM,OAAO,EAAE,QAAQ,SAAS,OAAO;AAElE,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,MAAM,SAAS,KAAK;AAElE,QAAM,EAAE,mBAAmB,UAAA,IAAc,eAAe;AAAA,IACtD,QAAQ,CAAC,OAAO;AAAA,MACd,WAAW,EAAE;AAAA,MACb,mBAAmB,EAAE,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,SAAS;AAAA,IAAA;AAAA,IAEjE,mBAAmB;AAAA,EAAA,CACpB;AAED,QAAM,oBAAoB,YAAY,SAAS;AAE/C,QAAM,eAAe,aAAa,mBAAmB;AACrD,QAAM,uBAAuB,YAAY,YAAY;AAErD,QAAM,gBAAgB,aAAa;AACnC,QAAM,wBAAwB,YAAY,aAAa;AAEvD,SAAO,kBAAkB,CAAC,OAAmB;AAC3C,uBAAmB,IAAI;AACvB,UAAM,gBAAgB,MAAM;AAC1B,SAAA;AACA,yBAAmB,KAAK;AAAA,IAC1B,CAAC;AAAA,EACH;AAIA,QAAM,UAAU,MAAM;AACpB,UAAM,QAAQ,OAAO,QAAQ,UAAU,OAAO,IAAI;AAElD,UAAM,eAAe,OAAO,cAAc;AAAA,MACxC,IAAI,OAAO,eAAe;AAAA,MAC1B,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,wBAAwB;AAAA,IAAA,CACzB;AAKD,QACE,cAAc,OAAO,eAAe,UAAU,MAC9C,cAAc,aAAa,UAAU,GACrC;AACA,aAAO,eAAe,EAAE,GAAG,cAAc,SAAS,MAAM;AAAA,IAC1D;AAEA,WAAO,MAAM;AACX,YAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,OAAO,CAAC;AAG3B,kBAAgB,MAAM;AACpB;AAAA;AAAA,MAEG,OAAO,WAAW,eAAe,OAAO,OACxC,mBAAmB,QAAQ,WAAW,UACrC,mBAAmB,QAAQ;AAAA,MAC7B;AACA;AAAA,IACF;AACA,uBAAmB,UAAU,EAAE,QAAQ,SAAS,KAAA;AAEhD,UAAM,UAAU,YAAY;AAC1B,UAAI;AACF,cAAM,OAAO,KAAA;AAAA,MACf,SAAS,KAAK;AACZ,gBAAQ,MAAM,GAAG;AAAA,MACnB;AAAA,IACF;AAEA,YAAA;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,kBAAgB,MAAM;AAEpB,QAAI,qBAAqB,CAAC,WAAW;AACnC,aAAO,KAAK;AAAA,QACV,MAAM;AAAA;AAAA,QACN,GAAG,sBAAsB,OAAO,KAAK;AAAA,MAAA,CACtC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,mBAAmB,QAAQ,SAAS,CAAC;AAEzC,kBAAgB,MAAM;AAEpB,QAAI,yBAAyB,CAAC,eAAe;AAC3C,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,GAAG,sBAAsB,OAAO,KAAK;AAAA,MAAA,CACtC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,eAAe,uBAAuB,MAAM,CAAC;AAEjD,kBAAgB,MAAM;AACpB,QAAI,wBAAwB,CAAC,cAAc;AACzC,YAAM,aAAa,sBAAsB,OAAO,KAAK;AACrD,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,GAAG;AAAA,MAAA,CACJ;AAED,aAAO,QAAQ,SAAS,CAAC,OAA4B;AAAA,QACnD,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,kBAAkB,EAAE;AAAA,MAAA,EACpB;AAEF,UAAI,WAAW,aAAa;AAC1B,yBAAiB,MAAM;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,cAAc,sBAAsB,MAAM,CAAC;AAE/C,SAAO;AACT;"}
1
+ {"version":3,"file":"Transitioner.js","names":[],"sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as React from 'react'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useLayoutEffect, usePrevious } from './utils'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\n\nexport function Transitioner() {\n const router = useRouter()\n const mountLoadForRouter = React.useRef({ router, mounted: false })\n\n const [isTransitioning, setIsTransitioning] = React.useState(false)\n // Track pending state changes\n const { hasPendingMatches, isLoading } = useRouterState({\n select: (s) => ({\n isLoading: s.isLoading,\n hasPendingMatches: s.matches.some((d) => d.status === 'pending'),\n }),\n structuralSharing: true,\n })\n\n const previousIsLoading = usePrevious(isLoading)\n\n const isAnyPending = isLoading || isTransitioning || hasPendingMatches\n const previousIsAnyPending = usePrevious(isAnyPending)\n\n const isPagePending = isLoading || hasPendingMatches\n const previousIsPagePending = usePrevious(isPagePending)\n\n router.startTransition = (fn: () => void) => {\n setIsTransitioning(true)\n React.startTransition(() => {\n fn()\n setIsTransitioning(false)\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n React.useEffect(() => {\n const unsub = router.history.subscribe(router.load)\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 return () => {\n unsub()\n }\n }, [router, router.history])\n\n // Try to load the initial location\n useLayoutEffect(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.current.router === router &&\n mountLoadForRouter.current.mounted)\n ) {\n return\n }\n mountLoadForRouter.current = { router, mounted: true }\n\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n\n tryLoad()\n }, [router])\n\n useLayoutEffect(() => {\n // The router was loading and now it's not\n if (previousIsLoading && !isLoading) {\n router.emit({\n type: 'onLoad', // When the new URL has committed, when the new matches have been loaded into state.matches\n ...getLocationChangeInfo(router.state),\n })\n }\n }, [previousIsLoading, router, isLoading])\n\n useLayoutEffect(() => {\n // emit onBeforeRouteMount\n if (previousIsPagePending && !isPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n }, [isPagePending, previousIsPagePending, router])\n\n useLayoutEffect(() => {\n if (previousIsAnyPending && !isAnyPending) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n router.__store.setState((s: typeof router.state) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n }, [isAnyPending, previousIsAnyPending, router])\n\n return null\n}\n"],"mappings":";;;;;;AAUA,SAAgB,eAAe;CAC7B,MAAM,SAAS,WAAW;CAC1B,MAAM,qBAAqB,QAAM,OAAO;EAAE;EAAQ,SAAS;EAAO,CAAC;CAEnE,MAAM,CAAC,iBAAiB,sBAAsB,QAAM,SAAS,MAAM;CAEnE,MAAM,EAAE,mBAAmB,cAAc,eAAe;EACtD,SAAS,OAAO;GACd,WAAW,EAAE;GACb,mBAAmB,EAAE,QAAQ,MAAM,MAAM,EAAE,WAAW,UAAU;GACjE;EACD,mBAAmB;EACpB,CAAC;CAEF,MAAM,oBAAoB,YAAY,UAAU;CAEhD,MAAM,eAAe,aAAa,mBAAmB;CACrD,MAAM,uBAAuB,YAAY,aAAa;CAEtD,MAAM,gBAAgB,aAAa;CACnC,MAAM,wBAAwB,YAAY,cAAc;AAExD,QAAO,mBAAmB,OAAmB;AAC3C,qBAAmB,KAAK;AACxB,UAAM,sBAAsB;AAC1B,OAAI;AACJ,sBAAmB,MAAM;IACzB;;AAKJ,SAAM,gBAAgB;EACpB,MAAM,QAAQ,OAAO,QAAQ,UAAU,OAAO,KAAK;EAEnD,MAAM,eAAe,OAAO,cAAc;GACxC,IAAI,OAAO,eAAe;GAC1B,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,OAAO;GACP,wBAAwB;GACzB,CAAC;AAKF,MACE,cAAc,OAAO,eAAe,WAAW,KAC/C,cAAc,aAAa,WAAW,CAEtC,QAAO,eAAe;GAAE,GAAG;GAAc,SAAS;GAAM,CAAC;AAG3D,eAAa;AACX,UAAO;;IAER,CAAC,QAAQ,OAAO,QAAQ,CAAC;AAG5B,uBAAsB;AACpB,MAEG,OAAO,WAAW,eAAe,OAAO,OACxC,mBAAmB,QAAQ,WAAW,UACrC,mBAAmB,QAAQ,QAE7B;AAEF,qBAAmB,UAAU;GAAE;GAAQ,SAAS;GAAM;EAEtD,MAAM,UAAU,YAAY;AAC1B,OAAI;AACF,UAAM,OAAO,MAAM;YACZ,KAAK;AACZ,YAAQ,MAAM,IAAI;;;AAItB,WAAS;IACR,CAAC,OAAO,CAAC;AAEZ,uBAAsB;AAEpB,MAAI,qBAAqB,CAAC,UACxB,QAAO,KAAK;GACV,MAAM;GACN,GAAG,sBAAsB,OAAO,MAAM;GACvC,CAAC;IAEH;EAAC;EAAmB;EAAQ;EAAU,CAAC;AAE1C,uBAAsB;AAEpB,MAAI,yBAAyB,CAAC,cAC5B,QAAO,KAAK;GACV,MAAM;GACN,GAAG,sBAAsB,OAAO,MAAM;GACvC,CAAC;IAEH;EAAC;EAAe;EAAuB;EAAO,CAAC;AAElD,uBAAsB;AACpB,MAAI,wBAAwB,CAAC,cAAc;GACzC,MAAM,aAAa,sBAAsB,OAAO,MAAM;AACtD,UAAO,KAAK;IACV,MAAM;IACN,GAAG;IACJ,CAAC;AAEF,UAAO,QAAQ,UAAU,OAA4B;IACnD,GAAG;IACH,QAAQ;IACR,kBAAkB,EAAE;IACrB,EAAE;AAEH,OAAI,WAAW,YACb,kBAAiB,OAAO;;IAG3B;EAAC;EAAc;EAAsB;EAAO,CAAC;AAEhD,QAAO"}
@@ -1,34 +1,33 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import * as React from "react";
3
- import { defer, TSR_DEFERRED_PROMISE } from "@tanstack/router-core";
4
1
  import { reactUse } from "./utils.js";
2
+ import { TSR_DEFERRED_PROMISE, defer } from "@tanstack/router-core";
3
+ import * as React$1 from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/awaited.tsx
6
+ /** Suspend until a deferred promise resolves or rejects and return its data. */
5
7
  function useAwaited({ promise: _promise }) {
6
- if (reactUse) {
7
- const data = reactUse(_promise);
8
- return data;
9
- }
10
- const promise = defer(_promise);
11
- if (promise[TSR_DEFERRED_PROMISE].status === "pending") {
12
- throw promise;
13
- }
14
- if (promise[TSR_DEFERRED_PROMISE].status === "error") {
15
- throw promise[TSR_DEFERRED_PROMISE].error;
16
- }
17
- return promise[TSR_DEFERRED_PROMISE].data;
8
+ if (reactUse) return reactUse(_promise);
9
+ const promise = defer(_promise);
10
+ if (promise[TSR_DEFERRED_PROMISE].status === "pending") throw promise;
11
+ if (promise[TSR_DEFERRED_PROMISE].status === "error") throw promise[TSR_DEFERRED_PROMISE].error;
12
+ return promise[TSR_DEFERRED_PROMISE].data;
18
13
  }
14
+ /**
15
+ * Component that suspends on a deferred promise and renders its child with
16
+ * the resolved value. Optionally provides a Suspense fallback.
17
+ */
19
18
  function Await(props) {
20
- const inner = /* @__PURE__ */ jsx(AwaitInner, { ...props });
21
- if (props.fallback) {
22
- return /* @__PURE__ */ jsx(React.Suspense, { fallback: props.fallback, children: inner });
23
- }
24
- return inner;
19
+ const inner = /* @__PURE__ */ jsx(AwaitInner, { ...props });
20
+ if (props.fallback) return /* @__PURE__ */ jsx(React$1.Suspense, {
21
+ fallback: props.fallback,
22
+ children: inner
23
+ });
24
+ return inner;
25
25
  }
26
26
  function AwaitInner(props) {
27
- const data = useAwaited(props);
28
- return props.children(data);
27
+ const data = useAwaited(props);
28
+ return props.children(data);
29
29
  }
30
- export {
31
- Await,
32
- useAwaited
33
- };
34
- //# sourceMappingURL=awaited.js.map
30
+ //#endregion
31
+ export { Await, useAwaited };
32
+
33
+ //# sourceMappingURL=awaited.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.js","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport { reactUse } from './utils'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\n/** Suspend until a deferred promise resolves or rejects and return its data. */\nexport function useAwaited<T>({ promise: _promise }: AwaitOptions<T>): T {\n if (reactUse) {\n const data = reactUse(_promise)\n return data\n }\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\n}\n\n/**\n * Component that suspends on a deferred promise and renders its child with\n * the resolved value. Optionally provides a Suspense fallback.\n */\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: React.ReactNode\n children: (result: T) => React.ReactNode\n },\n) {\n const inner = <AwaitInner {...props} />\n if (props.fallback) {\n return <React.Suspense fallback={props.fallback}>{inner}</React.Suspense>\n }\n return inner\n}\n\nfunction AwaitInner<T>(\n props: AwaitOptions<T> & {\n fallback?: React.ReactNode\n children: (result: T) => React.ReactNode\n },\n): React.JSX.Element {\n const data = useAwaited(props)\n\n return props.children(data) as React.JSX.Element\n}\n"],"names":[],"mappings":";;;;AAUO,SAAS,WAAc,EAAE,SAAS,YAAgC;AACvE,MAAI,UAAU;AACZ,UAAM,OAAO,SAAS,QAAQ;AAC9B,WAAO;AAAA,EACT;AACA,QAAM,UAAU,MAAM,QAAQ;AAE9B,MAAI,QAAQ,oBAAoB,EAAE,WAAW,WAAW;AACtD,UAAM;AAAA,EACR;AAEA,MAAI,QAAQ,oBAAoB,EAAE,WAAW,SAAS;AACpD,UAAM,QAAQ,oBAAoB,EAAE;AAAA,EACtC;AAEA,SAAO,QAAQ,oBAAoB,EAAE;AACvC;AAMO,SAAS,MACd,OAIA;AACA,QAAM,QAAQ,oBAAC,YAAA,EAAY,GAAG,MAAA,CAAO;AACrC,MAAI,MAAM,UAAU;AAClB,+BAAQ,MAAM,UAAN,EAAe,UAAU,MAAM,UAAW,UAAA,OAAM;AAAA,EAC1D;AACA,SAAO;AACT;AAEA,SAAS,WACP,OAImB;AACnB,QAAM,OAAO,WAAW,KAAK;AAE7B,SAAO,MAAM,SAAS,IAAI;AAC5B;"}
1
+ {"version":3,"file":"awaited.js","names":[],"sources":["../../src/awaited.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport { reactUse } from './utils'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\n/** Suspend until a deferred promise resolves or rejects and return its data. */\nexport function useAwaited<T>({ promise: _promise }: AwaitOptions<T>): T {\n if (reactUse) {\n const data = reactUse(_promise)\n return data\n }\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\n}\n\n/**\n * Component that suspends on a deferred promise and renders its child with\n * the resolved value. Optionally provides a Suspense fallback.\n */\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: React.ReactNode\n children: (result: T) => React.ReactNode\n },\n) {\n const inner = <AwaitInner {...props} />\n if (props.fallback) {\n return <React.Suspense fallback={props.fallback}>{inner}</React.Suspense>\n }\n return inner\n}\n\nfunction AwaitInner<T>(\n props: AwaitOptions<T> & {\n fallback?: React.ReactNode\n children: (result: T) => React.ReactNode\n },\n): React.JSX.Element {\n const data = useAwaited(props)\n\n return props.children(data) as React.JSX.Element\n}\n"],"mappings":";;;;;;AAUA,SAAgB,WAAc,EAAE,SAAS,YAAgC;AACvE,KAAI,SAEF,QADa,SAAS,SAAS;CAGjC,MAAM,UAAU,MAAM,SAAS;AAE/B,KAAI,QAAQ,sBAAsB,WAAW,UAC3C,OAAM;AAGR,KAAI,QAAQ,sBAAsB,WAAW,QAC3C,OAAM,QAAQ,sBAAsB;AAGtC,QAAO,QAAQ,sBAAsB;;;;;;AAOvC,SAAgB,MACd,OAIA;CACA,MAAM,QAAQ,oBAAC,YAAD,EAAY,GAAI,OAAS,CAAA;AACvC,KAAI,MAAM,SACR,QAAO,oBAAC,QAAM,UAAP;EAAgB,UAAU,MAAM;YAAW;EAAuB,CAAA;AAE3E,QAAO;;AAGT,SAAS,WACP,OAImB;CACnB,MAAM,OAAO,WAAW,MAAM;AAE9B,QAAO,MAAM,SAAS,KAAK"}